Normalisierung ? logische Regeln zur Minimierung von Redundanz

Durch die Normalisierung und die strengen Regeln soll eine korrekte, relationale Datenbank aufgebaut werden bzw. diese erhalten bleiben. Dabei ist wichtig, dass Redundanzen vermieden werden, da diese sonst schnell bei Änderungen von Inhalten zu Inkonsistenzen führen.

Dabei bedeutet Redundanz (lateinisch redundare „im Überfluss vorhanden sein“) auf Deutsch Doppelung bzw. Überschneidungen.

Inkonsistenzen bedeutet: Widersprüchlichkeit oder Unbeständigkeit der eingegebenen Daten.

Als Beispiel: Mitarbeiter pflegen die Daten der Kundendatenbank. Dazu kann bei jedem Kunden die PLZ und der Ort unabhängig voneinander eingetragen werden.

Der erste Mitarbeiter trägt nun einmal als PLZ „72070“ und als Ort „Tübingen“ ein. Der zweite Mitarbeiter als PLZ „72070“ und als Ort „Tübingen am Neckar“ ein ? es liegt schon eine Inkonsistenz vor. Der nächste Mitarbeiter trägt für den nächsten Kunden als PLZ wieder „72070“ ein und als Ort dann „Tuebingen“. Und der vierte Mitarbeiter trägt (weil er eine Großschreiballergie hat, dann als Ort „tübingen“ ein.

Am Abend kommt der Chef und lässt sich einer Statistik ausgeben, wie viele Kunden aus „Tübingen“ eingetragen wurden ? er bekommt nur einen. Hätte er mit der PLZ „72070“ die Statistik erstellt, hätte er 4 Kunden angezeigt bekommen.

Dieses Beispiel zeigt, wie schnell eine Datenbank (bedingt durch Ihren Aufbau) zu unbeständigen Daten (sprich Inkonsistenzen) und den entsprechenden Folgeproblemen führen kann. Wäre hier die Redundanz (Eingabe von PLZ und zusätzlich Ort) unterbunden worden, wären Folgeprobleme vermieden worden.

Es gibt sechs Schritte, wobei in der Praxis die ersten drei umgesetzt werden.

Da die einzelnen Stufen der Normalisierung aufeinander aufbauen, muss die Reihenfolge der Anwendung der Normalisierung eingehalten werden. Es kann die 2. Normalisierung erst angewendet werden, wenn die 1. Normalisierung erfüllt ist.

Zweck der Normalisierung

Durch Anwendung der Normalisierung soll die Integrität der Daten sichergestellt werden.

  • Redundanzen unterbinden
  • Inkonsistenzen vermeiden

Die Wartung der Daten wird i.d.R. vereinfacht, die Programmierung allerdings aufwendiger.

Erste Normalform (1 NF)

Jedes Datenfeld darf nur gleichartigen Inhalt enthalten (Beispiel: aus einem Datenfeld „Name“ entstehen zwei Datenfelder: eines für den Vornamen und eines für den Nachnamen). Dies wurde im Kapitel „Daten strukturieren - Vorüberlegungen zur Datenbankerstellung“ als Inhalte trennen (atomisieren) bezeichnet.

Beispiel:

Aus dem Feld „name“ mit dem Inhalt „Erika Schmiedt“ werden die 2 Datenbankfelder „vorname“ und „nachname“. Das Feld „vorname“ bekommt als Inhalt „Erika“ und das Feld „nachname“ den Inhalt „Schmiedt“.

Mit gleichartig ist hier gemeint, dass im Feld „vorname“ dann durchaus auch 2 Vornamen auftauchen: „Karl Heinz“. Dies muss immer im Hinblick der zu erstellenden Anwendung geschehen ? die kleinsten sinnvoll erscheinenden Bestandteile können sehr unterschiedlich sein. Bei einem Handyhändler kann die Telefonnummer durchaus in 2er Gruppen aufgeteilt angebracht sein, weil er aus den 2er Zahlenkombinationen Rückschlüsse ziehen kann ? der Zoohandel ums Eck wird die Telefonnummer am Stück belassen.

Für die Tabelle muss ein Primärschlüssel vorhanden sein, damit jeder Datensatz eindeutig angesprochen werden kann.

Zweite Normalform (2 NF)

Die erste Normalform muss erfüllt sein! Erst wenn die erste Normalform erfüllt ist, kann man an die Anwendung der zweiten Normalform gehen.

Die 2. Normalform besagt: Jeder Datensatz bildet nur einen Sachverhalt ab. Liegen in einer Tabelle Daten vor, die nicht nur 1 Sachverhalt abbilden, werden diese Daten in einzelne thematische Tabellen unterteilt.

In unserem Beispiel liegt die Kundendatenbank vor Anwendung der zweiten Normalform mit folgenden Inhalten vor:

IdVornameNachnameAuftragsnummerArtikel
1AxelPratzner32482Buch MySQL lernen
2AxelPratzner32482DVD-Rohlinge
3ElkeSchmidtz32483Buch MySQL lernen

Diese Tabelle bildet 3 Sachverhalte ab:

  1. Kundendaten
  2. Artikeldaten
  3. Auftragsdaten

Nach der 2. Normalform muss hier eine Trennung in thematische Tabellen stattfinden. Wir teilen also die Tabelle in die 3 thematischen Tabellen „Kundendaten“, „Artikeldaten“ und „Auftragsdaten“

Tabelle Kundendaten:

Kunden-idVornameNachname
1AxelPratzner
2ElkeSchmidtz

Tabelle Artikeldaten:

Artikel-idArtikel
1Buch MySQL lernen
2DVD-Rohlinge

Tabelle Auftragsdaten:

Bestell-idAuftragsnummerKunden-idArtikel-id
13248211
23248212
33248321

Dritte Normalform (3 NF)

Die erste und zweite Normalform muss erfüllt sein! Erst wenn die 1. und 2. Normalform erfüllt ist, kann man an die Anwendung der 3. Normalform gehen.

Bei der dritten Normalform geht es den indirekten (transitiven) Abhängigkeiten an den Kragen. In der Fachliteratur wird von transitiven Abhängigkeiten gesprochen.

Im folgenden Beispiel haben wir in der Tabelle neben Namen auch PLZ und Ort. Zu jedem Namen gehört eine PLZ und zu jeder PLZ gehört ein Ort. Der Ort ist also indirekt vom Namen abhängig.

Mathematisch ausgedrückt sieht das so aus:

„wenn NAME -> PLZ“ und „PLZ -> ORT“ dann „Name -> ORT“.

„Name -> ORT“ ist also eine transitive Abhängigkeit

Wir wollen aber in der Tabelle nur direkte Abhängigkeiten (also intransitive).

Als Tabelle vor der Anwendung der 3. Normalform hat unser Beispiel folgendes Aussehen:

Name PLZ Ort
Schmidtz 72074 Tübingen

Nach Anwendung der 3. Normalform haben wir 2 Tabellen:

Name PLZ
Schmidtz 72074

Und

PLZ Ort
72074 Tübingen