/ Datenbanken

3NF Prüfung

Prüft die dritte Normalform: 2NF muss erfüllt sein und es darf keine transitive Abhängigkeit von Nicht-Schlüssel-Attributen geben.

3NF Prüfung
01 · Eingabe

3NF Prüfung berechnen

Prüft die dritte Normalform: 2NF muss erfüllt sein und es darf keine transitive Abhängigkeit von Nicht-Schlüssel-Attributen geben.

Ergebnis = NF2 AND KeineTransAbh

Worum geht es?

Die dritte Normalform baut auf 2NF auf und verbietet transitive Abhängigkeiten zwischen Nicht-Schlüssel-Attributen. Hängt ein Attribut B nicht direkt vom Primärschlüssel, sondern über ein anderes Nicht-Schlüssel-Attribut A vom Schlüssel ab, dann gilt PK → A → B — und genau das ist die transitive Kette.

3NF ist in der Praxis der übliche Normalisierungsgrad: er beseitigt Update-, Insert- und Delete-Anomalien, ohne die Lesbarkeit so stark zu zerlegen wie BCNF oder 4NF.

Die Formel

Formel 3NF
Ergebnis = NF2 AND KeineTransAbh

Die Variablen

SymbolBedeutungEinheitErklärung
NF22NF erfüllt2NF erfüllt? 1 = ja, 0 = nein.
KeineTransAbhKeine transitive AbhängigkeitKeine transitive Abhängigkeit? 1 = ja, 0 = nein.
Ergebnis3NF erfüllt1 = 3NF erfüllt, 0 = nicht erfüllt.

Minimal-Beispiel

Tabelle Mitarbeiter(mitarbeiter_id PK, name, abteilung_id):

Rechnung 3NF erfüllt
Keine Nicht-Schlüssel-Kette PK → A → B

NF2            = 1
KeineTransAbh  = 1
Ergebnis       = 1

Praxis-Beispiele

Beispiel 1 — Klassische transitive Abhängigkeit

Mitarbeiter(mitarbeiter_id PK, name, abteilung_id, abteilung_name):

Rechnung Verletzung
mitarbeiter_id → abteilung_id → abteilung_name
→ transitive Abhängigkeit

NF2            = 1
KeineTransAbh  = 0
Ergebnis       = 0   (nicht in 3NF)

Lösung: abteilung_name in eine eigene Abteilung-Tabelle.

Beispiel 2 — Berechnetes Feld

Rechnung(rechnung_id PK, netto, mwst_satz, brutto)brutto ist aus netto und mwst_satz ableitbar:

Rechnung Funktionale Abhängigkeit
netto, mwst_satz → brutto
→ transitive Kette über Nicht-Schlüssel

Ergebnis       = 0

Beispiel 3 — 2NF nicht erfüllt

Rechnung Vorbedingung
NF2            = 0
KeineTransAbh  = 1
Ergebnis       = 0   (3NF setzt 2NF voraus)