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