Zuletzt aktualisiert am 04.12.2025 6 Minuten Lesezeit

Normalisierung

Normalisierung ist ein systematischer Prozess zur Strukturierung von relationalen Datenbanktabellen. Ziel ist es, Datenredundanz zu eliminieren, Speicherplatz zu sparen und sogenannte Anomalien bei der Datenmanipulation zu vermeiden. In der IT-Ausbildung, insbesondere bei Fachinformatikern für Anwendungsentwicklung, gehört die Normalisierung zu den grundlegenden Konzepten des Datenbankdesigns.

Warum Normalisierung?

Ohne Normalisierung entstehen in Datenbanken häufig Probleme, die als Anomalien bezeichnet werden. Diese treten auf, wenn dieselben Daten mehrfach gespeichert werden (Redundanz) und bei Änderungen nicht konsistent aktualisiert werden.

Die drei Anomalie-Arten

Es gibt drei typische Anomalien, die durch schlechtes Datenbankdesign entstehen können:

  • Einfüge-Anomalie (Insert Anomaly): Du kannst bestimmte Daten nicht einfügen, ohne andere, eigentlich unabhängige Daten ebenfalls einzutragen
  • Änderungs-Anomalie (Update Anomaly): Wenn du einen Wert ändern möchtest, musst du ihn an mehreren Stellen aktualisieren – vergisst du eine Stelle, entstehen inkonsistente Daten
  • Lösch-Anomalie (Delete Anomaly): Beim Löschen eines Datensatzes gehen ungewollt auch andere, noch benötigte Informationen verloren

Die Normalformen im Überblick

Der Normalisierungsprozess erfolgt schrittweise durch sogenannte Normalformen. Jede Normalform baut auf der vorherigen auf und stellt strengere Anforderungen an die Tabellenstruktur. In der Praxis werden meist die ersten drei Normalformen (1NF, 2NF, 3NF) angewendet.

Erste Normalform (1NF)

Die erste Normalform stellt sicher, dass jede Spalte nur atomare Werte enthält. Das bedeutet: Jede Zelle darf nur einen einzigen, unteilbaren Wert enthalten – keine Listen, keine mehrfachen Einträge.

Anforderungen der 1NF

  • Alle Attributwerte sind atomar (nicht weiter zerlegbar)
  • Jede Spalte enthält gleichartige Werte
  • Keine Wiederholungsgruppen innerhalb einer Zeile
  • Jede Zeile ist eindeutig identifizierbar (Primärschlüssel)

Beispiel: Verstoss gegen 1NF

Eine Tabelle mit einer Spalte "Telefonnummern", die mehrere Nummern durch Kommas getrennt enthält, verletzt die 1NF:

KundenID Name Telefonnummern
1 Müller 0123-456, 0789-123
2 Schmidt 0111-222

Um die 1NF zu erfüllen, müsste jede Telefonnummer in einer eigenen Zeile stehen oder eine separate Tabelle für Telefonnummern angelegt werden.

Zweite Normalform (2NF)

Die zweite Normalform baut auf der 1NF auf und beseitigt sogenannte partielle Abhängigkeiten. Das bedeutet: Jedes Nicht-Schlüssel-Attribut muss vom gesamten Primärschlüssel abhängen, nicht nur von einem Teil davon.

Wann ist 2NF relevant?

Die 2NF ist nur bei zusammengesetzten Primärschlüsseln relevant. Besteht der Primärschlüssel nur aus einem Attribut, ist die Tabelle automatisch in 2NF, sobald sie 1NF erfüllt.

Beispiel: Verstoss gegen 2NF

Betrachte eine Tabelle mit dem zusammengesetzten Primärschlüssel (BestellID, ArtikelID):

BestellID ArtikelID ArtikelName Menge ArtikelPreis
1 101 Tastatur 2 49.99
1 102 Maus 1 29.99
2 101 Tastatur 1 49.99

Hier hängen ArtikelName und ArtikelPreis nur von ArtikelID ab, nicht vom gesamten Schlüssel. Die Lösung: Artikel-Informationen in eine separate Tabelle auslagern.

Dritte Normalform (3NF)

Die dritte Normalform baut auf der 2NF auf und eliminiert transitive Abhängigkeiten. Das bedeutet: Kein Nicht-Schlüssel-Attribut darf von einem anderen Nicht-Schlüssel-Attribut funktional abhängig sein.

Was ist eine transitive Abhängigkeit?

Eine transitive Abhängigkeit liegt vor, wenn ein Attribut A vom Primärschlüssel abhängt, und ein Attribut B wiederum von A abhängt. Attribut B ist dann nur indirekt (transitiv) vom Primärschlüssel abhängig.

Beispiel: Verstoss gegen 3NF

MitarbeiterID Name AbteilungsID AbteilungsName AbteilungsLeiter
1 Müller 10 Entwicklung Schmidt
2 Meier 10 Entwicklung Schmidt
3 Weber 20 Vertrieb Fischer

Hier hängen AbteilungsName und AbteilungsLeiter von AbteilungsID ab – nicht direkt vom Primärschlüssel MitarbeiterID. Die Lösung: Eine separate Abteilungs-Tabelle erstellen.

Der Normalisierungsprozess

Die Normalisierung erfolgt systematisch in aufeinander aufbauenden Schritten. Du musst immer zuerst die vorherige Normalform erfüllen, bevor du zur nächsten übergehen kannst:

  1. Ausgangstabelle analysieren: Identifiziere alle Attribute und ihre Abhängigkeiten
  2. 1NF herstellen: Eliminiere nicht-atomare Werte und Wiederholungsgruppen
  3. 2NF herstellen: Entferne partielle Abhängigkeiten durch Aufteilen in separate Tabellen
  4. 3NF herstellen: Beseitige transitive Abhängigkeiten durch weitere Tabellenaufteilung

Höhere Normalformen

Neben den ersten drei Normalformen existieren weitere, strengere Normalformen wie die Boyce-Codd-Normalform (BCNF), die 4. Normalform (4NF) und die 5. Normalform (5NF). Diese werden in der Praxis jedoch selten benötigt, da die 3NF für die meisten Anwendungsfälle ausreichend ist.

Denormalisierung

In bestimmten Situationen kann es sinnvoll sein, bewusst von einer höheren Normalform auf eine niedrigere zurückzugehen. Dieser Prozess heisst Denormalisierung und wird eingesetzt, um die Performance bei Leseoperationen zu verbessern.

  • Wann Denormalisierung?: Bei sehr grossen Datenbanken mit vielen JOIN-Operationen
  • Nachteil: Erhöhte Redundanz und komplexere Update-Logik
  • Einsatzgebiet: Data Warehouses, Reporting-Datenbanken, OLAP-Systeme

Vorteile der Normalisierung

  • Weniger Redundanz: Daten werden nur einmal gespeichert
  • Datenintegrität: Konsistente Daten durch Vermeidung von Anomalien
  • Speicherplatzersparnis: Keine doppelten Datenhaltung
  • Einfachere Wartung: Änderungen müssen nur an einer Stelle erfolgen
  • Klare Struktur: Übersichtliche und logische Datenbankstruktur

Nachteile der Normalisierung

  • Mehr Tabellen: Komplexere Datenbankstruktur
  • JOIN-Operationen: Abfragen über mehrere Tabellen können langsamer sein
  • Erhöhte Komplexität: Mehr Aufwand bei der Entwicklung von Abfragen

Die 3NF bietet in den meisten Fällen den besten Kompromiss zwischen Datenintegrität und Abfrage-Performance.

Praxisbeispiel: Schritt-für-Schritt-Normalisierung

Betrachten wir eine unnormalisierte Tabelle einer Bibliotheksverwaltung:

Unnormalisierte Ausgangstabelle

BuchID Titel Autoren VerlagID VerlagName VerlagOrt
1 Java Grundlagen Müller, Schmidt 10 O'Reilly Köln
2 Python Basics Weber 20 Springer Berlin

Nach 1NF: Atomare Werte

Die Spalte "Autoren" enthält mehrere Werte. Wir erstellen eine separate Tabelle für die Autor-Buch-Beziehung:

Buch-Tabelle:
| BuchID | Titel | VerlagID | VerlagName | VerlagOrt |
|--------|-------|----------|------------|-----------|
| 1 | Java Grundlagen | 10 | O'Reilly | Köln |
| 2 | Python Basics | 20 | Springer | Berlin |

BuchAutor-Tabelle:
| BuchID | AutorName |
|--------|----------|
| 1 | Müller |
| 1 | Schmidt |
| 2 | Weber |

Nach 3NF: Transitive Abhängigkeiten entfernt

VerlagName und VerlagOrt hängen transitiv von BuchID ab (über VerlagID). Wir lagern die Verlagsdaten aus:

Buch-Tabelle:
| BuchID | Titel | VerlagID |
|--------|-------|----------|
| 1 | Java Grundlagen | 10 |
| 2 | Python Basics | 20 |

Verlag-Tabelle:
| VerlagID | VerlagName | VerlagOrt |
|----------|------------|-----------|
| 10 | O'Reilly | Köln |
| 20 | Springer | Berlin |

BuchAutor-Tabelle:
| BuchID | AutorName |
|--------|----------|
| 1 | Müller |
| 1 | Schmidt |
| 2 | Weber |

Normalisierung in der IT-Ausbildung

Die Normalisierung ist ein zentrales Thema im Bereich Datenbanken und wird sowohl in der Berufsschule als auch in der IHK-Abschlussprüfung behandelt. Für Fachinformatiker für Anwendungsentwicklung und Fachinformatiker für Daten- und Prozessanalyse gehört das Verständnis der Normalformen zum Grundwissen.

In der Praxis wirst du die Normalisierung beim Entwurf neuer Datenbanken anwenden, aber auch beim Analysieren und Optimieren bestehender Datenbankstrukturen. Das Zusammenspiel von Normalisierung mit ER-Modellen bildet die Grundlage für professionelles Datenbankdesign.

Quellen und weiterführende Links