Correction - Dépendances fonctionnelles et formes normales
Dépendances fonctionnelles
Question 1 : La dépendance fonctionnelle correcte est EMPNO $ \rightarrow $ ENAME car à chaque n° d’employé (empno) correspond au plus un nom d’employé (ename). L’autre proposition est fausse.
Question 2 : Du fait de la question précédente on voit bien qu’une dépendance fonctionnelle n’est pas forcément symétrique.
Question 3 :
- JOB $ \rightarrow $ ENAME : NON
- ENAME $ \rightarrow $ JOB : NON
- DEPTNO $ \rightarrow $ MGR : NON
- DEPTNO $ \rightarrow $ DNAME : OUI, OUI
- EMPNO, DNAME $ \rightarrow $ JOB : NON
- EMPNO, DNAME $ \rightarrow $ MGR : OUI, NON
- EMPNO, DEPTNO $ \rightarrow $ JOB : OUI, OUI
- EMPNO, DEPTNO $ \rightarrow $ LOC : OUI, NON
Question 4 : On voit que empno
détermine ename
, mgt
, hiredate
, sal
et comm
tandis que deptno
détermine dname
et loc
. Pour éviter les redondances il faut donc que la clef soit (empno, deptno)
.
Formes normales
Question 5 :
- LIVRAISON(n°fournisseur, listeVilles) : pas en 1NF, le stockage d’un attribut qui contient une liste impose une syntaxe SQL complexe pour sortir chaque ville et l’interroger.
- LIVRAISON (n°fournisseur, ville) : 1NF, la clé sur fournisseur implique qu’un fournisseur ne fournisse qu’une ville, ou alors, il faut mettre la clé sur fournisseur et ville.
- CLIENT (n°client, nom, prénoms) : pas en 1NF, même explication que 1.
- CLIENT (n°client, nom, prénom1, prénom2) : 1NF, les prénoms sont indiqués dans des champs différents.
- CLIENT (n°client, nom, prénom, adresse) : pas en 1NF, si on veut récupérer en SQL certains éléments de l’adresse comme la ville par exemple. Si l’on veut récupérer l’adresse comme un tout, la relation peut alors être considérée en 1NF.
Question 6 :
- PRET (n°isbn, n°adherent, date, nom_adherent, ville_adherent, titre_livre) : pas en 2NF car n°adhérent $ \rightarrow $ nom_adherent et n°isbn $ \rightarrow $ titre_livre.
- PRET (n°isbn, date, n°adherent, nom_adherent, ville_adherent, titre_livre) : pas en 2NF car n°isbn $ \rightarrow $ titre_livre.
- PRET (n°isbn, n°adherent, date) : 2NF, tous les attributs font partie de la clé !
- PRET (n°exemplaire, date, n°adherent) : 2NF
Question 7 :
- FOURNISSEUR (n°fournisseur, ville, pays) : pas en 3NF, si ville $ \rightarrow $ pays, sinon 3NF, cas de Brest qui peut être en France ou en Biélorussie.
- PERSONNEL (n°agent, nom, département_recherche, bâtiment) : 3NF, si l’on prend le cas de notre école où un département peut être réparti sur plusieurs bâtiments. 2NF, uniquement si département_recherche $ \rightarrow $ bâtiment.
- PERSONNEL (n°agent, nom, département_recherche, statut_agent) : 3NF
- VOL(n°vol, compagnie, heure, destination, modele_avion, nombre_passagers) : 3NF
- VOL(n°vol, compagnie, heure, destination, modele_avion, nombre_places) : pas en 3NF, uniquement en 2NF car modele_avion $ \rightarrow $ nombre_places.
Question 8 : Il s’agit de minimiser les redondances pour assurer l’intégrité des données lors des mises à jour.