Normalisierung

Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise erfolgende Zerlegung von Relationen (in der Datenbank: Tabellen) in mehrere Relationen auf der Grundlage funktionaler Abhängigkeiten. Eine Normalisierung ist notwendig, um Redundanzen der Daten zu vermeiden, die einen erhöhten Speicherplatz benötigen, das Durchsuchen und Analysieren der Daten verlängern und bei der Änderung von Daten zu Inkonsistenzen führen können.

erste Normalform

Die erste NF besagt, dass jeder Wert in einer Datenbank atomar sein muss. Dies bedeutet, dass jedes Attribut maximal
einem eindeutigem Wert zugeordnet sein darf.

Kurz: Kein Attributwertebereich kann in weitere (sinnvolle) Teilbereiche aufgespalten werden (Beispiel: Die Adresse darf nicht als Attribut verwendet werden, sondern muss sofern es das zugrunde liegende Geschäftsmodell erfordert in PLZ, Ort, Strasse, Hausnummer aufgeteilt werden).

Beispiel:

Falsch:

Mitarbeiter
IDNameAdresse
001Merzenich, Kai53119, Bonn
002Atatürk, Waldemar53119, Bonn
003Feuerstein, Willma23865, Köln

Lösung

Richtig:

Mitarbeiter
IDNachnameVornameAdressePLZOrt
001MerzenichKaiA_153119Bonn
002AtatürkWaldemarA_253119Bonn
003FeuersteinWillmaA_323865Köln

zweite Normalform

Die zweite NF ist erfüllt, wenn:

  • die erste NF erfüllt ist
  • jedes Attribut vom gesamten Primärschlüssel abhängig ist

Beispiel

Falsch:

Mitarbeiter
IDNachnameVornameAdressePLZOrt
001MerzenichKaiA_153119Bonn
002AtatürkWaldemarA_253119Bonn
003FeuersteinWillmaA_323865Köln

Lösung

Richtig:

IDNachnahmeVorname
001MerzenichKai
002WiechertAlexander
003FeuersteinWilma
IDAdressePlzOrt
001A_153119Bonn
002A_250000Lummerland
003A_310000Mondstadt

dritte Normalform

Die dritte NF ist erfüllt, wenn:

  • die zweite NF erfüllt ist
  • die Nicht-Schlüssel-Attribute funktional unabhängig voneinander sind
  • die Nicht-Schlüssel-Attribute nur vom Schlüsselattribut abhängig sind
(d.h. ein Attribut darf nicht über ein Nich-Schlüssel-Attribut gefunden werden)

Beispiel

Falsch:

IDAdressePlzOrt
001A_153119Bonn
002A_250000Lummerland
003A_310000Mondstadt

Hier ist das Attribut „Ort“ über das Nicht-Schlüssel-Attribut „PLZ“ zu finden. D.h. der Ort ist nicht voll funktional vom Attribut „Id“ abhängig sondern kann ebenfalls über die „Plz“ gefunden werden. Praktisch heist das, dass wenn ein weiterer Eintrag in die Tabelle erfolgt, der Ort und die Plz ein zweites mal vorhanden wäre.

Lösung

Richtig:

IDAdressePlz
001A_153119
002A_250000
003A_310000
PlzOrt
10000Mondstadt
50000Lummerland
53119Bonn