📐 1. Die drei Stufen der Normalisierung
Die relationale Normalisierung verhindert Daten-Anomalien und Speicherverschwendung:
1. Normalform (1NF) – Atomarität: Jede Zelle enthält genau einen atomaren Einzelwert (keine Aufzählungen/Listen). Jede Zeile besitzt einen Primärschlüssel.
2. Normalform (2NF) – Volle funktionale Abhängigkeit: 1NF erfüllt + jedes Nicht-Schlüssel-Attribut hängt voll vom gesamten Primärschlüssel ab (keine Teilabhängigkeiten).
3. Normalform (3NF) – Keine transitiven Abhängigkeiten: 2NF erfüllt + kein Nicht-Schlüssel-Attribut hängt von einem anderen Nicht-Schlüssel-Attribut ab (z.B. PLZ → Ort).
🏛️ 2. Das saubere 3NF-Zielschema
Vom unübersichtlichen Monolithen zu fünf präzisen, miteinander verknüpften Entitäten:
┌──────────────┐ ┌───────────────────┐ ┌─────────────────────────┐
│ orte │ ◄────── │ kunden │ ◄────── │ auftraege │
├──────────────┤ PLZ ├───────────────────┤ KundeID ├─────────────────────────┤
│ PK plz │ │ PK id │ │ PK id │
│ stadt │ │ name, email │ │ FK kunde_id │
└──────────────┘ │ FK plz │ │ auftragsdatum │
└───────────────────┘ └─────────────────────────┘
│ AuftragID
▼
┌──────────────┐ ┌─────────────────────────┐
│ artikel │ ◄──────────────────────────────────── │ auftragspositionen │
├──────────────┤ ArtikelID ├─────────────────────────┤
│ PK id │ │ PK,FK auftrag_id │
│ bezeichnung │ │ PK,FK artikel_id │
│ einzelpreis │ │ menge │
└──────────────┘ └─────────────────────────┘
📦 Didaktische Analogie: Der Baukasten statt Betonblock
Ein unnormalisierter Datensatz ist wie ein massiver Betonblock: Möchte ein Kunde umziehen, musst du seinen Wohnort in 50 alten Bestellungen einzeln ändern (Änderungsanomalie). In 3NF änderst du den Ort an genau EINER einzigen Stelle (orte) – fertig!
📑 3. Cheat-Sheet: Normalformen-Checkliste
| Stufe | Hauptkriterium | Gelöste Anomalie |
|---|---|---|
| 1NF | Atomare Werte, PK vorhanden | Verhindert unstrukturierte Listen in Textfeldern |
| 2NF | Keine Teil-Abhängigkeiten von Teil-PKs | Trennung von Artikelstammdaten und Auftragspositionen |
| 3NF | Keine transitiven Abhängigkeiten | Keine Redundanz bei Adress- & Ortsangaben |
🧠 Diagnostischer Selbst-Check
Überprüfe dein Verständnis der Kernkonzepte und typischen Denkfallen, bevor du den Code in der Web-IDE schreibst.