Datenbank-Tabellen für die Reservierung Website
Bauen wir eine Reservierung Reservierungssystem. Es gibt drei Module
- Kunden
- Zimmer
- Buchungen
Kann ein Kunde ein Buch oder viele Räume und für unterschiedliche Termine. Während der Buchung ein Zimmer(s), die ich suchen will, die Zimmer sind buchbar zwischen Datum A und Datum B.
Tabellen ( wahrscheinlich Lösung)
Kunden(id, name, .....)
Zimmer(id, roomNo, Einheit, ....)
Buchungen(id, room_id, fromDate, toDate)
Derzeit habe ich die Tabellen wie diese
CREATE TABLE IF NOT EXISTS `bookings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`checkin` datetime NOT NULL,
`checkout` datetime NOT NULL,
`advance` int(11) NOT NULL,
`amount` int(11) NOT NULL,
`booking_details_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `bookings_rooms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`booking_id` int(11) NOT NULL,
`room_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `customers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`address` varchar(255) NOT NULL,
`nationality_id` int(11) NOT NULL,
`mobile` int(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `rooms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`number` int(4) NOT NULL,
`category_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Brauche Hilfe beim design der Datenbank und die ist ein besserer Ansatz.
- Gibt es eine Frage hier?
- sorry aktualisiert. ich brauche Hilfe beim Entwurf der Tabellen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese schema-Strukturen schon erlauben, Sie zu finden, die freien Räume zwischen zwei Datumsangaben.
Die folgende Abfrage wird überprüft, ob gebuchten Zimmer vor dem start-die Zeit wird frei sein, bevor die start-Zeit, oder, für die, die gebucht nach, überprüft es, wenn Sie Check-in ist nach Ende-Datum zu.
es ist eine Verwirrung in den Namen der Fremdschlüssel - booking_id sollte logisch bookings_id
haben Sie für jede Tabelle doppelte Schlüssel - Sie können entfernen Sie alle booking_details_id etc, da spielen Sie die Rolle der id -
Kunden werden nicht verwiesen, die in irgendeiner Weise
den Weg, Sie zu implementieren Zimmer - es ist in Ordnung, aber alles hängt davon ab, was Sie mit Ihnen tun. Eventuell könnte design es in ein bisschen verschiedener Weg, so dass Sie leicht zu bekommen Sie die Liste der leeren Zimmer (Sie können die Liste der freien Zimmer aus dieser Struktur, aber die Leistung ist nicht spektakulär)