Exercices Corrigés Dépendances fonctionnelles(Forme Normale) – Partie 1
La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec les dépendances fonctionnelles et normalisation des bases de données. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur les Dépendances fonctionnelles et Normalisation. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!
Une dépendance fonctionnelle: X → Y signifie que la valeur de X détermine une seule valeur de Y.
Exemple: NumÉtudiant → NomÉtudiant.
Un numéro d’étudiant permet de déterminer un seul nom d’étudiant.
Les formes normales:
- 1FN : les attributs contiennent des valeurs atomiques, pas de groupes répétitifs.
- 2FN : être en 1FN + aucun attribut non-clé ne dépend d’une partie seulement d’une clé composée.
- 3FN : être en 2FN + aucune dépendance transitive d’une clé vers un attribut non-clé.
- BCNF : pour toute dépendance fonctionnelle non triviale X → Y, X doit être une super-clé.
Exercice 1 — Identifier les dépendances fonctionnelles
On considère la relation:
ETUDIANT(NumEtudiant, Nom, Prenom, DateNaissance, CodeClasse, NomClasse)
On suppose que :
- Un numéro d’étudiant identifie un seul étudiant.
- Un code classe identifie une seule classe.
- Une classe possède un seul nom.
Questions
1.1) Donner les dépendances fonctionnelles.
1.2) Donner la clé primaire.
1.3) Identifier une éventuelle dépendance transitive.
Exercice 2 — Vérifier la 1FN
On considère la relation:
CLIENT(IdClient, Nom, Téléphones)
Exemple :
| IdClient | Nom | Téléphones | | -------- | ---- | ---------------------- | | 1 | Alex | 0612345678, 0623456789 | | 2 | Bob | 0634567890 |
Questions
2.1) Cette relation est-elle en 1FN ?
Exercice 3 — Passage de la 1FN à la 2FN
On considère la relation:
INSCRIPTION(NumEtudiant, CodeCours, NomEtudiant, NomCours, Note)
Les dépendances sont :
NumEtudiant → NomEtudiant
CodeCours → NomCours
(NumEtudiant, CodeCours) → Note
Questions
3.1) Quelle est la clé primaire ?
3.2) La relation est-elle en 2FN ?
3.3) Si non, décomposer la relation.
Exercice 4 — Passage de la 2FN à la 3FN
On considère la relation:
EMPLOYE(Matricule, Nom, CodeService, NomService)
Les dépendances sont :
Matricule → Nom
Matricule → CodeService
CodeService → NomService
Questions
4.1) Quelle est la clé primaire ?
4.2) La relation est-elle en 2FN ?
4.3) Est-elle en 3FN ?
4.4) Décomposer la relation.
Exercice 5 — Trouver la clé candidate
On considère la relation:
R(A, B, C, D, E)
avec les dépendances fonctionnelles :
A → B
B → C
AC → D
D → E
Questions
5.1) Déterminer la ou les clés candidates.
Exercice 6 — Déterminer la forme normale
On considère la relation:
R(A, B, C)
avec les dépendances fonctionnelles :
A → B
B → C
On considère que A est la clé primaire.
Questions
6.1) La relation est-elle en 1FN, 2FN ou 3FN ?
Exercice 7 — Décomposition en 3FN
On considère la relation:
VENTE(NumVente, DateVente, CodeClient, NomClient, VilleClient)
avec les dépendances fonctionnelles :
NumVente → DateVente
NumVente → CodeClient
CodeClient → NomClient
CodeClient → VilleClient
Questions
7.1) Décomposer cette relation afin d’obtenir des relations en 3FN.
Exercice 8 — Dépendances fonctionnelles avec clé composée
On considère la relation:
RESULTAT(CodeEtudiant, CodeMatiere, NomEtudiant, NomMatiere, Coefficient, Note)
avec les dépendances fonctionnelles :
CodeEtudiant → NomEtudiant
CodeMatiere → NomMatiere
CodeMatiere → Coefficient
(CodeEtudiant, CodeMatiere) → Note
Questions
8.1) Déterminer la clé.
8.2) Vérifier la 2FN.
8.3) Décomposer si nécessaire.
Exercice 9 — BCNF
On considère la relation:
ENSEIGNEMENT(Etudiant, Cours, Professeur)
avec les dépendances fonctionnelles :
(Etudiant, Cours) → Professeur
Professeur → Cours
Questions
9.1) La relation est-elle en BCNF ?
Exercice 10 — Exercice complet
On considère la relation:
GESTION_PROJET(
NumProjet,
NomProjet,
NumEmploye,
NomEmploye,
CodeService,
NomService,
Fonction
)
avec les dépendances fonctionnelles :
NumProjet → NomProjet
NumEmploye → NomEmploye
NumEmploye → CodeService
CodeService → NomService
(NumProjet, NumEmploye) → Fonction
Questions
10.1) Déterminer la clé candidate.
10.2) La relation est-elle en 1FN ?
10.3) Est-elle en 2FN ?
10.4) Est-elle en 3FN ?
10.5) Décomposer la relation en 3FN.

