1:1 in SQL wirklich erzwingen: Der Fremdschlüssel allein reicht nicht aus – ohne zusätzliche Regel könnte dieselbe Person zwei Postgebieten zugewiesen werden. Dafür bräuchte poestler_id in der Tabelle postgebiet zusätzlich den Constraint UNIQUE.
Im Prinzip wäre hier eine Korrektur nötig: Der plz_bereich CHAR(9) speichert eine Spanne wie „6000-6100“ in einer einzigen Zelle. Das verletzt die Regel „eine Zelle, ein Wert“: Man kann so weder prüfen, ob eine bestimmte PLZ zu einem Gebiet gehört, noch sinnvoll sortieren. Bessere Alternative: plz_von CHAR(4) und plz_bis CHAR(4) als zwei Spalten
| Spalte | Typ | Begründung |
|---|---|---|
| briefkasten_id, gebiet_id, poestler_id | INT | Ganzzahlige IDs |
| standort | VARCHAR(100) | Textbeschreibung wie „bei der Bushaltestelle“ |
| leerungszeit | TIME | Nur die Uhrzeit ist relevant, kein Datum (weil üblicherweise an mehreren Wochentagen zur gleichen Zeit geleert wird) |
| name | VARCHAR | Textlänge variabel |
Fremdschlüssel-Spalten sind angelegt, aber noch ohne FOREIGN-KEY-Constraint – den setzen wir später im Modul.
CREATE TABLE poestler_in ( poestler_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE postgebiet ( gebiet_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, plz_bereich CHAR(9), poestler_id INT UNIQUE ); CREATE TABLE briefkasten ( briefkasten_id INT AUTO_INCREMENT PRIMARY KEY, standort VARCHAR(100), leerungszeit TIME, gebiet_id INT );