====== BCNF - Boyce/Codd Normalform ======
Die BCNF ist eine Weiterentwicklung der [[dbs:sql:nf3|3. Normalform]].
===== Definition =====
Eine Relation befindet sich in BCNF, wenn sie in der 3. Normalform ist und jede Determinante, Schlüsselkandidat ist. (Es darf keine Determinante geben, die nicht Schlüsselkandidat ist).
Determinante: Eine Determinante ist eine Attributmenge von der andere Attribute abhängig sind (z.B. ein Schlüssel ist eine Determinante)
===== Allgemeines Beispiel =====
In der Tabelle T gibt es die Attribute "A", "B", "C" und "D".
Dabei gelten folgende Abhängigkeiten:
* (A,B) -> C
* (A,B) -> D
* C -> B
Hier zeigt sich, dass C ein Schlüsselkandidat, eine Determinante, ist.
==== Auflösung ====
Dieses Problem wird wie folgt aufgelöst:
* Die Determinante C wird zu einem Schlüsselattribut und das Attribut B ist kein Schlüsselattribut mehr
* In einer neuen Tabelle, in welcher C der Schlüssel ist, wird B hinzugefügt
* In der alten Tabelle wird logischerweise B entfernt und somit ergibt sich, dass A und C der Schlüssel für D sind
Grafisch sehen die Tabellen letztendlich wie folgt aus:
{{:dbs:sql:bcnf_fertig.png?direct&|}}
Die Schlüssel sind blau markiert.