Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise erfolgende Zerlegung von Relationen (in der Datenbank: Tabellen) in mehrere Relationen auf der Grundlage funktionaler Abhängigkeiten. Eine Normalisierung ist notwendig, um Redundanzen der Daten zu vermeiden, die einen erhöhten Speicherplatz benötigen, das Durchsuchen und Analysieren der Daten verlängern und bei der Änderung von Daten zu Inkonsistenzen führen können.
erste Normalform
Die erste NF besagt, dass jeder Wert in einer Datenbank atomar sein muss. Dies bedeutet, dass jedes Attribut maximal einem eindeutigem Wert zugeordnet sein darf.
Kurz: Kein Attributwertebereich kann in weitere (sinnvolle) Teilbereiche aufgespalten werden (Beispiel: Die Adresse darf nicht als Attribut verwendet werden, sondern muss sofern es das zugrunde liegende Geschäftsmodell erfordert in PLZ, Ort, Strasse, Hausnummer aufgeteilt werden).
Beispiel:
Falsch:
Mitarbeiter | ||
ID | Name | Adresse |
---|---|---|
001 | Merzenich, Kai | 53119, Bonn |
002 | Atatürk, Waldemar | 53119, Bonn |
003 | Feuerstein, Willma | 23865, Köln |
Lösung
Richtig:
Mitarbeiter | |||||
ID | Nachname | Vorname | Adresse | PLZ | Ort |
---|---|---|---|---|---|
001 | Merzenich | Kai | A_1 | 53119 | Bonn |
002 | Atatürk | Waldemar | A_2 | 53119 | Bonn |
003 | Feuerstein | Willma | A_3 | 23865 | Köln |
zweite Normalform
Die zweite NF ist erfüllt, wenn:
- die erste NF erfüllt ist
- jedes Attribut vom gesamten Primärschlüssel abhängig ist
Beispiel
Falsch:
Mitarbeiter | |||||
ID | Nachname | Vorname | Adresse | PLZ | Ort |
---|---|---|---|---|---|
001 | Merzenich | Kai | A_1 | 53119 | Bonn |
002 | Atatürk | Waldemar | A_2 | 53119 | Bonn |
003 | Feuerstein | Willma | A_3 | 23865 | Köln |
Lösung
Richtig:
ID | Nachnahme | Vorname |
001 | Merzenich | Kai |
002 | Wiechert | Alexander |
003 | Feuerstein | Wilma |
ID | Adresse | Plz | Ort |
001 | A_1 | 53119 | Bonn |
002 | A_2 | 50000 | Lummerland |
003 | A_3 | 10000 | Mondstadt |
dritte Normalform
Die dritte NF ist erfüllt, wenn:
- die zweite NF erfüllt ist
- die Nicht-Schlüssel-Attribute funktional unabhängig voneinander sind
- die Nicht-Schlüssel-Attribute nur vom Schlüsselattribut abhängig sind
(d.h. ein Attribut darf nicht über ein Nich-Schlüssel-Attribut gefunden werden)
Beispiel
Falsch:
ID | Adresse | Plz | Ort |
001 | A_1 | 53119 | Bonn |
002 | A_2 | 50000 | Lummerland |
003 | A_3 | 10000 | Mondstadt |
Hier ist das Attribut „Ort“ über das Nicht-Schlüssel-Attribut „PLZ“ zu finden. D.h. der Ort ist nicht voll funktional vom Attribut „Id“ abhängig sondern kann ebenfalls über die „Plz“ gefunden werden. Praktisch heist das, dass wenn ein weiterer Eintrag in die Tabelle erfolgt, der Ort und die Plz ein zweites mal vorhanden wäre.
Lösung
Richtig:
ID | Adresse | Plz |
001 | A_1 | 53119 |
002 | A_2 | 50000 |
003 | A_3 | 10000 |
Plz | Ort |
10000 | Mondstadt |
50000 | Lummerland |
53119 | Bonn |