Zum Inhalt springen

Normalisierung (Datenbank)

Dies ist ein als lesenswert ausgezeichneter Artikel.
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 15. Mai 2006 um 08:22 Uhr durch 80.145.208.189 (Diskussion) (Tim Cornils der Oberloser!). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ich bin ein Außerirdischer und habe mich ind Netz gehäkt! fkjlou dipu ! Ich komme hier gar nicht klar! Außerdem bin ich so dumm und habe mich in eine Schlapschwanz verknallt! Der nicht zu seinen Gefühlen stwehen kann!

Unter Normalisierung eines relationalen Datenbankschemas versteht man die schrittweise Zerlegung mittels Normalisierungsalgorithmen (siehe z. B. Synthesealgorithmus (3NF), Zerlegungsalgorithmus (BCNF)) 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, auf eine Normalisierung zu verzichten oder 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 verringern.

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 Bereich 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, zusammengesetzte, mengenwertige oder geschachtelte Wertebereiche (relationenwertige Attributwertebereiche) sind nicht erlaubt. Kurz: Kein Attributwertebereich kann in weitere (sinnvolle) aufgespalten werden (z. B.: Adresse in PLZ, Ort, Straße, Hausnummer).

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

Beispiel

CD_Lieder
CD_ID Album Titelliste
4811 Anastacia - Not That Kind {1. Not That Kind, 2. I'm Outta Love, 3. Cowboys & Kisses}
4712 Pink Floyd - Wish You Were Here {1. Shine On You Crazy Diamond}

Verletzung der 1NF

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

Dadurch hat man ohne Aufspaltung folgende Probleme bei Abfragen:

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

Lösung

CD_Lieder
CD_ID Albumtitel 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

Die Attributwertebereiche werden in atomare Attributwertebereiche aufgespalten:

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

Da jetzt jeder Attributwertebereich atomar ist sowie die Tabelle einen eindeutigen Primärschlüssel (aus den Spalten CD_ID und Track) besitzt, 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 mehrerer 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

CD_Lieder
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 besteht 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).

CD_Lieder (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
Bandinfo
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 CDs veröffentlicht haben.

Um das Problem zu verdeutlichen: Es werden Redundanzen erzeugt, wenn man keine Zwischentabelle macht, denn sobald eine CD auf den Markt kommt, auf der mehrere Künstler vertreten sind, taucht die selbe 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. (Anmerkung: Dies ist ein weiteres Problem, das den Absatz oberhalb bzw. das Beispiel nur nebensächlich betrifft.)

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

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

Verletzung der BCNF

Das Attribut KST_Nr beeinflusst in einem (anderen) 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, voneinander unabhängige, -Beziehungen in einer Relation geben (Zu einem Schlüssel gehören 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 gibt es mehrere Haustiere und Fahrzeuge. Haustier und Fahrzeug sind aber unabhängig voneinander. Person -> Haustier ist dabei eine Mehrwertige Abhängigkeit (MWA), Person -> Fahrzeug auch. Diese beiden MWAs sind unabhängig voneinander, also können 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 Information verloren geht.

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 und
  • Projekt 1 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 völlig ü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. Daneben ist auch das ERM, das von der SAP AG entwickelt wurde, sehr bekannt (SAP-SERM).

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