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