Normalformen

0-te Normalform: Relationen in Relationen

1-te Normalform: keine Attribute aus mehreren Elementen (wieder Relationen)
Vorgangsweise: verschachtelte Werte werden auf einzelne Zeilen aufgeteilt und die anderen Dupliziert. Primärschlüssel muss wahrscheinlich neu gesetzt werden
Nachteile: Hohe Datenredundanz

2-te Normalform: Jedes nicht-Schlüssel Attribut muss vom Gesamtschlüssel abhängig sein aber nicht von Teilschlüsseln. (siehe Funktionale Abhängigkeit). Die erste Normalform kann auch definiert werden als: Jedes nicht-Schlüssel Attribut muss vom Primärschlüssel abhängig sein
Vorgangsweise: Die Relation wird in mehrere Relationen aufgeteilt. Die Attribute die von Teilschlüsseln abhängig sind werden zusammen mit diesen Teilschlüsseln in eine neue Relation gruppiert.

3-te Normalform: Die Nicht-Schlüssel Attribute dürfen voneinnander nicht abhängig sein (nicht nur PK)
Vorgangsweise: Die Relation wird wieder Aufgespalten, Abhängige Attribute werden mit den Determinierenden in neuen Relationen zusammengefasst, die dort zu Primary Keys werden.

Denormalisieren

hohe Normalformen liefern viele Tabellen, das kann aufwendig sein (Joins, Performanceprobeme)
Denormalisierung: man geht nicht bis zur höchsten Normalform, sollte nur aus Performancegründen durchgeführt werden

Normalize until it hurts, Denormalize until it works

R(A, B, C, D, E), F = {A->B, B->C, C->D, D->E}

A⁺={A,B,C,D,E}
AD⁺={A,B,C,D,E}
C⁺={C,D,E}

X ist Superschlüssel wenn X⁺ alle Attribute von R
X ist Schlüsselkandidat wenn X⁺ alle Attribute von R UND X minimal ist (wenn irgendendein Attribut enfernt wird ist es kein Superschlüssel mehr)