Normalisierung
Überblick
Normalisierung ist der Prozess der Strukturierung einer relationalen Datenbank, um Datenredundanz zu reduzieren und Datenintegrität zu verbessern. Jede Normalform baut auf der vorherigen auf.
Redundanz
Redundanz ist die mehrfache, unnötige wiederholte Speicherung der selben Daten in einer Datenbank.
Erste Normalform (1NF)
Regel: Jede Spalte muss atomare (unteilbare) Werte enthalten, und jede Zeile muss eindeutig sein.
Verstoß: Eine Spalte Phone, welche mehrere Nummern in einer Zelle speichert.
| CustomerID | Name | Phone |
|---|---|---|
| 1 | Alice | 111-111, 222-222 |
Lösung:
| CustomerID | Name | Phone |
|---|---|---|
| 1 | Alice | 111-111 |
| 1 | Alice | 222-222 |
Verstoß: Mehrere Spalten für dasselbe Attribut.
| CustomerID | Name | Phone1 | Phone2 |
|---|---|---|---|
| 1 | Alice | 111-111 | 222-222 |
Lösung:
| CustomerID | Name | Phone |
|---|---|---|
| 1 | Alice | 111-111 |
| 1 | Alice | 222-222 |
Zweite Normalform (2NF)
Regel: Muss sich bereits in der 1NF befinden und jedes Nicht-Schlüsselattribut muss vom gesamten Primärschlüssel abhängen, nicht nur von einem Teil davon.
Verstoß: Die Tabelle nutzt (OrderID, ProductID) als zusammengesetzten Primärschlüssel aber ProductName hängt nur von ProductID ab.
| OrderID | ProductID | ProductName | Quantity |
|---|---|---|---|
| 1 | 42 | Tastatur | 2 |
| 2 | 42 | Tastatur | 1 |
Lösung: ProductName in eine separate Products Tabelle verschieben.
Bestellungen:
| OrderID | ProductID | Quantity |
|---|---|---|
| 1 | 42 | 2 |
| 2 | 42 | 1 |
Produkte:
| ProductID | ProductName |
|---|---|
| 42 | Tastatur |
Dritte Normalform (3NF)
Regel: Muss sich bereits in der 2NF befinden und kein Nicht-Schlüsselattribut darf von einem anderen Nicht-Schlüsselattribut abhängen (keine transitiven Abhängigkeiten).
Verstoß: DepartmentHead hängt von Department ab, nicht direkt von EmployeeID.
| EmployeeID | Department | DepartmentHead |
|---|---|---|
| 1 | Vertrieb | Carol |
| 2 | Vertrieb | Carol |
| 3 | IT | Dave |
Lösung: DepartmentHead in eine separate Departments Tabelle verschieben.
Mitarbeiter:
| EmployeeID | Department |
|---|---|
| 1 | Vertrieb |
| 2 | Vertrieb |
| 3 | IT |
Abteilungen:
| Department | DepartmentHead |
|---|---|
| Vertrieb | Carol |
| IT | Dave |
Zusammenfassung
| Normalform | Voraussetzungen |
|---|---|
| 1NF | Atomare Werte, keine wiederholenden Spalten, eindeutige Zeilen |
| 2NF | 1NF + keine Teilabhängigkeiten von einem zusammengesetzten Schlüssel |
| 3NF | 2NF + keine transitiven Abhängigkeiten zwischen Nicht-Schlüsselattributen |