logo

Forme normale de Boyce Codd (BCNF)

  • BCNF est la version avancée de 3NF. C'est plus strict que 3NF.
  • Une table est en BCNF si chaque dépendance fonctionnelle X → Y, X est la super clé de la table.
  • Pour BCNF, le tableau doit être en 3NF, et pour chaque FD, LHS est la super clé.

Exemple: Supposons qu'il existe une entreprise dans laquelle les employés travaillent dans plusieurs départements.

instanciation de Java

Tableau EMPLOYÉ :

EMP_ID EMP_COUNTRY EMP_DEPT DEPT_TYPE EMP_DEPT_NO
264 Inde Conception D394 283
264 Inde Essai D394 300
364 ROYAUME-UNI Magasins D283 232
364 ROYAUME-UNI Développement D283 549

Dans le tableau ci-dessus, les dépendances fonctionnelles sont les suivantes :

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Clé du candidat : {EMP-ID, EMP-DEPT}

La table n'est pas en BCNF car ni EMP_DEPT ni EMP_ID seuls ne sont des clés.

Pour convertir le tableau donné en BCNF, nous le décomposons en trois tableaux :

Tableau EMP_COUNTRY :

EMP_ID EMP_COUNTRY
264 Inde
264 Inde

Tableau EMP_DEPT :

EMP_DEPT DEPT_TYPE EMP_DEPT_NO
Conception D394 283
Essai D394 300
Magasins D283 232
Développement D283 549

Tableau EMP_DEPT_MAPPING :

EMP_ID EMP_DEPT
D394 283
D394 300
D283 232
D283 549

Dépendances fonctionnelles :

 EMP_ID → EMP_COUNTRY EMP_DEPT → {DEPT_TYPE, EMP_DEPT_NO} 

Clés des candidats :

Pour le premier tableau : EMP_ID
Pour le deuxième tableau : EMP_DEPT
Pour le troisième tableau : {EMP_ID, EMP_DEPT}

Maintenant, c'est dans BCNF car la partie gauche des deux dépendances fonctionnelles est une clé.