Normalformen
Inhaltsverzeichnis
Bis 1978 wurden von E. F. Codd drei Normalformen aufgestellt, die entsprechend als erste, zweite und dritte Normalform bezeichnet werden. Daneben gibt es noch vier weitere Normalformen, die jedoch in der Praxis nicht so relevant sind, da Probleme, die durch diese Normalformen beseitigt werden, nur selten vorkommen.
NF² (Non-First-Normal-Form)
Als NF² wird jede unnormalisierte Relation bezeichnet, sozusagen eine Relation, die nichtmal der ersten Normalform genügt.
Student
MNr Name PrüfFachNr PrüfFachBezeichung ProfNr ProfName Note 005 Meier 10,12,16 Analysis, Algebra, Datenbanken 90,90,65 A,A,D 2,1,2 006 Müller 16,17 Datenbanken, Techn. Informatik 65,68 D,F 2,3 ... ... ... ... ... ... ...
1. Normalform
Eine Relation (Tabelle) ist in der ersten Normalform (1. NF), wenn die Werte der Attribute elementar (atomar) sind, d.h. pro Datenfeld darf nur maximal ein Wert enthalten sein. |
Im obigen Beispiel sind die Werte der Attribute PrüfFachNr ... Note nicht elementar (atomar). In diesen Attributen sind jeweils mehrere Werte gespeichert, auf die damit nicht einzeln zugegriffen werden kann.
- Ein evtl. erfasstes Geburtsdatum setzt sich zwar aus den Komponenten Tag, Monat und Jahr zusammen, es ist aber als Ganzes anzusehen. Dem widerspricht nicht, dass über spezielle Funktionen auf einzelne Komponenten des Datums zugegriffen werden kann (z. B.: Gruppiere die Geburtstage der Mitglieder nach Monaten).
In einigen relationalen Datenbanksystemen können auch komplexe Objekte wie Bilder, Videosequenzen und Tonfolgen als elementare Attribute gespeichert werden. Dies bedingt, dass keine Abfragen auf bestimmte Inhalte der Attribute durchgeführt werden können (z.B. die Suche nach einer bestimmten Tonfolge).
Damit sind z.B. Mengen, Folgen und Arrays als Attributwerte ausgeschlossen. Elementar bedeutet, dass der Wert als Ganzes zu sehen ist und keine Teile des Wertes getrennt verarbeitet werden sollen.
In der Definition heißt es: "... maximal einen Wert ...". Demnach ist es erlaubt, in ein Datenfeld keinen Wert (d.h. einen Nullwert) einzutragen. das kann sinnvoll sein, wenn z.B. das Attribut noch keinen Wert besitzt (noch nicht vergebene Punktzahl in einem Kurs).
Es gibt zwei Arten Mehrfachattribute zu beseitigen:
- Das Mehrfachattribut wird innerhalb des Datensatzes in mehrer Einfachattribute zerlegt, d.h. der Datensatz erhält mehr Attribute.
- Wenn das Mehrfachattribut eine Liste von typgleichen Daten enthält, wird jedem Wert der Liste eine eigener Datensatz zugeordnet.
Die Ausgangsrelation dürfte in der 1.NF so aussehen:
Prüfung
MNr Name PrüfFachNr PrüfFachBezeichung ProfNr ProfName Note 005 Meier 10 Analysis 90 A 2 005 Meier 12 Algebra 90 A 1 005 Meier 16 Datenbanken 65 D 2 006 Müller 16 Datenbanken 65 D 2 006 Müller 17 Techn. Informatik 68 F 3 ... ... ... ... ... ... ... Prüfung (MNr, Name, PrüfFachNr, PrüfFachBezeichung, ProfNr, ProfName, Note)
Als Primärschlüssel wird man, um eine Prüfung einem Schüler eindeutig zuordnen zu können, nun die Attributkombination {MNr, PrüfFachNr} wählen müssen. Mit dieser einfach durchzuführenden Auflösung von Mehrfachbelegungen sind aber Datenredundanzen entstanden, die man eigentlich vermeiden sollte. Diese werden erst in der 2. und 3. Normalform wieder beseitigt.
Welche Fehlermöglichkeiten kann es in der 1.NF geben?
- Einfüge-Anomalie
- Fall 1: Zur bestehenden Prüfungsfachnummer erfolgt ein weiterer Eintrag mit anderer Prüffachbezeichnung
- Fall 2: Zur selben Matrikelnummer erfolgt ein Eintrag mit anderem Studentennamen
- Fall 3: Der Eintrag eines Studenten, der noch kein Prüfungsfach gewählt hat liefert Nullwerte in der Prüfungsfachnummer, da dies aber Teil des Primärschlüssels ist, darf dies nicht sein. Es verletzt die Integrität.
- Änderungs-Anomalie
- Fall 4: Wenn der Name des Professors / der Professorin sich ändert, muss dies in allen Zeilen geschehen!
- Fall 5: Den einzelnen Prüfungsfächern werden neue Prüfer zugeordnet. Überall!
- Lösch-Anomalie
- ... Gehen Daten unwiederbringlich verloren, wenn ein Tupel gelöscht wird?
2. Normalform
Die zweite Normalform bezieht sich ausschließlich auf Tabellen, deren Primärschlüssel aus mehreren Attributen zusammengesetzt ist.
Eine Relation ist in der zweiten Normalform (2.NF), wenn sie sich in der 1.NF befindet und jedes nicht zum Primärschlüssel gehörige Attribut voll von diesem abhängig ist. |
Der Primärschlüssel der Relation in 1.NF ist MNr und PrüfFachNr. Da weder der Name des Studenten noch die Bezeichnung des Prüfungsfachs voll vom Primärschlüssel abhängig sind, müssen diese in andere Relationen überführt werden. Das Attribut Note ist voll vom Primärschlüssel abhängig und bleibt in der Relation. Demzufolge ergeben sich folgende Relationen in zweiter Normalform:
Prüfungen
MNr PrüfFachNr Note 005 10 2 005 12 1 005 16 2 006 16 2 006 17 3 Studenten
MNr Name 005 Meier 006 Müller Prüfungsfächer
PrüfFachNr PrüfFachBezeichung ProfNr ProfName 10 Analysis 90 A 12 Algebra 90 A 16 Datenbanken 65 D 17 Techn. Informatik 68 F Prüfung (↑MNr, ↑PrüfFachNr, Note)
Studenten (MNr, Name)
Prüfungsfächer (PrüfFachNr, PrüfFachBezeichung, ProfNr, ProfName)
In allen entstandenen Relationen sind alle Nicht-Primärschlüssel-Attribute voll funktional abhängig von den jeweiligen Primärschlüsseln.
Die Gesamtinformation ist durch die Überführung in die zweite Normalform nicht geändert worden. Die Verbindung zwischen den Relationen geschieht durch sogenannte korrespondierende Attribute; so tritt die Matrikelnummer sowohl in der Relation Prüfungen als auch in der Relation Studenten auf. Diese in verschiedenen Relationen auftretenden Attribute nennt man global im Gegensatz zu lokalen Attributen, die nur in einer Relation vorkommen.
Durch die Transformation in die 2.NF wurden die Redundanzen weitgehend beseitigt; allerdings fällt auf, dass das Attribut ProfName mehrmals vorkommt, obwohl mit ProfNr der Name des Professors schon gegeben wäre. Diese Redundanzen von Attributen, die nicht zum Primärschlüssel gehören, beseitigt die Überführung in die dritte Normalform.
Welche Anomalien kommen in der 2.NF nicht mehr vor?
- Einfüge-Anomalie
- Fall 1: Zur bestehenden Prüfungsfachnummer erfolgt ein weiterer Eintrag mit anderer Prüffachbezeichnung (beseitigt)
- Fall 2: Zur selben Matrikelnummer erfolgt ein Eintrag mit anderem Studentennamen (beseitigt)
- Fall 3: Der Eintrag eines Studenten, der noch kein Prüfungsfach gewählt hat liefert Nullwerte in der Prüfungsfachnummer, da dies aber Teil des Primärschlüssels ist, darf dies nicht sein. (beseitigt)
- Änderungsanomalie
- Fall 4: Wenn der Name des Professors / der Professorin sich ändert, muss dies in allen Zeilen geschehen (nicht beseitigt!)
- Fall 5: Den einzelnen Prüfungsfächern werden neue Prüfer zugeordnet. Überall! (beseitigt)
3. Normalform
Die dritte Normalform bezieht sich auf funktionale Abhängigkeiten zwischen Nichtschlüssel- Attributen.
Eine Relation befindet sich dann in der dritten Normalform (3.NF), wenn sie sich in der 1.NF und in der 2.NF befindet und wenn alle Nichtschlüssel-Attribute ausschließlich vom Primärschlüssel funktional abhängig sind, und nicht transitiv über ein Nichtschlüssel-Attribut. |
Durch die Transformation in die 2. Normalform wurden die Redundanzen weitgehend beseitigt; allerdings fällt auf, dass das Attribut ProfName mehrmals vorkommt, obwohl mit ProfNr der Name des Professors schon gegeben wäre. Diese Redundanzen von Attributen, die nicht zum Primärschlüssel gehören, beseitigt die Überführung in die 3. Normalform.
Prüfungen
MNr PrüfFachNr Note 005 10 2 005 12 1 005 16 2 006 16 2 006 17 3 Studenten
MNr Name 005 Meier 006 Müller Prüfungsfächer
PrüfFachNr PrüfFachBezeichung ProfNr 10 Analysis 90 12 Algebra 90 16 Datenbanken 65 17 Techn. Informatik 68 Prüfer
ProfNr ProfName 90 A 65 D 68 F Prüfung (↑MNr, ↑PrüfFachNr, Note)
Studenten (MNr, Name)
Prüfungsfächer (PrüfFachNr, PrüfFachBezeichung, ↑ProfNr)
Prüfer (ProfNr, ProfName)
Mit der Überführung in die dritte Normalform sind in dem Beispiel alle Anomalien / Redundanzen beseitigt worden.
Welche Anomalien kommen in der 3.NF nicht mehr vor?
- Änderungsanomalie
- Fall 4: Wenn der Name des Professors / der Professorin sich ändert, muss dies in allen Zeilen geschehen! (beseitigt)
In den meisten Fällen ist man in der Lage, auf Basis der 3 Normalformen ein redundanzfreies, konsistentes und realitätsgetreues Datenmodell zu erstellen. Unter bestimmten Voraussetzungen können jedoch auch bei Relationen, die sich in der 3. Normalform befinden, Anomalien auftreten und zwar, wenn
- die Relation mehrere Schlüsselkandidaten hat (Prüfungsfachnr. vs. Prüffachbezeichnung)
- die Schlüsselkandidaten zusammengesetzt sind, also aus mehr als einem Attribut bestehen
- die Schlüsselkandidaten sich mit dem Primärschlüssel überlappen, d.h. mindestens ein Attribut mit dem Primärschlüssel gemeinsam haben.
weitere Normalformen
Die ersten drei Normalformen decken in der Regel die häufigsten Probleme ab, die bei einem Datenmodell auftreten können. Daher soll es an dieser Stelle genügen, nur die ersten drei Normalformen ausführlich zu erläutern und die weiteren Normalformen im Folgenden kurz zu erwähnen.
Boyce-Codd-Normalform
Als Ersatz für die dritte Normalform wird häufig die Boyce-Codd-Normalform angewendet.
Eine Relation ist in Boyce-Codd-Normalform (BCNF), wenn jedes determinierende Attribut zugleich Schlüsselkandidat ist. |
Beispiel
- Belegung (KursNr, KursBez, SNr, Note)
In der Relation Belegung liegen folgende funktionale Abhängigkeiten vor:
- {KursNr} → {KursBez}
- {KursBez} → {KursNr}
- {KursNr, SNr} → {Note}
- {KursBez, SNr} → {Note}
Schlüsselkandidaten sind nur die Kombinationen {KursNr, SNr} und {KursBez, SNr}. Ein Schlüsselkandidat {KursNr, KursBez, SNr} ist nicht möglich, da damit die 2.NF nicht erfüllt wäre.
Damit ist aber die BCNF nicht erfüllt, da es Determinanten gibt, die keine Schlüsselkandidaten sind, nämlich KursNr bzw. KursBez. Um auch hier BCNF zu erreichen, muss wiederum eine Zerlegung durchgeführt werden, so dass eine derjenigen Determinanten, die nicht Schlüsselkandidaten sind, in eine neue Relation ausgelagert wird.
- Belegung (KursNr, SNr, Note)
- Kurs (KursNr, KursBez)
Die Untersuchung, ob sich eine Relation in BCNF befindet, macht nur Sinn, wenn die Relation zusammengesetzte Primärschlüssel besitzen, ansonsten ist die BCNF gleichzusetzen mit der 3.NF. Daher kann die Relation Belegung aus dem Beispiel auch durch die Einführung eines Attributes BNr als Primärschlüssel in die BCNF umgewandelt werden.
4. und 5. Normalform
Die vierte und die fünfte Normalform beschäftigen sich mit so genannten mehrwertigen Abhängigkeiten. Mehrwertige Abhängigkeiten treten nur auf, wenn der Primärschlüssel aus zwei oder mehr Attributen zusammengesetzt ist. In der Regel versucht man Primärschlüssel auf ein, höchstens zwei Attribute zu beschränken. Deshalb soll hier auf diese Normalformen nicht näher eingegangenwerden.
Zusammenfassung
Das Ziel der Normalisierung ist die Vermeidung redundanter Daten. Dabei finden (hauptsächlich) drei Normalformen Anwendung, die man nacheinander auf Tabellen anwenden sollte, um diese zu überprüfen.
Folgende Schritte sind zur Erfüllung der drei Normalformen durchzuführen:
- 1. Normalform
- Attribute mit mehreren Werten, z.B. Adresse, in atomare Attribute aufspalten
- Wiederholgruppen, z.B. Kinder von Kunden, in mehrere Zeilen aufteilen
- 2. Normalform
- Überprüfen der vollen funktionalen Abhängigkeit der Nichtschlüssel-Attribute zum Primärschlüssel
- Gegebenenfalls Aufteilen der Tabelle nach deren voller funktionaler Abhängigkeit (nur bei zusammengesetzten Primärschlüsseln notwendig)
- 3. Normalform
- Überprüfen von transitiven Abhängigkeiten des Primärschlüssels zu den Nichtschlüssel-
Attributen (Ausnahme: Funktionale Abhängigkeit von einem Schlüsselkandidaten)
- Gegebenfalls Aufteilen der Tabelle, so dass transitiv abhängige Attribute mit ihrem
funktional abhängigen Attribut eine eigene Tabelle bilden und transitiv abhängiges Attribut in Originaltabelle erhalten bleibt
Generell gilt, dass ein sauber modelliertes ER-Modell bereits in ein redundanzfreies Relationenmodell überführt wird.
Dennoch sollte die Normalisierung in drei Fällen angewendet werden. Zum einen zur nachträglichen Überprüfung von Tabellen, bei denen man Unstimmigkeiten vermutet. Zum anderen zur Überprüfung, wenn nachträglich Attribute zur Datenbank hinzugefügt werden sollen. Und schließlich um eine bereits vorhandene relationale Datenbankstruktur nachträglich zu normalisieren. Häufig werden in Firmen relationale Datenbanken erstellt ohne vorab ein konzeptionelles und logisches Modell zu entwerfen. In diesem Fall eignet sich die Normalisierung als nachträgliche Designtechnik um das Datenmodell redundanzfrei zu entwerfen.