Die erste Normalform besteht dann, wenn:
- es keine Duplikate in den Zeilen der Tabelle gibt,
- alle Werte pro Attribut jeweils von derselben Art sind,
- jede Zelle einen einzigen unteilbaren Wert enthält.
Die erste Bedingung wird durch das Vorhandensein eines Schlüsselattributs sichergestellt. Die zweite Bedingung besagt, dass man für ein Attribut nicht zwei verschiedene Arten von Informationen speichern soll. Um die Anzahl der Anweisungen zur Veränderung des Datenbankinhalts zu minimieren oder um Speicher zu sparen, könnte der Entwickler beispielsweise versucht sein, für Mitarbeiter alle Kontaktangaben in einem Feld zu speichern. E-Mail-Adressen und Telefonnummern würden in einem Feld stehen. Das zwingt dann dazu, dauerhaft Sonderregeln für die Bearbeitung dieses Feldes in der Implementierung mitzuführen.
Die dritte Bedingung besagt, dass jeder eingetragene Wert ein Einzelwert ist und keine Liste von Werten sein darf. Das heißt, dass ein Feld, das beispielsweise für Mitarbeiter Auslandserfahrungen festhält, nicht gleichzeitig „USA, Japan, Spanien“ als einen Wert beinhalten darf. Diese Information muss in mehrere (in diesem Fall drei) Datensätze aufgeteilt werden.
Sehen Sie nun ein Beispiel, wie eine Tabelle, welche die zweite und dritte Bedingung nicht erfüllt, zur ersten Normalform transformiert wird:
Tabelle nicht in 1. Normalform
Name | Geburtstag | Gehalt | Kontakt | Auslandserfahrung |
Gustav Neuman | 3.6.1965 | 4500 | 0123456789
g.neuman@mmx.net | Madrid |
Anita Fuchs | 4.9.1980 | 6700 | a.fuchs@videothek.com | |
Ismir Degerli | 3.6.1950 | 6700 | 0305466898 | New York, Amsterdam |
Tabelle in 1. Normalform
ID | Name | Geburtstag | Gehalt | Telefon | Auslandserfahrung | |
1 | Gustav Neuman | 3.6.1965 | 4500 | 0179122663 | g.neuman@mmx.net | Madrid |
2 | Anita Fuchs | 4.9.1980 | 6700 | a.fuchs@videothek.com | ||
3 | Ismir Degerli | 3.6.1950 | 6700 | 0305467898 | New York | |
4 | Ismir Degerli | 3.6.1950 | 6700 | 0305466898 | Amsterdam |
Beachten Sie, dass die beiden Attribute E-Mail und Telefon das Attribut Kontaktersetzen. Die beiden Attribute spalten das frühere Attribut Kontakt in zwei getrennte Wertemengen. Außerdem wurde das zusätzliche Attribut ID eingeführt. Es dient als Schlüsselattribut für die Tabelle, weil der vorherige Schlüssel Name für „Ismir Degerli“ durch die Aufspaltung der Werte in Auslandserfahrung in zwei Reihen wiederholt werden muss und deswegen nicht mehr als Schlüssel fungieren kann. Die Tabelle ist jetzt zwar in der ersten Normalform, allerdings stören die Redundanzen in den Attributen Name, Geburtstag, Gehalt und Telefon. Diese werden im Laufe weiterer Normalisierungsschritte beseitigt.