Normalisierung von Datenbanken

Normalisierung organisiert Tabellen so, dass Daten redundanzfrei und konsistent gespeichert werden. Das verhindert Anomalien beim Einfügen, Ändern und Löschen.

Die ersten drei Normalformen

1. Normalform (1NF): Atomare Werte – keine Listen in einer Zelle. Statt hobbys = "Lesen, Sport" eine eigene Tabelle.

2. Normalform (2NF): Keine teilweise Abhängigkeit – jede Nicht-Schlüsselspalte hängt vom ganzen Primärschlüssel ab.

3. Normalform (3NF): Keine transitiven Abhängigkeiten – keine Spalte, die von einer anderen Nicht-Schlüsselspalte abhängt.

Beispiel: schlecht vs. gut

-- Schlecht: Kundenname wiederholt sich in jeder Bestellung
CREATE TABLE bestellungen (
  id INT PRIMARY KEY,
  kunde_name VARCHAR(100),
  artikel VARCHAR(100)
);

-- Gut: Kunde in eigener Tabelle, Bestellung referenziert per FK
CREATE TABLE kunden (id INT PRIMARY KEY, name VARCHAR(100));
CREATE TABLE bestellungen (
  id INT PRIMARY KEY,
  kunde_id INT REFERENCES kunden(id),
  artikel VARCHAR(100)
);

Praxistipp

Normalisierung bis 3NF ist der Standard. Darüber hinaus (4NF/5NF) nur bei speziellen Anforderungen. Zu viel Normalisierung erzeugt viele JOINs – manchmal ist eine bewusste Denormalisierung für Performance sinnvoll.

Weiterlesen: SQL-Grundlagen · Indizes erklärt · Schema erklärt