Das Ziel einer Datenbank-Normalisierung besteht darin, dass man Attribute in mehreren Relationen so aufteilt, sodass eine Form entsteht, die keine vermeidbaren Redundanzen enthält. Dafür existieren insgesamt fünf Normalformen, wobei in der Praxis aber nur die ersten drei Normalformen angewendet werden. Die vierte und die fünfte Normalform rechtfertigen meistens den hohen Aufwand nicht den man aufbringen muss [1,2].
Im folgenden werden Beispiele zu den ersten drei Normalformen gezeigt.
Beispiel: "Unnormale" Form (0NF)
Als Beispiel haben wir hier eine Relation, die noch keine Normalform durchlaufen hat.
Abbildung 1: Eine einfache Relation
Die erste Normalform (1NF)
Die erste Normalform (1NF) ist dann gegeben, wenn alle Informationen elementar/atomar vorliegen. Das bedeutet, in jeder Spalte darf nur ein Wert stehen.
Abbildung 2: Nach der 1NF
Obere Relation vorher, untere Relation nachher
Die zweite Normalform (2NF)
In der zweiten Normalform wird überprüft, ob eine volle funktionale Abhängigkeit oder nur eine funktionale Abhängigkeit von Werten zu einer Teilmenge besteht.
Eine Relation befindet sich in der zweiten Normalform, wenn die erste Normalform durchlaufen wurde und wenn jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist.
Abbildung 3: Nach der 2NF
oberste Relation vorher, untere drei Relationen nachher
Da ein Name nicht eindeutig ist, wird jedem Kunden eine Kundennummer zugeordnet. Diese ist der Primärschlüssel der neuen Tabelle Kunde-Relation. Danach wird das gleiche mit den Artikeln durchgeführt.
Die dritte Normalform (3NF)
Eine Relation befindet sich genau dann in der dritten Normalform (3NF), wenn die zweite Normalform durchlaufen wurde und kein Nichtschlüsselattribut transitiv von einem Kandidatenschlüssel abhängt. Dadurch sollen Redundanzen vermieden werden.
Transitiv bedeutet hier, dass die abhängigen Spalten in eine weitere Tabelle ausgelagert werden, da sie nicht direkt vom Schlüsselkandidaten abhängen, sondern nur indirekt.
Abbildung 4: Nach der 3NF
oberste Relation vorher, untere zwei Relationen nachher
Quelle
[1] http://cir.dcs.uni-pannon.hu/cikkek/Database_Normalization.pdf
[2] https://www.researchgate.net/publication/297731569_The_Database_Normalization_Theory_and_the_Theory_of_Normalized_Systems_Finding_a_Common_Ground