====== 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.