Lösung: Öffentlicher Verkehr
Fremdschlüssel
- linien_id steht in fahrt. Eine Linie hat viele Fahrten, eine Fahrt gehört zu genau einer Linie (1:n).
- Zwischen linie und haltestelle steht kein Fremdschlüssel. Eine Linie hat viele Haltestellen, und eine Haltestelle wird von vielen Linien bedient (n:m) (z.B. Central in Zürich). Wir lösen das später im Modul mit einer Zwischentabelle auf.
Datentypen
| Spalte | Typ | Begründung |
|---|---|---|
| fahrt_id, linien_id, haltestelle_id | INT | Ganzzahlige IDs |
| datum | DATE | Nur das Datum ist relevant |
| abfahrtszeit | TIME | Nur die Uhrzeit ist relevant |
| preis | DECIMAL(6,2) | Geldbetrag, exakt auf zwei Nachkommastellen – kein FLOAT wegen Rundungsfehlern |
| name, betreiber, ort | VARCHAR | Textlänge variabel |
SQL: Tabellen erstellen
Fremdschlüssel-Spalte ist angelegt, aber noch ohne FOREIGN-KEY-Constraint – den setzen wir später im Modul. Bie linie und haltestelle gibt es noch keine Fremdschlüssel-Spalte, weil die n:m-Beziehung erst mit einer Zwischentabelle abgebildet werden kann.
CREATE TABLE linie ( linien_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, betreiber VARCHAR(20) ); CREATE TABLE haltestelle ( haltestelle_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, ort VARCHAR(20) ); CREATE TABLE fahrt ( fahrt_id INT AUTO_INCREMENT PRIMARY KEY, datum DATE, abfahrtszeit TIME, preis DECIMAL(6,2), linien_id INT );
