Normalisierung (Datenbank)

Aufteilung von Attributen in mehrere Relationen bei Datenbanken
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. Dezember 2005 um 15:04 Uhr durch E86 (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise Zerlegung mittels Normalisierungsalgorithmen in mehrere Relationen, auf der Grundlage von funktionalen Abhängigkeiten. Das Relationenschema wird dabei in die erste, zweite, dritte, usw. Normalform überführt.

Damit eine Relation eine Normalform erfüllt muss sie die Kriterien der gewünschten Normalform und die Kriterien der „vorherigen“ Normalformen erfüllen.

Der Sinn der Normalisierung besteht darin, Redundanzen (gleiche, mehrmals vorhandene Information) zu verringern und Anomalien (einander widersprechende Dateninhalte) zu verhindern, um so die Wartung einer Datenbank zu vereinfachen sowie die Konsistenz der Daten zu gewährleisten.

In einigen Anwendungsfällen ist es aber auch sinnvoll die Normalisierung durch eine Denormalisierung rückgängig zu machen, um

  • die Performance zu erhöhen,
  • Anfragen zu vereinfachen und damit die Fehleranfälligkeit zu verrringern.


Neben den Abhängigkeiten, die für diese Normalformen „bereinigt“ wurden, gibt es noch weitere, wie zum Beispiel die Inklusionsabhängigkeit, die Template-Abhängigkeit und die Domain-Key-Normalform (DKNF).

Normalformen

Zur Zeit gebräuchliche Normalformen sind:

  • 1. Normalform (1NF)
  • 2. Normalform (2NF)
  • 3. Normalform (3NF)
  • Boyce-Codd (BCNF)
  • 4. Normalform (4NF)
  • 5. Normalform (5NF)

Im Zuge der mathematischen Erschließung von Datenbanken gibt es aber im theoretischen Bereiche noch einige weitere. In der Praxis wird meist versucht die 3NF zu erfüllen, weil bei höheren Normalformen der Erhalt der funktionalen Abhängigkeiten der Ursprungsrelation nicht mehr garantiert werden kann.

Sie dienen der Beurteilung der Qualität des betrachteten Datenbankschemas.

Nachfolgend werden die Kriterien der jeweiligen Normalformen erklärt. Dabei ist zu beachten, dass jede Normalform die Kriterien der vorherigen Normalformen mit einschließt.

Erste Normalform (1NF)

Jedes Attribut der Relation muss atomare Wertebereiche haben. Das heißt, zusammengesetze, mengenwertige oder geschachtelte Wertebereiche (relationenwertige Attributwertebereiche) sind nicht erlaubt. Kurz: Kein Attributwertebereich kann in weitere aufgespalten werden(z.B: Adresse in PLZ, Ort, Strasse, Hausnummer).

Praktisch werden durch die 1NF Abfragen erleichtert, da die Attributewertebereiche atomar sind.

Beispiel

CD Lieder
CD_ID Album Titelliste
Titel Interpret
4811 Not That Kind Anastacia {Not That Kind, I'm Outta Love, Cowboys & Kisses}
4712 Wish You Were Here Pink Floyd {Shine On You Crazy Diamond}

Verletzung der 1NF

  • Das Feld Album beinhaltet die Attributwertebereiche Titel und Interpret.
  • Das Feld Titelliste enthält eine Menge von Titeln.

Dadurch hat man ohne Aufspaltung folgende Probleme bei Abfragen:

  • Zur Sortierung nach Interpret muss das Feld Album in Titel und Interpret aufgeteilt werden
  • Die Titel können (mit einfachen Mitteln) nur alle gleichzeitig als Titelliste oder gar nicht dargestellt werden

Lösung

CDLieder
CD_ID Albumtitel Interpret Titel
4811 Not That Kind Anastacia Not That Kind
4811 Not That Kind Anastacia I'm Outta Love
4811 Not That Kind Anastacia Cowboys & Kisses
4712 Wish You Were Here Pink Floyd Shine On You Crazy Diamond

Die Attributwertebereiche werden in atomare Attributwertebereiche aufgespalten:

  • Das Feld Album wird in die Felder Albumtitel und Interpret gespalten.
  • Das Feld Titelliste wird auf mehrere Datensätze aufgeteilt.

Da jetzt jeder Attributwertebereich atomar ist, befindet sich die Relation in 1NF.

Zweite Normalform (2NF)

Eine Relation ist in zweiter Normalform, wenn alle Nichtschlüsselattribute von jedem Schlüsselkandidaten voll funktional abhängig sind.

Einfacher gesagt: Alle nicht primären Attribute (nicht Teil des Schlüssels) sind vom ganzen Schlüssel abhängig, nicht von nur einem Teil des Schlüssels. (Genau das ist die „voll funktionale Abhängigkeit“: ein Attribut ist vom ganzen Schlüssel abhängig)

Diese informelle Definition kann wie folgt präzisiert werden:

Eine Relation ist genau dann in zweiter Normalform, wenn sie

  1. in der ersten Normalform ist und
  2. für jeden Schlüsselkandidaten (Key Candidate, KC) und jedes Attribut   der Relation gilt:
    •   gehört zu KC oder
    •   ist nicht von einer Teilmenge von KC abhängig.

Man sagt: a ist voll funktional abhängig von jedem Schlüsselkandidaten.

(Wobei der Schlüsselkandidat KC auch durch die Kombination mehrer Attribute gebildet werden kann.)

Praktisch wird Datenredundanz und die damit einhergehende Gefahr der Dateninkonsistenz durch Anomalien behoben (aber nur teilweise, siehe spätere Normalformen). Nur logisch zusammenhängende Daten finden sich in einer Relation. Dadurch fällt das Verständnis der Datenstrukturen leichter.

Beispiel

CDLieder
CD_ID Album Interpret Track Titel
4811 Not That Kind Anastacia 1 Not That Kind
4811 Not That Kind Anastacia 2 I'm Outta Love
4811 Not That Kind Anastacia 3 Cowboys & Kisses
4712 Wish You Were Here Pink Floyd 1 Shine On You Crazy Diamond

Verletzung der 2NF

Der Primärschlüssel der Relation ist aus den Feldern CD_ID und Track zusammengesetzt. Die Felder Album und Interpret sind zwar vom Feld CD_ID abhängig – nicht aber vom Feld Track.

Probleme die sich daraus ergeben:
Die Informationen aus diesen beiden Feldern sind, wie am Beispiel der CD Not That Kind zu erkennen, mehrfach vorhanden – d.h. redundant. Dadurch gibt es die Gefahr, dass die Integrität der Daten verletzt wird. So könnte man den Namen der CD für das Lied Not That Kind ändern ohne jedoch die passenden Einträge bei den Liedern I'm Outta Love und Cowboys & Kisses zu ändern (Update-Anomalie).

CDLieder (inkonsistent)
CD_ID Album Interpret Track Titel
4811 That Kind Anastacia 1 Not That Kind
4811 Not That Kind Anastacia 2 I'm Outta Love
4811 Not That Kind Anastacia 3 Cowboys & Kisses
4712 Wish You Were Here Pink Floyd 1 Shine On You Crazy Diamond

In diesem Fall ist ein Zustand erreicht, den man als Dateninkonsistenz bezeichnet. Über die komplette Tabelle betrachtet, „passen“ die Daten nicht mehr zusammen.

Lösung

Die Daten in der Tabelle werden in zwei Tabellen aufgeteilt: CD und Lieder. Die Tabelle CD enthält nur noch Felder, die voll funktional von CD_ID abhängen, hat also nur noch CD_ID als Primärschlüssel und liegt damit automatisch in der 2. Normalform vor. Die Tabelle Lieder enthält schließlich nur noch Felder, die voll funktional von CD_ID und Track abhängen, liegt also auch in der 2. Normalform vor. Mit Hilfe dieser verlustfreien Zerlegung sind auch die genannten Redundanzen der Daten beseitigt.

CD
CD_ID Album Interpret
4811 Not That Kind Anastacia
4712 Wish You Were Here Pink Floyd
Lieder
CD_ID Track Titel
4811 1 Not That Kind
4811 2 I'm Outta Love
4811 3 Cowboys & Kisses
4712 1 Shine On You Crazy Diamond

Das Attribut CD_ID aus der Tabelle Lieder bezeichnet man als Fremdschlüssel, der auf den Primärschlüssel der Tabelle CD verweist.

Dritte Normalform (3NF)

Die dritte Normalform ist erreicht, wenn sich die Relation in 2NF befindet und man in den Relationen keine transitiven Abhängigkeiten hat. Hierbei handelt es sich um eine Abhängigkeit, bei der ein Attribut über ein anderes Attribut vom Primärattribut der Relation abhängig ist. D. h. wenn Attribut   von Attribut   (dem Primärattribut) abhängt und Attribut   hängt von   ab, dann ist   transitiv abhängig von  . Formal ausgedrückt:  .

Einfach gesagt: Kein Nichtprimärattribut darf von einem anderen Nichtprimärattribut abhängig sein.

Siehe auch: Transitivität (Mathematik), Synthesealgorithmus-Normalform

Praktischer Nutzen:
Transitive Abhängigkeiten sind sofort ersichtlich, ohne dass man die Zusammenhänge der Daten kennen muss. Sie sind durch die Struktur der Tabellen wiedergegeben.

Beispiel

CD
CD_ID Album Interpret Gründungsjahr
4811 Not That Kind Anastacia 1999
4713 Freak of Nature Anastacia 1999
4712 Wish You Were Here Pink Floyd 1965

Verletzung der 3NF

Offensichtlich lässt sich der Interpret einer CD aus der CD_ID bestimmen, das Gründungsjahr der Band hängt dagegen vom Interpreten und damit nur transitiv von der CD_ID ab.

Das Problem ist hierbei wieder Datenredundanz. Wird zum Beispiel eine neue CD mit einem existierenden Interpreten eingeführt, so wird das Gründungsjahr zweimal gespeichert.

Lösung

CD
CD_ID Album
4811 Not That Kind
4713 Freak of Nature
4712 Wish You Were Here
CD/Künstler
CD_ID I_ID
4811 2423
4713 2423
4712 3433
Bandinfos
I_ID Interpret Gründungsjahr
2423 Anastacia 1999
3433 Pink Floyd 1965

Die Relation wird aufgeteilt, wobei eine Zwischentabelle gebildet wird. Grund: eine CD kann mehrere Künstler haben und ein Künstler kann mehrere CD's machen.

Um das Problem zu verdeutlichen: Es werden Redundanzen erzeugt, wenn man keine Zwischentabelle macht, denn sobald eine CD auf den Markt kommt, die mehrere Künstler in sich birgt, taucht die gleiche CD_ID(Primary key) mehrmals auf. Bei der Zwischentabelle ist dies zwar auch der Fall, aber die Datensätze insgesamt sind eindeutig, da beide Attribute „identifizierende Fremdschlüssel“ sind.

Boyce-Codd-Normalform (BCNF)

Die Boyce-Codd-Normalform war ursprünglich als Vereinfachung der dritten Normalform gedacht, führte aber zu einer neuen Normalform, die die 3NF verschärft. Alle Relationen können zwar in die dritte Normalform übertragen werden, aber nicht jede in die Boyce-Codd-Normalform.

In der BCNF soll verhindert werden, dass Teile zweier aus mehreren Feldern zusammengesetzter Schlüsselkandidaten voneinander abhängig sind.

Eine Relation ist in BCNF, wenn sie die Voraussetzungen der 3NF erfüllt und gleichzeitig jede Determinante (Menge von Attributen, von denen andere voll funktional abhängen) Schlüsselkandidat ist.

Die Überführung in die BCNF ist zwar immer verlustfrei, aber häufig nicht abhängigkeitserhaltend.

Beispiel

Kostenstellen
KST_Nr KST_Abteilung KST_Leiter
204 Einkauf Schmidt
306 Verkauf Maier
308 Marketing Maier

Verletzung der BCNF

Das Attribut KST_Nr beeinflusst in diesem Beispiel zusammen mit KST_Abteilung das Feld KST_Leiter. Dies ist eine funktionale Abhängigkeit. Des Weiteren bestimmt das Feld KST_Leiter, welche erste Ziffer KST_Nr hat. „Schmidt“ hat immer die 2, Maier immer die 3 usw.

Durch diese Konstellation ist die Relation nur in 3NF, nicht in BCNF. Wenn die transitive Abhängigkeit gelöst und die im Beispiel aufgeführte Relation in zwei Relationen aufgeteilt wird, sind diese beiden resultierenden Relationen in BCNF.

Vierte Normalform (4NF)

Die 4. Normalform beschreibt die Mehrwertige Abhängigkeit (MWAs). Eine Datenbank ist dann in der 4. Normalform, wenn sie nur noch triviale mehrwertige Abhängigkeiten enthält.

Einfach gesagt: Es darf nicht mehrere, von einander unabhängige,   Beziehungen in einer Relation geben (Zu 1 Schlüssel gehört   mal Attribut  , aber auch unabhängig davon   mal Attribut  ).

Beispiel

"Besitz"
Personnummer Haustier Fahrzeug
1 Katze Golf
1 Wellensittich Ferrari
2 Hund Porsche

Verletzung der 4NF

Zu einer Personnummer gibts es mehrere Haustiere und Fahrzeuge. Wobei aber Haustier und Fahrzeug unabhängig voneinander sind – sie haben ja nichts miteinander zu tun. Person -> Haustier ist dabei eine Mehrwertige Abhängigkeit (MWA), Person -> Fahrzeug auch. Diese beiden MWAs sind unabhängig voneinander, also könne wir diese Tabelle in die 4NF aufspalten.

Lösung

Haustier
Personnummer Haustier
1 Katze
1 Wellensittich
2 Hund
Fahrzeug
Personnummer Fahrzeug
1 Golf
1 Ferrari
2 Porsche

Hinweis

Folgende Relation erfüllt die 4NF:

Familie
Personnummer Frau Kind

Person -> Frau und Person -> Kind sind zwar zwei MWAs, aber diese beiden sind auch untereinander abhängig: Frau -> Kind. Solche untereinander abhängigen MWAs werden erst in 5NF gelöst.

Fünfte Normalform (5NF)

Die 5NF vereinfacht Relationen soweit, dass durch Projektions- und Verbundsoperationen die Informationen der ursprünglichen Relation wieder wiedergegeben werden. Sie ist somit sehr generell gehalten und dadurch (vorerst) die letzte Normalform. So können Relationen in einzelne Abfragen aufgeteilt werden, und durch spätere Verbundsoperationen wieder zusammengefügt werden, wobei ein sog. kartesisches Produkt entsteht. Einfach gesagt: Eine Relation ist in 5NF, wenn sie sich nicht weiter in Relationen aufspalten lässt, ohne dass Information verloren geht.

Beispiel

Die folgende Relation zeigt welche Lieferanten welche Bauteile an welches Projekt liefern:

Lieferant Teil Projekt
Müller Schraube Projekt 1
Müller Nagel Projekt 2
Maier Nagel Projekt 1

Verletzung der 5NF

Die Relation kann weiter zerteilt werden, ohne dass Informationen verloren gehen.

Lösung

Um diese Relation in die 5. Normalform umzuwandeln, müssen drei Relationen erstellt werden (Lieferant-Teil, Teil-Projekt und Lieferant-Projekt).

  • Welche Teile kann welcher Lieferant liefern?
Lieferant-Teil
Lieferant Teil
Müller Schraube
Müller Nagel
Maier Nagel
  • Welche Teile werden von welchem Projekt benötigt?
Teil-Projekt
Teil Projekt
Schraube Projekt 1
Nagel Projekt 2
Nagel Projekt 1
  • Welche Projekte können von welchem Lieferanten beliefert werden?
Lieferant-Projekt
Lieferant Projekt
Müller Projekt 1
Müller Projekt 2
Maier Projekt 1

Hinweis

Anders als bei der Umformung zwischen den bisherigen Normalformen wird durch diese Umwandlung etwas anderes durch die neuen Relationen ausgedrückt, als zuvor in der 4. Normalform.

Das merkt man leicht, wenn man die drei Relationen aus dem Beispiel oberhalb wieder joint:

Lieferant Teil Projekt
Müller Schraube Projekt 1
Müller Nagel Projekt 2
Müller Nagel Projekt 1
Maier Nagel Projekt 1

Neu ist das Tupel: Müller – Nagel – Projekt 1

Denn Müller könnte theoretisch das Projekt 1 mit Nägeln beliefern, da:

  • Er auch Projekt 2 mit Nägeln beliefert
  • Projekt 1 jedoch auch Nägel benötigt (die jedoch bisher von Maier geliefert wurden)

Die Überführung in 5NF ist also nur dann möglich, wenn man die Möglichkeiten der Verbindungen aus drei Beziehungen ausdrücken möchte und nicht eine konkrete Verbindung zwischen den dreien haben möchte.

Bemerkungen

In der Praxis der Datenmodellierung werden die erste, zweite und dritte Normalform beim Erstellen des Datenmodells meist schon intuitiv eingehalten. Sollte man ein „visuelles“ Verfahren benutzen (z.B: ERM) ist eine Normalisierung meist komplett überflüssig, da das abgeleitete Relationenschema sich bereits in einer Normalform (3NF) befindet. Die 1NF wird meist schon durch das verwendete Datenbankmodell bedingt.

Die Normalisierung dient eher zur mathematischen/theoretischen Aufarbeitung eines Datenbankmodells und zur Überprüfung eines relationalen Datenbankentwurfs.

Eine alternative Herangehensweise zur Erstellung eines Datenmodells ist die Benutzung des Entity-Relationship-Modells (ERM) oder die Verwendung der UML für den konzeptionellen Entwurf. Das aus dem konzeptionellen Entwurf abgeleitete Relationenschema kann dann mit Hilfe der Normalisierungen überprüft werden. Neben dem reinen ER-Modell gibt es auch das Structured-ERM (SERM), das E3R-Modell sowie das EER-Modell.

Befindet sich ein Relationenschema nicht in einer der Normalformen, befindet es sich in der NFNF (Non-First-Normal-Form) bzw. UNF (Unnormalisierte Form).

Literatur

  • Ramez Elmasri, Shamkant B. Navathe: Grundlagen von Datenbanksystemen. Pearson Studium, 2002, ISBN 3-8273-7021-3
  • Alfons Kemper, Andre Eickler: Datenbanksysteme. Eine Einführung. Oldenbourg, 2004, ISBN 3486273922