Informatik

Rückblick

Dieses Kapitel gehört zum Leistungskurs.

In diesem Kapitel hast du die Seite gewechselt: vom Abfragen zum Bauen. Damit kommt eine Verantwortung dazu, die es beim Abfragen nicht gab – eine falsche Abfrage liefert ein falsches Ergebnis, ein falsches DELETE vernichtet Daten.

Das kann ich jetzt

  • Ich kann Tabellen mit CREATE TABLE anlegen und passende Datentypen wählen. (7.1)
  • Ich kann ein Relationenschema vollständig in SQL umsetzen, samt Fremdschlüsseln. (7.1)
  • Ich kann die vier Arten von Integritätsbedingungen benennen und einsetzen. (7.2)
  • Ich kann vorhersagen, welche Anweisung an welcher Bedingung scheitert. (7.2)
  • Ich kann Daten mit INSERT, UPDATE und DELETE verändern – und weiß, warum ein fehlendes WHERE gefährlich ist. (7.3)
  • Ich kann eine Sicht anlegen und begründen, wozu sie gut ist. (7.4)

Gemischte Aufgaben

Aufgabe 1: Ein Schema umsetzen

Setze dieses Schema für einen Fahrradverleih vollständig in SQL um.

station(station_id, name, adresse, plaetze)
radtyp(radtyp_id, bezeichnung)
rad(rad_id, baujahr, radtyp_id → radtyp, station_id → station)
kundin(kundin_id, vorname, nachname, email, geburtsjahr)
fahrt(fahrt_id, rad_id → rad, kundin_id → kundin, start, ende, kilometer)

Zusätzlich gilt:

  • Der Name einer Station, die Bezeichnung eines Radtyps und die E-Mail-Adresse einer Kundin dürfen nicht fehlen.
  • Eine E-Mail-Adresse und eine Typbezeichnung kommen jeweils nur einmal vor.
  • Ein Rad hat immer einen Typ, steht aber nicht immer an einer Station.
  • Eine Fahrt hat immer ein Rad und eine Kundin.

Achte auf die Reihenfolge der Anweisungen.

Begründe außerdem: Warum steht der Radtyp in einer eigenen Tabelle, statt einfach als Text in rad?

Tipp 1: Welche Tabelle zuerst?

Ein Fremdschlüssel kann nur auf eine Tabelle verweisen, die es schon gibt. Sortiere also so, dass jede Tabelle nach allen Tabellen kommt, auf die sie verweist. Hier heißt das: erst station und kundin, dann rad, zuletzt fahrt.

Tipp 2: Welche Bedingung wofür?
Verlangt Bedingung
darf nicht fehlen NOT NULL hinter dem Datentyp
kommt nur einmal vor UNIQUE (spalte) als eigene Zeile am Ende der Tabellendefinition
verweist auf eine andere Tabelle REFERENCES tabelle(spalte)
Wert aus einer festen Liste keine Bedingung, sondern eine eigene Tabelle mit Fremdschlüssel darauf
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Was scheitert woran?

Angenommen, das Schema aus Aufgabe 1 ist angelegt. Es gibt die Station 1, den Radtyp 1 und die Kundin 1 mit der Adresse mail@beispiel.de. Auf Station 1 steht bereits ein Rad.

Sag für jede Anweisung voraus: Läuft sie durch, oder scheitert sie? Wenn sie scheitert – welche Bedingung greift, und wann fällt es auf: schon beim Lesen der Anweisung oder erst beim Ausführen?

-- a)
INSERT INTO kundin (kundin_id, vorname, email) VALUES (2, 'Ben', 'mail@beispiel.de');
 
-- b)
INSERT INTO station (station_id, name, plaetze) VALUES (2, NULL, 20);
 
-- c)
INSERT INTO rad (rad_id, baujahr, radtyp_id, station_id) VALUES (7, 2024, 99, 1);
 
-- d)
INSERT INTO rad (rad_id, baujahr, radtyp_id) VALUES (8, 2023, 1);
 
-- e)
INSERT INTO station (station_id, name, plaetze) VALUES (1, 'Zweite', 15);
 
-- f)
DELETE FROM station WHERE station_id = 1;
Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 3: Ändern mit Bedacht

Im Übungsbereich liegt eine Kopie der Festivaldatenbank, in der du gefahrlos arbeiten kannst.

a) Trage eine neue Bühne ein: Waldlichtung, 350 Plätze, nicht überdacht.

b) Erhöhe die Kapazität der Zeltbühne um 200.

c) Lösche alle Bewertungen mit weniger als 2 Punkten. Sag vorher mit einer Abfrage, wie viele es sein werden, und prüfe danach nach.

d) Formuliere die Anweisung aus b) einmal ohne WHERE. Was würde sie anrichten? Führe sie nicht aus.

e) Lege eine Sicht grosse_buehnen an, die Name und Kapazität aller Bühnen mit mehr als 1000 Plätzen enthält. Frage sie danach ab.

Tipp zu c)

Schreib die Abfrage zuerst als SELECT COUNT(*) mit genau derselben Bedingung. Wenn die Zahl plausibel ist, ersetzt du SELECT COUNT(*) durch DELETE. Das ist die übliche Vorsichtsmaßnahme vor jedem DELETE.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Rückblick

Teilbare URL erstellen

Abschnitte auswählen