Normalisierung

Einführung

Unter Normalisierung eines relationalen Datenbankmodells versteht man die Aufteilung von Attributen in mehrere Relationen (Tabellen) mithilfe der Normalisierungsregeln und deren Normalformen, so dass ein Schema entsteht, das keine vermeidbaren Redundanzen mehr enthält.

Das Ziel ist die redundanzfreie Datenspeicherung. Ein Schema, das Redundanzen enthält, kann dazu führen, dass bei Änderungen die mehrfach enthaltenen Daten nicht konsistent, sondern nur teilweise und unvollständig geändert werden. Hierdurch können die Datenänderungen überflüssig oder widersprüchlich werden. Außerdem können Anomalien auftreten. Zudem belegt das mehrfache Speichern derselben Daten unnötig Speicherplatz.

Es gibt verschiedene Grade der Normalisierung; Die so genannte erste, zweite, dritte usw. Normalform. Diese Normalformen sind durch formale Anforderungen definiert.

Man bringt ein relationales Schema in eine Normalform, indem man für sie geltende funktionale Abhängigkeiten in einfachere Relationen zerlegt, bis keine weitere Zerlegung mehr möglich ist. Dabei dürfen jedoch keine Daten verloren gehen.

Normalisiert wird vor allem in der Phase des Entwurfs einer relationalen Datenbank. Ein exakter Modellentwurf (ERM) macht eine Normalisierung eigentlich überflüssig, kann aber eingesetzt werden, um Anomalien zu beseitigen oder Redundanzen nachträglich zu minimieren.

Beispiel

Folgendes Schema befindet sich in der dritten Normalform. Exemplarisch wird demonstriert, wie man denormalisierte Tabellen in ein Schema der dritten Normalform - also dieses Schema - überführt.

(Bitte anklicken für größere Darstellung)

Die 1. Normalform

Die 1. Normalform (kurz 1NF) ist erfüllt, wenn jedes Attribut einer Relation einen atomaren Wertebereich aufweist. Eine Relation befindet sich in der ersten Normalform, wenn alle Attribute nur einfache Attributwerte aufweisen (Bezeichnung: atomar). (Beispiel: Die Adresse darf nicht als Attribut verwendet werden, sondern muss in PLZ, Ort, Straße und Hausnummer aufgeteilt werden). Zudem gibt es keine Wiederholungsgruppen. Zur Bildung der ersten Normalform müssen die nicht atomaren Attribute umgewandelt werden. Dies kann durch Einfügen zusätzlicher Zeilen, Spalten oder neuer Relationen erfolgen.

Um die 1NF zu erfüllen müssen für Werte der Spalte Termindatum zusätzliche Zeilen eingefügt werden und die Inhalte der Spalten Mitarbeitername und Kundennamen müssen in zwei Spalten (MVorname und MNachname bzw. KVorname und KNachname) ausgelagert werden.

Nun befindet sich die Tabelle in der 1NF!

Die 2. Normalform

Ein Relationenschema ist in der 2. Normalform (kurz 2NF), wenn es in der 1. Normalform ist und jedes Nicht-Schlüsselattribut von einem Primärschlüssel vollständig funktional abhängig ist.

Zunächst muss also ein Primärschlüssel definiert werden. In diesem Beispiel lässt sich aber keine Attributkombination finden für die sich immer jeder Datensatz identifizieren lässt. Denn es ist denkbar, dass ein Kunde beim gleichen Mitarbeiter am gleichen Datum zwei Friseurtermine wahrnimmt.

Wird ein künstlicher Primärschlüssel für die Relation definiert, ist die Anforderung automatisch erfüllt. Man erweitert die Tabelle um eine Spalte IdTermin. Der künstliche Primärschlüssel generiert einen Autowert, anhand dessen sich jede Spalte eindeutig identifizieren lässt.

Die Relation erfüllt nun die Anforderungen der 2NF. Sie befindet sich in der 1NF und es gibt kein Attribut in der Tabelle, dass sich nicht eindeutig und voll funktional durch den Primärschlüssel IdTermin bestimmen lässt.

Die 3. Normalform

Ein Relationenschema befindet sich in der 3. Normalform (kurz 3NF), wenn es in der 2NF ist und kein Attribut, das nicht zum Primärschlüssel gehört, von diesem transitiv abhängt. Betrachten wir die Relation aus der 2NF. Mit Hilfe des Primärschlüssels IdTermin lässt sich eindeutig der Vorname eines Mitarbeiters, eines Kunden oder eines Salons bestimmen. Allerdings hängt der Salonname von der Salonnummer (SNR) ab und nur transitiv von IdTermin. Gleiches gilt für Kunden (KNR -> KVorname, KNachname) und Mitarbeiter (MNR-> MVorname, MNachname).

Um das Schema in die 3NF zu überführen, müssen Kunden-, Mitarbeiter und Saloninformationen in eine eigene Relation ausgelagert werden.

Salon

Mitarbeiter

Termin

Kunde

Das Schema befindet sich nun in der 3NF. Es herrschen nur direkte vollfunktionale Abhängigkeiten. Durch Fremdschlüsselbeziehungen bleibt der Bezug der Daten untereinander erhalten. Das Ziel der Redundanzfreien Datenhaltung ist erreicht.