Introduction aux bases de données
Chapitre 4:
La Normalisation
DR. HANEN GRICHI
drhanengrichi@[Link] 2023-2024
QU’EST-CE QU’UNE BD RELATIONNELLE ‘INCORRECTE’ ?
• Une relation n’est pas correcte si :
• elle implique des répétitions au niveau de sa population
• elle pose des problèmes lors des maj (insertions, modifications et suppressions)
• Les conditions pour qu'une relation soit correcte peuvent être définies formellement :
→ règles de normalisation
2
INTÉRÊT DE LA NORMALISATION
Pour vous montrer l’intérêt de la normalisation d’une base de donnée relationnelle, voyons
les problèmes que peuvent poser l’utilisation d’une base de données basée sur un modèle
relationnel non normalisé.
FOURNISSEUR (NomFournisseur,AdresseFournisseur, Produits, Prix)
3
INTÉRÊT DE LA NORMALISATION
FOURNISSEUR (NomFournisseur,AdresseFournisseur, Produits, Prix)
1° problème : Il n’y a pas de clé primaire.
2° problème : L’adresse n’est pas décomposée. Si on veut par exemple rechercher tous les fournisseurs qui habitent la même
ville, ça ne va pas être possible
3° problème :Une relation correspondant à ce schéma pourra éventuellement contenir plusieurs produits pour un même
fournisseur. Dans ce cas, il faudra faire face à un certain nombre de problèmes :
▪ l'adresse du fournisseur sera dupliquée dans chaque n-uplet (redondance) ;
▪ si on souhaite modifier l'adresse d'un fournisseur, il faudra rechercher et mettre à jour tous les n-uplets correspondant à ce
fournisseur;
▪ si on insère un nouveau produit pour un fournisseur déjà référencé, il faudra vérifier que l'adresse est identique;
▪ si on veut supprimer un fournisseur, il faudra retrouver et supprimer tous les n-uplets correspondant à ce fournisseur (pour
différents produits) dans la table.
4
DÉPENDANCE
FONCTIONNELLE
5
DÉPENDANCE FONCTIONNELLE (DF)
▪ Soit R(A1,A2, ....,An) un schéma de relation
▪ Soient X et Y deux attributs (ou groupes d’attributs) d’une relation R
▪ On dit que Y dépend fonctionnellement de X (X → Y) si à chaque valeur de X
correspond une valeur unique de Y
▪ On écrit : X →Y on dit que : X détermineY
6
DÉPENDANCE FONCTIONNELLE (DF)
PRODUIT (RefProduit, LibelleProduit, PU, Quantité, NumService, Adresse, Capacité)
Pour cette relation, les dépendances fonctionnelles suivantes sont vérifiées :
RefProduit → LibelleProduit
NumService → Adresse, Capacité
RefProduit → PU
7
DÉPENDANCE FONCTIONNELLE (DF)
Est-ce que c’est trois dépendances fonctionnelles sont correctes?
RefProduit → QuantitéCommandée
NumCommande → QuantitéCommandée
NumCommande ,RefProduit → QuantitéCommandée
8
DÉPENDANCE FONCTIONNELLE (DF)
Propriétés des dépendances fonctionnelles
Des axiomes et des règles d’inférence permettent de découvrir de nouvelles dépendances à
partir d’un ensemble initial.
Les trois premières propriétés sont connues sous le nom « Axiomes d’Armstrong »
9
DÉPENDANCE FONCTIONNELLE (DF)
Propriétés des dépendances fonctionnelles
Propriété 1: Réflexivité: Propriété 2: Augmentation:
X et Y sont des groupes de propriétés sachant que X et Y sont des groupes de propriétés:
Y est un sous groupe de X: donc X→Y X→Y ≡ XZ→YZ;
c’est-à-dire que tout ensemble d’attributs Si X détermine Y; les deux ensembles d’attributs peuvent être
détermine lui-même ou une partie de lui même: enrichis par un troisième.
Exemple: Exemple:
(Type, Marque, Puissance)→(Marque, Puissance) Type → Puissance <-> (Type, couleur) →(Puissance, couleur)
10
DÉPENDANCE FONCTIONNELLE (DF)
Propriétés des dépendances fonctionnelles
Propriété 3: Transitivité: Propriété 4: Union:
X et Y sont des groupes de propriétés: X→Y et X→Z ≡ X→Y,Z;
X→Y et Y→Z ≡ X→Z; Propriété 5: Pseudo-transitivité:
Exemple: X→Y et W,Y→Z ≡ W,X→Z;
Num_Immatriculation → Type,
Propriété 6: Décomposition:
Type → Puissance donc
Num_Immatriculation →Puissance X→Y et Z est inclus dans Y ≡ X→Z;
11
GRAPHE DE DÉPENDANCE FONCTIONNELLE
▪ Les DF peuvent être représentées à l’aide d’un graphe dont les nœuds sont les attributs
impliqués dans les dépendances et les arcs représentent les dépendances elles-mêmes.
▪ Les arcs sont orientés de la partie gauche de la dépendance vers sa partie droite.
▪ L’origine d’un arc peut être multiple mais sa cible doit être un nœud unique.
12
GRAPHE DE DÉPENDANCE FONCTIONNELLE
F1 : RefProduit ->LibelleProduit
F2 : RefProduit -> PU
F3 : NumService -> Adresse, Capacité
F4 : RefProduit, NumService -> Quantité
La dépendance fonctionnelle F3 n’est pas canonique, il faut donc la décomposer en deux dépendances
fonctionnelles F31 et F32 :
F31 : NumService -> Adresse
F32 : NumService -> Capacité
13
GRAPHE DE DÉPENDANCE FONCTIONNELLE
Le graphe des dépendances est le suivant :
14
GRAPHE DE DÉPENDANCE FONCTIONNELLE
Pour chaque relation il faut recenser toutes ses DF élémentaires et les représente sous forme d'un graphe orienté :
Graphe minimum des DF
▪ Exemple de graphe minimum : R(A, B, C, D, E)
E→A E→B E→C (≡E → A, B, C) C → D
Identifiant
▪ Le graphe minimum des DF permet de trouver les identifiants de la relation ▪ E est l'identifiant de R
▪ L’identifiant d’une relation est l’ensemble (minimal) des nœuds du graphe
minimum à partir desquels on peut atteindre tous les autres nœuds (via les DF)
15
GRAPHE DE DÉPENDANCE FONCTIONNELLE
R (A, B, C, D, E, F, G)
(F, G) est l'identifiant de R
16
FORMES NORMALES
• Objectifs des trois premières formes normales: permettre la décomposition de relations sans perdre d'informations
• Les formes normales des relations et les mécanismes pour les construire permettent d’obtenir des relations non
redondantes.
• La normalisation est donc le processus de transformation d’une relation ayant des problèmes lors de la mise à jour
vers une autre relation n’ayant pas ces problèmes
• Une relation en forme normale de niveau N est forcement de forme normale de niveau N-1
Le processus de normalisation d’une BD n’est pas obligatoire :
outil pratique et performant
17
FORMES NORMALES
PREMIÈRE FORME NORMALE (1FN)
• Une relation est en première forme normale si tous ses attributs contiennent des valeurs
• simples et non-décomposables (atomique)
• non-répétitives
• constantes dans le temps (date de naissance plutôt que l‘âge)
Décompositions
• Eliminer les groupes répétitifs dans une table
1, Sortir le groupe répétitif de la table initiale.
2, transformer le groupe répétitif en table, ajouter dans la clé de cette nouvelle table la clé primaire de la table initiale.
18
FORMES NORMALES
PREMIÈRE FORME NORMALE (1FN)
Commande (NumCmd, Date, NumClient, Nom, NumArticle, designation, quantiteCmd)
Cette table présente un groupe répétitif; Table commande NumCmd
Date
NumClient
NomClient
NumArticle
Décompositions Designation Groupe répétitif
quantiteCmd
Commande (NumCmd, Date, NumClient, NomClient)
ArticleCommandée (#NumCmd, NumArticle, designation, quantiteCmd)
19
FORMES NORMALES
DEUXIÈME FORME NORMALE (2FN)
Une relation est en deuxième forme normale si et seulement si :
▪elle est en première forme normale (1FN)
▪tout attribut non-clé est totalement dépendant de toute la clé (ne dépend pas d’une partie de la clé)
Elle ne concerne que les tables à clé primaire composée.
Décompositions
1. Regrouper dans une table les champs dépendants de la totalité de la clé.
2. Regrouper dans une autre table les champs dépendants d’une partie de la clé et faire de cette partie la clé primaire de
la nouvelle table
20
FORMES NORMALES
DEUXIÈME FORME NORMALE (2FN)
N’est pas concernée par la normalisation en 2FN.
• Commande (NumCmd, Date, NumClient, Nom)
La clé n’est pas composée.
Table LigneCommande
Table Article_Commande NumCmd
NumCmd NumArticle
2FN
NumArticle quantitéCmd
Designation
Décompositions Table Article
quantitéCmd
NumArticle
Designation
21
FORMES NORMALES
TROISIÈME FORME NORMALE (3FN)
• Une relation est en troisième forme normale si et seulement si :
▪ elle est en deuxième forme normale
▪ tout attribut non-clé ne dépend pas d'un attribut non-clé (pas de DF entre attributs non-clé)
• → les dépendances fonctionnelles entre deux attributs ordinaires ne sont pas autorisées (pas de
dépendances transitives dans une table).
Décompositions
[Link] dans la table initiale les champs dépendants directement de la clé.
[Link] dans une table les champs dépendants transitivement de la clé .
[Link] champ de transition reste dupliqué dans la table initiale. Et devient la clé primaire de la nouvelle table
22
FORMES NORMALES
TROISIÈME FORME NORMALE (3FN)
Table Commande
Table LigneCommande
Table Article NumCmd
NumCmd
NumArticle Date
NumArticle
Designation NumClient
quantitéCmd
Nom
Cette table est-elle en 1FN ? Cette table est-elle en 1FN ? Cette table est elle en 1FN ?
Cette table est-elle en 2FN ? Cette table est-elle en 2FN ? Cette table est elle en 2FN ?
Cette table est-elle en 3FN ? Cette table est-elle en 3FN ? Cette table est elle en 3FN ?
23
FORMES NORMALES
TROISIÈME FORME NORMALE (3FN)
Table Commande
NumCmd
Date
Table Commande
3FN NumClient
NumCmd
Date
NumClient Décompositions Table Client
NomClient
NumClient
NomClient
24
FORMES NORMALES
Table Commande
Résultat Final NumCmd
Date
NumClient
NomClient
NumArticle
Designation
quantiteCmd
Table Article Table LigneCommande Table Commande Table Client
NumArticle NumCmd NumCmd NumClient
Designation NumArticle Date NomClient
quantitéCmd NumClient
25