Im Folgenden werde ich erklären, wie man auf der Basis einer Objektsammlung durch Anwendung der Normalisierung zu redundanzminimierten und anomaliefreien Relationen kommt.
Zu Beginn möchte ich jedoch erst eine kleine Definition der Normalisierung geben:
- Es gibt die Normalformen 0 – 5, wobei die Normalform (NF) 0 die Basis der Normalisierung darstellt und NF5 das Maximum der Normalisierung.
- Jede Normalform ist mit Regeln verbunden, die in der jeweiligen Normalform eingehalten werden müssen.
- Jede folgende Normalform baut auf der vorhergehenden NF auf.
Non First Normalform (NF²)
Ich habe eine CD-Sammlung und möchte diese in einer Datenbank speichern. Ich habe mich hingesetzt und eine tabellarische Inventur meiner CDs gemacht, diese sieht folgendermaßen aus:
Auf diese Objektsammlung, werden nun verschiedene Normalisierungsformen angewandt, um unser Ziel zu erreichen.
Erste Normalform (NF1)
Definition: Jedes Attribut muss atomare Wertebereiche haben.
Wie man sieht wird die erste Normalform von unserem Beispiel verletzt: Im Attribut Album werden Albumname und Interpret gespeichert, sowie im Attribut Titelliste sämtliche Titel als ein String gespeichert werden. Dies hat zur Folge, dass man z.B. nicht nach einzelnen Liedern suchen kann.
Lösung: Man trennt jedes Attribut soweit, bis es unteilbar ist, man macht es atomar.
Nach der ersten Normalform sieht unsere Relation also folgendermaßen aus:
Zweite Normalform (NF2)
Definition: Alle Nichtschlüsselattribute müssen vom gesamten Schlüssel voll funktional abhängig sein.
Das vorliegende Beispiel verletzt die NF2, da der Albumtitel, der Interpret und das Gründungsjahr zwar von der CD (CD_ID) als solche abhängig sind, nicht aber von dem Track. Ganz abgesehen davon, dass an dieser Stelle noch sehr viel Redundanz vorliegt und sehr leicht Anomalien entstehen können, die dazu führen, dass die Datenkonsistenz nicht gewährleistet werden kann.
Lösung: Man trennt die Relation in mehrere, in unserem Fall in zwei Relationen auf, sodass jedes Nichtschlüsselattribut voll funktional von seinem Schlüssel abhängig ist.
Zu erwähnen wäre an dieser Stelle, dass sich die erste Normalform automatisch in der zweiten Normalform befindet, wenn nur ein Attribut Primärschlüssel ist.
Dritte Normalform (NF3)
Definition: Attribute dürfen nicht transitiv (indirekt) vom Primärschlüssel abhängig sein.
In unserem Fall sind in der Relation CD Album und Interpret direkt vom Primärschlüssel CD_ID abhängig, das Gründungsjahr hingegen hängt nur vom Interpreten ab. Dies hat zur Folge, dass – zwar nicht in diesem Beispiel – wenn man das Gründungsjahr ändern will, und auch nur einen Eintrag übersieht, dies zur Inkonsistenz der Daten führt.
Lösung: Die Relation CD wird in in zwei weitere Relationen aufgeteilt.
Ab diesem Punkt befindet sich die Ausgangsrelation an der Stelle, bei der im allgemeinen nicht mehr weitergemacht wird. Im allgemeinen reicht also die NF3 vollkommen aus, um aus Objektsammlungen redundanzminimierte und anomaliefreie Relationen zu erhalten.
(Material zum Vortrag von S. Selle)