Die Boyce-Codd-Normalform (BCNF) ist eine Normalform in der relationalen Datenbanktheorie, die darauf abzielt, Redundanzen und Anomalien in einer Datenbank zu vermeiden. Sie ist eine strengere Form der dritten Normalform (3NF) und wird oft als Erweiterung davon betrachtet.
Eine Relation (Tabelle) befindet sich in der Boyce-Codd-Normalform, wenn sie folgende Bedingungen erfüllt:
-
Die Relation ist in der dritten Normalform (3NF): Das bedeutet, dass sie bereits in der ersten und zweiten Normalform ist und keine transitive Abhängigkeit zwischen den Attributen existiert.
-
Jede nicht-triviale funktionale Abhängigkeit X→YX→Y hat einen Superschlüssel als Determinante: Das bedeutet, dass für jede funktionale Abhängigkeit, bei der XX die Menge der Attribute ist, die YY bestimmen, XX ein Superschlüssel sein muss. Ein Superschlüssel ist eine Menge von Attributen, die die gesamte Relation eindeutig identifizieren können.
Unterschiede zur dritten Normalform (3NF)
Während die dritte Normalform verlangt, dass ein Attribut, das nicht zum Primärschlüssel gehört, direkt von diesem abhängen muss (also nicht transitiv über ein anderes Attribut), geht die BCNF noch einen Schritt weiter. Sie fordert, dass alle Determinanten (die linken Seiten der funktionalen Abhängigkeiten) Superschlüssel sein müssen.
Beispiel
Betrachten wir eine Relation R
mit den Attributen A
, B
und C
, und die folgenden funktionalen Abhängigkeiten:
Um zu überprüfen, ob diese Relation in BCNF ist, gehen wir wie folgt vor:
- Wir stellen fest, dass A→BA→B keine Probleme darstellt, wenn AA ein Superschlüssel ist.
- Allerdings ist B→CB→C problematisch, wenn BB kein Superschlüssel ist, da BB in diesem Fall nicht die gesamte Relation eindeutig identifizieren kann.
Wenn BB kein Superschlüssel ist, dann ist die Relation nicht in BCNF und muss in zwei Relationen zerlegt werden, um die BCNF zu erfüllen:
- Eine Relation, die BB und CC enthält
- Eine andere Relation, die AA und BB enthält
Zusammenfassung
Die Boyce-Codd-Normalform ist eine strengere Normalform als die dritte Normalform und stellt sicher, dass keine funktionalen Abhängigkeiten existieren, bei denen die linke Seite kein Superschlüssel ist. Dies hilft, Redundanzen und Anomalien in der Datenbankstruktur zu vermeiden und die Integrität der Daten zu gewährleisten.