- BCNF je napredna različica 3NF. Je strožji od 3NF.
- Tabela je v BCNF, če je vsaka funkcionalna odvisnost X → Y, X superključ tabele.
- Za BCNF mora biti tabela v 3NF, za vsak FD pa je LHS super ključ.
primer: Predpostavimo, da obstaja podjetje, kjer zaposleni delajo v več kot enem oddelku.
java veljavni identifikatorji
Tabela DELAVCA:
EMP_ID | EMP_DRŽAVA | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | Indija | Oblikovanje | D394 | 283 |
264 | Indija | Testiranje | D394 | 300 |
364 | Združeno kraljestvo | Trgovine | D283 | 232 |
364 | Združeno kraljestvo | Razvijanje | D283 | 549 |
V zgornji tabeli so funkcionalne odvisnosti naslednje:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Ključ kandidata: {EMP-ID, EMP-DEPT}
Tabela ni v BCNF, ker niti EMP_DEPT niti EMP_ID sama nista ključa.
Da dano tabelo pretvorimo v BCNF, jo razdelimo na tri tabele:
Tabela EMP_COUNTRY:
EMP_ID | EMP_DRŽAVA |
---|---|
264 | Indija |
264 | Indija |
Tabela EMP_DEPT:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Oblikovanje | D394 | 283 |
Testiranje | D394 | 300 |
Trgovine | D283 | 232 |
Razvijanje | D283 | 549 |
Tabela EMP_DEPT_MAPPING:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Funkcionalne odvisnosti:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Ključi kandidatov:
Za prvo tabelo: EMP_ID
Za drugo tabelo: EMP_DEPT
Za tretjo tabelo: {EMP_ID, EMP_DEPT}
Zdaj je to v BCNF, ker je levi del obeh funkcijskih odvisnosti ključ.