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. Zusaetzlich gibt es einen Primaerschluessel, es existieren keine Wiederholungen und die Zeilenreihenfolge hat keine Bedeutung. Beispiel: Eltern(Vater, Mutter, {Else, Lucie}) verletzt 1NF, weil die Zelle Kinder eine Menge enthaelt. Aufloesung durch Ausrollen in mehrere Tupel, sodass jedes Attribut nur einen Wert enthaelt.
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 Nichtschluesselattribut voll funktional von jedem Kandidatenschluessel abhaengig ist. Bei zusammengesetzten Schluesseln bedeutet das: kein Nichtschluesselattribut darf bereits von einem Teilschluessel bestimmt werden (keine partielle Abhaengigkeit). Beispiel StudentenBelegung(MatrNr, VorlNr, Name, Semester): Schluessel ist {MatrNr, VorlNr}, aber {MatrNr} bestimmt bereits Name und Semester -> 2NF verletzt. Bei einfachen (nicht zusammengesetzten) Schluesseln ist 2NF automatisch erfuellt.
2NF verhindert partielle Abhaengigkeiten von Teilschluesseln.
3. Normalform (3NF)
Eine Relation ist in 3NF, wenn sie in 2NF ist und fuer jede FD alpha -> beta mindestens eine von drei Bedingungen gilt: (1) alpha ist Superschluessel, (2) beta ist Teilmenge von alpha (trivial), oder (3) jedes Attribut in beta ist prim, d.h. Teil eines Kandidatenschluessels. Ziel: keine transitiven Abhaengigkeiten zwischen Nichtschluesselattributen. Klassisches Anti-Beispiel: {MatrNr}->{FachbereichNr}->{FachbereichName} - hier gibt es eine transitive Abhaengigkeit ueber ein Nichtschluesselattribut.
3NF verhindert transitive Abhaengigkeiten Nichtschluessel -> Nichtschluessel.
Boyce-Codd-Normalform (BCNF)
BCNF ist eine Verschaerfung von 3NF. Eine Relation ist in BCNF, wenn fuer jede nicht-triviale FD alpha -> beta gilt: alpha ist Superschluessel. Unterschied zu 3NF: die dritte Ausnahme (beta ist prim) faellt weg. Typisches Erkennungs-Beispiel Staedte(Ort, BLand, Ministerpraesident, EW) mit FDs {BLand}->{Ministerpraesident} und {Ministerpraesident}->{BLand}: In 3NF, aber nicht in BCNF, weil BLand kein Superschluessel ist, obwohl Ministerpraesident prim ist. BCNF-Zerlegung ist immer verlustlos moeglich, aber nicht immer abhaengigkeitserhaltend.
BCNF: links jeder nicht-trivialen FD steht ein Superschluessel - keine Ausnahmen.
Mehrwertige Abhaengigkeit (MVD)
Eine MVD alpha ->-> beta bedeutet: fuer jeden Wert von alpha existiert eine Menge von beta-Werten, die unabhaengig von den restlichen Attributen ist. Jede FD ist auch eine MVD, aber nicht umgekehrt. MVDs treten auf, wenn zwei unabhaengige mehrwertige Beziehungen in einer Tabelle gemischt werden, z.B. PersNr ->-> Sprache und PersNr ->-> ProgSprache in einer Faehigkeiten-Relation. Das fuehrt zu Redundanz durch alle Kombinationen von Sprachen und Programmiersprachen.
MVD = zwei unabhaengige Mehrfachwerte in einer Tabelle gemischt.
4. Normalform (4NF)
Eine Relation ist in 4NF, wenn sie in BCNF ist und fuer jede nicht-triviale MVD alpha ->-> beta gilt: alpha ist Superschluessel. Wenn eine Relation keine mehrwertigen Abhaengigkeiten hat, ist sie automatisch in 4NF, sofern BCNF erfuellt. Erkennungs-Beispiel Faehigkeiten(PersNr, Sprache, ProgSprache): alle drei Attribute bilden zusammen den Schluessel, aber PersNr ->-> Sprache ist eine MVD, bei der PersNr kein Superschluessel ist -> 4NF verletzt. Zerlegung in zwei Tabellen (PersNr, Sprache) und (PersNr, ProgSprache) beseitigt das Problem.
4NF: keine nicht-trivialen MVDs ohne Superschluessel.
Erkennungs-Algorithmus fuer Normalformen
Systematisches Vorgehen in einer Aufgabe: (1) Attribute atomar? Nein -> nur 0NF/unnormalisiert. (2) Kandidatenschluessel identifizieren. (3) Alle FDs pruefen. (4) Gibt es partielle Abhaengigkeiten (Nichtschluessel-Attribut haengt von Teilschluessel ab)? Ja -> nur 1NF. (5) Gibt es transitive Abhaengigkeiten (Nichtschluessel -> Nichtschluessel)? Ja -> nur 2NF. (6) Ist bei jeder FD die linke Seite Superschluessel? Wenn nur bei prim-Attributen Ausnahme -> 3NF, aber nicht BCNF. Sonst BCNF. (7) Gibt es nicht-triviale MVDs ohne Superschluessel-Praefix? Nein -> auch 4NF.
Immer die hoechste erfuellte NF bestimmen, von oben nach unten pruefen.
Anomalien als Motivation
Schlecht normalisierte Schemata verursachen vier Typen von Anomalien: Update-Anomalie (redundant gespeicherte Werte muessen mehrfach geaendert werden), Loesch-Anomalie (beim Loeschen eines Tupels gehen andere Informationen ungewollt verloren), Einfuege-Anomalie (neues Objekt kann nicht eingefuegt werden, weil zwingende Attribute fehlen und NULL noetig waere) und Mutationsanomalie (durch Redundanz entstehen bei versehentlicher Aenderung inkonsistente Zustaende). Normalisierung eliminiert Redundanz und damit diese Anomalien.
Normalisierung existiert, um Anomalien und Redundanz zu vermeiden.