- BCNF és la versió avançada de 3NF. És més estricte que 3NF.
- Una taula està a BCNF si cada dependència funcional X → Y, X és la superclau de la taula.
- Per a BCNF, la taula hauria d'estar a 3NF i per a cada FD, LHS és molt clau.
Exemple: Suposem que hi ha una empresa on els empleats treballen en més d'un departament.
com convertir str a int
Taula EMPLEADA:
EMP_ID | EMP_COUNTRY | EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|---|---|
264 | Índia | Dissenyar | D394 | 283 |
264 | Índia | Prova | D394 | 300 |
364 | UK | Botigues | D283 | 232 |
364 | UK | Desenvolupament | D283 | 549 |
A la taula anterior, les dependències funcionals són les següents:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Clau del candidat: {EMP-ID, EMP-DEPT}
La taula no està a BCNF perquè ni EMP_DEPT ni EMP_ID només són claus.
Per convertir la taula donada en BCNF, la descomposem en tres taules:
Taula EMP_COUNTRY:
EMP_ID | EMP_COUNTRY |
---|---|
264 | Índia |
264 | Índia |
Taula EMP_DEPT:
EMP_DEPT | DEPT_TYPE | EMP_DEPT_NO |
---|---|---|
Dissenyar | D394 | 283 |
Prova | D394 | 300 |
Botigues | D283 | 232 |
Desenvolupament | D283 | 549 |
Taula EMP_DEPT_MAPPING:
EMP_ID | EMP_DEPT |
---|---|
D394 | 283 |
D394 | 300 |
D283 | 232 |
D283 | 549 |
Dependències funcionals:
EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO}
Claus del candidat:
Per a la primera taula: EMP_ID
Per a la segona taula: EMP_DEPT
Per a la tercera taula: {EMP_ID, EMP_DEPT}
Ara, això és a BCNF perquè la part esquerra de les dues dependències funcionals és una clau.