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