Projektowanie nienakładających się zdarzeń daty i czasu
Mam następujący problem:
Wydarzenia mają czas „początek” i „koniec” oraz kwotę. Używam MySQL DATETIME dla obu.
Teraz, jeśli mam ograniczenie, które mówi „nie nakładające się zdarzenia”, muszę dokonać pewnych kontroli itp., Ale jak to zaprojektować? Użytkownik potrzebuje tylko 5-minutowej precyzji, ale chcę wykonywać obliczenia z sekundami, ponieważ jest to „prostsze” / „czyszczenie”
Jeśli mam wydarzenie (A) z początkiem „RRRR-MM-DD 12:00:00” - „RRRR-MM-DD 14:00:00”
i kolejny
(B) „RRRR-MM-DD 14:00:00” - „RRRR-MM-DD 16:15:00” -> nie nakładają się na siebie, chociaż oba zawierają 14:00:00.
W celu ustalenia, że rzeczywiście nie nakładają się, powinienem użyć
A.end <B.begin itp.
Lub
A.end <= B.begin itd. ORAZ zrób „hack” tak, aby wszystkie czasy zakończenia były „DATA HH: MM: 00 (minus jedna sekunda)” zamiast „DATA HH: MM: 00”, tj. A.end będzie wtedy „RRRR-MM-DD 13:59:59” zamiast „RRRR-MM-DD 14:00:00”
Pierwszy z nich jest najprostszy, ale czy będzie go brakowało, jeśli będę miał wiele różnych wydarzeń i będę musiał sprawdzić, czy „nie przepełnia”, tzn. Że poszczególne kwoty nie przekraczają całkowitej kwoty (przykład: jeśli każde zdarzenie jest rezerwacją stolika z wieloma osobami, nie mogę przekroczyć całkowitej liczby stołów w danym momencie)