Normalisierung und Normalformen (1NF, 2NF, 3NF) einfach erklärt
Kurz: Normalisierung zerlegt Tabellen so, dass jede Information nur einmal gespeichert wird; das vermeidet Redundanz und Fehler beim Ändern, Einfügen und Löschen.
Genauer: Eine schlecht entworfene Tabelle speichert dieselben Daten mehrfach. Ändert sich ein Wert, muss er überall angepasst werden, sonst entstehen Widersprüche (Anomalien). Die Normalformen sind Regeln, die das verhindern. Sie sind ein Klassiker in der IHK-Prüfung.
Im Detail
Beispiel für eine unnormalisierte Tabelle
Bestellung(bestnr, datum, kunde, kundenort, artikel1, preis1, artikel2, preis2)
Probleme: Mehrere Artikel in Spalten (wie viele?), Kundendaten stehen bei jeder Bestellung erneut, Preise doppelt. Ändert der Kunde seinen Ort, müssen alle Zeilen geändert werden.
1. Normalform (1NF)
Jede Zelle enthält genau einen Wert (atomar), keine Wiederholungsgruppen (artikel1, artikel2), es gibt einen Primärschlüssel.
→ Aus den Artikelspalten werden mehrere Zeilen: Bestellposition(bestnr, posnr, artikel, preis, menge).
2. Normalform (2NF)
Zusätzlich: Jedes Nicht-Schlüsselattribut hängt vom ganzen Schlüssel ab, nicht nur von einem Teil. Betrifft Tabellen mit zusammengesetztem Schlüssel (bestnr + artikel): Hängt preis nur vom artikel ab, gehört er in eine eigene Tabelle Artikel(artikelnr, bezeichnung, preis).
3. Normalform (3NF)
Zusätzlich: Keine transitiven Abhängigkeiten: Nicht-Schlüsselattribute hängen direkt vom Schlüssel ab, nicht über ein anderes Nicht-Schlüsselattribut. Hängt kundenort von kunde ab und kunde von bestnr, gehören Kundendaten in eine eigene Tabelle Kunde(kundennr, name, ort); Bestellung verweist über einen Fremdschlüssel.
Merkspruch: „Die Attribute hängen vom Schlüssel, vom ganzen Schlüssel und nur vom Schlüssel ab.“
Ergebnis und Praxis
Kunde(kundennr, name, ort)
Bestellung(bestnr, datum, kundennr→Kunde)
Artikel(artikelnr, bezeichnung, preis)
Bestellposition(bestnr→Bestellung, posnr, artikelnr→Artikel, menge)
Vorteile: keine Redundanz, konsistente Änderungen, weniger Speicher. Nachteil: Mehr Joins. Deshalb wird manchmal bewusst denormalisiert (Leistung, Auswertungen, Data Warehouse). Weitere Normalformen (BCNF, 4NF, 5NF) behandeln Spezialfälle. Gute Datenmodelle entstehen mit dem ER-Modell, das man dann in Tabellen überführt.
Siehe auch: Joins