⭐ Laut Dozent: Normalformen erkennen (nicht Definition auswendig). Nur bis BCNF/4NF — 5NF ist ausgenommen.

Zusammenfassung

Normalformen sind Gütekriterien für relationale Schemata, die aufeinander aufbauen und schrittweise Redundanzen sowie Anomalien (Einfüge-, Lösch-, Update-, Mutationsanomalie) verhindern. Für die Klausur muss man in einer gegebenen Relation mit funktionalen Abhängigkeiten (FDs) erkennen können, welche höchste Normalform (1NF, 2NF, 3NF, BCNF, 4NF) vorliegt. Kernwerkzeug ist die Analyse jeder FD gegen die Schlüsselstruktur der Relation.

Kernkonzepte

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.

Wichtige Details

Beispiele

Beispiel 1NF-Verletzung: Eltern-Relation

Die Relation Eltern(Vater, Mutter, Kinder) mit Zeile (Johann, Martha, {Else, Lucie}) verletzt 1NF wegen der Menge im Attribut Kinder. Auflösung: aufspalten in mehrere Tupel.

Vorher (nicht 1NF):
| Vater  | Mutter | Kinder        |
| Johann | Martha | {Else, Lucie} |
| Johann | Maria  | {Theo, Josef} |

Nachher (1NF):
| Vater  | Mutter | Kind  |
| Johann | Martha | Else  |
| Johann | Martha | Lucie |
| Johann | Maria  | Theo  |
| Johann | Maria  | Josef |

Beispiel 2NF-Verletzung: StudentenBelegung

StudentenBelegung(MatrNr, VorlNr, Name, Semester) mit Schlüssel {MatrNr, VorlNr}. FDs: {MatrNr}->{Name} und {MatrNr}->{Semester}. Name und Semester hängen nur von einem Teilschlüssel ab -> partielle Abhängigkeit, 2NF verletzt. Zerlegung: Studenten(MatrNr, Name, Semester) und hören(MatrNr, VorlNr).

FD-Check:
Schlüssel: {MatrNr, VorlNr}
{MatrNr} -> {Name}      partiell! (Teilschluessel)
{MatrNr} -> {Semester}  partiell! (Teilschluessel)
=> nur 1NF, nicht 2NF

Zerlegung:
Studenten: {MatrNr, Name, Semester}
hoeren:    {MatrNr, VorlNr}

Beispiel BCNF-Verletzung (3NF erfüllt): Städte

Städte(Ort, BLand, Ministerpräsident, Einwohnerzahl). Kandidatenschlüssel {Ort, BLand} und {Ort, Ministerpräsident}. FDs: {BLand}->{Ministerpräsident} und {Ministerpräsident}->{BLand}. Diese FDs haben keine Superschlüssel als linke Seite, aber ihre rechten Seiten sind prim -> 3NF ist erfüllt, BCNF nicht.

Attribute: Ort, BLand, Ministerpraesident, EW
Kandidatenschluessel:
  K1 = {Ort, BLand}
  K2 = {Ort, Ministerpraesident}
Prim-Attribute: Ort, BLand, Ministerpraesident

FD-Check:
{Ort, BLand} -> {EW}                Superschluessel -> OK
{BLand} -> {Ministerpraesident}     kein SK, aber rechts prim -> 3NF OK, BCNF verletzt
{Ministerpraesident} -> {BLand}     kein SK, aber rechts prim -> 3NF OK, BCNF verletzt

Ergebnis: 3NF ja, BCNF nein

Beispiel 4NF-Verletzung: Fähigkeiten

Fähigkeiten(PersNr, Sprache, ProgSprache) mit unabhängigen MVDs {PersNr}->->{Sprache} und {PersNr}->->{ProgSprache}. Alle drei Attribute bilden den Schlüssel. BCNF ist erfüllt (nur triviale FDs), aber MVDs ohne Superschlüssel verletzen 4NF. Zerlegung in Sprachen(PersNr, Sprache) und ProgSprachen(PersNr, ProgSprache).

Vor 4NF-Zerlegung (4 Zeilen für Person 3002):
| PersNr | Sprache    | ProgSprache |
| 3002   | griechisch | C           |
| 3002   | griechisch | Pascal      |
| 3002   | lateinisch | C           |
| 3002   | lateinisch | Pascal      |

MVDs: PersNr ->-> Sprache, PersNr ->-> ProgSprache
PersNr ist kein Superschluessel -> 4NF verletzt

Nach Zerlegung:
Sprachen(PersNr, Sprache), ProgSprachen(PersNr, ProgSprache)
=> nur noch 2+2 statt 4 Tupel

Grafik: Inklusionshierarchie der Normalformen

1NF atomare Attribute 2NF keine partiellen Abhängigkeiten 3NF keine transitiven Abhängigkeiten BCNF alpha ist stets Superschlüssel 4NF keine nicht-trivialen MVDs Zerlegung Redundanz reduziert Anomalie-Risiko hoch normalisiert ! Anomalien redundanzfrei

Die Normalformen liegen als konzentrische Bereiche ineinander: jede höhere Normalform ist eine Teilmenge der niedrigeren. Aussen (rot) hohes Anomalie-Risiko, innen (grün) redundanzfreies Schema. Der Zerlegungspfeil zeigt den schrittweisen Übergang von aussen nach innen.

FAQ

Wie erkenne ich schnell, dass eine Relation nicht in 1NF ist?
Wenn in einer Zelle eine Menge, Liste, ein komma-separierter Wert oder eine geschachtelte Relation steht. Beispiel: Kinder=(Else, Lucie) oder ein Feld mit mehreren Telefonnummern in einer Zelle.
Wann ist 2NF automatisch erfüllt?
Immer dann, wenn der Primärschlüssel aus nur einem Attribut besteht. Partielle Abhängigkeiten können nur bei zusammengesetzten Schlüsseln entstehen.
Was ist der genaue Unterschied zwischen 3NF und BCNF?
3NF erlaubt eine dritte Rettungs-Bedingung: die rechte Seite der FD ist prim (Teil eines Kandidatenschlüssels). BCNF fordert strikt, dass die linke Seite jeder nicht-trivialen FD ein Superschlüssel ist. Der Unterschied wird nur bei mehreren überlappenden Kandidatenschlüsseln sichtbar.
Warum reicht BCNF nicht immer?
BCNF-Zerlegung ist zwar verlustlos, aber nicht immer abhängigkeitserhaltend. Beispiel PLZverzeichnis: die FD Strasse,Ort,BLand->PLZ geht bei der BCNF-Zerlegung verloren. In solchen Fällen bleibt man bei 3NF, um Abhängigkeitserhalt zu sichern.
Was ist ein prim-Attribut?
Ein Attribut, das in mindestens einem Kandidatenschlüssel enthalten ist. Es kann auch in mehreren enthalten sein. Nichtschlüsselattribute sind Attribute, die in keinem Kandidatenschlüssel vorkommen.
Was ist eine mehrwertige Abhängigkeit (MVD)?
alpha ->-> beta bedeutet: für feste alpha-Werte ist die Menge der beta-Werte unabhängig von den restlichen Attributen der Relation. Anschaulich sind zwei semantisch unabhängige Mehrfach-Attribute in derselben Tabelle zusammengezogen.
Wann liegt automatisch 4NF vor?
Wenn eine Relation in BCNF ist und keine nicht-trivialen mehrwertigen Abhängigkeiten enthält. In den meisten praktischen Fällen ist BCNF bereits ausreichend, 4NF wird nur relevant bei zwei unabhängigen n:m-Beziehungen in einer Tabelle.
Was macht man mit einer Relation, die alle Bedingungen der 4NF erfüllt?
Nichts - sie ist optimal normalisiert bezüglich der Klausur-relevanten Stufen. Eine solche Relation kann fast direkt in ein physisches DB-Schema mit Primary Keys übertragen werden.

Prüfungsfragen

0 von 12 Fragen beantwortet