Hallo,
ich bin gerade dabei, ein Hotelreservierungssystem zu planen.
Der Auftraggeber erhält von verschiedenen Hotels Zimmer "zur Verfügung", die er in das System einpflegt.
Nun schaut meine Datenbankplanung bis jetzt so aus:
.....
Tabelle Zimmer:
id
hotel_id
preis
etc...
Tabelle "ZimmerTag":
id
zimmer_id
datum
gebucht
Sprich für jedes Zimmer und für jeden Tag den ein Zimmer verfügbar ist, wird eine Tabellenzeile angelegt.
Ist das eine sinnvolle Struktur?
Will ich nun zum Beispiel überprüfen ob ein Zimmer für eine gegebene Zeitspanne verfügbar ist, muss ich alle Tage durchgehen und schauen, ob eine Zeile mit gegebenem Tag und entsprechender zimmer_id vorhanden ist - und ob dieser nicht verbucht ist.
Im Moment schaut diese Methode bei mir so aus (die Daten kommen im MySql-Date-Format rein) - irgendwie glaube ich, dass es da eine insgesamt geschicktere Lösung geben muss.
Kompliziert stelle ich mir dann auch den Algotithmus vor, der abfragt, welche Räume über eine gegebene zeitspanne verfügbar sind.
Will also nur mal wissen, was ihr von dieser Tabellenstruktur haltet - und ob es nicht geschicktere Lösungen gäbe?
Viele Grüße,
Oliver
ich bin gerade dabei, ein Hotelreservierungssystem zu planen.
Der Auftraggeber erhält von verschiedenen Hotels Zimmer "zur Verfügung", die er in das System einpflegt.
Nun schaut meine Datenbankplanung bis jetzt so aus:
.....
Tabelle Zimmer:
id
hotel_id
preis
etc...
Tabelle "ZimmerTag":
id
zimmer_id
datum
gebucht
Sprich für jedes Zimmer und für jeden Tag den ein Zimmer verfügbar ist, wird eine Tabellenzeile angelegt.
Ist das eine sinnvolle Struktur?
Will ich nun zum Beispiel überprüfen ob ein Zimmer für eine gegebene Zeitspanne verfügbar ist, muss ich alle Tage durchgehen und schauen, ob eine Zeile mit gegebenem Tag und entsprechender zimmer_id vorhanden ist - und ob dieser nicht verbucht ist.
Im Moment schaut diese Methode bei mir so aus (die Daten kommen im MySql-Date-Format rein) - irgendwie glaube ich, dass es da eine insgesamt geschicktere Lösung geben muss.
PHP-Code:
public function check($date_1,$date_2) {
$date=strtotime($date_1);
$date_end=strtotime($date_2);
if($date_end<$date)
return false;
while($date<=$date_end) {
$datestring=date("Y-m-d",$date);
$query="SELECT COUNT(*) AS anzahl FROM days
WHERE rooms_id=$this->id AND date='$datestring' AND booked=0";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
if($row[anzahl]==0)
return false;
$date+=86400;
}
return true;
}
Will also nur mal wissen, was ihr von dieser Tabellenstruktur haltet - und ob es nicht geschicktere Lösungen gäbe?
Viele Grüße,
Oliver
Kommentar