He visto este tipo de problemas varias veces y estoy tratando de decidir la mejor manera de almacenar rangos de manera que no se solapen. Por ejemplo, al programar algún tipo de recurso que solo una persona puede usar a la vez. Sobre todo lo que he visto es algo como esto:Método sugerido para manejar rangos no solapados (por ejemplo, programación)
PERSON ROOM START_TIME END_TIME
Col. Mustard Library 08:00 10:00
Prof. Plum Library 10:00 12:00
¿Cuál es la mejor manera de prevenir nuevas entradas de la superposición de una programación existente, como dicen si la señorita Escarlata quiere reservar la biblioteca de 11:00 a 11:30? Una restricción en línea no funcionará y no creo que esto pueda hacerse fácilmente en un desencadenante. ¿Un procedimiento que maneja todas las inserciones que inicialmente busca un conflicto existente en la tabla?
En segundo lugar, ¿cuál es la mejor manera de manejar problemas de simultaneidad? Supongamos que la señorita Scarlet quiere la biblioteca de 13:00 a 15:00 y la Sra. White la quiere de 14:00 a 16:00. El procedimiento de (1) consideraría que ambos horarios son aceptables, pero tomados en conjunto, no lo son. Lo único que se me ocurre es el bloqueo manual de la mesa o algún tipo de mutex.
¿Cuál es una buena clave principal para la tabla de arriba, (room, start_time)?
duplicado posible de [Cuál es la mejor manera de optimizar el esquema para capturar datos de asistencia] (http://stackoverflow.com/questions/3193227/what-is-the-best-way-to-optimize-schema-for -capturing-attendance-data) – APC