vendredi 5 décembre 2014

Exercice corrigé sur les base de données

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
Categories: