Zachowaj listę rezerwacji pokoi, które mają datę początkową i końcową. Nie próbuj modelować przedziałów dostępności ani nie myśl o bazie danych rezerwacji jak o arkuszu kalkulacyjnym. To tylko doprowadzi cię do bezsensownej złożoności. Zakresy dat są łatwe w obsłudze.
Najważniejszą rzeczą, którą należy wiedzieć, jest to, jak wykryć nakładające się zakresy dat w zapytaniach. Jest to podstawa do sprawdzenia, czy pokój jest już zarezerwowany, czy jest wolny. Załóżmy, że masz stolik RESERVATION i chcesz znaleźć rezerwacje, które pokrywają się z podanym zakresem dat:@FromDate i @ToDate. Twoja klauzula WHERE dotycząca wyszukiwania pokrywających się rezerwacji wygląda tak:
WHERE RESERVATION.start_date < @ToDate
AND RESERVATION.end_date > @FromDate
Dostępne pokoje nie będą kolidowały (tj. GDZIE NIE MA...), a pokoje niedostępne będą miały konflikt.