Normalisierung von Datenbanken

Die Normalisierung relationaler Schemata 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