Database Model: Reserveringen
Volledig technisch ontwerp van de tabellen, onderlinge relaties en gegevensstructuur
1. Overzicht van het model
2. DDL – Tabeldefinities (SQL)
A. Tabel: reservering
SQL
CREATE TABLE reservering (
reservering_id INT AUTO_INCREMENT PRIMARY KEY,
naam VARCHAR(255) NOT NULL,
totaal_personen INT NOT NULL,
start_datumtijd DATETIME NOT NULL,
eind_datumtijd DATETIME NOT NULL,
email VARCHAR(255),
telefoon VARCHAR(20),
gereserveerd_op TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
B. Tabel: tafel
SQL
CREATE TABLE tafel (
tafel_id INT AUTO_INCREMENT PRIMARY KEY,
nummer INT NOT NULL UNIQUE,
capaciteit INT NOT NULL,
omschrijving TEXT
);
C. Tabel: reservering_tafel
SQL
CREATE TABLE reservering_tafel (
reservering_id INT,
tafel_id INT,
bezetting_per_tafel INT,
PRIMARY KEY (reservering_id, tafel_id),
FOREIGN KEY (reservering_id) REFERENCES reservering(reservering_id) ON DELETE CASCADE,
FOREIGN KEY (tafel_id) REFERENCES tafel(tafel_id)
);
3. Voorbeeld Data
Tabel: reservering
| reservering_id | naam | totaal_personen | start_datumtijd | eind_datumtijd |
|---|---|---|---|---|
| 50 | Bakker | 10 | 2025-12-24 18:00:00 | 2025-12-24 21:00:00 |
Tabel: tafel
| tafel_id | nummer | capaciteit |
|---|---|---|
| 1 | 1 | 4 |
| 2 | 2 | 4 |
| 3 | 3 | 2 |
Tabel: reservering_tafel
| reservering_id | tafel_id | bezetting_per_tafel |
|---|---|---|
| 50 | 1 | 4 |
| 50 | 2 | 4 |
| 50 | 3 | 2 |
4. De VIEW: Virtuele Tabel
SQL
CREATE VIEW v_reservering_overzicht AS
SELECT
r.naam,
r.start_datumtijd,
r.totaal_personen,
t.nummer AS tafel_nummer,
rt.bezetting_per_tafel,
t.capaciteit
FROM reservering r
JOIN reservering_tafel rt ON r.reservering_id = rt.reservering_id
JOIN tafel t ON rt.tafel_id = t.tafel_id;
Resultaat van de View (v_reservering_overzicht)
Output bij SELECT * FROM v_reservering_overzicht;:
| naam | start_datumtijd | totaal_personen | tafel_nummer | bezetting_per_tafel | capaciteit |
|---|---|---|---|---|---|
| Bakker | 2025-12-24 18:00 | 10 | 1 | 4 | 4 |
| Bakker | 2025-12-24 18:00 | 10 | 2 | 4 | 4 |
| Bakker | 2025-12-24 18:00 | 10 | 3 | 2 | 2 |
5. Toets Voorbereiding
- Foreign Keys:
reservering_identafel_idverbinden de koppeltabel met de hoofdgegevens. - On Delete Cascade: Verwijdert koppelingen automatisch als een klant annuleert.
- Composite Key: De PK van
reservering_tafelis de combinatie van (reservering_id, tafel_id).