Travaux dirigés de Base de Données.
Normalisation
Travaux dirigées Bases de Données
Corrigés
Série I
Exercice I.1.
Rappel énoncé: On a les données suivantes sur des élèves avec le
DFs:
Matricule, Nom, Age, Club,Salle
Matricule → Nom , AGE
Matricule → Club
Club → Salle
a. Que signifie chaque DFs?
b. Mettre ces informations dans un ensemble de schémas de
relations en 3FN
Correction
Dans ce type d'énoncé, on donne les attributs, et les DFs qui les lient. On vous
demande ensuite de normaliser. Dans certains énoncés, cf. exercice 2, il faut
chercher sois-même ces attributs et DFs.
Ensuite on suppose que les domaines des attributs sont sous-entendus, i.e.
simple à concevoir... Ici, Matricule est un attribut défini sur le numéro
matricule d'élève (e.g. 9867, 4 chiffres décimaux). On fera dorénavant cette
hypothèse, sauf indication contraire.
1) Une dépendance fonctionnelle DF établit d'abord une relation entre donnée,
en plus d'être fonctionnelle.
Matricule → Nom , Age, signifie qu'il y a d'abord la relation "le matricule le
nom et l'âge d'un certain élève" entre Matricule, Nom et Age. Ensuite, le
nom et l'âge sont unique pour un élève identifié par un matricule.
Matricule → Club, signifie un élève est "inscrit" ou "participe" à un club
donné. En plus, ce club est unique (un élève ne participe pas à plus d'un
club).
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 1 of 12
Travaux dirigés de Base de Données. Normalisation
Club → Salle, signifie qu'un club "a un local qui est une salle". Cette salle
est unique (aucun club ne dispose de plus d'un local).
2) Si maintenant on considère la relation
ELEVE (Matricule, Nom , Age, Club, Salle)
on voit que l'attribut Matricule est clé, car il détermine tous les autres
attributs. On constate aussi que la DF Matricule → Salle est transitive.
Cette relation est en 2FN, car aucun attribut non clé ne dépend d'une partie de
la clé (la clé n'est pas composée d'ailleurs).
Cette relation n'est pas en 3FN, car les attributs non clé ne sont pas
mutuellement indépendants, à cause de la dépendance fonctionnelle Club →
Salle. (Une autre façon de le dire, la DF par rapport à la clé Matricule → Salle,
n'est pas directe mais transitive par le fait que, par hypothèses, Matricule →
Club et que Club → Salle). Donc on projette le relation ELEVE pour que cette
DF (Club → Salle) soit due à une clé (Club).
ELEVE (Matricule, Nom, Age, Club)
ACTIVITE (Club, Salle)
qui sont deux relations en 3FN (car dans ELEVE, il n'y a plus de DFs entre
attributs non clé). On retrouve la relation initiale par jointure des ces deux
dernières relations, car Club est clé dans la deuxième relation.
Exercice I.2.
Rappel énoncé: En quelle forme normale est la relation suivante
(auto-explicative), qui concerne les employés d’une société
implantée sur plusieurs bâtiments?
EMPLOYES (NUME, NOM, SALAIRE, DEPARTEMENT,
BATIMENT)
Sachant qu’un employé travaille dans un département donné, et
qu’aucun département ne possède des locaux dans plusieurs
bâtiments. Mettre en 3F le cas échéant.
NB: Déterminer les DFs d'abord.
Correction
Par rapport à l'exercice précédent, ici on doit trouver les DFs. D'après l'énoncé,
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 2 of 12
Travaux dirigés de Base de Données. Normalisation
on a Nume qui est un numéro est unique pour chaque employé. Donc on a:
Nume → Nom, Salaire
On a aussi d'après l'énoncé,
Nume → Département (un employé travaille dans un département
donné) et
Departement → Bâtiment (un département ne possède pas des locaux
dans plusieurs bâtiments. Noter ici l'expression d'un DF par une phrase
négative.)
D'où Nume est clé de la relation. ( Nume → Bâtiment étant transitive)
La relation est en 2FN, car la clé n'est pas composé, toutes les DFs sont
totales. Mais il y a cette dernière DF qui est transitive. On normalise en 3FN
par projection par rapport à cette DFs
Employés (Nume, Nom, Salaire, Departement)
Departements (Departement, Batiment)
qui sont en 3FN. Les attributs non clé sont mutuellement indépendants.
Exercice I.3.
Rappel énoncé: Une base de données pour une petite clinique
privée a les données suivantes:
NIP : désigne n° d'inscription pharmacie associé à un
patient. Chaque patient à un numéro inscription à la
pharmacie de la clinique pour ses médicaments
Patient : le nom de famille d’un patient admis à la clinique
(supposés tous distinct)
Docteur : le nom de docteur travaillant à la clinique
Médicament : le nom de marque d’un médicament
Qte : la quantité d’un médicament prescrite à un patient
et les 4 Dfs :
(1) NIP → Patient
(2) Patient → Docteur
(3) NIP, Médicament → Docteur
(4) Patient, Médicament → Qté
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 3 of 12
Travaux dirigés de Base de Données. Normalisation
a. Montrer que la DF (3) est redondante (déductible des autres
DFs )
b. En déduire un schéma de base de données en 3FN pour cette
clinique.
Correction
Ici, on a aussi un ensemble de DFs, mais il s'agit de le simplifier pour ne
garder que des DFs de base, c'est à dire qui ne se déduisent pas des autres. On
vous dit en plus laquelle des DFs est redondante.
a . Montrons que NIP, Médicament → Docteur se déduit des autres.
D'après (1) et (2) on a NIP → Docteur (par transitivité).
On a aussi NIP, Médicament →NIP (par réflexivité)
D'où NIP, Médicament → Docteur.
Donc on doit garder uniquement les DFs (1), (2) et (4)
b . On en déduit le schéma relationnel
Patients (NIP, Patient)
Soignants (Patient, Docteur)
Ordonnances (Patient, Médicament, Qté)
où on voit que chaque DF donne lieu à un schéma de relation. la partie gauche
de la DF constitue la clé, la partie droite constitue les reste des attributs. Ces
schéma de relation sont en 3FN, car l'étape a . a permis de construire un
ensemble de DFs totales et sans transitivité. Dans le résultat final b . , les cas
1FN qui ne sont pas 2FN, ou les cas 2FN qui ne sont pas 3FN, ne figurent pas.
NB. On suppose que lors de l'étape a. il n'y a pas deux DFs avec même partie
gauche, i.e.
X → A et X → B
Sinon, on groupe les deux DFs en une seule ligne
X→A,B
Série II
Exercices II.1.
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 4 of 12
Travaux dirigés de Base de Données. Normalisation
Rappel énoncé: La relation suivante décrit des commandes faites
par des clients, avec les produits et quantités commandés par
client.
Commandes (NumCom, DateCom, NumCli, AdrCli, NumProd,
Prix, Qte)
a. Quelle est la clé de cette relation ?
b. En quelle forme normale elle est ?
c. La mettre en 3FN le cas échéant.
Correction
a . Avant de chercher la clé, il faut d'abord déterminer les DFs. L'énoncé ne
mentionne pas de règles de gestion, qu'on peut deviner facilement.
1. NomCom → DateCom, NumCli, AdrCli
(Une commande est faite par un seul client avec une adresse donnée et
à une date donnée
2. NumCom, NumProd → Prix, Qte
(Dans une commande, un produit a un prix donnée est commandé avec
une quantité donnée)
3. NumCli → AdrCli
(Un client a une seul adresse)
4. NumProd → Prix
(Il y un seul prix pour un produit)
On peut alors dire que (NumCom, NumProd) déterminent tous les autres
attributs. C'est donc une clé.
b . 1 Comme NumCli, entre autres attributs, ne dépend que de NomCom, c'est à
dire une partie de la clé, la relation est en 1FN. On décompose donc
Commandes (NumCom, DateCom, NumCli, AdrCli )
Com-Prods (NumCom, NumProd, Prix, Qte)
b . 2 On a par ailleurs laDF (3), la relation Commandes n'est pas en 3FN, on
décompose
Commandes (NumCom, DateCom, NumCli)
Clients (NumCli, AdrCli )
qui sont en 3FN
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 5 of 12
Travaux dirigés de Base de Données. Normalisation
On a aussi la DFs (4), la relation Com-Prods n'est pas en 2FN. On décompose
en deux realtions
Com-Prods (NumCom, NumProd, Qte)
Produits (NumProd, Prix)
qui sont en 3FN
Exercice II.2.
Rappel énoncé: Soit la relation
Departement (Mle-Etud, Note, Classe, Cours, Module, No-Ens,
Nom-Ens, Nom-Etud, Nb-h)
avec les DFs :
1. Mle-Etud → Nom-Etud, Classe
2. No-Ens → Nom-Ens
3. Cours → Module
4. Cours, Module → Nb-h
5. Classe, Cours, Module → No-Ens, Nom-Ens
6. Mle-Etud, Cours, Module → Note
a. Expliquer chaque DF.
b. Eliminer les DFs redondantes.
c. Normalier la relation en 3FN.
Indication: Montrer que
si A → B et A, B → C alors A→C (donc A
→ B, C par groupement)
Utiliser ce résultat pour la question b).
Correction
a . L'exemple doit être familier. On considérera quelques DFs. (5) signifie qu'un
cours dans un module donné n'est pas dispensé par deux professeurs
différents à la même classe. De même (6), un étudiant n'a qu'une seule note
pour un cours dans un module donné.
b . Dans cet exemple aussi on va examiner les DFs pour les réduire à un
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 6 of 12
Travaux dirigés de Base de Données. Normalisation
ensemble minimum. L'indication donnée suggère que
Si on a Cours → Module (3), on peut éliminer l'attribut Module de la partie
gauche des DFs (4), (5) et (6). Pour avoir finalement
1. Mle-Etud → Nom-Etud, Classe
2. No-Ens → Nom-Ens
3. Cours → Module
4. Cours → Nb-h
5. Classe, Cours → No-Ens, Nom-Ens
6. Mle-Etud, Cours → Note
Par ailleurs, dans (5) la dépendance Classe, Cours → Nom-Ens est transitive à
cause de (2), on l'élimine pour ne garder que
5. Classe, Cours → No-Ens
c . Comme dans le cas de l'exercice I.3, on va créer un schéma de relation
correspondant à chaque DF, vu que l'ensemble final obtenu est sans
transitivité et toutes les DFs sont totales. On groupe aussi les DFs (3) et (4),
car ayant même partie gauche. D'où
Elèves (Mle-Etud, Nom-Etud, Classe)
Profs (No-Ens, Nom-Ens)
Matières (Cours, Module, Nb-h)
Enseignement (Classe, Cours, No-Ens)
Evaluation (Mle-Etud, Cours, Note)
Exercice II.3.
Rappel énoncé: La relation:
Projection (NoFilm, TitreFilm, DuréeFilm, NoSalle,
CapacitéSalle, TypePlace, PrixPlace, DateProjection,
HeureDeb)
exprime que le film NoFilm intitulé TitreFilm dure dureeFilm
heures et est projeté dans la salle NoSalle ayant une capacité
Capacité places. Le film est projeté à la date DateProjection à
HeureDeb heures.Deux films peuvent avoir le même titre. Le prix
de la place est fonction de son type.
En déduire un schéma de relations en 3FN.
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 7 of 12
Travaux dirigés de Base de Données. Normalisation
Corrigé
Liste des Dépendances fonctionnelles:
1. NoFilm → TitreFilm, DuréeFilm
2. NoSalle → Capacité
3. NoFilm, DateProjection → NoSalle
4. NoFilm, DateProjection → HeureDeb
5. NoSalle,TypePlace → PrixPlace
Ces DFs ne contiennent pas de redondances et ne peuvent êtres simplifiées.
Sauf à grouper les DFs (3) et (4)
Les Relations résultats:
Films (NoFilm, TitreFilm, DuréeFilm)
Salles (NoSalle, Capacité)
Projection (NoFilm, DateProjection , NoSalle, Heurdeb)
Places (NoSalle, TypePlace , PrixPlace)
Série III
Exercice III.1:
Rappel énoncé: L'Entreprise Vendetout voudrait créer une base
de donnée relationnelle pour automatiser la gestion de ses ventes
et de ses approvisionnements. Elle gère d'une part des
informations sur les commandes des clients, et d'autre part les
produits en stock avec leurs fournisseurs.
Les informations à garder sont:
Pour un client, un numéro unique, un nom ou raison sociale,
le solde client et les adresses possibles de livraison.
Pour chaque commande de client, un numéro unique, la date
de commande, l'adresse de livraison et les produits
commandés avec la quantité éventuelle.
Pour un produit, on a un numéro unique, un nom, la
quantité actuelle en stock, le seuil minimum, la liste des
fournisseurs avec le prix correspondant.
Les fournisseurs sont décrits quant à eux, par un numéro unique,
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 8 of 12
Travaux dirigés de Base de Données. Normalisation
un nom et une adresse.
Questions:
1. Donner la liste des attributs nécessaires et dire quelles sont
les dépendances fonctionnelles qui les lient.
2. En déduire un schéma de base de données relationnelle en
3e forme Normale.
Correction
Dans cet énoncé on a à chercher les attributs. Ils sont donnés avec les DFs
NumCli → Nom, RaisonSociale, Solde
Adresse → NumCli
NumCom → DateCom, NumCli, AdresseLivr
NumLigne, NumCom → NumProd, Qté
NumProd → NomProd, QteSeuil, QteStock
NumProd, NumFour → Prix
NumFour → NomFour AdrFour
AdresseLivr est le même domaine que Adresse.
Ces DFs contiennent une redondance et peuvent êtres simplifiées.
NumCom → NumCli est transitive. On l’enlève.
Les Relations résultats:
Clients (NumCli Nom, RaisonSociale, Solde)
Catalogue (Adresse, NumCli)
Commande (NumCom, DateCom, AdresseLivr)
Détails (NumLigne, NumCom , NumProd, Qté)
Produits (NumProd , NomProd, QteSeuil, QteStock)
Tarifs (NumProd, NumFour, Prix)
Fournisseurs (NumFour , NomFour AdrFour)
Ici aussi on a utilisé la méthode de synthèse à partir des DFs.
Exercice III.2.
Rappel énoncé: On voudrait créer une base de données pour la
gestion du personnel d'une compagnie organisée comme suit:
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 9 of 12
Travaux dirigés de Base de Données. Normalisation
La compagnie est constituée d'un ensemble de
départements.
Un département est constitué d'un ensemble d'employés,
mène un ensemble de projets et possède un ensemble de
bureaux.
Pour chaque employé, on a l'historique des emplois qu'il a
occupé, et pour chacun de ces emplois, on a l'historique des
salaires perçus dans le cadre de cet emploi.
Chaque bureau possède un ensemble de postes
téléphoniques.
La BD doit contenir les informations :
Pour chaque département: un numéro de département
unique, le budget, l'étage où il est situé et le numéro
d'employé du chef de département.
Pour chaque employé: un numéro d'employé unique, un nom
et prénom, le numéro du projet sur lequel il travaille
actuellement, le numéro de bureau ainsi que le n° téléphone.
On a aussi, le titre de chaque emploi que l'employé a tenu,
avec la date et le salaire pour chaque salaire différent perçu
pour cet emploi.
Pour chaque projet: un numéro de projet unique et le budget
alloué au projet.
Pour chaque bureau: un numéro de bureau unique, une
superficie en mètre2 et les numéros des postes téléphoniques
dans ce bureau.
Questions
1. Quelle est la liste des données élémentaires et quelles sont
les dépendances fonctionnelles qui les lient.
2. En déduire un schéma de relations.
3. Montrer que ce schéma est en 3FN, sinon le normaliser.
Correction
Liste des attributs:
BudgetD Budget de département
BudgetP Budget de projet
Bureau Numéro du bureau
Chef Numéro employé du chef de département
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 10 of 12
Travaux dirigés de Base de Données. Normalisation
Date Date avec (a,m, j)
Etage Etage d'un département
Job Nom d'un emploi
Nom Nom d'un employé
NumD Numéro de département
NumE Numéro d'employé
NumProj Numéro de projet
Prenom Prénom d'un employé
Superficie Superficie d'un bureau
Tel Numéro d'un téléphone
salaire Salaire (actuel) d'un employé
Dépendances fonctionnelles d'après §2:
D'après §2
NumD → BudgetD, Etage, Chef
NumE → Nom, Prenom, NumProj, Bureau, Tel
NumProj → BudgetP
Bureau → Superficie
Tel → Bureau
D'après §1
NumE → NumD
NumProj → NumD
Bureau → NumD
NumE, Date → Job, Salaire
Par ailleurs, on d'après l'historiques des salaires:
NumE, Date → Job, Salaire
En réduisant cet ensemble à la couverture minimale (rendre DFs totales,
enlever les DFs transitives) on obtient:
NumD → BudgetD, Etage, Chef
NumE → Nom, Prenom, NumProj, Bureau, NumD, Tel
NumProj → BudgetP, NumD
Bureau → Superficie, NumD
Tel → Bureau
NumE, Date → Job, Salaire
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 11 of 12
Travaux dirigés de Base de Données. Normalisation
Les relations résultats
Employee (NumE, Nom, Prenom, Tel, NumProj)
Departement (NumD, Etage, Chef, BudgetD)
Projet (NumProj, NumD, BudgetP)
Annuaire (Tel, Bureau)
Locaux (Bureau, Superficie, NumD)
Historique (NumE, Date, Job, Salaire)
That's all folks.
http://emi.um5.ac.ma/~ntounsi/COURS/DB/Polys/tdNorm... 12 of 12
La forme normale de Boyce Codd
Exercice :
Soit la relation R (A, B, C, D, E) avec les DFs suivantes :
A→B (1)
BC→E (2)
ED→A (3)
1. Lister la ou les clé(s) de R
2. R est-elle en 3NF ? Sinon normaliser en 3NF.
3. Les relations obtenues sont-elles en BCNF ? Sinon normaliser en BCNF.
4. Y-a-il perte de dépendances ? Lesquelles ?
Corrigé :
1. Lister la ou les clés de R
On a : (2) entraine DCB → ED (et DCB → E par la même occasion)
comme ED → A (3), il en découle
DCB → A
Par ailleurs, (3) entraine CED → A
comme A → B (1), il en découle
CED → B
D’où deux clés candidates :
R (C, E, D, A, B) ou R (D, C, B, A, E)
2. R est-elle en 3NF ? Sinon normaliser en 3NF.
R est en 2 FN (seul A n'est dans aucune clé, et dépend de D,E
On normalise par décomposition :
R1 (D, E, A) BCFN
R2 (C, D, E, B) 3FN car B, C → E
On a « perdu » la DF B → A
3. Les relations obtenues sont-elles en BCNF ? Sinon normaliser en BCNF
R1(D, E, A) BCFN
R3 (B, C, E) BCFN
R2 (D, C, B) BCFN
4. Y-a-il perte de dépendances ? Lesquelles ?
On a « perdu » la DF B → A
1/1