1. Normalform (1NF)
Eine Relation ist in 1NF, wenn alle Attributwerte atomar sind, d.h. keine Mengen, Listen, geschachtelten Relationen oder Wiederholungsgruppen als Zellwert enthalten sind. Zusätzlich gibt es einen Primärschlüssel, es existieren keine Wiederholungen und die Zeilenreihenfolge hat keine Bedeutung. Beispiel: Eltern(Vater, Mutter, {Else, Lucie}) verletzt 1NF, weil die Zelle Kinder eine Menge enthält. Auflösung durch Ausrollen in mehrere Tupel, sodass jedes Attribut nur einen Wert enthält.
1NF = atomare Werte in jeder Zelle, keine Listen oder Mengen.
2. Normalform (2NF)
Eine Relation ist in 2NF, wenn sie in 1NF ist und jedes Nichtschlüsselattribut voll funktional von jedem Kandidatenschlüssel abhängig ist. Bei zusammengesetzten Schlüsseln bedeutet das: kein Nichtschlüsselattribut darf bereits von einem Teilschlüssel bestimmt werden (keine partielle Abhängigkeit). Beispiel StudentenBelegung(MatrNr, VorlNr, Name, Semester): Schlüssel ist {MatrNr, VorlNr}, aber {MatrNr} bestimmt bereits Name und Semester -> 2NF verletzt. Bei einfachen (nicht zusammengesetzten) Schlüsseln ist 2NF automatisch erfüllt.
2NF verhindert partielle Abhängigkeiten von Teilschlüsseln.
3. Normalform (3NF)
Eine Relation ist in 3NF, wenn sie in 2NF ist und für jede FD alpha -> beta mindestens eine von drei Bedingungen gilt: (1) alpha ist Superschlüssel, (2) beta ist Teilmenge von alpha (trivial), oder (3) jedes Attribut in beta ist prim, d.h. Teil eines Kandidatenschlüssels. Ziel: keine transitiven Abhängigkeiten zwischen Nichtschlüsselattributen. Klassisches Anti-Beispiel: {MatrNr}->{FachbereichNr}->{FachbereichName} - hier gibt es eine transitive Abhängigkeit über ein Nichtschlüsselattribut.
3NF verhindert transitive Abhängigkeiten Nichtschlüssel -> Nichtschlüssel.
Boyce-Codd-Normalform (BCNF)
BCNF ist eine Verschärfung von 3NF. Eine Relation ist in BCNF, wenn für jede nicht-triviale FD alpha -> beta gilt: alpha ist Superschlüssel. Unterschied zu 3NF: die dritte Ausnahme (beta ist prim) fällt weg. Typisches Erkennungs-Beispiel Städte(Ort, BLand, Ministerpräsident, EW) mit FDs {BLand}->{Ministerpräsident} und {Ministerpräsident}->{BLand}: In 3NF, aber nicht in BCNF, weil BLand kein Superschlüssel ist, obwohl Ministerpräsident prim ist. BCNF-Zerlegung ist immer verlustlos möglich, aber nicht immer abhängigkeitserhaltend.
BCNF: links jeder nicht-trivialen FD steht ein Superschlüssel - keine Ausnahmen.
Mehrwertige Abhängigkeit (MVD)
Eine MVD alpha ->-> beta bedeutet: für jeden Wert von alpha existiert eine Menge von beta-Werten, die unabhängig von den restlichen Attributen ist. Jede FD ist auch eine MVD, aber nicht umgekehrt. MVDs treten auf, wenn zwei unabhängige mehrwertige Beziehungen in einer Tabelle gemischt werden, z.B. PersNr ->-> Sprache und PersNr ->-> ProgSprache in einer Fähigkeiten-Relation. Das führt zu Redundanz durch alle Kombinationen von Sprachen und Programmiersprachen.
MVD = zwei unabhängige Mehrfachwerte in einer Tabelle gemischt.
4. Normalform (4NF)
Eine Relation ist in 4NF, wenn sie in BCNF ist und für jede nicht-triviale MVD alpha ->-> beta gilt: alpha ist Superschlüssel. Wenn eine Relation keine mehrwertigen Abhängigkeiten hat, ist sie automatisch in 4NF, sofern BCNF erfüllt. Erkennungs-Beispiel Fähigkeiten(PersNr, Sprache, ProgSprache): alle drei Attribute bilden zusammen den Schlüssel, aber PersNr ->-> Sprache ist eine MVD, bei der PersNr kein Superschlüssel ist -> 4NF verletzt. Zerlegung in zwei Tabellen (PersNr, Sprache) und (PersNr, ProgSprache) beseitigt das Problem.
4NF: keine nicht-trivialen MVDs ohne Superschlüssel.
Erkennungs-Algorithmus für Normalformen
Systematisches Vorgehen in einer Aufgabe: (1) Attribute atomar? Nein -> nur 0NF/unnormalisiert. (2) Kandidatenschlüssel identifizieren. (3) Alle FDs prüfen. (4) Gibt es partielle Abhängigkeiten (Nichtschlüssel-Attribut hängt von Teilschlüssel ab)? Ja -> nur 1NF. (5) Gibt es transitive Abhängigkeiten (Nichtschlüssel -> Nichtschlüssel)? Ja -> nur 2NF. (6) Ist bei jeder FD die linke Seite Superschlüssel? Wenn nur bei prim-Attributen Ausnahme -> 3NF, aber nicht BCNF. Sonst BCNF. (7) Gibt es nicht-triviale MVDs ohne Superschlüssel-Präfix? Nein -> auch 4NF.
Immer die höchste erfüllte NF bestimmen, von oben nach unten prüfen.
Anomalien als Motivation
Schlecht normalisierte Schemata verursachen vier Typen von Anomalien: Update-Anomalie (redundant gespeicherte Werte müssen mehrfach geändert werden), Lösch-Anomalie (beim Löschen eines Tupels gehen andere Informationen ungewollt verloren), Einfüge-Anomalie (neues Objekt kann nicht eingefügt werden, weil zwingende Attribute fehlen und NULL nötig wäre) und Mutationsanomalie (durch Redundanz entstehen bei versehentlicher Änderung inkonsistente Zustände). Normalisierung eliminiert Redundanz und damit diese Anomalien.
Normalisierung existiert, um Anomalien und Redundanz zu vermeiden.