logo

Boyce-Codd-Normalform (BCNF)

  • BCNF ist die Vorabversion von 3NF. Es ist strenger als 3NF.
  • Eine Tabelle ist in BCNF, wenn jede funktionale Abhängigkeit X → Y, X der Superschlüssel der Tabelle ist.
  • Für BCNF sollte die Tabelle in 3NF vorliegen und für jeden FD ist LHS der Superschlüssel.

Beispiel: Nehmen wir an, es gibt ein Unternehmen, in dem Mitarbeiter in mehr als einer Abteilung arbeiten.

Datum und Uhrzeit des Typoskripts

MITARBEITER-Tabelle:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Indien Entwerfen D394 283
264 Indien Testen D394 300
364 Vereinigtes Königreich Shops D283 232
364 Vereinigtes Königreich Entwicklung D283 549

In der obigen Tabelle sind die funktionalen Abhängigkeiten wie folgt:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Kandidatenschlüssel: {EMP-ID, EMP-DEPT}

Die Tabelle befindet sich nicht in BCNF, da weder EMP_DEPT noch EMP_ID allein Schlüssel sind.

Um die angegebene Tabelle in BCNF umzuwandeln, zerlegen wir sie in drei Tabellen:

EMP_COUNTRY-Tabelle:

EMP_ID EMP_COUNTRY
264 Indien
264 Indien

EMP_DEPT-Tabelle:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Entwerfen D394 283
Testen D394 300
Shops D283 232
Entwicklung D283 549

EMP_DEPT_MAPPING-Tabelle:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Funktionale Abhängigkeiten:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Kandidatenschlüssel:

Für die erste Tabelle: EMP_ID
Für die zweite Tabelle: EMP_DEPT
Für die dritte Tabelle: {EMP_ID, EMP_DEPT}

Dies ist nun in BCNF der Fall, da der linke Teil beider funktionaler Abhängigkeiten ein Schlüssel ist.