CREATE TABLE Bahnstation (
Name VARCHAR(30),
Barrierefrei BOOLEAN,
Unterirdisch BOOLEAN,
Toiletten INTEGER,
PRIMARY KEY (Name)
CHECK(NOT Toiletten < 0)
CHECK(LENGTH(Name) BETWEEN 3 AND 30)
);
CREATE TABLE Fahrplan (
Fahrzeug CHAR(8),
Minute INTEGER,
Richtung VARCHAR(30),
Station VARCHAR(30),
PRIMARY KEY (Fahrzeug, Minute)
FOREIGN KEY (Station) REFERENCES Bahnstation(Name)
ON DELETE CASCADE
FOREIGN KEY (Richtung) REFERENCES Bahnstation(Richtung)
ON UPDATE CASCADE
FOREIGN KEY (Fahrzeug) REFERENCES Fahrzeug(Fahrzeug)
);
CREATE TABLE Straßenbahn (
Linie INTEGER NOT NULL,
Farbe VARCHAR(10) UNIQUE,
Strecke VARCHAR,
PRIMARY KEY (Linie)
CHECK(Linie > 0)
);
CREATE TABLE Fahrzeug (
Fahrzeug CHAR(8),
Linie INTEGER,
PRIMARY KEY (Fahrzeug)
FOREIGN KEY (Linie) REFERENCES Straßenbahn(Linie)
ON DELETE SET NULL
CHECK(Linie > 0)
CHECK(Fahrzeug LIKE "FN-__-__")
CHECK(NOT((Fahrzeug LIKE "%R%") AND (Fahrzeug LIKE "%Q%")))
);
INSERT INTO Straßenbahn VALUES (1, 'Gelb', 'Luis-Floke');
INSERT INTO Straßenbahn VALUES (2, 'Rot', 'Jensus-Jan');
INSERT INTO Fahrzeug VALUES ('FN-12-34', 1);
INSERT INTO Fahrzeug VALUES ('FN-ab-cd', 2);
INSERT INTO Fahrplan VALUES('FN-12-34', 12, 'Floke', 'Luis');
INSERT INTO Fahrplan VALUES('FN-ab-cd', 13, 'Jensus', 'Jan');
INSERT INTO Fahrplan VALUES('FN-12-34', 13, 'Luis', 'Jensus');
INSERT INTO Fahrplan VALUES('FN-ab-cd', 12, 'Jan', 'Floke');
INSERT INTO Fahrplan VALUES('FN-12-34', 14, 'Hallo', 'Welt');
INSERT INTO Fahrplan VALUES('FN-12-34', 15, 'Hallo', 'Welt');
ALTER TABLE Fahrzeug ADD Baujahr INTEGER;
ALTER TABLE Fahrzeug DROP Baujahr;
SELECT * FROM Fahrzeug;