Boyce Codd Normalform (BCNF)
Die Boyce-Codd-Normalform (BCNF) ist eine Weiterentwicklung der Dritten Normalform (3NF). In der Dritten Normalform kann es vorkommen, daß ein Teil eines Schlüsselkandidaten funktional abhängig ist von einem Teil eines anderen Schlüsselkandidaten. Die Boyce-Codd-Normalform verhindert diese funktionale Abhängigkeit.Als Schlüsselkandidat wird ein Attribut oder eine Attributkombination bezeichnet, die einen Datensatz eindeutig identifizieren (also einen Primärschlüssel bilden).
Die BCNF braucht nur dann angewendet zu werden, wenn mehrere Schlüsselkandidaten vorhanden sind und sich diese teilweise überlappen. Ist in der Relation nur ein Kandidatenschlüssel vorhanden oder es liegt keine Überlappung bei mehreren Kandidatenschlüsseln vor, befindet sich die Relation automatisch in der BCNF.
Boyce Codd Normalform Definition
Ein Relationstyp ist genau dann in Boyce-Codd Normalform (BCNF), wenn jede Determinante vom Relationstyp ein Kandidatenschlüssel ist. Die Boyce-Codd Normalform ist die höchste Normalform auf der Basis funktioneller Abhängigkeiten. Eine Relation (Tabelle), die sich Boyce-Codd Normalform (BCNF) befindet ist auch gleichzeitig in der dritten Normalform (3NF).
Boyce-Codd-Normalform (BCNF) Beispiel
Ausgangspunkt der folgenden Betrachtung ist die Tabelle, die das Rechnungsbeispiel wieder aufgreift und um die Spalte LagerOrt erweitert ist. Der LagerOrt gibt an wo der Artikel im Lager abgelegt wurde.
ReNr | ArtNr | LagerOrt | Anzahl |
100100 | 1010 | 22 | 1 |
100100 | 1020 | 15 | 2 |
100100 | 1030 | 9 | 5 |
100103 | 1040 | 13 | 10 |
100104 | 1040 | 13 | 6 |
Die zusammengesetzten Schlüsselkandidaten sind ReNr-ArtNr und ReNr-LagerOrt.
Zwischen ArtNr und LagerOrt besteht eine funktionale Abhängigkeit, die nichts mit der Rechnungsnummer zu tun hat, daher ist die Relation zwar in 3. NF, aber nicht in der Boyce-Codd-Normalform.
Das Attribut ArtNr ist hier die Determinante für den Lagerort, aber das Attribut LagerOrt ist nur ein Teil eines Schlüsselkandidaten und somit funktional abhängig zum Attribut ArtNr. Das gleiche gilt für die umgekehrte Richtung, da auch über den Lagerort die Artikelnummer bestimmt werden kann.
Die Abhängigkeit wird durch eine Aufteilung der Daten in zwei Tabellen gelöst. Aus der Ausgangstabelle entstehen so zwei neue Tabellen, die über einen Primärschlüssel verbunden sind.
ddd
Neue Tabelle: "Rechnung-Artikel"
ReNr | ArtNr | Anzahl |
100100 | 1010 | 1 |
100100 | 1020 | 2 |
100100 | 1030 | 5 |
100103 | 1040 | 10 |
100104 | 1040 | 6 |
Neue Tabelle: "Artikel-Lagerort"
ArtNr | LagerOrt |
1010 | 22 |
1020 | 15 |
1030 | 9 |
1040 | 13 |
1050 | 5 |