Diseño de eventos de fecha y hora no superpuestos

Tengo el siguiente problema:

Los eventos tienen un tiempo de "comienzo" y "final" y una cantidad. Yo uso MySQL DATETIME para ambos.

Ahora, si tengo una restricción que dice "sin eventos superpuestos", necesito realizar algunas comprobaciones, etc. ¿pero cómo diseñar eso? El usuario solo necesita una precisión de 5 minutos aproximadamente, pero quiero hacer cálculos en segundos, ya que es "más simple" / "más limpio"

Si tengo un evento (A) con inicio-fin "YYYY-MM-DD 12:00:00" - "YYYY-MM-DD 14:00:00"

y otro

(B) "YYYY-MM-DD 14:00:00" - "YYYY-MM-DD 16:15:00" -> no se superponen, aunque ambos contienen 14:00:00.

Con el fin de determinar que efectivamente no se superponen, debo usar

A.end <B.begin etc.

O

A.end <= B.begin, etc. Y haga un "pirateo" tal que todos los tiempos finales sean "DATE ​​HH: MM: 00 (menos un segundo)" en lugar de "DATE ​​HH: MM: 00", es decir, A.end entonces sería "YYYY-MM-DD 13:59:59" en lugar de "YYYY-MM-DD 14:00:00"

El primero es el más simple, pero se perderá cualquier superposición si tengo muchos eventos diferentes y necesito verificar que no "overbook", es decir, que los montos individuales de los eventos no exceden la cantidad total (ejemplo: si cada evento es una reserva de una mesa con un número de personas, no puedo exceder el número total de mesas en un momento dado)

Respuestas a la pregunta(1)

Su respuesta a la pregunta