- BCNF je napredna verzija 3NF-a. Stroži je od 3NF.
- Tablica je u BCNF-u ako je svaka funkcionalna ovisnost X → Y, X superključ tablice.
- Za BCNF, tablica bi trebala biti u 3NF, a za svaki FD, LHS je super ključ.
Primjer: Pretpostavimo da postoji tvrtka u kojoj zaposlenici rade u više od jednog odjela.
pretvaranje niza u java
Tablica ZAPOSLENIKA:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_BR |
---|---|---|---|---|
264 | Indija | Projektiranje | D394 | 283 |
264 | Indija | Testiranje | D394 | 300 |
364 | UK | Trgovine | D283 | 232 |
364 | UK | Razvijanje | D283 | 549 |
U gornjoj tablici funkcionalne ovisnosti su sljedeće:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Ključ kandidata: {EMP-ID, EMP-DEPT}
Tablica nije u BCNF-u jer niti EMP_DEPT niti EMP_ID sami nisu ključevi.
Da bismo danu tablicu pretvorili u BCNF, rastavljamo je na tri tablice:
Tablica EMP_COUNTRY:
EMP_ID | EMP_COUNTRY |
---|---|
264 | Indija |
264 | Indija |
Tablica EMP_DEPT:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_BR |
---|---|---|
Projektiranje | D394 | 283 |
Testiranje | D394 | 300 |
Trgovine | D283 | 232 |
Razvijanje | D283 | 549 |
Tablica EMP_DEPT_MAPPING:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Funkcionalne ovisnosti:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Ključevi kandidata:
Za prvu tablicu: EMP_ID
Za drugu tablicu: EMP_DEPT
Za treću tablicu: {EMP_ID, EMP_DEPT}
Ovo je u BCNF-u jer je lijevi dio obje funkcionalne ovisnosti ključ.