Normalformen

Die Datenbanktheorie der Normalformen beantwortet die Frage, wofür man jeweils eigene Tabellen braucht. Das Normalisieren einer Datenbank soll Schritt für Schritt erfolgen und verhindert doppelte (redundante) Daten. Hier werden die wichtigsten Normalformen erklärt. Darüber hinaus gibt es noch weitere Normalformen (BCNF, 4NF, 5NF), aber in der Praxis kommen Datenstrukturen, die eine weitergehende Normalisierung erforderlich machen, weniger häufig vor.

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
IDKunde Name Anschrift
1 Bilbo Beutlin Beutelsend 1; 12345 Hobbingen
2 Peter Feldmann Berliner Str. 5a), 60123 Frankfurt am Main
3 Angela Merkel Kanzleramt - 10000 Berlin

Name und Anschrift lassen sich noch weiter zerlegen, nämlich in Vorname, Nachname, Straße, HausNr, PLZ und Stadt. Wollte man aus dieser Tabelle z. B. alle Personen mit einer bestimmten Postleitzahl abfragen, 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...

korrekt
Personen
IDKunde Vorname Nachname Straße HausNr PLZ Stadt
1 Bilbo Beutlin Beutelsend 1 12345 Hobbingen
2 Peter Feldmann Berliner Str. 5a) 60123 Frankfurt am Main
3 Angela Merkel Kanzleramt 10000 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. Sie 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
tblLänder
IDLandLand
1Baden-Württemberg
2Bayern
3Berlin