Informatik

Datenbanknormalisierung: 1NF, 2NF und 3NF

Datenbanknormalisierung: 1NF, 2NF und 3NF
Datenbanknormalisierung: 1NF, 2NF und 3NF
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Bei der Datenbanknormalisierung zerlegst du eine unübersichtliche relationale Tabelle schrittweise in mehrere sinnvoll verbundene Tabellen. Dadurch speicherst du gleiche Sachverhalte möglichst nur einmal und verringerst widersprüchliche Änderungen.

Auf dieser Seite lernst du, Verstöße gegen die erste, zweite und dritte Normalform zu erkennen und eine Tabelle begründet bis zur 3NF zu normalisieren.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum werden Tabellen normalisiert?

Stell dir vor, Schülerdaten, Lernangebote und absolvierte Stunden stehen gemeinsam in einer einzigen Tabelle. Namen, Klassen und Angebotsbeschreibungen erscheinen dann mehrfach.

Diese Redundanz ist mehr als ein Platzproblem. Sie kann Anomalien verursachen:

  • Änderungsanomalie: Wechselt die Klassenleitung der 11a, muss der Name in mehreren Zeilen geändert werden. Bleibt eine Zeile unverändert, widersprechen sich die Daten.
  • Einfügeanomalie: Ein neues Lernangebot lässt sich möglicherweise erst speichern, wenn bereits ein Schüler daran teilnimmt.
  • Löschanomalie: Wird die letzte Teilnahme an einem Angebot gelöscht, kann zugleich dessen einzige Beschreibung verschwinden.

Normalisierung ordnet deshalb jeden Sachverhalt dort ein, wo er eindeutig hingehört. Schülerdaten stehen in einer Schülertabelle, Angebotsdaten in einer Angebotstabelle und Teilnahmen in einer Verknüpfungstabelle.

Merke

Normalisierung verringert vermeidbare Redundanz und schützt so die Konsistenz der Daten. Sie bedeutet nicht, dass derselbe Wert niemals mehrfach vorkommen darf: Fremdschlüssel werden bewusst wiederholt, um Tabellen zu verbinden.

Teste dich
Frage 1 von 1LeichtWelche Situation ist eine Änderungsanomalie?
Lösung: Die Klassenleitung wird nur in einigen der mehrfach vorhandenen Schülerzeilen geändert. — Eine Änderungsanomalie entsteht, wenn derselbe Sachverhalt mehrfach gespeichert ist und nicht überall einheitlich geändert wird.
Schlüssel und Abhängigkeiten verstehen

Bevor du normalisierst, musst du klären, wodurch ein Datensatz eindeutig bestimmt wird.

Definition

Primärschlüssel

Ein Primärschlüssel ist das ausgewählte Attribut oder die ausgewählte Attributkombination, die jede Zeile eindeutig identifiziert. Ein zusammengesetzter Primärschlüssel besteht aus mehreren Attributen.

Definition

Fremdschlüssel

Ein Fremdschlüssel verweist auf den Primärschlüssel einer anderen Tabelle. Er verbindet zusammengehörige Datensätze, ohne deren übrige Angaben zu wiederholen.

Definition

Funktionale Abhängigkeit

A → B bedeutet: Zu jedem Wert von A gehört genau ein Wert von B. Man sagt: A bestimmt B funktional.

Im Schulbeispiel gelten diese Abhängigkeiten:

  • SchülerNr → Name, Vorname, Klasse, Klassenlehrer
  • LernangebotsNr → Beschreibung
  • (SchülerNr, LernangebotsNr) → Zeit in h
  • Klasse → Klassenlehrer

Die Zeit hängt von der Kombination aus Schüler und Lernangebot ab. Die Schülernummer allein genügt nicht, weil derselbe Schüler in verschiedenen Angeboten unterschiedlich viele Stunden haben kann. Auch die Angebotsnummer allein genügt nicht, weil verschiedene Schüler im selben Angebot unterschiedlich viele Stunden absolvieren können.

Beispiel

Für Schüler 3 stehen unter anderem diese Teilnahmen in der Tabelle:

SchülerNrLernangebotsNrZeit in h
3115
3212
332

Erst das Paar (SchülerNr, LernangebotsNr) bestimmt eine Teilnahme eindeutig. Dieses Paar kann daher als zusammengesetzter Primärschlüssel dienen.

Teste dich
Frage 1 von 1MittelWelche Abhängigkeit beschreibt die absolvierten Stunden im Beispiel korrekt?
Lösung: (SchülerNr, LernangebotsNr) → Zeit in h — Die Stundenzahl gehört weder nur zum Schüler noch nur zum Angebot, sondern zur konkreten Kombination aus beiden.
Erste Normalform: Listen aus Zellen entfernen

Eine Tabelle verletzt die erste Normalform, wenn eine Zelle mehrere gleichartige Werte enthält. Das geschieht zum Beispiel bei kommaseparierten Listen.

Definition

Erste Normalform

Eine Relation ist in der ersten Normalform (1NF), wenn jedes Attribut pro Zeile genau einen atomaren, also im gewählten Datenmodell nicht weiter aufzuteilenden Wert enthält. Listen und Wiederholungsgruppen sind nicht erlaubt.

Ein problematischer Ausschnitt lautet:

SchülerNrLernangebotsNrBeschreibungZeit in h
31, 2, 3Elektronik, Tanz, Chor15, 12, 2

Die Zuordnung der drei Nummern, Beschreibungen und Stunden beruht nur auf ihrer Position in den Listen. Einzelne Teilnahmen lassen sich schlecht filtern, verändern oder mit einem Schlüssel kennzeichnen.

Für die 1NF erhält jede Teilnahme eine eigene Zeile:

SchülerNrLernangebotsNrBeschreibungZeit in h
31Elektronik15
32Tanz12
33Chor2

Nun enthält jede Zelle genau einen Wert. Der neue zusammengesetzte Primärschlüssel ist (SchülerNr, LernangebotsNr).

Gut zu wissen

Ob ein Wert atomar ist, hängt vom Zweck der Datenbank ab. Ein vollständiger Name kann für eine bloße Anzeige genügen. Soll nach Nachnamen sortiert werden, sind getrennte Attribute für Vor- und Nachname sinnvoll. Eindeutig problematisch sind hier die mehreren Lernangebote in einer Zelle.

Teste dich
Frage 1 von 1MittelWelche Änderung stellt für die gezeigte Teilnahme die 1NF her?
Lösung: Für jedes Lernangebot des Schülers wird eine eigene Zeile angelegt. — Die 1NF verlangt einzelne Werte. Deshalb wird jede Schüler-Angebots-Kombination als eigene Zeile gespeichert.
Zweite Normalform: Partielle Abhängigkeiten beseitigen

Nach der Umformung zur 1NF werden Schüler- und Angebotsdaten in mehreren Teilnahmezeilen wiederholt. Der Grund liegt im zusammengesetzten Schlüssel.

Definition

Partielle Abhängigkeit

Eine partielle Abhängigkeit liegt vor, wenn ein Nichtschlüsselattribut bereits von einem echten Teil eines zusammengesetzten Schlüsselkandidaten bestimmt wird.

Definition

Zweite Normalform

Eine Relation ist in der zweiten Normalform (2NF), wenn sie in 1NF ist und jedes Nichtschlüsselattribut voll vom gesamten Schlüsselkandidaten abhängt. Es darf keine partielle Abhängigkeit geben.

Der Schlüssel der Teilnahme ist (SchülerNr, LernangebotsNr). Nun prüfst du jedes Nichtschlüsselattribut:

  • Name, Vorname, Klasse und Klassenlehrer hängen nur von SchülerNr ab.
  • Beschreibung hängt nur von LernangebotsNr ab.
  • Zeit in h hängt vom gesamten Paar ab.

Deshalb zerlegst du die Tabelle so:

RelationAttributePrimärschlüssel
SchülerSchülerNr, Name, Vorname, Klasse, KlassenlehrerSchülerNr
LernangebotLernangebotsNr, BeschreibungLernangebotsNr
TeilnahmeSchülerNr, LernangebotsNr, Zeit in hSchülerNr + LernangebotsNr

In Teilnahme sind SchülerNr und LernangebotsNr zugleich Fremdschlüssel. Sie verweisen auf die beiden anderen Tabellen.

Beispiel

Die Teilnahme (3, 2, 12) bedeutet:

  1. SchülerNr 3 verweist auf Franz Jäger in der Tabelle Schüler.
  2. LernangebotsNr 2 verweist auf Tanz in der Tabelle Lernangebot.
  3. Die Teilnahme selbst speichert nur die zu dieser Kombination gehörenden 12 Stunden.

So kann die vollständige Information durch das Verbinden der Tabellen wieder zusammengesetzt werden, ohne Namen und Angebotsbeschreibung in jeder Teilnahme zu wiederholen.

Merke

Frage bei einem zusammengesetzten Schlüssel: „Bestimmt schon ein echter Schlüsselteil dieses Attribut?“ Lautet die Antwort ja, ist die 2NF verletzt.

Teste dich
Frage 1 von 1MittelWohin gehört die Angebotsbeschreibung Tanz bei der Zerlegung in 2NF?
Lösung: In Lernangebot, weil die Lernangebotsnummer die Beschreibung bestimmt. — Es gilt LernangebotsNr → Beschreibung. Deshalb werden beide Attribute gemeinsam in Lernangebot gespeichert.
Dritte Normalform: Transitive Abhängigkeiten beseitigen

Die Tabelle Schüler ist nach der Zerlegung zwar in 2NF, enthält aber noch zwei Sachverhalte: Angaben zum Schüler und die Klassenleitung.

Definition

Transitive Abhängigkeit

Eine transitive Abhängigkeit liegt im hier betrachteten Fall vor, wenn ein Schlüssel ein Nichtschlüsselattribut bestimmt und dieses wiederum ein weiteres Nichtschlüsselattribut bestimmt: Schlüssel → A → B.

Definition

Dritte Normalform

Eine Relation ist in der dritten Normalform (3NF), wenn sie in 2NF ist und kein Nichtschlüsselattribut über ein anderes Nichtschlüsselattribut vom Schlüssel abhängt.

Für Schüler gilt:

  • SchülerNr → Klasse
  • Klasse → Klassenlehrer

Damit hängt Klassenlehrer transitiv von SchülerNr ab. Die Klassenleitung gehört fachlich zur Klasse, nicht zu einem einzelnen Schüler.

Du lagerst diese Abhängigkeit aus:

RelationAttributeSchlüssel und Verweise
SchülerSchülerNr, Name, Vorname, KlassePK: SchülerNr; Klasse als FK
KlasseKlasse, KlassenlehrerPK: Klasse
LernangebotLernangebotsNr, BeschreibungPK: LernangebotsNr
TeilnahmeSchülerNr, LernangebotsNr, Zeit in hzusammengesetzter PK; beide Nummern als FK

Beispieldaten für Klasse sind (11a, Lempel), (12a, Breier) und (11b, Sommer). In Schüler bleibt nur die jeweilige Klasse als Verweis stehen.

Beispiel

Soll die Klassenleitung der 11a geändert werden, bearbeitest du nun genau den Datensatz der Klasse 11a. Alle Schüler dieser Klasse verweisen weiterhin auf denselben Klassendatensatz. Widersprüchliche Namen der Klassenleitung in einzelnen Schülerzeilen können dadurch nicht entstehen.

Merke

Prüfe für die 3NF: „Bestimmt ein Nichtschlüsselattribut ein anderes Nichtschlüsselattribut?“ Falls ja, lagere den dadurch beschriebenen Sachverhalt in eine eigene Tabelle aus und behalte den passenden Fremdschlüssel.

Teste dich
Frage 1 von 2MittelWarum wird Klassenlehrer aus Schüler ausgelagert?
Lösung: Weil Klasse → Klassenlehrer gilt und dadurch eine transitive Abhängigkeit entsteht. — SchülerNr bestimmt die Klasse, und die Klasse bestimmt die Klassenleitung. Die eigene Tabelle Klasse beseitigt diese transitive Abhängigkeit.
Frage 2 von 2SchwerEine Tabelle lautet Mitarbeiter(Personalnummer, Name, Abteilung, Abteilungsleiter). Jede Abteilung hat genau einen Leiter. Welche Zerlegung beseitigt die transitive Abhängigkeit?
Lösung: Mitarbeiter(Personalnummer, Name, Abteilung) und Abteilung(Abteilung, Abteilungsleiter) — Es gilt Personalnummer → Abteilung → Abteilungsleiter. Deshalb gehören Abteilung und Abteilungsleiter gemeinsam in eine eigene Relation.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Datenbanknormalisierung
    • Ziel: Redundanz und Anomalien verringern
    • Grundlage: Schlüssel und funktionale Abhängigkeiten
    • 1NF: einzelne atomare Werte
    • 2NF: keine Abhängigkeit von einem echten Schlüsselteil
    • 3NF: keine transitive Abhängigkeit über ein Nichtschlüsselattribut
    • Ergebnis: verbundene Tabellen mit Primär- und Fremdschlüsseln

Gehe beim Normalisieren immer in derselben Reihenfolge vor:

  1. Bestimme den Sachverhalt und mögliche Schlüssel.
  2. Schreibe die funktionalen Abhängigkeiten auf.
  3. Stelle atomare Werte und damit die 1NF her.
  4. Beseitige partielle Abhängigkeiten für die 2NF.
  5. Beseitige transitive Abhängigkeiten für die 3NF.
  6. Prüfe, ob die Tabellen über Fremdschlüssel wieder sinnvoll verbunden werden können.
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Aussage beschreibt die 1NF?
Lösung: Jede Zelle enthält genau einen atomaren Wert. — Die 1NF betrifft die Form der Attributwerte: Listen und Wiederholungsgruppen werden aufgelöst.
Frage 2 von 3MittelIn Buchung(KundenID, KursID, Kundenname, Kurstitel, Termin) ist (KundenID, KursID) der Schlüssel. KundenID → Kundenname und KursID → Kurstitel. Welche Normalform ist verletzt?
Lösung: Die 2NF, weil Nichtschlüsselattribute nur von Teilen des zusammengesetzten Schlüssels abhängen. — Kundenname hängt nur von KundenID und Kurstitel nur von KursID ab. Das sind partielle Abhängigkeiten und damit Verstöße gegen die 2NF.
Frage 3 von 3SchwerNach der Zerlegung gibt es Buchung(KundenID, KursID, Termin), Kunde(KundenID, Kundenname, Wohnort, Postleitzahl) und Kurs(KursID, Kurstitel). Im Modell gilt Postleitzahl → Wohnort. Was ist als Nächstes zu tun?
Lösung: Die Zuordnung von Postleitzahl und Wohnort wird in eine eigene Relation ausgelagert; die Postleitzahl bleibt als Fremdschlüssel in Kunde. — In Kunde gilt KundenID → Postleitzahl → Wohnort. Unter der vorgegebenen Modellannahme ist das eine transitive Abhängigkeit, die für die 3NF ausgelagert wird.

Wenn du die drei Prüffragen sicher beantworten kannst — „Enthält eine Zelle mehrere Werte?“, „Hängt etwas nur von einem Schlüsselteil ab?“ und „Bestimmt ein Nichtschlüsselattribut ein anderes?“ — kannst du typische Tabellen systematisch bis zur 3NF normalisieren.

Passend dazu