Normalisierungsformen (NF1 - NF3)
Einleitung
Wenn wir Datenbanken einrichten, wollen wir die Daten haben, die zu keinem Problem führen.führen. Wenn wir eine Datenbank erstellen, deren Tabellen alle 3 Normalisierungsformen erfüllen,erfüllen, haben wir Tabellen, die uns die höchstehöchste Performance und ZuverlässigkeitZuverlässigkeit bietet. Daher sollte man versuchen, die Datenbanktabellen nach diesen Regeln anzulegen.
Die Regeln müssenmüssen nach und nach erfüllterfüllt werden, das bedeutet es muss erst die NF1, dann die NF2 und zum Schluss die NF3 erfüllterfüllt sein. Also eine Tabelle, die sich in der Normalisierungsform 2 befindet, hat automatisch die Anforderungen der Normalisierungsform 1 erfüllt.erfüllt.
Normalform 0 (0NF)
Eine Tabelle liegt in der "Nullten Normalform" vor, wenn die Daten sich einfach in der Tabelle befinden. Das bedeutet, die Daten sind nicht atomar. Das bedeutet wir haben Redundanzen in der Datenbank ohne signifikanten Informationsgewinn. Dadurch ist unsere Tabelle durch sogenannte Anomalien gefährdet.gefährdet.
In dem ersten Beispiel haben wir eine Tabelle mit Kundendaten mit den Bestellungen, die diese getätigtgetätigt haben. Es gibt in der Tabelle Redundanzen, z.B. DHL => Deutsche Post DHL Group als auch im Merkmal / Attribut Adresse bei der Postleitzahl mit der Ortsangabe. Im Weiteren haben wir Probleme, wenn wir z.B. Kunden nach Nachnamen sortieren wollen. Dies ist laut unserer aktuellen Tabelle nicht möglich.möglich.
Normalform 1 (1NF)
Die Tabelle in der ersten Normalform existiert, wenn folgende Bedingungen erfüllterfüllt sind:
- Jedes Merkmal atomar ist
- Nicht weiter unterteilbar ist
- Listen
aufgelöstaufgelöst sind
Es befinden sich in der Tabelle dennoch weiterhin Redundanzen, da diese noch nicht entfernt werden. In der 1. Normalisierungsform werden die Daten nur aufgeteilt, dass wir eine reine Tabelle erhalten, in dem wir die entsprechenden Daten in einzelnen Merkmalen aufgeteilt haben.
Ab wann ein Wert atomar ist, hängthängt vom Nutzungskontext ab. Wenn man gewisse Teilungen nicht benötigt,benötigt, ist dies nicht unbedingt nötig.nötig. In der Praxis empfiehlt sich trotzdem alles möglichstmöglichst klein aufzuteilen.
Normalform 2 (2NF)
In der zweiten Normalform muss die Tabelle in der ersten Normalform vorliegen, und alle NichtschlüsselmerkmaleNichtschlüsselmerkmale voll funktional vom PrimärschlüsselPrimärschlüssel abhängen.abhängen. Unterm Strich bedeutet dies, dass jedes NichtschlüsselmerkmalNichtschlüsselmerkmal aus dem PrimärschlüsselPrimärschlüssel ableitbar ist. Merkmale, die von einem TeilschlüsselTeilschlüssel abhängigabhängig sind, müssenmüssen in eine eigene Tabelle geschrieben werden. Hier teilen wir also die Tabellen in einzelne Tabellen auf.
Um jetzt eine Tabelle in die zweite Normalform zu übernehmen,übernehmen, müssenmüssen wir folgende Schritte durchführen:durchführen:
- Alle
Nichtschlüsselmerkmale,Nichtschlüsselmerkmale, die von einemTeilschlüsselTeilschlüssel funktionalabhängigabhängigsindsind, bestimmen. - Aus den
TeilschlüsselnTeilschlüsseln mit allen funktionalabhängigenabhängigenNichtschlüsselmerkmalenNichtschlüsselmerkmalen eigene Tabellen bilden. - Im letzten Schritt entfernen wir alle nicht voll funktional
abhängigenabhängigenNichtschlüsselmerkmale.Nichtschlüsselmerkmale.
Normalform 3 (3NF)
Im letzten Schritt entfernen wir die letzten Redundanzen. Laut der Definition ist eine Tabelle in der Normalform 3, wenn jedes SchlüsselmerkmalSchlüsselmerkmal nicht transitiv vom PrimärschlüsselPrimärschlüssel abhängigabhängig ist.
Im Weiteren bedeutet Transitiv, dass ein Merkmal einen Umweg nutzen kann, um funktional abhängigabhängig von einem anderen Merkmal abhängigabhängig ist. Unterm Strich sollen alle Merkmale nur von einem PrimärschlüsselPrimärschlüssel abhängigabhängig sein.
Um eine Tabelle in die dritte Normalform zu übernehmen,übernehmen, verwenden wir folgende Schritte:
- Alle
Nichtschlüsselmerkmale,Nichtschlüsselmerkmale, die transitiv vomSchlüsselSchlüsselabhängen,abhängen, bestimmen. - Im
nächstennächsten Schritt sollen aus diesen transitivabhängigenabhängigenNichtschlüsselmerkmalenNichtschlüsselmerkmalen und denNichtschlüsselmerkmalen,Nichtschlüsselmerkmalen, von denen diese funktionalabhängigabhängig sind, eigene Tabellen bilden. - Im letzten Schritt entfernen wir alle transitiv
abhängigenabhängigenNichtschlüsselmerkmaleNichtschlüsselmerkmale aus der Ursprungstabelle.