- BCNF is de geavanceerde versie van 3NF. Het is strenger dan 3NF.
- Een tabel bevindt zich in BCNF als elke functionele afhankelijkheid X → Y, X de supersleutel van de tabel is.
- Voor BCNF moet de tabel in 3NF zijn, en voor elke FD is LHS supersleutel.
Voorbeeld: Laten we aannemen dat er een bedrijf is waar werknemers op meer dan één afdeling werken.
kat timpf gewicht
WERKNEMER tabel:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | Indië | Ontwerpen | D394 | 283 |
264 | Indië | Testen | D394 | 300 |
364 | Groot-Brittannië | Winkels | D283 | 232 |
364 | Groot-Brittannië | Ontwikkelen | D283 | 549 |
In de bovenstaande tabel zijn de functionele afhankelijkheden als volgt:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidaatsleutel: {EMP-ID, EMP-DEPT}
De tabel bevindt zich niet in BCNF omdat noch EMP_DEPT, noch EMP_ID alleen sleutels zijn.
Om de gegeven tabel naar BCNF te converteren, ontleden we deze in drie tabellen:
EMP_COUNTRY tabel:
EMP_ID | EMP_COUNTRY |
---|---|
264 | Indië |
264 | Indië |
EMP_DEPT tabel:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Ontwerpen | D394 | 283 |
Testen | D394 | 300 |
Winkels | D283 | 232 |
Ontwikkelen | D283 | 549 |
EMP_DEPT_MAPPING tabel:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Functionele afhankelijkheden:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Kandidaat sleutels:
Voor de eerste tafel: EMP_ID
Voor de tweede tabel: EMP_DEPT
Voor de derde tabel: {EMP_ID, EMP_DEPT}
Dit is nu in BCNF omdat het linkergedeelte van beide functionele afhankelijkheden een sleutel is.