- BCNF är den avancerade versionen av 3NF. Det är strängare än 3NF.
- En tabell är i BCNF om varje funktionellt beroende X → Y, X är tabellens supernyckel.
- För BCNF bör tabellen vara i 3NF, och för varje FD är LHS supernyckel.
Exempel: Låt oss anta att det finns ett företag där anställda arbetar på mer än en avdelning.
hur man öppnar en fil med java
ANSTÄLLDA tabell:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | Indien | Design | D394 | 283 |
264 | Indien | Testning | D394 | 300 |
364 | Storbritannien | Butiker | D283 | 232 |
364 | Storbritannien | Utvecklande | D283 | 549 |
I tabellen ovan är funktionella beroenden följande:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidatnyckel: {EMP-ID, EMP-DEPT}
Tabellen är inte i BCNF eftersom varken EMP_DEPT eller EMP_ID enbart är nycklar.
För att konvertera den givna tabellen till BCNF, delar vi upp den i tre tabeller:
EMP_COUNTRY tabell:
EMP_ID | EMP_COUNTRY |
---|---|
264 | Indien |
264 | Indien |
EMP_DEPT tabell:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Design | D394 | 283 |
Testning | D394 | 300 |
Butiker | D283 | 232 |
Utvecklande | D283 | 549 |
EMP_DEPT_MAPPING tabell:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Funktionella beroenden:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidatnycklar:
För det första bordet: EMP_ID
För det andra bordet: EMP_DEPT
För det tredje bordet: {EMP_ID, EMP_DEPT}
Nu är detta i BCNF eftersom den vänstra delen av båda de funktionella beroendena är en nyckel.