/ Datenbanken

2NF Prüfung

Prüft die zweite Normalform: 1NF muss erfüllt sein und kein Nicht-Schlüssel-Attribut darf nur von einem Teil eines zusammengesetzten Primärschlüssels abhängen.

2NF Prüfung
01 · Eingabe

2NF Prüfung berechnen

Prüft die zweite Normalform: 1NF muss erfüllt sein und kein Nicht-Schlüssel-Attribut darf nur von einem Teil eines zusammengesetzten Primärschlüssels abhängen.

Ergebnis = NF1 AND KeinePartAbh

Worum geht es?

Die zweite Normalform baut auf 1NF auf und verbietet partielle Abhängigkeiten: Bei einem zusammengesetzten Primärschlüssel darf kein Nicht-Schlüssel-Attribut nur von einem Teil des Schlüssels abhängen — es muss vom gesamten Schlüssel funktional abhängen.

Bei einem einspaltigen Primärschlüssel ist 2NF automatisch erfüllt, sobald 1NF gilt. Die Verletzung ist also ein klassisches Problem von Verbindungs- oder Detailtabellen mit Kombi-PK.

Die Formel

Formel 2NF
Ergebnis = NF1 AND KeinePartAbh

Die Variablen

SymbolBedeutungEinheitErklärung
NF11NF erfüllt1NF erfüllt? 1 = ja, 0 = nein.
KeinePartAbhKeine partielle AbhängigkeitKeine partielle Abhängigkeit? 1 = ja, 0 = nein.
Ergebnis2NF erfüllt1 = 2NF erfüllt, 0 = nicht erfüllt.

Minimal-Beispiel

Tabelle BestellPosition mit Kombi-PK (bestell_id, artikel_id) und Spalte menge:

Rechnung 2NF erfüllt
NF1           = 1
KeinePartAbh  = 1   (menge hängt von beiden PK-Teilen ab)
Ergebnis      = 1

Praxis-Beispiele

Beispiel 1 — Klassische Verletzung

Tabelle BestellPosition mit Kombi-PK (bestell_id, artikel_id) und zusätzlich artikel_name:

Rechnung Partielle Abhängigkeit
artikel_name hängt nur von artikel_id ab
→ partielle Abhängigkeit

NF1           = 1
KeinePartAbh  = 0
Ergebnis      = 0   (nicht in 2NF)

Lösung: artikel_name in die Artikel-Tabelle auslagern.

Beispiel 2 — Einspaltiger PK

Eine Kunden-Tabelle mit PK kunde_id:

Rechnung Automatisch 2NF
Einspaltiger PK → keine partielle Abhängigkeit möglich

NF1           = 1
KeinePartAbh  = 1
Ergebnis      = 1

Beispiel 3 — 1NF noch nicht erfüllt

Rechnung Vorbedingung
NF1           = 0
KeinePartAbh  = 1
Ergebnis      = 0   (2NF setzt 1NF voraus)