Zweite Normalform (2NF)
Einführung
In der letzten Lerneinheit hast du gelernt, wie man eine Tabelle in die Erste Normalform (1NF) überführt. Die 1NF stellt sicher, dass alle Attributwerte atomar sind – also keine Mehrfachwerte enthalten. Damit ist die Basis für eine strukturierte Datenbank gelegt. Allerdings löst die 1NF nicht alle Probleme. Sie kann weiterhin Redundanzen enthalten, die zu Fehlern führen.

Redundanz bedeutet, dass dieselbe Information mehrfach gespeichert wird. Diese Mehrfachspeicherung führt zu sogenannten Datenanomalien, also zu Fehlern beim Ändern, Einfügen oder Löschen von Daten. Die Zweite Normalform (2NF) dient genau dazu, diese Probleme systematisch zu beseitigen.
Das Problem: Datenanomalien in der Praxis
Um zu verstehen, warum die 2NF wichtig ist, betrachten wir eine Tabelle, die Projektzuweisungen in einer Firma speichert. Diese Tabelle ist bereits in der 1NF, weist aber dennoch gravierende Probleme auf.
Änderungsanomalie (Update Anomaly)
Wenn der Projektleiter eines Projekts – zum Beispiel Herr Schmidt – seinen Nachnamen ändert, muss dieser Name in jeder Tabellenzeile angepasst werden, in der sein Projekt vorkommt. Wird nur eine Zeile übersehen, entsteht ein Widerspruch: dasselbe Projekt hat plötzlich zwei verschiedene Leiter. Dadurch wird die Datenbank inkonsistent.
Einfügeanomalie (Insertion Anomaly)
Ein neues Projekt kann nicht gespeichert werden, solange ihm kein Mitarbeiter zugewiesen ist, weil der zusammengesetzte Primärschlüssel (z. B. ProjektID + MitarbeiterID) keine NULL-Werte erlaubt. Das führt zu unnötigen Einschränkungen in der Datenpflege.
Löschanomalie (Deletion Anomaly)
Wenn der letzte Mitarbeiter eines Projekts gelöscht wird, gehen auch die Informationen über das Projekt verloren, weil sie nur in dieser Zeile gespeichert waren. So werden versehentlich wichtige Daten gelöscht.
Diese drei Fälle sind typische Symptome struktureller Fehler im Datenmodell. Die 2NF hilft, diese Probleme dauerhaft zu vermeiden.
Funktionale Abhängigkeiten verstehen
Um die 2NF anwenden zu können, musst du das Prinzip der funktionalen Abhängigkeit verstehen. Eine funktionale Abhängigkeit beschreibt, dass ein Attribut Y von einem anderen Attribut X abhängt, wenn jeder Wert von X eindeutig einen Wert von Y bestimmt. Das wird geschrieben als: X → Y.
Beispiel: Die MitarbeiterID bestimmt eindeutig den Mitarbeiternamen. Also gilt: MitarbeiterID → MitarbeiterName.
Die Rolle des zusammengesetzten Schlüssels
Die Regeln der 2NF sind nur relevant für Tabellen mit einem zusammengesetzten Primärschlüssel – also Schlüsseln, die aus mehreren Attributen bestehen. Wenn der Primärschlüssel nur aus einem Attribut besteht, liegt automatisch auch die 2NF vor, sobald die Tabelle in 1NF ist.
Ein zusammengesetzter Schlüssel ist beispielsweise {BestellNr, ArtikelNr}. Hier bilden beide Attribute gemeinsam den Primärschlüssel, und genau darin liegt der Kern der 2NF.
Voll funktionale vs. partielle Abhängigkeit
In Tabellen mit zusammengesetzten Schlüsseln müssen wir unterscheiden, ob ein Attribut vom gesamten oder nur von einem Teil des Schlüssels abhängt.
Voll funktionale Abhängigkeit
Ein Nicht-Schlüsselattribut ist voll funktional abhängig, wenn es vom gesamten Primärschlüssel abhängt. Um den Wert dieses Attributs zu bestimmen, benötigst du alle Bestandteile des Schlüssels.
Beispiel: In einer Tabelle mit Primärschlüssel {BestellNr, ArtikelNr} hängt das Attribut Menge von beiden Attributen ab. Nur in Kombination ist eindeutig festgelegt, wie viele Stück eines Artikels in einer bestimmten Bestellung enthalten sind.
Partielle Abhängigkeit
Eine partielle Abhängigkeit liegt vor, wenn ein Nicht-Schlüsselattribut nur von einem Teil des zusammengesetzten Primärschlüssels abhängt.
Beispiel
Beispiel: In derselben Tabelle hängt das Bestelldatum nur von der BestellNr ab. Der Artikel hat keinen Einfluss auf das Datum. Das führt dazu, dass das Datum in jeder Zeile wiederholt gespeichert wird – ein klarer Fall von Redundanz.
| Kriterium | Voll funktionale Abhängigkeit | Partielle Abhängigkeit |
|---|---|---|
| Beispiel-Schlüssel | {BestellNr, ArtikelNr} | {BestellNr, ArtikelNr} |
| Abhängiges Attribut | Menge | Bestelldatum, KundenNr |
| Diagramm | {BestellNr, ArtikelNr} → Menge | {BestellNr} → Bestelldatum |
| Erklärung | Menge hängt von Bestellung und Artikel ab. | Bestelldatum hängt nur von der Bestellung ab. |
| Bewertung für 2NF | Korrekt – darf bleiben. | Verstoß – muss ausgelagert werden. |
Partielle Abhängigkeiten sind die Hauptursache für Redundanz in zusammengesetzten Schlüsseln. Ihre Beseitigung ist das Ziel der 2NF.
Definition der Zweiten Normalform (2NF)
Eine Tabelle befindet sich in der Zweiten Normalform, wenn:
- Sie sich in der Ersten Normalform (1NF) befindet, und
- jedes Nicht-Schlüsselattribut voll funktional von jedem Kandidatenschlüssel abhängt.
Kurz gesagt: In einer Tabelle in 2NF gibt es keine partiellen Abhängigkeiten mehr.
Diese Definition bedeutet, dass alle Attribute wirklich nur von dem abhängen dürfen, was die Zeile eindeutig identifiziert – also dem gesamten Primärschlüssel, nicht nur einem Teil davon.
Vorgehen zur Überführung in die 2NF
Um einen Verstoß gegen die 2NF zu erkennen, gehst du systematisch vor:
- Identifiziere den zusammengesetzten Primärschlüssel der Tabelle.
- Nimm jedes Nicht-Schlüsselattribut einzeln unter die Lupe.
- Stelle dir für jedes dieser Attribute die entscheidende Frage: “Benötige ich wirklich alle Teile des Primärschlüssels, um den Wert dieses Attributs eindeutig zu bestimmen?”
- Wenn die Antwort “Nein” lautet, hast du eine partielle Abhängigkeit und somit einen Verstoß gegen die 2NF gefunden.
Eine Tabelle in die 2NF überführen
Die Theorie ist die eine Sache, die Anwendung die andere. In der IHK-Abschlussprüfung wirst du oft mit einer konkreten Tabelle konfrontiert und musst diese normalisieren.
Lass uns genau so ein Szenario durchspielen. Stell dir vor, du erhältst die folgende Tabelle mit dem Auftrag, sie in die 2NF zu überführen und deine Schritte zu begründen.
Eine Tabelle in die 2NF überführen
Ausgangssituation: Tabelle Bestellpositionen in 1NF
Wir beginnen mit einer Tabelle, die Bestelldaten enthält. Sie ist bereits in der 1NF – alle Werte sind atomar.
| BestellNr | ArtikelNr | Menge | Bestelldatum | KundenNr | KundenName | Artikelbezeichnung | Einzelpreis |
|---|---|---|---|---|---|---|---|
| B101 | A50 | 2 | 2023-10-25 | K22 | Meier GmbH | Schraube M6 | 0.15 |
| B101 | A73 | 10 | 2023-10-25 | K22 | Meier GmbH | Mutter M6 | 0.08 |
| B102 | A50 | 5 | 2023-10-26 | K45 | Schmidt AG | Schraube M6 | 0.15 |
Du siehst sofort die Redundanz: Der Name „Meier GmbH“ und die Artikelbezeichnung „Schraube M6“ tauchen mehrfach auf. Das ist ein klares Indiz für einen Normalisierungsbedarf.
Schritt 1: Primärschlüssel und funktionale Abhängigkeiten identifizieren
| BestellNr | ArtikelNr | Menge | Bestelldatum | KundenNr | KundenName | Artikelbezeichnung | Einzelpreis |
|---|---|---|---|---|---|---|---|
| B101 | A50 | 2 | 2023-10-25 | K22 | Meier GmbH | Schraube M6 | 0.15 |
| B101 | A73 | 10 | 2023-10-25 | K22 | Meier GmbH | Mutter M6 | 0.08 |
| B102 | A50 | 5 | 2023-10-26 | K45 | Schmidt AG | Schraube M6 | 0.15 |
Schritt 1: Primärschlüssel und funktionale Abhängigkeiten identifizieren
Zuerst analysieren wir die Struktur der Tabelle. Weder BestellNr allein (B101 kommt mehrfach vor) noch ArtikelNr allein (A50 kommt mehrfach vor) kann eine Zeile eindeutig identifizieren. Nur die Kombination aus beiden ist einzigartig.
Primärschlüssel: {BestellNr, ArtikelNr}
Nun prüfen wir die funktionalen Abhängigkeiten der Nicht-Schlüsselattribute:
| Attribut | Abhängigkeit | Typ |
|---|---|---|
| Menge | {BestellNr, ArtikelNr} → Menge | Voll funktional |
| Bestelldatum, KundenNr, KundenName | {BestellNr} → {Bestelldatum, KundenNr, KundenName} | Partiell |
| Artikelbezeichnung, Einzelpreis | {ArtikelNr} → {Artikelbezeichnung, Einzelpreis} | Partiell |
Damit haben wir mehrere Verstöße gegen die 2NF identifiziert.
Schritt 2: Partielle Abhängigkeiten in neue Tabellen auslagern
Um die 2NF herzustellen, müssen die partiellen Abhängigkeiten beseitigt werden. Das geschieht durch Auslagern der betroffenen Attribute in neue Tabellen. Dabei wird der jeweilige Teilschlüssel zum Primärschlüssel der neuen Tabelle.
Tabelle Bestellungen
Alle Attribute, die nur von der BestellNr abhängen, kommen in die neue Tabelle Bestellungen. BestellNr wird hier Primärschlüssel.
| BestellNr (PK) | Bestelldatum | KundenNr | KundenName |
|---|---|---|---|
| B101 | 2023-10-25 | K22 | Meier GmbH |
| B102 | 2023-10-26 | K45 | Schmidt AG |
Tabelle Artikel
Alle Attribute, die nur von ArtikelNr abhängen, kommen in die neue Tabelle Artikel. ArtikelNr wird Primärschlüssel.
| ArtikelNr (PK) | Artikelbezeichnung | Einzelpreis |
|---|---|---|
| A50 | Schraube M6 | 0.15 |
| A73 | Mutter M6 | 0.08 |
Schritt 3: Bereinigung der ursprünglichen Tabelle und Verknüpfung
Nach der Auslagerung bleiben in der ursprünglichen Tabelle nur die Attribute übrig, die voll funktional vom gesamten Primärschlüssel abhängen. Die Tabelle Bestellpositionen sieht nun so aus:
| BestellNr (PK, FK) | ArtikelNr (PK, FK) | Menge |
|---|---|---|
| B101 | A50 | 2 |
| B101 | A73 | 10 |
| B102 | A50 | 5 |
Die Felder BestellNr und ArtikelNr fungieren hier als Fremdschlüssel, die auf die Primärschlüssel der Tabellen Bestellungen und Artikel verweisen. So bleibt die logische Beziehung zwischen den Daten vollständig erhalten.
Das Ergebnis: Ein sauberes Datenmodell in 2NF
Nach der Überführung in die 2NF ergibt sich folgende Struktur:
Tabelle Bestellungen:
| BestellNr (PK) | Bestelldatum | KundenNr | KundenName |
|---|---|---|---|
| B101 | 2023-10-25 | K22 | Meier GmbH |
| B102 | 2023-10-26 | K45 | Schmidt AG |
Tabelle Artikel:
| ArtikelNr (PK) | Artikelbezeichnung | Einzelpreis |
|---|---|---|
| A50 | Schraube M6 | 0.15 |
| A73 | Mutter M6 | 0.08 |
Tabelle Bestellpositionen:
| BestellNr (PK, FK) | ArtikelNr (PK, FK) | Menge |
|---|---|---|
| B101 | A50 | 2 |
| B101 | A73 | 10 |
| B102 | A50 | 5 |
Dieses Datenmodell erfüllt die Anforderungen der 2NF. Redundanzen sind beseitigt, und alle funktionalen Abhängigkeiten sind eindeutig zugeordnet.
Vorteile der Zweiten Normalform
-
Reduzierung von Redundanz: Kundennamen und Artikeldaten werden nur einmal gespeichert.
-
Vermeidung von Anomalien:
- Änderungsanomalie: Der Name der „Meier GmbH“ muss nur an einer Stelle geändert werden.
- Einfügeanomalie: Neue Artikel können unabhängig von Bestellungen hinzugefügt werden.
- Löschanomalie: Beim Löschen einer Bestellposition bleiben Artikel und Kunden erhalten.
-
Höhere Datenintegrität: Die Tabellen sind konsistent und logisch strukturiert.
Ausblick auf die 3NF
Die 2NF beseitigt partielle Abhängigkeiten, aber transitive Abhängigkeiten können weiterhin auftreten. Eine transitive Abhängigkeit liegt vor, wenn ein Nicht-Schlüsselattribut von einem anderen Nicht-Schlüsselattribut abhängt.
Beispiel: Wenn in der Tabelle Bestellungen zusätzlich die Spalten PLZ und Ort vorkommen und gilt: KundenNr → PLZ und PLZ → Ort, dann hängt der Ort indirekt über die PLZ von der BestellNr ab. Dadurch entsteht wieder Redundanz.
Diese Art von Abhängigkeit wird in der Dritten Normalform (3NF) behandelt, die du in der nächsten Lerneinheit kennenlernen wirst.
Zusammenfassung
Zusammenfassung:
Einführung in die Zweite Normalform (2NF)
Die 2NF baut auf der Ersten Normalform (1NF) auf, um Redundanzen und Datenanomalien zu vermeiden. Sie sorgt dafür, dass jedes Nicht-Schlüsselattribut voll funktional vom gesamten Primärschlüssel abhängt.
- Redundanz: Mehrfache Speicherung gleicher Informationen.
- Datenanomalien: Fehler beim Ändern, Einfügen oder Löschen durch redundante Daten.
- Ziel der 2NF: Beseitigung partieller Abhängigkeiten in Tabellen mit zusammengesetzten Primärschlüsseln.
Funktionale Abhängigkeiten
Um die 2NF anzuwenden, müssen funktionale Abhängigkeiten verstanden werden.
- Definition: Ein Attribut Y ist funktional abhängig von X, wenn jeder Wert von X genau einen Wert von Y bestimmt (
X → Y). - Beispiel:
MitarbeiterID → MitarbeiterName. - In Tabellen mit zusammengesetzten Schlüsseln ist entscheidend, ob ein Attribut von allen Schlüsselteilen abhängt.
Voll funktionale vs. partielle Abhängigkeit
Bei zusammengesetzten Schlüsseln unterscheidet man zwei Typen von Abhängigkeiten.
- Voll funktional abhängig: Attribut hängt vom gesamten Primärschlüssel ab (z. B.
{BestellNr, ArtikelNr} → Menge). - Partiell abhängig: Attribut hängt nur von einem Teil des Schlüssels ab (z. B.
{BestellNr} → Bestelldatum). - Regel der 2NF: Nur voll funktional abhängige Attribute dürfen in der Tabelle verbleiben.
Definition der 2NF
Eine Tabelle ist in der 2NF, wenn:
- Sie sich in der 1NF befindet.
- Kein Nicht-Schlüsselattribut partiell von einem zusammengesetzten Primärschlüssel abhängt. → Kurzformel: „Keine partiellen Abhängigkeiten“.
Vorgehen zur Überführung in die 2NF
Um eine Tabelle in die 2NF zu überführen, gehst du schrittweise vor:
- Primärschlüssel bestimmen (bei zusammengesetzten Schlüsseln).
- Nicht-Schlüsselattribute analysieren: Welche Attribute hängen von welchen Schlüsselteilen ab?
- Partielle Abhängigkeiten auslagern: Neue Tabellen erstellen, deren Primärschlüssel der jeweilige Teilschlüssel ist.
- Verknüpfungen herstellen: Ursprüngliche Tabelle enthält nur noch voll funktional abhängige Attribute und verweist über Fremdschlüssel auf die neuen Tabellen.
Praxisbeispiel: Bestellpositionen
Ausgangssituation: Tabelle Bestellpositionen(BestellNr, ArtikelNr, Menge, Bestelldatum, KundenNr, KundenName, Artikelbezeichnung, Einzelpreis)
-
Primärschlüssel:
{BestellNr, ArtikelNr} -
Funktionale Abhängigkeiten:
{BestellNr, ArtikelNr} → Menge(voll){BestellNr} → {Bestelldatum, KundenNr, KundenName}(partiell){ArtikelNr} → {Artikelbezeichnung, Einzelpreis}(partiell)
Normalisierungsschritte:
- Auslagern der von
{BestellNr}abhängigen Attribute in Bestellungen. - Auslagern der von
{ArtikelNr}abhängigen Attribute in Artikel. - In Bestellpositionen verbleiben nur die Attribute, die voll funktional von
{BestellNr, ArtikelNr}abhängen.
Ergebnis:
- Tabelle Bestellungen(BestellNr, Bestelldatum, KundenNr, KundenName)
- Tabelle Artikel(ArtikelNr, Artikelbezeichnung, Einzelpreis)
- Tabelle Bestellpositionen(BestellNr, ArtikelNr, Menge)
Vorteile der Zweiten Normalform
- Redundanzfreiheit: Keine doppelte Speicherung gleicher Werte.
- Konsistenz: Änderungen müssen nur an einer Stelle vorgenommen werden.
- Integrität: Einfüge- und Löschanomalien werden verhindert.
- Pflegeleichte Struktur: Daten lassen sich logisch erweitern und abfragen.
Typische Prüfungsfragen
- Welche Aussage beschreibt die 2NF korrekt? → 1NF liegt vor und jedes Nicht-Schlüsselattribut hängt voll funktional von jedem Kandidatenschlüssel ab.
- Wann ist die 2NF relevant? → Nur bei zusammengesetzten Primärschlüsseln.
- Wie wird eine Tabelle in die 2NF überführt? → Partielle Abhängigkeiten erkennen und die betroffenen Attribute auslagern.
Ausblick auf die Dritte Normalform (3NF)
Die 2NF entfernt partielle Abhängigkeiten, beseitigt aber keine transitiven Abhängigkeiten (wenn ein Nicht-Schlüsselattribut von einem anderen abhängt). Diese werden in der 3NF behandelt, um Redundanzen weiter zu reduzieren und die Datenstruktur noch klarer zu gestalten.
Lernziele
Nach dieser Lerneinheit kannst du:
- die zweite Normalform (2NF) definieren und die Voraussetzung der vollen funktionalen Abhängigkeit aller Nicht-Schlüsselattribute vom gesamten Primärschlüssel erklären.
- funktionale Abhängigkeiten analysieren und dabei zwischen voll funktionalen und partiellen Abhängigkeiten unterscheiden, insbesondere bei zusammengesetzten Primärschlüsseln.
- eine Tabelle in der 1NF schrittweise in die 2NF überführen, indem du partielle Abhängigkeiten identifizierst und die betroffenen Attribute in separate Tabellen auslagerst.