- BCNF je pokročilá verzia 3NF. Je prísnejšia ako 3NF.
- Tabuľka je v BCNF, ak každá funkčná závislosť X → Y, X je super kľúč tabuľky.
- Pre BCNF by tabuľka mala byť v 3NF a pre každý FD je LHS super kľúč.
Príklad: Predpokladajme, že existuje spoločnosť, kde zamestnanci pracujú vo viacerých oddeleniach.
zahŕňajú programovanie c
Tabuľka ZAMESTNANCOV:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | India | Navrhovanie | D394 | 283 |
264 | India | Testovanie | D394 | 300 |
364 | UK | Obchody | D283 | 232 |
364 | UK | Rozvíjanie | D283 | 549 |
Vo vyššie uvedenej tabuľke sú funkčné závislosti nasledovné:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidátsky kľúč: {EMP-ID, EMP-DEPT}
Tabuľka nie je v BCNF, pretože ani EMP_DEPT ani EMP_ID samotné nie sú kľúčmi.
Aby sme danú tabuľku previedli na BCNF, rozložíme ju na tri tabuľky:
Tabuľka EMP_COUNTRY:
EMP_ID | EMP_COUNTRY |
---|---|
264 | India |
264 | India |
Tabuľka EMP_DEPT:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Navrhovanie | D394 | 283 |
Testovanie | D394 | 300 |
Obchody | D283 | 232 |
Rozvíjanie | D283 | 549 |
Tabuľka 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}
Kľúče kandidátov:
Pre prvú tabuľku: EMP_ID
Pre druhú tabuľku: EMP_DEPT
Pre tretiu tabuľku: {EMP_ID, EMP_DEPT}
Teraz je to v BCNF, pretože ľavá časť oboch funkčných závislostí je kľúčom.