Informatik

Zweite Normalform

Nach dem ersten Schritt sieht die Auftrittsliste so aus:

auftrittsliste(band, genre, datum, beginn, herkunftsland, buehne, buehnen_kapazitaet, dauer_min)

Primärschlüssel: band, genre, datum, beginn

Sie ist in der 1. Normalform – und schlechter als vorher. Das ändert dieser Schritt.

Die Regel

Ein Relationenschema ist in der 2. Normalform (2NF), wenn es in der 1. Normalform ist und jedes Nichtschlüsselattribut voll funktional vom Primärschlüssel abhängt.

Anders gesagt: Es darf keine partielle Abhängigkeit geben – kein Attribut darf schon von einem Teil des Schlüssels bestimmt sein.

Wann ist eine Relation automatisch in 2NF?

Wenn der Primärschlüssel aus einem einzigen Attribut besteht. Ein Attribut hat keine echten Teilmengen außer der leeren – also kann es gar keine partielle Abhängigkeit geben.

Die 2. Normalform ist also nur bei zusammengesetzten Schlüsseln überhaupt ein Thema. Das ist eine nützliche Abkürzung bei der Prüfung.

Die Verstöße finden

Der Primärschlüssel ist band, genre, datum, beginn.

Prüfe für jedes Nichtschlüsselattribut, ob schon ein Teil des Schlüssels ausreicht:

herkunftsland, buehne, buehnen_kapazitaet, dauer_min

Tipp: So prüfst du

Nimm das Attribut und frage: „Kenne ich es schon, wenn ich nur die Band kenne?" Dann: „…nur das Genre?" Dann: „…nur Band und Datum?" Sobald eine Antwort ja lautet, liegt eine partielle Abhängigkeit vor.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Die Überführung

So kommst du in die 2. Normalform:

Für jede partielle Abhängigkeit A → B, bei der A ein echter Teil des Schlüssels ist:

  1. Lege eine neue Relation mit den Attributen A und B an. A wird ihr Primärschlüssel.
  2. Entferne B aus der ursprünglichen Relation. A bleibt dort als Fremdschlüssel stehen – es ist ja Teil des Schlüssels.

Wiederhole das, bis keine partielle Abhängigkeit mehr übrig ist.

Angewandt auf die Auftrittsliste:

Schritt 1: band → herkunftsland herausziehen.

band(band, herkunftsland)

Schritt 2: band, datum, beginn → buehne, buehnen_kapazitaet, dauer_min herausziehen.

auftritt(band→band, datum, beginn, buehne, buehnen_kapazitaet, dauer_min)

Was bleibt übrig? In der ursprünglichen Relation stehen jetzt nur noch die Schlüsselattribute:

band_genre(band→band, genre)

Ergebnis nach der 2. Normalform:

band(band, herkunftsland)
band_genre(band→band, genre)
auftritt(band→band, datum, beginn, buehne, buehnen_kapazitaet, dauer_min)

a) Vergleiche die Zeilenzahlen: Die 1NF-Tabelle hatte 71 Zeilen. Wie viele Zeilen haben die drei neuen Relationen zusammen?

b) Steht das Herkunftsland einer Band jetzt noch mehrfach in der Datenbank?

c) Kann man jetzt eine Band eintragen, die noch keinen Auftritt hat? Welche Anomalie ist damit erledigt?

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Ein zweites Beispiel

Eine Schule verwaltet Klausurergebnisse in einer Tabelle:

ergebnis(schueler_id, klausur_id, schuelername, klausurdatum, fach, punkte)

Primärschlüssel: schueler_id, klausur_id

a) Bestimme alle funktionalen Abhängigkeiten.

b) Welche verstoßen gegen die 2. Normalform?

c) Überführe das Schema in die 2. Normalform.

d) Nenne für jede der drei Anomalien einen konkreten Fall im ursprünglichen Schema.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Zweite Normalform

Teilbare URL erstellen

Abschnitte auswählen