Normalformen

Die sinnvolle Aufteilung zu speichernder Daten auf mehrere Tabellen und Felder ist eine wesentliche Voraussetzung für das Erstellen einer gut funktionierenden Datenbank. Diese Tätigkeit nennt man normalisieren einer Datenbank. Eine relationale Datenbank sollte den Normalformen entsprechen, und beim Normalisieren sollte man die Normalformen idealerweise systematisch, eine nach der anderen, abarbeiten. Eine korrekt normalisierte Datenbank verhindert anschließend doppelte (redundante) oder sich widersprechende (inkonsistente) Daten.

Nullte Normalform

Eine Tabelle soll keine Felder enthalten, die aus anderen Feldern berechnet werden können (Dafür sind Abfragen zuständig).

fehlerhaft
Verkäufe
VerkaufsNr Verkaufsdatum Nettopreis MwSt Bruttopreis
1 03.01. 100 19% 119
2 04.01. 50 12% 60

In diesem Beispiel erscheint der erste Datensatz in sich stimmig, aber der Mehrwertsteuersatz des zweiten Datensatzes ist definitiv falsch. Und egal, wie man rechnet, der Bruttopreis kann auch nicht stimmen. MwSt und Bruttopreis gehören auch gar nicht erst in die Tabelle, denn der Mehrwertsteuersatz ist fix, und damit kann der Bruttopreis mit Hilfe einer Abfrage errechnet werden.

korrekt
Verkäufe
VerkaufsNr Verkaufsdatum Nettopreis
1 03.01. 100
2 04.01. 50

Erste Normalform (1NF)

Die erste Normalform bestimmt, wofür jeweils ein Feld benötigt wird: Eine Tabelle befindet sich in der ersten Normalform, wenn die Werte in jedem Feld und in jedem Datensatz atomar sind, d.h. sich nicht mehr in kleinere Einheiten zerlegen lassen.

fehlerhaft
Personen
IDPerson Name Anschrift
1 Peter Parker 20 Ingram St, Flushing, NY 11375
2 Peter Feldmann Römerberg 23, 60311 Frankfurt am Main
3 Olaf Scholz Willy-Brandt-Str. 1   10557 Berlin

Falls man versucht, aus dieser Tabelle z. B. alle Personen mit einer bestimmten Postleitzahl abzufragen, wäre man vor eine unlösbare Aufgabe gestellt: Mal befindet sich vor der Postleitzahl ein Semikolon, mal ein Komma, und den Benutzern würden bestimmt noch ein paar andere lustige Trennzeichen einfallen - falls sie überhaupt an eine PLZ denken...

Der Name lässt sich in Vorname und Nachname zerlegen und die Anschrift zu Straße, PLZ und Stadt. Je nach Anwendung könnte es auch sinnvoll sein, die Hausnummer in einem eigenen Feld zu speichern. Allerdings kann man dazu keine universelle Aussage treffen - das hängt davon ab, was die Anwendung eigentlich leisten soll: Für einen Briefträger ist das sicher hilfreich, während es übertrieben wäre, wenn es nur um die allgemeine Erfassung von Kundendaten geht.

korrekt
Personen
IDPerson Vorname Nachname Straße HausNr PLZ Stadt
1 Peter Parker Ingram St 20 NY 11375 Flushing
2 Peter Feldmann Römerberg 23 60311 Frankfurt am Main
3 Olaf Scholz Willy-Brandt-Str. 1 10557 Berlin

Zweite Normalform (2NF)

Eine Tabelle befindet sich in der zweiten Normalform, wenn sie der ersten Normalform entspricht und darüber hinaus jeder Datensatz nur Felder enthält, die sich auf das Objekt beziehen, das durch den Primärschlüssel dargestellt wird.

fehlerhaft
Werkstattkunden
IDKunde Nachname AutoKZ1 AutoKZ2
1 Hübner F  RH 2000 F  RH 2001
2 Becker GG AF 123  

Die Autokennzeichen haben bei den Kunden nichts zu suchen, weil sie nichts mit dem Primärschlüsselfeld IDKunde zu tun haben. Gemäß der zweiten Normalform müssen sie aus obiger Tabelle entfernt werden und gehören in eine eigene Tabelle. Dann können auch mehr als zwei Kennzeichen pro Kunde dargestellt werden.

korrekt
Werkstattkunden
IDKunde Nachname
1 Hübner
2 Becker
PKWs
Kunde AutoKZ
1 F  RH 2000
1 F  RH 2001
2 GG AF 123

Dritte Normalform (3NF)

Eine Tabelle befindet sich in der dritten Normalform, wenn sie der zweiten Normalform entspricht und darüber hinaus alle Felder, die nicht den Primärschlüssel bilden, voneinander unabhängig sind.

fehlerhaft
Orte
IDOrt Ort NrLand Land
1 München 2 Bayern
2 Bamberg 2 Baden-Württemberg
3 Berlin 3 Berlin

Hier wurde nicht nur die Nummer des Bundeslandes, sondern auch noch der Klartext dazu abgelegt. Land ist aber von NrLand abhängig, also wurde gegen die dritte Normalform verstoßen. Durch diesen Verstoß konnte im zweiten Datensatz eine Diskrepanz zwischen NrLand und Land entstehen. Nach der dritten Normalform darf nur NrLand in der Tabelle stehen.

korrekt
Orte
IDOrt Ort NrLand
1 München 2
2 Bamberg 2
3 Berlin 3
Länder
IDLandLand
1Baden-Württemberg
2Bayern
3Berlin

Höhere Normalformen

Über die schon genannten Normalformen hinaus gibt es noch weitere Normalformen (BCNF, 4NF, 5NF), aber in der Praxis kommen Datenstrukturen, die eine weitergehende Normalisierung erforderlich machen, seltener vor. Wer eine Datenbank bis 3NF strukturieren kann, wird in aller Regel wohl auch kaum noch schwerwiegend gegen diese höheren Normalformen verstoßen. Wer sich dennoch näher mit der Theorie beschäftigen will, findet eine Liste von Fachbüchern bei Amazon.