Chapitre 4
La normalisation
© 2021-2022 \ S. HAIDRAR 1
Optimiser la base
La normalisation
Problème:
Soit la base de données relationnelles suivante:
Livraison(NumFor, AdrFor, NumProd, TypeProd, QteLiv)
NumFor AdrFor NumProd TypeProd QteLiv Sémantique de la table:
3 CASA 52 cartouche 12
le fournisseur numéro NumFor,
22 Fes 10 ordinateur 6 domicilié à l’adresse adrFor,
a livré au total la quantité QteLiv
22 Fes 25 papier 210
du produit numéro NumProd qui est
3 CASA 25 papier 560 de type TypeProd
3 CASA 10 ordinateur 300
25 Rabat 77 imprimante 45
Question: Quels sont les problèmes posés par cette table?????
© 2021-2022 \ S. HAIDRAR 2
Optimiser la base
La normalisation
Anomalie de mise à jour
redondance de données
des problèmes et risque d’incohérence lors des modifications
NumFor AdrFor NumProd TypeProd QteLiv
3 CASA 52 cartouche 12
22 Fes 10 ordinateur 6
22 Fes 25 papier 210
3 CASA 25 papier 560
3 CASA 10 ordinateur 300
25 Rabat 77 imprimante 45
Si le fournisseur numéro 3, change d’adresse, il faut changer toutes
Ses occurrences au risque de provoquer des incohérences de la table
© 2021-2022 \ S. HAIDRAR 3
Optimiser la base
La normalisation
Anomalie de suppression
si on supprime un tuple, on perd d’autres informations!!!!
NumFor AdrFor NumProd TypeProd QteLiv
3 CASA 52 cartouche 12
22 Fes 10 ordinateur 6
22 Fes 25 papier 210
3 CASA 25 papier 560
3 CASA 10 ordinateur 300
25 Rabat 77 imprimante 45
Si la livraison du produit « imprimante » est annulée, on supprime
également les informations qui concernent le fournisseur!!
© 2021-2022 \ S. HAIDRAR 4
Optimiser la base
La normalisation
Anomalie d’insertion
On ne peut pas insérer un fournisseur, sans avoir le produit!!
NumFor AdrFor NumProd TypeProd QteLiv
3 CASA 52 cartouche 12
22 Fes 10 ordinateur 6
22 Fes 25 papier 210
3 CASA 25 papier 560
3 CASA 10 ordinateur 300
25 Rabat 77 imprimante 45
55 Kénitra ???????? ???????? ??????
On ne peut pas insérer un nouvel fournisseur sans qu’il n’ait livré
Un produit!!!! Même chose pour le produit!!!
© 2021-2022 \ S. HAIDRAR 5
Optimiser la base
La normalisation
Question: comment améliorer la qualité d’une relation pour éviter:
les anomalies de maj
les anomalies de suppression
les anomalies d’insertion
Solution:
la normalisation
Avec quel outil?????
Les dépendances fonctionnelles
© 2021-2022 \ S. HAIDRAR 6
Normalisation d'un schéma relationnel
Dépendances fonctionnelles (DF)
Soient X et Y deux attributs (ou groupe d'attributs) d'une même relation.
Il y a dépendance fonctionnelle entre X et Y (ou Y dépend de X) si la valeur
de X détermine celle de Y.
On note: X Y
• X détermine Y
• Y dépend fonctionnellement de X
• Y dépend de X
Exemples: Etudiant ( Matricule, Nom, Prénom, Moyenne)
Matricule Nom, Prénom, Moyenne
© 2021-2022 \ S. HAIDRAR 7
Analyse de données
Dépendance Fonctionnelle
Exemple:
Livraison(NumFor, AdrFor, NumProd, TypeProd, QteLiv)
Contient les DF suivantes :
• NumFor → AdrFor
• NumProd → TypeProd NumFor AdrFor NumProd TypeProd QteLiv
3 CASA 52 cartouche 12
22 Fès 10 ordinateur 6
22 Fès 25 papier 210
3 CASA 25 papier 560
Manifestation des 2 DF 3 CASA 10 ordinateur 300
sur l’instance de la table 25 Rabat 77 imprimant 45
e
© 2021-2022 \ S. HAIDRAR 8
Analyse de données
Dépendance Fonctionnelle
Contre Exemple:
Livraison(NumFor, AdrFor, NumProd, TypeProd, QteLiv)
NumFor AdrFor NumProd TypeProd QteLiv
La DF:
NumFor → AdrFor 3 CASA 52 cartouche 12
N’est pas vérifiée dans 22 Fès 10 ordinateur 6
Cette intance de la table
22 Fès 25 papier 210
3 Kénitra 25 papier 560
3 CASA 10 ordinateur 300
25 Rabat 77 imprimante 45
© 2021-2022 \ S. HAIDRAR 9
Normalisation d'un schéma relationnel
Propriétés des DF
Réflexivité: Y X X Y
Augmentation: X Y X , Z Y, Z
Transitivité: X Y et Y Z X Z
Pseudo-transitivité: X Y et Y, Z T X, Z T
Union: X Y et X Z X Y, Z
Décomposition: X Y et Z Y X Z
N.B: La notation X,Y signifie X Y
© 2021-2022 \ S. HAIDRAR 10
Normalisation d'un schéma relationnel
Pratique de la normalisation
Normaliser un schéma relationnel d'une BD (l'ensemble des relations
de la BD) consiste à remplacer chaque relation du schéma par des
relations qui sont dans la forme normale (FN) voulue.
Une FN représente une condition qu'une relation doit vérifier.
Il existe plusieurs degrés de normalisation de la 1ère forme normale à la
5ème.
© 2021-2022 \ S. HAIDRAR 11
Normalisation d'un schéma relationnel
Première forme normale
Une relation est en 1FN si tout attribut n'est pas décomposable
(multivaluée) càd que chaque attribut doit être atomique.
Exemple:
Livre (Cote, Titre, Auteurs) n'est pas en 1FN car l'attribut Auteurs est
décomposable (il s'agit de plusieurs auteurs).
Cette relation peut être décomposée en deux relations:
Livre (Cote, Titre)
Auteurs ( Cote, Auteur)
© 2021-2022 \ S. HAIDRAR 12
Normalisation d'un schéma relationnel
Première forme normale
Remarque
La jointure des deux nouvelles relations sur l'attribut Cote donnera
l'équivalent de la relation de départ:
Join (Livre, Auteurs, Livre.Cote = Auteurs.Cote)
Cette jointure permettra d'avoir, pour chaque livre, la Cote, le titre et les
auteurs.
© 2021-2022 \ S. HAIDRAR 13
Normalisation d'un schéma relationnel
Deuxième forme normale
Une relation est en 2FN si:
elle est en 1FN.
chaque attribut non clé primaire est dépendant de la clé primaire
entière.
Exemple: Client (NumCli, Nom, Prénom, RueNum, CodPostale, Ville)
est en 2FN
Employé (Mat, CodeProjet, Nom, FonctionProjet)
n'est pas en 2FN: Mat Nom
© 2021-2022 \ S. HAIDRAR 14
Normalisation d'un schéma relationnel
Normalisation en deuxième forme normale
Théorème de décomposition sans perte d'informations (SPI):
Soit une relation R (A,B,C) où A, B et C sont des ensembles d'attributs
disjoints, avec B C, alors:
R1 = Project(R, A, B) R1(A, B)
R2 = Project(R,B, C) R2 (B, C)
R(A, B, C) = Join(R1, R2, R1.B = R2.B)
En décomposant R en deux relation R1 et R2, on dit que l'on a
"extrait" la DF de R
© 2021-2022 \ S. HAIDRAR 15
Normalisation d'un schéma relationnel
Normalisation en deuxième forme normale
Exemple 1: Normalisation en 2FN de la relation
Employé (Mat, CodeProjet, Nom, FonctionProjet)
Les dépendances de la relation sont:
Mat Nom
CodeProjet, Mat FonctionProjet
Le résultat de normalisation en 2FN est:
Employé(Mat, Nom)
Participation(Mat, CodeProjet, FonctionProjet)
© 2021-2022 \ S. HAIDRAR 16
Normalisation d'un schéma relationnel
Normalisation en deuxième forme normale
Exemple 2: Normalisation en 2FN de la relation
Magasin(NumProd, Quantité, NumFour, Ville)
on a: NumProd, NumFour Quantité
NumFour Ville La relation n'est pas en 2FN
Le résultat de la normalisation: Magasin (NumProd, NumFour, Quantité)
Fournisseur (NumFour, Ville)
© 2021-2022 \ S. HAIDRAR 17
Normalisation d'un schéma relationnel
Troisième forme normale
Une relation est en 3FN si:
• Elle est en deuxième FN
• tout attribut n’appartenant pas à une clé ne dépend pas d’un attribut
non clé.
Exemple: Musique(NoChanson, NoChanteur, NomChanteur)
Avec les DF: NoChanson NoChanteur
NoChanson NomChanteur et NoChanteur NomChanteur
Cette relation est en 2FN mais pas en 3FN.
© 2021-2022 \ S. HAIDRAR 18
Normalisation d'un schéma relationnel
Algorithme de décomposition en 3FN
Soit un schéma de relation R.
Pour chaque DF: X A, on crée une relation Ri (X, A)
Si on a plusieurs DF: X A1, X A2, …, X An; on les regroupe toutes
dans une même relation Rj (X, A1, A2, …, An)
Les attributs n'appartenant à aucune DF seront regroupés dans une même
relation
Pour avoir une décomposition SPI: il doit y avoir au moins une clé de R
dans une des relations de décomposition.
Si ce n'est pas le cas, on ajoute une relation contenant une clé de R, ou on
ajoute des attributs dans une des relations de décomposition.
© 2021-2022 \ S. HAIDRAR 19
Normalisation d'un schéma relationnel
Algorithme de décomposition en 3FN
Exemple:
BAINS (NNag, Nom, Prénom, Durée, Date, NP, NomP, Region)
DF: NNag Nom, Prénom,
NP NomP, Region
NP, NNag, Date Durée
Résultat de normalisation:
NAGEUR (NNag, NOM, PRENOM)
PLAGE (NP, NOMP, REGION)
BAIGNADE (NNag, NP, DATE, DUREE)
© 2021-2022 \ S. HAIDRAR 20
Normalisation d'un schéma relationnel
Algorithme de décomposition en 3FN
Exercice: Normaliser les relations suivantes
1) VOITURE (IMMATRICULATION, COULEUR, MODELE, MARQUE)
2) COMMANDE ( NOM_FOURNISSEUR, ADRESSE_FOURNISSEUR,
ARTICLE, QUANTITE, PRIX )
© 2021-2022 \ S. HAIDRAR 21
Normalisation d'un schéma relationnel
Pour chaque relation ci-dessous:
- définir sa forme normale et la justifier
- établir un graphe de ses dépendances,
- proposer une décomposition optimale si nécessaire.
1) Pièce (Npièce, prix-unit, TVA, libellé, catégorie)
Une pièce est identifiée par un n° et a un prix unitaire, un libellé, une tva et
une catégorie.
La tva est déterminée en fonction de la catégorie
2) Prime (Nmachine, Ntechn, atelier, montant-prime, nom-techn)
Une machine est identifiée par un n° et affectée à un seul atelier.
Un technicien est identifié par un n° et a nom
Une prime est donnée à un technicien ayant travaillé sur une machine
donnée
© 2021-2022 \ S. HAIDRAR 22
Normalisation d'un schéma relationnel
3) Employé ( NEmp, NLab, NProj, NomEmp, NomProj, adresse)
Un employé est identifié par un n°, a un nom et une adresse et peut
travailler sur plusieurs projets pour plusieurs laboratoire.
© 2021-2022 \ S. HAIDRAR 23