- BCNF er forhåndsversjonen av 3NF. Det er strengere enn 3NF.
- En tabell er i BCNF hvis hver funksjonell avhengighet X → Y, X er supernøkkelen til tabellen.
- For BCNF bør tabellen være i 3NF, og for hver FD er LHS supernøkkel.
Eksempel: La oss anta at det er et selskap der ansatte jobber i mer enn én avdeling.
typescript datotype
ANSATTEtabell:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | India | Designing | D394 | 283 |
264 | India | Testing | D394 | 300 |
364 | Storbritannia | Butikker | D283 | 232 |
364 | Storbritannia | Utvikler | D283 | 549 |
I tabellen ovenfor er funksjonelle avhengigheter som følger:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidatnøkkel: {EMP-ID, EMP-DEPT}
Tabellen er ikke i BCNF fordi verken EMP_DEPT eller EMP_ID alene er nøkler.
For å konvertere den gitte tabellen til BCNF, dekomponerer vi den i tre tabeller:
EMP_COUNTRY tabell:
EMP_ID | EMP_COUNTRY |
---|---|
264 | India |
264 | India |
EMP_DEPT-tabell:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Designing | D394 | 283 |
Testing | D394 | 300 |
Butikker | D283 | 232 |
Utvikler | D283 | 549 |
EMP_DEPT_MAPPING tabell:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Funksjonelle avhengigheter:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidatnøkler:
For det første bordet: EMP_ID
For det andre bordet: EMP_DEPT
For det tredje bordet: {EMP_ID, EMP_DEPT}
Nå er dette i BCNF fordi venstre side del av begge funksjonelle avhengigheter er en nøkkel.