Veďte si seznam rezervací pokojů, které mají počáteční datum a datum ukončení. Nesnažte se modelovat sloty dostupnosti nebo si představovat databázi rezervací jako tabulku. To vás jen přivede k nesmyslné složitosti. S časovými obdobími se snadno pracuje.
Nejdůležitější je vědět, jak ve vašich dotazech odhalit překrývající se období. To je základ pro testování, zda je pokoj již rezervován nebo zda je volný. Řekněme, že máte tabulku REZERVACE a chcete najít rezervace, které se překrývají v daném časovém období:@FromDate a @ToDate. Vaše klauzule WHERE pro hledání překrývajících se rezervací vypadá takto:
WHERE RESERVATION.start_date < @ToDate
AND RESERVATION.end_date > @FromDate
Dostupné místnosti nebudou mít konflikty (tj. KDE NENÍ V...) a nedostupné místnosti budou mít konflikt.