Exercice:
Soit la relation R :
R(numeroEtudiant, nomEtudiant, prenomEtudiant,
numeroMatiere, libelleMatiere, numeroEnseignant, nomEnseignant, prenomEnseignant,
note)
Avec les Règles métiers suivantes :
- Pour une même matière,
les étudiants passeront un seul devoir sanctionné par une note ;
- C'est toujours
le même enseignant qui fait la même matière ;
- Un enseignant
peut assurer plusieurs matières.
1. Etablir le graphe des dépendances fonctionnelles.
2. Donner la forme normale et la clé de cette relation.
3. Proposer une décomposition jusqu’en 3FN ? Si
nécessaire.
Supposons maintenant que les contraintes suivantes
s’appliquent :
- Les étudiants
peuvent avoir plusieurs devoirs dans la même matière ;
- Une matière peut
très bien être dispensée par plusieurs enseignants.
4. En tenant compte de ces nouvelles contraintes,
proposer une décomposition jusqu’en troisième forme normale du schéma
relationnel obtenu à la question précédente.
5. Que faire pour savoir l’identité du professeur qui
enseigne une matière dans laquelle des étudiants ont subi des devoirs.
Corrigé:
1. Graphe des DF :
2. La relation est en 1FN car tous les attributs
sont élémentaires et non répétitifs. La clé primaire de R est (numeroEtudiant, numeroMatiere)
3. Passage en 2FN :
L'attribut note est le seul attribut qui dépend
de tous les attributs de la clé.
à
Note(numeroEtudiant#,
numeroMatiere#, note)
Etudiant(numeroEtudiant,
nomEtudiant, prenomEtudiant)
Enseignement(numeroMatiere,
libelleMatiere, numeroEnseignant, nomEnseignant, prenomEnseignant)
Passage en 3FN :
Les attributs nomEnseignant et prenomEnseignant
ne dépendent pas de numeroMatiere mais de numeroEnseignant.
à
Note(numeroEtudiant#,
numeroMatiere#, note)
Etudiant(numeroEtudiant,
nomEtudiant, prenomEtudiant)
Matiere(numeroMatiere,
libelleMatiere, numeroEnseignant#)
Enseignant(numeroEnseignant,
nomEnseignant, prenomEnseignant)
4. La
nouvelle clé primaire de Note est (numeroEtudiant, numeroMatiere, numeroDevoir).
à
NoteDevoir(numeroEtudiant#,
numeroDevoir, numeroMatiere#, note)
Etudiant(numeroEtudiant,
nomEtudiant, prenomEtudiant)
Matiere(numeroMatiere,
libelleMatiere)
Enseigner(numeroMatiere#,
numeroEnseignant#)
Enseignant(numeroEnseignant,
nomEnseignant, prenomEnseignant)
5. La
nouvelle clé primaire de Note est (numeroEtudiant, numeroMatiere, numeroEnseignant,
numeroDevoir)
à
Note(numeroEtudiant#,
numeroMatiere#, numeroEnseignant#, numeroDevoir, note)
Le reste
sans changement