-- Create Bahnstation table
CREATE TABLE Bahnstation (
Name VARCHAR(30) NOT NULL CHECK (LENGTH(Name) >= 3), -- Name muss mindestens 3 Zeichen lang sein
Barrierefrei BOOLEAN CHECK (Barrierefrei IN (0, 1, NULL)), -- Wertebereich {0, 1, NULL}
Unterirdisch BOOLEAN CHECK (Unterirdisch IN (0, 1, NULL)), -- Wertebereich {0, 1, NULL}
Toiletten INTEGER CHECK (Toiletten >= 0), -- Mindestens 0 Toiletten
PRIMARY KEY (Name)
);
-- Insert data into Bahnstation
INSERT INTO Bahnstation (Name, Unterirdisch, Barrierefrei, Toiletten)
VALUES
('Schildesche', 1, 0, 4),
('Heidegärten', 0, 0, 3),
('Kattenkamp', 1, 0, 0),
('Deciusstraße', 1, 0, 2),
('Johannesstift', 1, 0, 0),
('Sudbrackstraße', 1, 0, 0),
('Hauptbahnhof', 1, 1, 0),
('Jahnplatz', 1, 1, 2),
('Rathaus', 1, 0, 2),
('Landgericht', 1, 0, 5),
('Adenauerplatz', 1, 0, 1),
('Bethel', 1, 0, 0),
('Friedrich-List-Straße', 1, 0, 3),
('Eggeweg', 1, 0, 3),
('Brackwede Bahnhof', 1, 0, 3),
('Gaswerkstraße', 0, 0, 0),
('Normannenstraße', 0, 0, 2),
('Brackwede Kirche', 0, 0, 1),
('Windelsbleicher Straße', 0, 0, 3),
('Rosenhöhe', 1, 0, 5),
('Sennefriedhof', 1, 0, 4),
('Senne', 1, 0, 1),
('Altenhagen', 1, 0, 5),
('Buschbachtal', 1, 0, 3),
('Milse', 1, 0, 1),
('Schelpmilser Weg', 1, 0, 1),
('Baumheide', 1, 0, 2),
('Seidenstickerstraße', 1, 0, 4),
('Schüco', 1, 0, 5),
('Ziegelstraße', 1, 0, 4),
('Finkenstraße', 1, 0, 2),
('Schillerstraße', 1, 0, 5),
('Stadtheider Straße', 1, 0, 4),
('Beckhausstraße', 1, 1, 1),
('August-Bebel-Straße', 0, 0, 1),
('Teutoburger Straße', 0, 0, 4),
('Mozartstraße/Synagoge', 1, 0, 2),
('Prießallee', 1, 0, 5),
('Sieker', 1, 0, 2),
('Babenhausen Süd', 1, 0, 5),
('Voltmannstraße', 0, 0, 4),
('Koblenzer Straße', 1, 0, 5),
('Lange Straße', 0, 0, 2),
('Auf der Hufe', 1, 0, 2),
('Nordpark', 1, 1, 0),
('Wittekindstraße', 1, 1, 2),
('Dürkopp Tor 6', 1, 0, 5),
('Lohmannshof', 1, 0, 2),
('Wellensiek', 1, 0, 4),
('Universität', 1, 0, 1),
('Bültmannshof', 1, 0, 0),
('Graf-von-Stauffenberg-Straße', 1, 0, 2),
('Rudolf-Oetker-Halle', 1, 1, 1),
('Siegfriedplatz', 1, 1, 4),
('Marktstraße', 1, 0, 4),
('Krankenhaus Mitte', 1, 0, 3),
('Oststraße', 1, 0, 5),
('Sieker Mitte', 1, 0, 4),
('Lutherkirche', 1, 0, 3),
('Roggenkamp', 1, 0, 2),
('Elpke', 1, 0, 1),
('Gesamtschule Stieghorst', 1, 0, 2),
('Stieghorst', 1, 0, 2);
SELECT * FROM Bahnstation;
CREATE TABLE Fahrplan (
Fahrzeug CHAR(8) NOT NULL,
Minute INTEGER NOT NULL,
Richtung VARCHAR(30) NOT NULL,
Station VARCHAR(30) NOT NULL,
PRIMARY KEY (Fahrzeug, Minute, Richtung, Station),
FOREIGN KEY (Richtung) REFERENCES Bahnstation (Name)
ON UPDATE CASCADE,
FOREIGN KEY (Station) REFERENCES Bahnstation (Name)
ON DELETE CASCADE
);
INSERT INTO Fahrplan (Fahrzeug, Minute, Richtung, Station) VALUES --ICh habe diese Website benutzt btw "https://sqlizer.io/"-
('FN-01-2F',45,'Senne','Schildesche'),
('FN-4D-00',16,'Senne','Heidegärten'),
('FN-01-2F',46,'Senne','Heidegärten'),
('FN-4D-00',18,'Senne','Kattenkamp'),
('FN-01-2F',48,'Senne','Kattenkamp'),
('FN-4D-00',19,'Senne','Deciusstraße'),
('FN-01-2F',49,'Senne','Deciusstraße'),
('FN-4D-00',22,'Senne','Johannesstift'),
('FN-01-2F',52,'Senne','Johannesstift'),
('FN-4D-00',23,'Senne','Sudbrackstraße'),
('FN-01-2F',53,'Senne','Sudbrackstraße'),
('FN-4D-00',24,'Senne','Hauptbahnhof'),
('FN-01-2F',54,'Senne','Hauptbahnhof'),
('FN-4D-00',25,'Senne','Jahnplatz'),
('FN-01-2F',55,'Senne','Jahnplatz'),
('FN-4D-00',26,'Senne','Rathaus'),
('FN-01-2F',56,'Senne','Rathaus'),
('FN-4D-00',28,'Senne','Landgericht'),
('FN-01-2F',58,'Senne','Landgericht'),
('FN-4D-00',29,'Senne','Adenauerplatz'),
('FN-01-2F',59,'Senne','Adenauerplatz'),
('FN-01-2F',31,'Senne','Bethel'),
('FN-4D-00',1,'Senne','Bethel'),
('FN-01-2F',32,'Senne','Friedrich-List-Straße'),
('FN-4D-00',2,'Senne','Friedrich-List-Straße'),
('FN-01-2F',33,'Senne','Eggeweg'),
('FN-4D-00',3,'Senne','Eggeweg'),
('FN-01-2F',34,'Senne','Brackwede Bahnhof'),
('FN-4D-00',4,'Senne','Brackwede Bahnhof'),
('FN-01-2F',35,'Senne','Gaswerkstraße'),
('FN-4D-00',5,'Senne','Gaswerkstraße'),
('FN-01-2F',36,'Senne','Normannenstraße'),
('FN-4D-00',6,'Senne','Normannenstraße'),
('FN-01-2F',38,'Senne','Brackwede Kirche'),
('FN-4D-00',8,'Senne','Brackwede Kirche'),
('FN-01-2F',39,'Senne','Windelsbleicher Straße'),
('FN-4D-00',9,'Senne','Windelsbleicher Straße'),
('FN-01-2F',42,'Senne','Rosenhöhe'),
('FN-4D-00',12,'Senne','Rosenhöhe'),
('FN-01-2F',43,'Senne','Sennefriedhof'),
('FN-4D-00',13,'Senne','Sennefriedhof'),
('FN-01-2F',44,'Senne','Senne'),
('FN-4D-00',14,'Senne','Senne'),
('FN-CC-E2',15,'Schildesche','Senne'),
('FN-42-B7',45,'Schildesche','Senne'),
('FN-CC-E2',16,'Schildesche','Sennefriedhof'),
('FN-42-B7',46,'Schildesche','Sennefriedhof'),
('FN-CC-E2',17,'Schildesche','Rosenhöhe'),
('FN-42-B7',47,'Schildesche','Rosenhöhe'),
('FN-CC-E2',20,'Schildesche','Windelsbleicher Straße'),
('FN-42-B7',50,'Schildesche','Windelsbleicher Straße'),
('FN-CC-E2',21,'Schildesche','Brackwede Kirche'),
('FN-42-B7',51,'Schildesche','Brackwede Kirche'),
('FN-CC-E2',23,'Schildesche','Normannenstraße'),
('FN-42-B7',53,'Schildesche','Normannenstraße'),
('FN-CC-E2',24,'Schildesche','Gaswerkstraße'),
('FN-42-B7',54,'Schildesche','Gaswerkstraße'),
('FN-CC-E2',25,'Schildesche','Brackwede Bahnhof'),
('FN-42-B7',55,'Schildesche','Brackwede Bahnhof'),
('FN-CC-E2',26,'Schildesche','Eggeweg'),
('FN-42-B7',56,'Schildesche','Eggeweg'),
('FN-CC-E2',27,'Schildesche','Friedrich-List-Straße'),
('FN-42-B7',57,'Schildesche','Friedrich-List-Straße'),
('FN-CC-E2',28,'Schildesche','Bethel'),
('FN-42-B7',58,'Schildesche','Bethel'),
('FN-42-B7',30,'Schildesche','Adenauerplatz'),
('FN-CC-E2',0,'Schildesche','Adenauerplatz'),
('FN-42-B7',31,'Schildesche','Landgericht'),
('FN-CC-E2',1,'Schildesche','Landgericht'),
('FN-42-B7',33,'Schildesche','Rathaus'),
('FN-CC-E2',3,'Schildesche','Rathaus'),
('FN-42-B7',34,'Schildesche','Jahnplatz'),
('FN-CC-E2',4,'Schildesche','Jahnplatz'),
('FN-42-B7',35,'Schildesche','Hauptbahnhof'),
('FN-CC-E2',5,'Schildesche','Hauptbahnhof'),
('FN-42-B7',36,'Schildesche','Sudbrackstraße'),
('FN-CC-E2',6,'Schildesche','Sudbrackstraße'),
('FN-42-B7',37,'Schildesche','Johannesstift'),
('FN-CC-E2',7,'Schildesche','Johannesstift'),
('FN-42-B7',40,'Schildesche','Deciusstraße'),
('FN-CC-E2',10,'Schildesche','Deciusstraße'),
('FN-42-B7',41,'Schildesche','Kattenkamp'),
('FN-CC-E2',11,'Schildesche','Kattenkamp'),
('FN-42-B7',43,'Schildesche','Heidegärten'),
('FN-CC-E2',13,'Schildesche','Heidegärten'),
('FN-42-B7',44,'Schildesche','Schildesche'),
('FN-CC-E2',14,'Schildesche','Schildesche'),
('FN-69-1C',30,'Sieker','Altenhagen'),
('FN-E3-B8',0,'Sieker','Altenhagen'),
('FN-69-1C',31,'Sieker','Buschbachtal'),
('FN-E3-B8',1,'Sieker','Buschbachtal'),
('FN-69-1C',33,'Sieker','Milse'),
('FN-E3-B8',3,'Sieker','Milse'),
('FN-69-1C',34,'Sieker','Schelpmilser Weg'),
('FN-E3-B8',4,'Sieker','Schelpmilser Weg'),
('FN-69-1C',35,'Sieker','Baumheide'),
('FN-E3-B8',5,'Sieker','Baumheide'),
('FN-69-1C',36,'Sieker','Seidenstickerstraße'),
('FN-E3-B8',6,'Sieker','Seidenstickerstraße'),
('FN-69-1C',37,'Sieker','Schüco'),
('FN-E3-B8',7,'Sieker','Schüco'),
('FN-69-1C',40,'Sieker','Ziegelstraße'),
('FN-E3-B8',10,'Sieker','Ziegelstraße'),
('FN-69-1C',43,'Sieker','Finkenstraße'),
('FN-E3-B8',13,'Sieker','Finkenstraße'),
('FN-69-1C',44,'Sieker','Schillerstraße'),
('FN-E3-B8',14,'Sieker','Schillerstraße'),
('FN-69-1C',45,'Sieker','Stadtheider Straße'),
('FN-E3-B8',15,'Sieker','Stadtheider Straße'),
('FN-69-1C',46,'Sieker','Beckhausstraße'),
('FN-E3-B8',16,'Sieker','Beckhausstraße'),
('FN-69-1C',47,'Sieker','Hauptbahnhof'),
('FN-E3-B8',17,'Sieker','Hauptbahnhof'),
('FN-69-1C',48,'Sieker','Jahnplatz'),
('FN-E3-B8',18,'Sieker','Jahnplatz'),
('FN-69-1C',49,'Sieker','Rathaus'),
('FN-E3-B8',19,'Sieker','Rathaus'),
('FN-69-1C',51,'Sieker','Landgericht'),
('FN-E3-B8',21,'Sieker','Landgericht'),
('FN-69-1C',52,'Sieker','August-Bebel-Straße'),
('FN-E3-B8',22,'Sieker','August-Bebel-Straße'),
('FN-69-1C',55,'Sieker','Teutoburger Straße'),
('FN-E3-B8',25,'Sieker','Teutoburger Straße'),
('FN-69-1C',56,'Sieker','Mozartstraße/Synagoge'),
('FN-E3-B8',26,'Sieker','Mozartstraße/Synagoge'),
('FN-69-1C',57,'Sieker','Prießallee'),
('FN-E3-B8',27,'Sieker','Prießallee'),
('FN-69-1C',59,'Sieker','Sieker'),
('FN-E3-B8',29,'Sieker','Sieker'),
('FN-3D-4E',30,'Altenhagen','Sieker'),
('FN-79-B0',0,'Altenhagen','Sieker'),
('FN-3D-4E',32,'Altenhagen','Prießallee'),
('FN-79-B0',2,'Altenhagen','Prießallee'),
('FN-3D-4E',33,'Altenhagen','Mozartstraße/Synagoge'),
('FN-79-B0',3,'Altenhagen','Mozartstraße/Synagoge'),
('FN-3D-4E',34,'Altenhagen','Teutoburger Straße'),
('FN-79-B0',4,'Altenhagen','Teutoburger Straße'),
('FN-3D-4E',37,'Altenhagen','August-Bebel-Straße'),
('FN-79-B0',7,'Altenhagen','August-Bebel-Straße'),
('FN-3D-4E',38,'Altenhagen','Landgericht'),
('FN-79-B0',8,'Altenhagen','Landgericht'),
('FN-3D-4E',40,'Altenhagen','Rathaus'),
('FN-79-B0',10,'Altenhagen','Rathaus'),
('FN-3D-4E',41,'Altenhagen','Jahnplatz'),
('FN-79-B0',11,'Altenhagen','Jahnplatz'),
('FN-3D-4E',42,'Altenhagen','Hauptbahnhof'),
('FN-79-B0',12,'Altenhagen','Hauptbahnhof'),
('FN-3D-4E',43,'Altenhagen','Beckhausstraße'),
('FN-79-B0',13,'Altenhagen','Beckhausstraße'),
('FN-3D-4E',44,'Altenhagen','Stadtheider Straße'),
('FN-79-B0',14,'Altenhagen','Stadtheider Straße'),
('FN-3D-4E',45,'Altenhagen','Schillerstraße'),
('FN-79-B0',15,'Altenhagen','Schillerstraße'),
('FN-3D-4E',46,'Altenhagen','Finkenstraße'),
('FN-79-B0',16,'Altenhagen','Finkenstraße'),
('FN-3D-4E',49,'Altenhagen','Ziegelstraße'),
('FN-79-B0',19,'Altenhagen','Ziegelstraße'),
('FN-3D-4E',52,'Altenhagen','Schüco'),
('FN-79-B0',22,'Altenhagen','Schüco'),
('FN-3D-4E',53,'Altenhagen','Seidenstickerstraße'),
('FN-79-B0',23,'Altenhagen','Seidenstickerstraße'),
('FN-3D-4E',54,'Altenhagen','Baumheide'),
('FN-79-B0',24,'Altenhagen','Baumheide'),
('FN-3D-4E',55,'Altenhagen','Schelpmilser Weg'),
('FN-79-B0',25,'Altenhagen','Schelpmilser Weg'),
('FN-3D-4E',56,'Altenhagen','Milse'),
('FN-79-B0',26,'Altenhagen','Milse'),
('FN-3D-4E',58,'Altenhagen','Buschbachtal'),
('FN-79-B0',28,'Altenhagen','Buschbachtal'),
('FN-3D-4E',59,'Altenhagen','Altenhagen'),
('FN-79-B0',29,'Altenhagen','Altenhagen'),
('FN-31-28',45,'Dürkopp Tor 6','Babenhausen Süd'),
('FN-36-8D',0,'Dürkopp Tor 6','Babenhausen Süd'),
('FN-2D-55',15,'Dürkopp Tor 6','Babenhausen Süd'),
('FN-65-63',30,'Dürkopp Tor 6','Babenhausen Süd'),
('FN-31-28',46,'Dürkopp Tor 6','Voltmannstraße'),
('FN-36-8D',1,'Dürkopp Tor 6','Voltmannstraße'),
('FN-2D-55',16,'Dürkopp Tor 6','Voltmannstraße'),
('FN-65-63',31,'Dürkopp Tor 6','Voltmannstraße'),
('FN-31-28',47,'Dürkopp Tor 6','Koblenzer Straße'),
('FN-36-8D',2,'Dürkopp Tor 6','Koblenzer Straße'),
('FN-2D-55',17,'Dürkopp Tor 6','Koblenzer Straße'),
('FN-65-63',32,'Dürkopp Tor 6','Koblenzer Straße'),
('FN-31-28',48,'Dürkopp Tor 6','Lange Straße'),
('FN-36-8D',3,'Dürkopp Tor 6','Lange Straße'),
('FN-2D-55',18,'Dürkopp Tor 6','Lange Straße'),
('FN-65-63',33,'Dürkopp Tor 6','Lange Straße'),
('FN-31-28',50,'Dürkopp Tor 6','Auf der Hufe'),
('FN-36-8D',5,'Dürkopp Tor 6','Auf der Hufe'),
('FN-2D-55',20,'Dürkopp Tor 6','Auf der Hufe'),
('FN-65-63',35,'Dürkopp Tor 6','Auf der Hufe'),
('FN-31-28',51,'Dürkopp Tor 6','Nordpark'),
('FN-36-8D',6,'Dürkopp Tor 6','Nordpark'),
('FN-2D-55',21,'Dürkopp Tor 6','Nordpark'),
('FN-65-63',36,'Dürkopp Tor 6','Nordpark'),
('FN-31-28',52,'Dürkopp Tor 6','Wittekindstraße'),
('FN-36-8D',7,'Dürkopp Tor 6','Wittekindstraße'),
('FN-2D-55',22,'Dürkopp Tor 6','Wittekindstraße'),
('FN-65-63',37,'Dürkopp Tor 6','Wittekindstraße'),
('FN-31-28',54,'Dürkopp Tor 6','Hauptbahnhof'),
('FN-36-8D',9,'Dürkopp Tor 6','Hauptbahnhof'),
('FN-2D-55',24,'Dürkopp Tor 6','Hauptbahnhof'),
('FN-65-63',39,'Dürkopp Tor 6','Hauptbahnhof'),
('FN-31-28',55,'Dürkopp Tor 6','Jahnplatz'),
('FN-36-8D',10,'Dürkopp Tor 6','Jahnplatz'),
('FN-2D-55',25,'Dürkopp Tor 6','Jahnplatz'),
('FN-65-63',40,'Dürkopp Tor 6','Jahnplatz'),
('FN-31-28',56,'Dürkopp Tor 6','Rathaus'),
('FN-36-8D',11,'Dürkopp Tor 6','Rathaus'),
('FN-2D-55',26,'Dürkopp Tor 6','Rathaus'),
('FN-65-63',41,'Dürkopp Tor 6','Rathaus'),
('FN-31-28',59,'Dürkopp Tor 6','Dürkopp Tor 6'),
('FN-36-8D',14,'Dürkopp Tor 6','Dürkopp Tor 6'),
('FN-2D-55',29,'Dürkopp Tor 6','Dürkopp Tor 6'),
('FN-65-63',44,'Dürkopp Tor 6','Dürkopp Tor 6'),
('FN-B3-23',45,'Babenhausen Süd','Dürkopp Tor 6'),
('FN-34-CC',0,'Babenhausen Süd','Dürkopp Tor 6'),
('FN-D1-D6',15,'Babenhausen Süd','Dürkopp Tor 6'),
('FN-13-BA',30,'Babenhausen Süd','Dürkopp Tor 6'),
('FN-B3-23',48,'Babenhausen Süd','Rathaus'),
('FN-34-CC',3,'Babenhausen Süd','Rathaus'),
('FN-D1-D6',18,'Babenhausen Süd','Rathaus'),
('FN-13-BA',33,'Babenhausen Süd','Rathaus'),
('FN-B3-23',49,'Babenhausen Süd','Jahnplatz'),
('FN-34-CC',4,'Babenhausen Süd','Jahnplatz'),
('FN-D1-D6',19,'Babenhausen Süd','Jahnplatz'),
('FN-13-BA',34,'Babenhausen Süd','Jahnplatz'),
('FN-B3-23',50,'Babenhausen Süd','Hauptbahnhof'),
('FN-34-CC',5,'Babenhausen Süd','Hauptbahnhof'),
('FN-D1-D6',20,'Babenhausen Süd','Hauptbahnhof'),
('FN-13-BA',35,'Babenhausen Süd','Hauptbahnhof'),
('FN-B3-23',52,'Babenhausen Süd','Wittekindstraße'),
('FN-34-CC',7,'Babenhausen Süd','Wittekindstraße'),
('FN-D1-D6',22,'Babenhausen Süd','Wittekindstraße'),
('FN-13-BA',37,'Babenhausen Süd','Wittekindstraße'),
('FN-B3-23',53,'Babenhausen Süd','Nordpark'),
('FN-34-CC',8,'Babenhausen Süd','Nordpark'),
('FN-D1-D6',23,'Babenhausen Süd','Nordpark'),
('FN-13-BA',38,'Babenhausen Süd','Nordpark'),
('FN-B3-23',54,'Babenhausen Süd','Auf der Hufe'),
('FN-34-CC',9,'Babenhausen Süd','Auf der Hufe'),
('FN-D1-D6',24,'Babenhausen Süd','Auf der Hufe'),
('FN-13-BA',39,'Babenhausen Süd','Auf der Hufe'),
('FN-B3-23',56,'Babenhausen Süd','Lange Straße'),
('FN-34-CC',11,'Babenhausen Süd','Lange Straße'),
('FN-D1-D6',26,'Babenhausen Süd','Lange Straße'),
('FN-13-BA',41,'Babenhausen Süd','Lange Straße'),
('FN-B3-23',57,'Babenhausen Süd','Koblenzer Straße'),
('FN-34-CC',12,'Babenhausen Süd','Koblenzer Straße');
INSERT INTO `Fahrplan` VALUES ('FN-D1-D6',27,'Babenhausen Süd','Koblenzer Straße'),
('FN-13-BA',42,'Babenhausen Süd','Koblenzer Straße'),
('FN-B3-23',58,'Babenhausen Süd','Voltmannstraße'),
('FN-34-CC',13,'Babenhausen Süd','Voltmannstraße'),
('FN-D1-D6',28,'Babenhausen Süd','Voltmannstraße'),
('FN-13-BA',43,'Babenhausen Süd','Voltmannstraße'),
('FN-B3-23',59,'Babenhausen Süd','Babenhausen Süd'),
('FN-34-CC',14,'Babenhausen Süd','Babenhausen Süd'),
('FN-D1-D6',29,'Babenhausen Süd','Babenhausen Süd'),
('FN-13-BA',44,'Babenhausen Süd','Babenhausen Süd'),
('FN-26-75',0,'Stieghorst','Lohmannshof'),
('FN-7E-4D',20,'Stieghorst','Lohmannshof'),
('FN-B5-AC',40,'Stieghorst','Lohmannshof'),
('FN-26-75',1,'Stieghorst','Wellensiek'),
('FN-7E-4D',21,'Stieghorst','Wellensiek'),
('FN-B5-AC',41,'Stieghorst','Wellensiek'),
('FN-26-75',2,'Stieghorst','Universität'),
('FN-7E-4D',22,'Stieghorst','Universität'),
('FN-B5-AC',42,'Stieghorst','Universität'),
('FN-26-75',3,'Stieghorst','Bültmannshof'),
('FN-7E-4D',23,'Stieghorst','Bültmannshof'),
('FN-B5-AC',43,'Stieghorst','Bültmannshof'),
('FN-26-75',4,'Stieghorst','Graf-von-Stauffenberg-Straße'),
('FN-7E-4D',24,'Stieghorst','Graf-von-Stauffenberg-Straße'),
('FN-B5-AC',44,'Stieghorst','Graf-von-Stauffenberg-Straße'),
('FN-26-75',5,'Stieghorst','Rudolf-Oetker-Halle'),
('FN-7E-4D',25,'Stieghorst','Rudolf-Oetker-Halle'),
('FN-B5-AC',45,'Stieghorst','Rudolf-Oetker-Halle'),
('FN-26-75',6,'Stieghorst','Siegfriedplatz'),
('FN-7E-4D',26,'Stieghorst','Siegfriedplatz'),
('FN-B5-AC',46,'Stieghorst','Siegfriedplatz'),
('FN-26-75',7,'Stieghorst','Hauptbahnhof'),
('FN-7E-4D',27,'Stieghorst','Hauptbahnhof'),
('FN-B5-AC',47,'Stieghorst','Hauptbahnhof'),
('FN-26-75',8,'Stieghorst','Jahnplatz'),
('FN-7E-4D',28,'Stieghorst','Jahnplatz'),
('FN-B5-AC',48,'Stieghorst','Jahnplatz'),
('FN-26-75',9,'Stieghorst','Rathaus'),
('FN-7E-4D',29,'Stieghorst','Rathaus'),
('FN-B5-AC',49,'Stieghorst','Rathaus'),
('FN-26-75',10,'Stieghorst','Marktstraße'),
('FN-7E-4D',30,'Stieghorst','Marktstraße'),
('FN-B5-AC',50,'Stieghorst','Marktstraße'),
('FN-26-75',12,'Stieghorst','Krankenhaus Mitte'),
('FN-7E-4D',32,'Stieghorst','Krankenhaus Mitte'),
('FN-B5-AC',52,'Stieghorst','Krankenhaus Mitte'),
('FN-26-75',13,'Stieghorst','Oststraße'),
('FN-7E-4D',33,'Stieghorst','Oststraße'),
('FN-B5-AC',53,'Stieghorst','Oststraße'),
('FN-26-75',14,'Stieghorst','Sieker Mitte'),
('FN-7E-4D',34,'Stieghorst','Sieker Mitte'),
('FN-B5-AC',54,'Stieghorst','Sieker Mitte'),
('FN-26-75',15,'Stieghorst','Lutherkirche'),
('FN-7E-4D',35,'Stieghorst','Lutherkirche'),
('FN-B5-AC',55,'Stieghorst','Lutherkirche'),
('FN-26-75',16,'Stieghorst','Roggenkamp'),
('FN-7E-4D',36,'Stieghorst','Roggenkamp'),
('FN-B5-AC',56,'Stieghorst','Roggenkamp'),
('FN-26-75',17,'Stieghorst','Elpke'),
('FN-7E-4D',37,'Stieghorst','Elpke'),
('FN-B5-AC',57,'Stieghorst','Elpke'),
('FN-26-75',18,'Stieghorst','Gesamtschule Stieghorst'),
('FN-7E-4D',38,'Stieghorst','Gesamtschule Stieghorst'),
('FN-B5-AC',58,'Stieghorst','Gesamtschule Stieghorst'),
('FN-26-75',19,'Stieghorst','Stieghorst'),
('FN-7E-4D',39,'Stieghorst','Stieghorst'),
('FN-B5-AC',59,'Stieghorst','Stieghorst'),
('FN-39-04',0,'Lohmannshof','Stieghorst'),
('FN-7D-CE',20,'Lohmannshof','Stieghorst'),
('FN-A6-83',40,'Lohmannshof','Stieghorst'),
('FN-39-04',1,'Lohmannshof','Gesamtschule Stieghorst'),
('FN-7D-CE',21,'Lohmannshof','Gesamtschule Stieghorst'),
('FN-A6-83',41,'Lohmannshof','Gesamtschule Stieghorst'),
('FN-39-04',2,'Lohmannshof','Elpke'),
('FN-7D-CE',22,'Lohmannshof','Elpke'),
('FN-A6-83',42,'Lohmannshof','Elpke'),
('FN-39-04',3,'Lohmannshof','Roggenkamp'),
('FN-7D-CE',23,'Lohmannshof','Roggenkamp'),
('FN-A6-83',43,'Lohmannshof','Roggenkamp'),
('FN-39-04',4,'Lohmannshof','Lutherkirche'),
('FN-7D-CE',24,'Lohmannshof','Lutherkirche'),
('FN-A6-83',44,'Lohmannshof','Lutherkirche'),
('FN-39-04',5,'Lohmannshof','Sieker Mitte'),
('FN-7D-CE',25,'Lohmannshof','Sieker Mitte'),
('FN-A6-83',45,'Lohmannshof','Sieker Mitte'),
('FN-39-04',6,'Lohmannshof','Oststraße'),
('FN-7D-CE',26,'Lohmannshof','Oststraße'),
('FN-A6-83',46,'Lohmannshof','Oststraße'),
('FN-39-04',7,'Lohmannshof','Krankenhaus Mitte'),
('FN-7D-CE',27,'Lohmannshof','Krankenhaus Mitte'),
('FN-A6-83',47,'Lohmannshof','Krankenhaus Mitte'),
('FN-39-04',9,'Lohmannshof','Marktstraße'),
('FN-7D-CE',29,'Lohmannshof','Marktstraße'),
('FN-A6-83',49,'Lohmannshof','Marktstraße'),
('FN-39-04',10,'Lohmannshof','Rathaus'),
('FN-7D-CE',30,'Lohmannshof','Rathaus'),
('FN-A6-83',50,'Lohmannshof','Rathaus'),
('FN-39-04',11,'Lohmannshof','Jahnplatz'),
('FN-7D-CE',31,'Lohmannshof','Jahnplatz'),
('FN-A6-83',51,'Lohmannshof','Jahnplatz'),
('FN-39-04',12,'Lohmannshof','Hauptbahnhof'),
('FN-7D-CE',32,'Lohmannshof','Hauptbahnhof'),
('FN-A6-83',52,'Lohmannshof','Hauptbahnhof'),
('FN-39-04',13,'Lohmannshof','Siegfriedplatz'),
('FN-7D-CE',33,'Lohmannshof','Siegfriedplatz'),
('FN-A6-83',53,'Lohmannshof','Siegfriedplatz'),
('FN-39-04',14,'Lohmannshof','Rudolf-Oetker-Halle'),
('FN-7D-CE',34,'Lohmannshof','Rudolf-Oetker-Halle'),
('FN-A6-83',54,'Lohmannshof','Rudolf-Oetker-Halle'),
('FN-39-04',15,'Lohmannshof','Graf-von-Stauffenberg-Straße'),
('FN-7D-CE',35,'Lohmannshof','Graf-von-Stauffenberg-Straße'),
('FN-A6-83',55,'Lohmannshof','Graf-von-Stauffenberg-Straße'),
('FN-39-04',16,'Lohmannshof','Bültmannshof'),
('FN-7D-CE',36,'Lohmannshof','Bültmannshof'),
('FN-A6-83',56,'Lohmannshof','Bültmannshof'),
('FN-39-04',17,'Lohmannshof','Universität'),
('FN-7D-CE',37,'Lohmannshof','Universität'),
('FN-A6-83',57,'Lohmannshof','Universität'),
('FN-39-04',18,'Lohmannshof','Wellensiek'),
('FN-7D-CE',38,'Lohmannshof','Wellensiek'),
('FN-A6-83',58,'Lohmannshof','Wellensiek'),
('FN-39-04',19,'Lohmannshof','Lohmannshof'),
('FN-7D-CE',39,'Lohmannshof','Lohmannshof'),
('FN-A6-83',59,'Lohmannshof','Lohmannshof');
SELECT * FROM Fahrplan;
CREATE TABLE Straßenbahn (
Linie INTEGER NOT NULL CHECK (Linie >= 1), -- Linie muss mindestens 1 sein
Farbe VARCHAR(30) UNIQUE NOT NULL, -- Jede Farbe ist einzigartig und nicht NULL
Strecke VARCHAR(255), -- Strecke kann NULL sein
PRIMARY KEY (Linie) -- Linie ist der Primärschlüssel
);
INSERT INTO Straßenbahn (Linie, Farbe, Strecke) VALUES
(1,'Blau','Schildesche - Jahnplatz - Bethel - Brackwede - Senne'),
(2,'Grün','Altenhagen - Milse - Jahnplatz - Sieker'),
(3,'Gelb','Babenhausen Süd - Jahnplatz - Dürkopp Tor 6'),
(4,'Rot','Lohmannshof - Universität - Jahnplatz - Stieghorst');
SELECT * FROM Straßenbahn;
CREATE TABLE Fahrzeug (
Fahrzeug CHAR(8) NOT NULL CHECK (
Fahrzeug LIKE 'FN-__-__' AND -- Überprüft das Muster FN-XX-XX
NOT (Fahrzeug LIKE '%Q%' AND Fahrzeug LIKE '%R%') -- Verhindert gleichzeitiges Vorhandensein von Q und R
),
Linie INTEGER, -- Fremdschlüssel zu Straßenbahn (optional)
PRIMARY KEY (Fahrzeug),
FOREIGN KEY (Linie) REFERENCES Straßenbahn (Linie)
ON DELETE SET NULL -- Setzt Linie auf NULL, wenn die referenzierte Straßenbahn gelöscht wird
);
INSERT INTO Fahrzeug (Fahrzeug, Linie) VALUES
('FN-4D-00',1),
('FN-01-2F',1),
('FN-CC-E2',1),
('FN-42-B7',1),
('FN-69-1C',2),
('FN-E3-B8',2),
('FN-3D-4E',2),
('FN-79-B0',2),
('FN-31-28',3),
('FN-36-8D',3),
('FN-2D-55',3),
('FN-65-63',3),
('FN-B3-23',3),
('FN-34-CC',3),
('FN-D1-D6',3),
('FN-13-BA',3),
('FN-26-75',4),
('FN-7E-4D',4),
('FN-B5-AC',4),
('FN-39-04',4),
('FN-7D-CE',4),
('FN-A6-83',4);
SELECT * FROM Fahrzeug; -- a --
SELECT Name
FROM Bahnstation
WHERE Unterirdisch = 1 AND Toiletten >= 2;
SELECT DISTINCT Fahrplan.Station
FROM Fahrplan
JOIN Straßenbahn ON Fahrplan.Richtung = Straßenbahn.Linie
WHERE Straßenbahn.Linie = 4 OR Straßenbahn.Farbe = 'Gelb';
SELECT -- c --
Richtung AS Straßenbahn,
COUNT(DISTINCT Station) AS AnzahlVerschiedeneStationen
FROM
Fahrplan
GROUP BY
Richtung;
SELECT Fahrplan.Station -- d--
FROM Fahrplan
GROUP BY Fahrplan.Station
HAVING COUNT(DISTINCT Fahrplan.Richtung) = (SELECT COUNT(DISTINCT Linie) FROM Straßenbahn);
SELECT Fahrplan.Station, COUNT(*) / 24 AS BedienungenProStunde -- e --
FROM Fahrplan
GROUP BY Fahrplan.Station
HAVING (COUNT(*) / 24) > (
SELECT AVG(BedienungenProStunde)
FROM (
SELECT COUNT(*) / 24 AS BedienungenProStunde
FROM Fahrplan
GROUP BY Fahrplan.Station
) AS DurchschnittsBedienungen
)
ORDER BY Fahrplan.Station DESC;
DELETE FROM Straßenbahn
WHERE Linie IN (
SELECT DISTINCT Fahrplan.Richtung
FROM Fahrplan
WHERE Fahrplan.Station = 'Jahnplatz'
AND Fahrplan.Richtung IN (
SELECT DISTINCT Fahrplan.Richtung
FROM Fahrplan
WHERE Fahrplan.Station = 'Nordpark'
)
);
UPDATE Bahnstation
SET Toiletten = Toiletten + 2
WHERE Unterirdisch = 1;
SELECT * FROM Bahnstation;
ALTER TABLE Fahrzeug
ADD COLUMN Baujahr INTEGER;
SELECT * FROM Fahrzeug;
ALTER TABLE Fahrzeug
DROP COLUMN Baujahr;
SELECT * FROM Fahrzeug
ALTER TABLE Fahrplan
ADD CONSTRAINT CHECK_Minute CHECK (Minute BETWEEN 0 AND 59);
SELECT * FROM Fahrplan