logo

Boyce Codd forma normal (BCNF)

  • 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.