3ème Partie :
La normalisation des bases de données
Objectifs de la partie :
Définition de la normalisation, son
intérêt ainsi que les 3 formes
normales
60
Normalisation. Principe et Objectifs
i. Normaliser une base = imposer des règles de construction à
sa structure afin de respecter la cohérence des données et
éviter toute redondance d'informations.
ii. L’objectif de la normalisation = construire un schéma de
bases de données cohérent. Pour qu’un modèle relationnel
soit normalisé, il faut respecter certaines contraintes
appelées Formes Normales. Ces FN s’appuient sur des
Dépendances Fonctionnelles (DF).
61
Exemple. Enoncé
Pour vous montrer l’intérêt de la normalisation d’une BDR, commencez par
détecter les problèmes que peuvent poser l’utilisation d’une BD basée sur ce
modèle relationnel non normalisé.
62
Exemple. Réponse (1/2)
63
Exemple. Réponse (2/2)
64
Exemple. Conclusion
La normalisation élimine les redondances, ce qui permet :
✓ Une diminution de la taille de la base de donnée sur le
disque
✓ Une diminution des risques d’incohérence
✓ D’Éviter une mise à jour multiple des mêmes données
65
Normalisation. Dépendance Fonctionnelle : Définition
Définition :
B est en dépendance fonctionnelle de a si à une
valeur quelconque de la propriété a on ne peut
faire correspondre qu’une seule valeur au plus
de la propriété b.
Si on connait la valeur de a, on peur en déduire
une seule valeur de b (le contraire n’est pas
vrai)
66
Normalisation. Dépendance Fonctionnelle : Exemple
Exemple de DF: Num_client → Nom_client
i. Il existe une DF entre le numéro client et son nom.
ii. Si on connait une valeur de la propriété « num_client »
(ex: 127), on ne peut lui correspondre qu’une seule valeur
de la propriété « nom_client » (ex: Bensalah ali )
67
Normalisation. Les formes normales (1 ère FN) (1/3)
1ère FN: Il s’agit de vérifier si tous les attributs sont
élémentaires + mono valués
Exemple1. Attributs composés :
1er Cas : Si la personne a une seule adresse
68
Normalisation. Les formes normales (1 ère FN) (2/3)
2ème Cas: Si la personne peut avoir plusieurs Adresses
69
Normalisation. Les formes normales (1 ère FN) (3/3)
Exemple2. Attributs multivalués :
70
Normalisation. Les formes normales (2 ème FN) (1/2)
2ème FN: Une relation est en 2FN si elle est en 1FN et de plus, si
les attributs n'appartenant pas à la clé primaire ne dépendent
pas fonctionnellement d'une partie de la clé.
Exemple 1:Gestion de compte bancaire
OPERATION (N°Compte, CodeOpe, DateOpe, Nom, Prenom, LibelOpe, Somme)
On note que :
- Nom et Prénom dépendent fonctionnellement de N°Compte
N°Compte → Nom,Prénom
- Libellé d'opération dépend fonctionnellement de Code opération
CodeOpe → LibelOpe
71
Normalisation. Les formes normales (2 ème FN) (2/2)
Correction - Exemple 1:Gestion de compte bancaire
On va obtenir les relations suivantes :
COMPTE(N°Compte, Nom, Prénom)
LIBELLE(CodeOpe, LibelOpe)
OPERATION(#N°Compte, DateOpe, #CodeOpe, somme)
Normalisation: 2ème forme Normale (2FN)
Il faut repérer les dépendances fonctionnelles
Affect idEmp idPrj nomEmp prEmp villeEmp paysEmp nomPrj
a
ation
1 1 Salmi Lamia Tunis Tunisie SiteWebEnstab
1 2 Salmi Lamia Tunis Tunisie SiteWebIstic
2 1 Mejri Leyla Ariana Tunisie SiteWebEnstab
3 1 Gasmi Hamed Ariana Tunisie SieWebEnstab
3 2 Gasmi Hamed Ariana Tunisie SieWebIstic
72
4 2 Ksouri Ridha Tunis Tunisie SiteWebIstic
Exemple 2:
Normalisation: 2ème forme Normale (2FN)
Affectation #idEmp #idPrj
1 1 • Pour normaliser en 2FN une table ayant une clé
composée, il faut la décomposer en:
1 2 Des tables, formée chacune d’une partie de la Clé et
2 1 des attributs qui dépendent de cette partie.
Une table formée de la clé composée et
3 1
éventuellement des attributs restants.
3 2
Projet idPrj nomPrj
4 2
1 SiteWebEnstab
Employe idEmp nomEmp prEmp villeEmp paysEmp
2 SiteWebIstic
1 Salmi Lamia Tunis Tunisie
2 Mejri Leyla Ariana Tunisie
3 Gasmi Hamed Ariana Tunisie
73
4 Ksouri Ridha Tunis Tunisie
72
Normalisation. Les formes normales (3 ème FN) (1/4)
3ème FN: Une relation est en 3FN si elle est en 2FN
et de plus, tout attribut non clé ne dépend pas fonctionnellement
d'un autre attribut non clé.
Exemple 1 : l'organisme de formation
Soit la relation:
ADHERENT(CodeAdh,NomAdh,AdressAdh,TypAdh,CotisTyp,NbSaladh)
→ On impose que la cotisation de l'adhérent dépend fonctionnellement du type
de l'adhérent. (TypAdh → CotisTyp)
73
Normalisation. Les formes normales (3 ème FN) (2/4)
Correction – Exemple 1 : l'organisme de formation
TYPE(TypAdh, CotisAdh)
ADHERENT(CodeAdh,NomAdh,AdressAdh,#TypAdh, NbSaladh)
Normalisation: 3ème forme Normale
(3FN)
Employe idEmp nomEmp prEmp villeEmp paysEmp
1 Salmi Lamia Tunis Tunisie
Ville villeEmp paysEmp
2 Mejri Leyla Ariana Tunisie
Tunis Tunisie
3 Gasmi Hamed Ariana Tunisie
Ariana Tunisie
4 Ksouri Ridha Tunis Tunisie
Employe idEmp nomEmp prEmp #villeEmp
1 Salmi Lamia Tunis
Pour normaliser en 3FN une table ayant une 2 Mejri Leyla Ariana
DF transitive, il faut la décomposer en: 3 Gasmi Hamed Ariana
Une table formée de
4 Ksouri Ridha Tunis
redondant et de dont il
dépend (dans notre exemple villeEmp).
Une table formée de la clé, de
villeEmp comme clé étrangère et des
autres attributs.
74
Normalisation. Les formes normales (3 ème FN) (3/4)
Exemple 2 : l'organisation des salariés
Soit la relation:
SALARIES(num_salarié, nom,date_naissance,num_service,nom_service)
Et la dépendance suivante:
num_service → nom_service
75
Normalisation. Les formes normales (3 ème FN) (4/4)
Correction - Exemple 2 : l'organisation des salariés
SALARIES (Num_salarié, nom, date_naissance,#num_service)
SERVICES (Num_service, nom_service)
76
Exercice. Enoncé
Soit la relation suivante:
SOIGNER (code_medecin, code_malade, nom_medecin,
nom_malade, date , adresse )
On note que:
code_medecin→ nom_medecin
code_malade→ nom_malade
Chaque médecin a un seul cabinet
Question : Mettre la relation en 3FN.
77
Exercice. Solution
Medecin (code_medecin , nom_medecin )
Malade (code_malade, nom_malade )
Soigner (code_malade#, code_medecin#, date , num,
nom_rue, ville, CP )