Informatik

Schema verändern und Sichten

Dieses Kapitel gehört zum Leistungskurs.

Kein Datenbankschema bleibt, wie es war. Anforderungen ändern sich – und anders als bei einem Programm liegen in der Datenbank Daten, die den Umbau überleben müssen.

In dieser Lektion legst du Spalten, Tabellen und Sichten an und benutzt sie gleich darauf. Der Editor prüft deinen Text aber gegen das Schema, wie es im Moment aussieht – und dort gibt es die neue Spalte noch nicht.

Der Reiter Fehler meldet deshalb Dinge wie webseite ist kein Bezeichner einer Spalte der Tabelle band. Führe die Anweisungen einfach der Reihe nach aus: Nach der ersten verschwinden die Meldungen zu den folgenden von selbst.

Spalten hinzufügen

a) Führe die drei Anweisungen aus. Was steht in webseite bei den übrigen 21 Bands?

b) Warum kann man eine neue Spalte nicht einfach mit NOT NULL versehen?

c) Wie kommt man trotzdem zu einer Spalte, die nie leer ist? Beschreibe den Weg in drei Schritten.

Tipp zu b)

Was müsste in den 21 vorhandenen Zeilen stehen, unmittelbar nachdem die Spalte entstanden ist?

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Tabellen löschen

DROP TABLE löscht die Tabelle mitsamt allen Daten. Es gibt keine Rückfrage und kein Rückgängig.

Der Unterschied zu DELETE FROM tabelle; ist wichtig: DELETE leert die Tabelle, DROP entfernt sie ganz. Nach DELETE kann man wieder einfügen, nach DROP muss man sie erst neu anlegen.

Sichten

Eine Sicht (englisch view) ist eine gespeicherte Abfrage, die sich wie eine Tabelle ansprechen lässt. Sie speichert keine Daten – bei jedem Zugriff läuft die hinterlegte Abfrage neu.

Eine Sicht ist aus drei Gründen nützlich:

  1. Wiederverwendung. Ein komplizierter Verbund wird einmal geschrieben und danach wie eine Tabelle benutzt.
  2. Vereinfachung. Wer den Spielplan braucht, muss das Schema nicht kennen.
  3. Zugriffsschutz. Man kann Rechte auf die Sicht vergeben statt auf die Tabellen dahinter. Wer nur spielplan sehen darf, sieht keine Zuschauerzahlen und keine Besucherdaten.

Der dritte Punkt ist der wichtigste – dazu mehr in Kapitel 8.

a) Lege eine Sicht bandinfo an, die zu jeder Band den Namen, das Herkunftsland und die Zahl ihrer Auftritte zeigt.

b) Frage die Sicht ab und sortiere nach der Auftrittszahl.

c) Füge einen neuen Auftritt ein und frage die Sicht erneut ab. Was fällt auf?

d) Erkläre mit c), warum eine Sicht keine Kopie ist.

Tipp zu a)

Die Abfrage kennst du schon aus Kapitel 4. Schreibe CREATE VIEW bandinfo AS davor.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Der Umbau im laufenden Betrieb

In einer echten Anwendung ist ein Schemaumbau heikel: Während der Umbau läuft, greifen Programme auf die Datenbank zu, die das alte Schema erwarten.

Der übliche Weg besteht deshalb aus mehreren Schritten, die einzeln jeweils beide Schemaversionen bedienen:

  1. Neue Spalte hinzufügen, alte behalten. Beide Versionen laufen.
  2. Anwendung so anpassen, dass sie in beide schreibt, aber aus der neuen liest.
  3. Alte Daten in die neue Spalte übertragen.
  4. Erst wenn nichts mehr auf die alte Spalte zugreift: löschen.

Das ist derselbe Gedanke wie beim Refactoring in Java – nur dass man Daten nicht neu übersetzen kann.


Selbsttest

Schema verändern und Sichten

Teilbare URL erstellen

Abschnitte auswählen