logo

Boyce Codd normální forma (BCNF)

  • BCNF je pokročilá verze 3NF. Je přísnější než 3NF.
  • Tabulka je v BCNF, pokud každá funkční závislost X → Y, X je superklíč tabulky.
  • Pro BCNF by tabulka měla být v 3NF a pro každý FD je LHS superklíč.

Příklad: Předpokládejme, že existuje společnost, kde zaměstnanci pracují ve více než jednom oddělení.

včetně programování c

Tabulka ZAMĚSTNANCŮ:

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Indie Projektování D394 283
264 Indie Testování D394 300
364 Spojené království Obchody D283 232
364 Spojené království Rozvíjející se D283 549

Ve výše uvedené tabulce jsou funkční závislosti následující:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Klíč kandidáta: {EMP-ID, EMP-DEPT}

Tabulka není v BCNF, protože ani EMP_DEPT ani EMP_ID samotné nejsou klíče.

Abychom danou tabulku převedli na BCNF, rozložíme ji na tři tabulky:

Tabulka EMP_COUNTRY:

EMP_ID EMP_COUNTRY
264 Indie
264 Indie

Tabulka EMP_DEPT:

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Projektování D394 283
Testování D394 300
Obchody D283 232
Rozvíjející se D283 549

Tabulka EMP_DEPT_MAPPING:

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Funkční závislosti:

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Klíče kandidátů:

Pro první tabulku: EMP_ID
Pro druhou tabulku: EMP_DEPT
Ke třetí tabulce: {EMP_ID, EMP_DEPT}

Nyní je to v BCNF, protože levá část obou funkčních závislostí je klíčová.