Normalformen in relationalen Datenbanken
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 4,78 KB
Erste Normalform (1NF): Entfernen von Wiederholungsgruppen
Eine Relation ist in der Ersten Normalform (1NF), wenn:
- Alle Attribute atomar sind (nicht weiter zerlegbar).
- Es keine wiederholenden Gruppen gibt.
Um wiederholende Gruppen zu entfernen, werden folgende Schritte unternommen:
- Es wird eine neue Relation erzeugt, deren Primärschlüssel der Schlüssel der ursprünglichen Relation ist, ergänzt um die Attribute, die nicht zu den wiederholenden Gruppen gehören.
- Zweitens wird ein zusammengesetzter Schlüssel gebildet, bestehend aus dem Schlüssel der ursprünglichen Relation und den Schlüsselattributen der wiederholenden Gruppe, zusammen mit allen Feldern, aus denen die wiederholende Gruppe besteht.
Zweite Normalform (2NF): Entfernen partieller Abhängigkeiten
Eine Relation ist in der Zweiten Normalform (2NF), wenn sie in 1NF ist und kein Nicht-Schlüsselattribut partiell von einem Kandidatenschlüssel abhängt.
Um partielle Abhängigkeiten zu entfernen, werden folgende Schritte unternommen:
- Identifiziere Attribute, die ausschließlich von einem Teil eines zusammengesetzten Schlüssels abhängen.
- Erzeuge eine neue Relation, deren Primärschlüssel der Teil des zusammengesetzten Schlüssels ist, von dem die partielle Abhängigkeit ausgeht, und füge die davon abhängigen Attribute hinzu.
Dritte Normalform (3NF): Entfernen transitiver Abhängigkeiten
Eine Relation ist in der Dritten Normalform (3NF), wenn sie in 2NF ist und kein Nicht-Schlüsselattribut transitiv von einem Kandidatenschlüssel abhängt.
Um transitive Abhängigkeiten zu entfernen, werden folgende Schritte unternommen:
- Identifiziere Attribute, die von einem Nicht-Schlüsselattribut abhängen, welches wiederum vom Primärschlüssel abhängt.
- Erzeuge eine neue Relation, deren Primärschlüssel das Attribut ist, das die transitive Abhängigkeit bestimmt (dieses Attribut wird in der ursprünglichen Relation zum Fremdschlüssel). Die abhängigen Felder werden als Attribute dieser neuen Relation hinzugefügt.
Boyce-Codd-Normalform (BCNF)
Die Boyce-Codd-Normalform (BCNF) ist eine strengere Form der 3NF. Eine Relation in 3NF ist nicht unbedingt in BCNF, aber eine Relation in BCNF ist immer auch in 3NF.
Eine Relation R ist in BCNF, wenn und nur wenn jeder Determinant ein Kandidatenschlüssel ist.
Spezielle Fälle, in denen 3NF nicht BCNF ist:
- Fall 1: Wenn eine Relation einen zusammengesetzten Schlüssel hat und einige der Schlüsselattribute Determinanten sind, die keine Kandidatenschlüssel sind, können Anomalien existieren.
- Fall 2: Zusätzliche Einschränkungen in einer bestimmten Situation können zu unnötiger Redundanz führen.
Beispiel für Normalisierung
Betrachten wir folgende Regeln:
- Jeder Student kann mehrere Themen von Interesse haben.
- Für jedes Fach hat ein Student nur einen Nachhilfelehrer.
- Pro Kurs gibt es eine Reihe von Tutoren.
- Jeder Tutor ist auf einen Bereich spezialisiert.
- Jeder Lehrer betreut mehrere Schüler in einem Fach.
Relation: TUTORING (nro_alumno, Thema, Tutor)
Abhängigkeiten:
(nro_alumno, Thema) -> Tutor
(Ein Student hat für ein Thema einen spezifischen Tutor)Tutor -> Thema
(Ein Tutor ist auf ein Thema spezialisiert)
Vierte Normalform (4NF): Entfernen mehrwertiger Abhängigkeiten
Die Vierte Normalform (4NF) befasst sich mit Anomalien, die durch mehrwertige Abhängigkeiten entstehen.
Eine Relation ist in 4NF, wenn sie in BCNF ist und keine nicht-trivialen mehrwertigen Abhängigkeiten existieren, die nicht auch funktionale Abhängigkeiten sind.
Eine mehrwertige Abhängigkeit (MVD) A ->> B existiert, wenn für jeden Wert von A eine Menge von Werten von B existiert, die unabhängig von anderen Attributen (C) in der Relation ist.
Beispiel für 4NF
Betrachten wir folgende Regeln:
- Pro Kurs können mehrere Instruktoren unterrichten.
- Jeder Instruktor verwendet verschiedene Texte.
- Die Texte, die für einen bestimmten Kurs verwendet werden, sind unabhängig vom Instruktor.
Relation: Kurs_Instruktor_Buch (Kurs, Instruktor, Buch)
Mehrwertige Abhängigkeiten:
Kurs ->> Instruktor
(Für einen Kurs gibt es mehrere Instruktoren, unabhängig von den Büchern)Kurs ->> Buch
(Für einen Kurs gibt es mehrere Bücher, unabhängig von den Instruktoren)
Hier sind Instruktor
und Buch
voneinander unabhängig, aber beide mehrwertig von Kurs
abhängig.