Normalisierung (Datenbank)
Unter Normalisierung eines relationalen_Datenbankschemas versteht man die schrittweise Zerlegung von Relationen (in der Datenbank: Tabellen), auch mittels Normalisierungsalgorithmen (siehe z. B. Synthesealgorithmus_(3NF), Zerlegungsalgorithmus_(BCNF)), 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.Das Relationenschema wird dabei in die erste, zweite, dritte usw. Normalform überführt. Damit ein Relationschema eine Normalform erfüllt, muss es die Kriterien der gewünschten Normalform und die Kriterien der ?vorherigen? Normalformen erfüllen.
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).
Allgemeines
Bei der Normalisierung werden Spalten von Tabellen innerhalb der Datenbank in neue Spalten aufgeteilt, z. B. Adressen in Postleitzahl, Ort und Straße, oder diese Spalten mit anderen Tabellen verknüpft, z. B. ein Kunde über eine eindeutige Nummer mit einer Kundentabelle.
Der Sinn der Normalisierung besteht darin, Redundanzen (gleiche, mehrmals vorhandene Information) zu verringern und Anomalien (z.B. einander widersprechende Dateninhalte) zu verhindern, um so die Wartung einer Datenbank zu vereinfachen sowie die Konsistenz der Daten zu gewährleisten.
Wenn sich beispielsweise die Adresse eines Kunden ändert, so müsste man ggf. alle Datensätze nach diesem Kunden durchsuchen und die Adresseinträge aktualisieren. Bei einer normalisierten Datenbank gibt es dafür nur einen einzigen Eintrag. Außerdem ist der Speicherbedarf ungleich geringer, wenn der Datensatz einer Tabelle z. B. "Auftrag" auf einen Datensatz einer anderen Tabelle z. B. "Kunde" verweist, anstatt diesen gesamten Datensatz selbst zu enthalten.
Da es mehrere Aufträge vom gleichen Kunden geben könnte, würden ansonsten je Auftrag immer wieder die Daten des Kunden kopiert werden (Redundanz). Gäbe es außerdem in der Datenbank mehrere Adressen zu einem Kunden, könnte es zu widersprüchlichen oder falschen Ausgaben kommen - die Daten wären dann nicht konsistent.
In einigen Anwendungsfällen ist es aber auch sinnvoll, auf eine Normalisierung zu verzichten oder Teile der Normalisierung gezielt durch eine Denormalisierung rückgängig zu machen, um
* die Performance (Verarbeitungsgeschwindigkeit) zu erhöhen oder
* Anfragen zu vereinfachen und damit die Fehleranfälligkeit zu verringern.
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)
Sie dienen der Beurteilung der Qualität des betrachteten Datenbankschemas.
Außerdem können mit Hilfe der Normalisierung Datenstrukturen aus nichtrelationalen Quellen gewonnen werden, die formal korrekt sind, und die Daten aus ihren jeweiligen nichtrelationalen Quellen, aus denen sie entstanden sind (z.B. Formulardaten oder Spreadsheets), aufnehmen können. Da sich in den Quellen aber meistens Anomalien verbergen, weil sie ja eben nicht normalisiert sind, gestaltet sich das in der Praxis meist schwieriger als es sich anhört.
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 einen atomaren Wertebereich haben, die Relation muss frei von Wiederholungsgruppen sein.
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 darf nicht als Attribut verwendet werden, sondern muss in PLZ, Ort, Straße, Hausnummer zerlegt werden).
Dass die Relation frei von Wiederholungsgruppen sein muss bedeutet, dass Attribute, die gleiche oder gleichartige Information enthalten, in eine andere Relation ausgelagert werden müssen.
Beispiele dafür könnten sein: { .., Telefon1, Telefon2, Telefon3,..
= Hinweis
=Folgende Relation erfüllt die 4NF:
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 Verbundsoperationen die Informationen der ursprünglichen Relation wieder hergestellt 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 eine Teilmenge des so genannten kartesischen_Produkts 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 kann:
= 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?* Welche Teile werden von welchem Projekt benötigt?* Welche Projekte können von welchem Lieferanten beliefert werden?
= 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 vereinigt:
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, dritte und vierte 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 (4NF) 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. In der Praxis kommt Normalisierung überwiegend zu didaktischen Zwecken zur Anwendung. Es wird damit demonstriert, wie man auf keinen Fall ein Datenmodell entwirft – nämlich ausgehend von einer Universaltabelle. Die heutige Bedeutung ist nur noch historisch zu verstehen.
Eine alternative Herangehensweise zur Erstellung eines Datenmodells ist die Benutzung des Entity-Relationship-Modells (ERM) oder die Verwendung der Unified_Modeling_Language_(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 NF² (Non-First-Normal-Form) bzw. UNF (Unnormalisierte Form).
Die englische Wikipedia enthält die gebräuchliche formale Definition der 3.NF (im Gegensatz zur informalen oben). Aus dieser
ergibt sich, daß die 3.NF die 2.NF impliziert. Strukturell ist eigentlich die 2.NF nicht wirklich nötig, denn partielle Abhängigkeiten sind nur spezielle transitive Abhängigkeiten und die 2.NF verbietet also nur einige transitive Abhängigkeiten, hingegen die 3.NF alle.
Merkspruch
Als eine Gedächtnisstütze für die Grade von Abhängigkeit vom Schlüssel in den ersten drei Normalformen wird gerne folgender Spruch genannt: the key, the whole key, and nothing but the key - so help me Codd (Der Schlüssel, der ganze Schlüssel und nichts als der Schlüssel - so wahr mir Codd helfe.):
* alle (impliziert: atomaren) Werte beziehen sich auf den Schlüssel - 1. NF
* bei zusammengesetzten Schlüsseln beziehen sie sich jeweils auf den gesamten Schlüssel - 2. NF
* die Werte hängen nur vom Schlüssel ab, und nicht von zusätzlichen Werten - 3. NF
Merkregeln
1. Merkregel: Ist die Tabelle in 1. Normalform und besteht der Primärschlüssel
aus nur einem Attribut, so liegt automatisch die 2. Normalform vor.
2. Merkregel: Ist eine Tabelle in 2. Normalform und besitzt sie außer dem Primärschlüssel
höchstens ein weiteres Attribut, so liegt die Tabelle in 3. Normalform vor.
Quellen
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, München 2004, ISBN 3-486-27392-2
* Stefan M. Lang, Peter C. Lockemann: Datenbankeneinsatz. Springer, Berlin u. a. 1995, ISBN 3-540-58558-3
Weblinks
* http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap4.htm
* http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
• Microsoft KB-Artikel, in dem versucht wird die Normalform zu erklären
• Database Normalizer. Works with functional dependencies and implements normalization algorithms. Useful to validate normalization exercises

