Führen Sie eine Liste der Zimmerreservierungen, die ein Anfangs- und Enddatum haben. Versuchen Sie nicht, verfügbare Slots zu modellieren, oder stellen Sie sich Ihre Reservierungsdatenbank wie eine Tabelle vor. Dies führt Sie nur zu sinnloser Komplexität. Datumsbereiche sind einfach zu handhaben.
Das Wichtigste, was Sie wissen sollten, ist, wie Sie sich überschneidende Datumsbereiche in Ihren Abfragen erkennen. Auf dieser Grundlage kann geprüft werden, ob ein Zimmer bereits reserviert oder frei ist. Angenommen, Sie haben eine RESERVATION-Tabelle und möchten Reservierungen finden, die sich mit einem bestimmten Datumsbereich überschneiden:@FromDate und @ToDate. Ihre WHERE-Klausel zum Auffinden überlappender Reservierungen sieht folgendermaßen aus:
WHERE RESERVATION.start_date < @ToDate
AND RESERVATION.end_date > @FromDate
Verfügbare Räume haben keine Konflikte (z. B. WHERE NOT IN...) und nicht verfügbare Räume haben einen Konflikt.