Datenbanken & SQL

Normalformen in Datenbanken

Eine verständliche Erklärung der ersten drei Normalformen mit anschaulichen Beispielen. Die Normalisierung ist entscheidend für ein sauberes und wartbares Datenbankdesign.

Warum normalisieren?

Ohne Normalisierung können folgende Anomalien auftreten:

  • Änderungsanomalie: Änderung an einem Ort, aber nicht überall
  • Einfügeanomalie: Neue Daten können nicht eingefügt werden, weil andere Infos fehlen
  • Löschanomalie: Beim Löschen gehen unbeabsichtigt weitere Infos verloren

1. Normalform (1NF)

Ziel:
Jeder Wert in einer Tabelle muss atomar (unteilbar) sein.

Regeln:

  • Keine mehrfachen Werte in einem Feld (z. B. Listen)
  • Alle Attribute enthalten genau einen Wert pro Zelle

Nicht in 1NF:

kunden_idnamefarben
1Lisarot, blau

In 1NF:

kunden_idnamefarbe
1Lisarot
1Lisablau

2. Normalform (2NF)

Ziel:
Alle Nicht-Schlüsselattribute hängen voll funktional vom Primärschlüssel ab.

Zusätzlich zu 1NF gilt:

  • Gilt nur für Tabellen mit zusammengesetzten Primärschlüsseln
  • Keine Teilabhängigkeiten erlaubt

Nicht in 2NF:

Primärschlüssel: (student_id, kurs_id)
student_idkurs_idstudent_name
1ALara
1BLara
student_name hängt nur von student_id ab, nicht von beiden Feldern

In 2NF:

Tabelle: studenten

student_idstudent_name
1Lara

Tabelle: teilnahmen

student_idkurs_id
1A
1B

3. Normalform (3NF)

Ziel:
Alle Nicht-Schlüsselattribute hängen nur vom Primärschlüssel ab, nicht transitiv über ein anderes Attribut.

Zusätzlich zu 2NF gilt:

  • Keine transitiven Abhängigkeiten

Nicht in 3NF:

kunden_idplzort
112345Berlin
254321München
ort hängt nicht direkt vom Primärschlüssel kunden_id ab,
sondern von plz, die wiederum vom Primärschlüssel abhängt → transitiv

In 3NF:

Tabelle: kunden

kunden_idplz
112345
254321

Tabelle: orte

plzort
12345Berlin
54321München

Zusammenfassung

NormalformZielVerhindert
1NFNur atomare WerteMehrfachwerte in einer Zelle
2NFVolle funktionale AbhängigkeitTeilabhängigkeiten
3NFKeine transitiven AbhängigkeitenAbhängigkeit über Nicht-Schlüssel
Du musst die 1NF erfüllen, um in die 2NF zu kommen.
Die 2NF muss erfüllt sein, um in die 3NF zu kommen.
Jede Stufe baut auf der vorherigen auf.