Die Dritte Normalform (3NF) ist eine Stufe der Normalisierung in der Datenbanktheorie, die dazu dient, Redundanzen zu minimieren und die Integrität der Daten zu gewährleisten. Eine Relation (Tabelle) befindet sich in der Dritten Normalform, wenn sie die folgenden Bedingungen erfüllt:
-
Die Relation befindet sich in der Zweiten Normalform (2NF):
- Das bedeutet, dass die Relation in der Ersten Normalform (1NF) ist (alle Attributwerte sind atomar, keine Wiederholungsgruppen).
- Alle Nicht-Schlüsselattribute sind vollständig funktional abhängig vom gesamten Primärschlüssel, nicht nur von einem Teil davon.
-
Keine transitiven Abhängigkeiten:
- Kein Nicht-Schlüsselattribut hängt transitiv von einem Kandidatenschlüssel ab. Das bedeutet, dass ein Nicht-Schlüsselattribut nicht von einem anderen Nicht-Schlüsselattribut abhängig sein sollte.
Im Detail bedeutet dies, dass für eine Relation RR in der 3NF, für jedes Nicht-Schlüsselattribut AA und jeden Kandidatenschlüssel KK in RR die folgende Bedingung erfüllt sein muss:
Wenn A von K abhängt, dann sollte A direkt von K abhängen und nicht durch ein anderes Attribut B, das selbst von K abhängt.
Beispiel:
Angenommen, wir haben eine Tabelle Studenten
mit den folgenden Attributen:
Studenten_ID
(Primärschlüssel)
Name
Kurs_ID
Kurs_Name
Dozent
In dieser Tabelle könnten die Attribute Kurs_Name
und Dozent
vom Attribut Kurs_ID
abhängen, nicht direkt von Studenten_ID
. Dies ist ein Beispiel für eine transitive Abhängigkeit, weil:
Studenten_ID
→ Kurs_ID
Kurs_ID
→ Kurs_Name
, Dozent
Um die Tabelle in die 3NF zu überführen, würden wir die transitiven Abhängigkeiten eliminieren, indem wir die Tabelle aufteilen. Wir könnten zwei Tabellen erstellen:
-
Studenten
:
Studenten_ID
(Primärschlüssel)
Name
Kurs_ID
-
Kurse
:
Kurs_ID
(Primärschlüssel)
Kurs_Name
Dozent
Jetzt befinden sich beide Tabellen in der 3NF, weil jede Nicht-Schlüsselattribut direkt vom Primärschlüssel abhängt und es keine transitiven Abhängigkeiten mehr gibt.
Durch die Dritte Normalform wird die Datenkonsistenz erhöht und Redundanzen verringert, was die Effizienz der Datenbankoperationen verbessert.