Unter der Normalisierung einer Datenbank versteht man den Prozess zur Organisation von Daten innerhalb einer Datenbank.
Wenn eine Normalisierung der Datenbank nicht erfolgt dann läuft der Entwickler Gefahr, dass redundante Daten und Inkonsistenzen entstehen.
Der Normalisierungsprozess beinhaltet das gegliederte Erstellen von Tabellen und logische Beziehungen zwischen den Tabellen.
Die wichtigsten Kriterien einer Datenbank sind:
- Datenkonsistenz
- Redundanzfreiheit
Um die Datenbank-Normalisierung durchzuführen, gibt es gewisse Richtlinien.
Diese Richtlinien oder auch Regeln werden als Normalform bezeichnet.
Generell wird behauptet, dass es ausreicht eine Datenbank bis in die 3. Normalform zu normalisieren. Das bedeutet, dass die Datenbank erst in die 1. Normalform dann in die 2. Normalform und zuletzt in die 3. Normalform geführt wird.
Die Normalformen bauen aufeinander auf. Es ist nicht möglich in die 3. Normalform zu gelangen wenn die 1. und 2. Normalform nicht gegeben ist.
Redundanzfreiheit
Darunter versteht man, dass in einer Datenbank keine redundaten Daten vorhanden sind. Zum Beispiel sollte der Name eines Kunden nicht bei jeder Bestellung in der Tabelle "Bestellungen" mitgespeichert werden. Stattdessen erfolgt eine Beziehung der Tabellen (z. B. über Kunden-ID) und man kann dort den Namen sehen.
Somit wird Speicherplatz bewahrt und die Tabelle wirkt übersichtlicher.
Datenkonsistenz
Darunter versteht man, dass ein Benutzer immer sofort wissen sollte, wo sich die richtigen Daten befinden. Wenn er z. B. nach dem Namen eines Kunden sucht, sollte er diesen nicht in der Tabelle "Bestellungen", sondern in der Tabelle "Kunden" finden. Die Datenbank sollte vom Aufbau so klar sein, dass sie für einen fremden Benutzer selbsterklärend ist.
1. Normalform
Um die 1. Normalform aufzuweisen muss eine Datenbank folgende Kriterien erfüllen:
- Keine sich wiederholende Gruppen in Tabellen
- Daten die zueinander in Beziehung stehen müssen ausgegliedert werden (extra Tabelle)
- Tabellen die Beziehungen haben, müssen durch Primärschlüssel verbindet sein
Wenn zum Beispiel Kundendaten in der Tabelle "Kunden" gespeichert werden und dabei für die Anschrift jeweils zwei Felder (also Straße1, Straße2, Ort1, Ort2) vorhanden sind sollte die Tabelle aufgeteilt werden.
Dies könnte man durch eine neue Tabelle "Anschrift" erreichen.
Das wichtige ist Rücksicht darauf zu nehmen, dass sich keine Daten wiederholen (wie Straße). Es sollte in einer Tabelle nicht mehrere Datensätze mit dem gleichen Inhalt geben.
Merke:
Keine sich wiederholenden Gruppen
2. Normalform
Im Normalisierungsprozess der 2. Normalform werden redundante Daten innerhalb von Tabellen ausgegliedert.
Die 2. Normalform gilt als erfüllt wenn:
- neue Tabellen für Werte, die auf mehrere Datensätze bezogen sein können
- Verbinden dieser Tabellen durch Fremdschlüssel
Nehmen wir zum Beispiel an, in der Tabelle "Kunden", steht bei jedem Kunden der passende Ansprechpartner Ihrer Firma (plus dessen Anschrift).
Eigentlich hat die Anschrift des Ansprechpartner ja nichts in der Tabelle des Kunden zu suchen. Daher sollte die Anschrift des Ansprechpartner in eine extra Tabelle "Ansprechpartner" ausgegliedert werden. Zwischen den Tabellen "Kunden" und "Ansprechpartner" wird dann lediglich eine Beziehung durch einen Fremdschlüssel hergestellt und wenn nötig, kann die Anschrift des Ansprechspartner dann über die extra Tabelle abgefragt werden.
Merke:
keine redundanten Daten
3. Normalform
Eine Datenbank befindet sich in der 3. Normalform wenn sie die 1. und 2. Normalform erfüllt und
keine Felder vorhanden sind, welche nicht vom Schlüssel abhängig sind.
Es sollte immer dann eine neue Tabelle erstellt werden, wenn der Inhalt einer Gruppe von Feldern auf mehrere Datensätze zutreffen kann.