0% ont trouvé ce document utile (0 vote)
15 vues31 pages

Normalisation des Bases de Données

Le document traite de la normalisation des bases de données, en se concentrant sur l'importance de concevoir des schémas pour éviter les anomalies lors des opérations de mise à jour. Il présente des concepts clés tels que les dépendances fonctionnelles, les formes normales (NF1, NF2, NF3) et les axiomes d'Armstrong, qui aident à établir des relations entre les attributs d'une base de données. Enfin, il décrit la méthodologie de décomposition pour obtenir des schémas conformes aux formes normales tout en préservant la sémantique des données.

Transféré par

Prince Salif
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues31 pages

Normalisation des Bases de Données

Le document traite de la normalisation des bases de données, en se concentrant sur l'importance de concevoir des schémas pour éviter les anomalies lors des opérations de mise à jour. Il présente des concepts clés tels que les dépendances fonctionnelles, les formes normales (NF1, NF2, NF3) et les axiomes d'Armstrong, qui aident à établir des relations entre les attributs d'une base de données. Enfin, il décrit la méthodologie de décomposition pour obtenir des schémas conformes aux formes normales tout en préservant la sémantique des données.

Transféré par

Prince Salif
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Bases de Données: Normalisation

Sergio Peignier

Sergio Peignier Bases de Données: Normalisation 1 / 31


Quelques questions

Pour une même application il est souvent possible de proposer


plusieurs schémas.
Un mauvais schéma conceptuel ⇒ anomalies :
Pendant la phase d’exploitation de la base
(redondances d’information ...).
Lors des opérations de mise à jour
(insertions, suppressions, modifications).
Comment peut-on distinguer un bon schéma d’un mauvais schéma ?
Quel schéma doit-on choisir ?

Sergio Peignier Bases de Données: Normalisation 2 / 31


Un exemple

Considérons le schéma de relation


KEBAB(Nom_kebab, Adresse_kebab, Produit_vendu, Prix).
Cette relation pourra éventuellement contenir plusieurs produits pour
un même kebab.
Quels problèmes identifiez vous ?

Sergio Peignier Bases de Données: Normalisation 3 / 31


Un exemple

L’adresse du Kebab sera répété pour chaque produit vendu par le


Kebab en question (redondance).
Si Kebab change d’adresse il faudra rechercher et modifier tous les
tuples associées à ce Kebab.
Si un Kebab (déjà existant) sort un nouveau produit il faudra vérifier
que l’adresse connue et l’adresse de la nouvelle instances sont les
mêmes.
Si un Kebab fait faillite et disparait il faudra retrouver et supprimer
tous les tuples correspondant à ce Kebab (pour différents produits)
dans la table.

Sergio Peignier Bases de Données: Normalisation 4 / 31


Objectif de la normalisation

Construire un schéma de base de données cohérent et possédant


certaines propriétés vérifiées par la satisfaction de "formes normales"
(évitant ainsi l’apparition des anomalies).

Sergio Peignier Bases de Données: Normalisation 5 / 31


Définition : Dépendances Fonctionnelles (DF)

Un ensemble d’attributs B est dit fonctionnellement dépendant


d’un ensemble d’attributs A si on sait que lorsque deux tuples
quelconques coincidant sur leurs attributs A, alors ils coincident sur
leurs attributs B.
Pour x et y deux tuples quelconques, si xA = yA ⇒ xB = yB alors B
est fonctionnellement dépendant de A.
On dit aussi que A détermine B (on écrit A → B).
Les DF sont des contraintes qui décrivent les relations entre les
attributs d’une relation.
Les formes normales s’appuient sur les DF entre attributs d’un schéma
de base de données.
Une notation habituelle en BD : Soient deux ensembles d’attributs X
et Y On note XY l’union de X et Y (au lieu de X∪Y).

Sergio Peignier Bases de Données: Normalisation 6 / 31


Exemple

Écrire les dépendances fonctionnelles de la relations suivante :


ETUDIANT (No_SS, Nom, Prenom, Adresse, Age).
Que remarquez vous ?

Sergio Peignier Bases de Données: Normalisation 7 / 31


Dépendances Fonctionnelles

Une clé détermine tous les attributs du schéma de relation. Il s’agit


d’une propriété de la clé d’un schéma de relation.
Les dépendances fonctionnelles ne se définissent pas par rapport à une
table en particulier (ou à la table à un instant donné) mais par
rapport aux caractéristiques intrinséques des attributs !
Imaginez la relation suivante :
Kebab :
Nom_kebab Adresse_kebab Produit_vendu Prix
Ambiance bvd blabla miche kebab 5
Mosaique bvd blabla maxi kebab 7.5
Est-ce que le produit détermine le nom, l’adresse et le prix ?

Sergio Peignier Bases de Données: Normalisation 8 / 31


Dépendances Fonctionnelles

Soit la relation suivante r ayant le schéma R(A, B, C , D, E ). Si on imagine


que toutes les dépendances fonctionnelles sont visibles sur le tableau (ce
n’est pas toujours le cas attention ! ! !), quelles sont les dépendances
fonctionnelles satisfaites par R ?

A B C D E
a1 b1 c1 d1 e1
a1 b2 c2 d2 e1
a2 b1 c3 d3 e1
a2 b1 c4 d3 e1
a3 b2 c5 d1 e1

Sergio Peignier Bases de Données: Normalisation 9 / 31


Réponse

A→E
B→E
C → ABDE
D→E
AB → D
AD → B
BD → A

Sergio Peignier Bases de Données: Normalisation 10 / 31


Axiomes d’Armstrong

A partir d’un ensemble F de DF entre les attributs A d’une relation R on


peut en déduire d’autres grâce aux propriétés suivantes :
Réflexivité : si Y ⊆ X , alors X → Y .
Augmentation : si X → Y alors XZ → YZ pour tout ensemble
d’attributs Z appartenant à R
Transitivité : si X → Y , et Y → Z , alors X → Z .
A partir de ces trois axiomes de base, on peut déduire d’autres règles :
Union : si X → Y et Y → Z , alors X → YZ
Pseudo-transitivité : si X → Y et WY → Z , alors WX → Z
Décomposition : si X → Y et Z ⊆ Y , alors X → Z
Retrouver ces 3 régles à partir des axiomes.

Sergio Peignier Bases de Données: Normalisation 11 / 31


Axiomes d’Armstrong (Union)

X → Y par augmentation : XZ → YZ
X → Z par augmentation : XX → XZ
Or XX = X donc X → XZ
Par transitivité : X → YZ

Sergio Peignier Bases de Données: Normalisation 12 / 31


Axiomes d’Armstrong (Pseudo-transitivité)

X → Y par augmentation : WX → WY
Or WY → Z par transitivité : WX → Z

Sergio Peignier Bases de Données: Normalisation 13 / 31


Axiomes d’Armstrong (Décomposition)

Z ⊆ Y par réfléxivité : Y → Z
Or X → Y par transitivité : X → Z

Sergio Peignier Bases de Données: Normalisation 14 / 31


Retour sur les DF

DF triviale 7→ Obtenue par réfléxivité (donner un exemple).


DF simple 7→ Un seul élément à droite (donner un exemple).
DF directe 7→ Qui ne peut pas être obtenue par transitivité :
A → B est directe si @C tel que A → C et C → B
DF élémentaire (DFE) 7→ Simple et dont la partie gauche n’est pas
décomposable :
A → B est DFE @C ⊂ A tel que C → B et si |B| = 1.
DF complète ou pleine (dans le cas contraire on parle de DF partielle)
7 Dont la partie gauche n’est pas décomposable

X → Y est complète si Y n’est pas fonctionnellement dépendant d’un
sous-ensemble de X.

Sergio Peignier Bases de Données: Normalisation 15 / 31


Fermeture

Soit R un schéma de relation.


Soit X un ensemble d’attributs.
X + fermeture de X 7→
Ensemble des attributs de R qui peuvent être déduits de X à partir
d’une famille de DF en appliquant les axiomes d’Armstrong.
Y sera inclus dans X + ssi X → Y

Sergio Peignier Bases de Données: Normalisation 16 / 31


Fermeture

Calcul de la fermeture d’un ensemble d’attributs :


Initialisation X + = X
Trouver une dépendance fonctionnelle possédant en partie gauche des
attributs inclus dans X +
Ajouter dans X + les attributs placés en partie droite de la dépendance
fonctionnelle.
Répéter les deux étapes précédentes jusqu’à ce que X + n’évolue plus.

Sergio Peignier Bases de Données: Normalisation 17 / 31


Exercice 1

Soit l’ensemble de DF suivant :

F = {A → D; AB → E ; BI → E ; CD → I ; E → C }

Calculer la fermeture sous F , de AE et de BE .

Sergio Peignier Bases de Données: Normalisation 18 / 31


Exercice 2

Soit l’ensemble de DF suivant :

F = {AB → C ; B → D; CD → E ; CE → GH; G → A}.

Montrer que AB → E ,

Sergio Peignier Bases de Données: Normalisation 19 / 31


Fermeture Transitive (F + ) et couverture minimale

Soit F un ensemble de DFE.


Quels opérations peut-on appliquer à F pour trouver toutes les DFE
qui en découlent ?
F + fermeture transitive de F 7→
Plus grand ensemble (non trivial) de DFE obtenu à partir des DFE de
F.
F ∪ { DFE obtenues par transitivité ou pseudo transitivité }
2 ensembles de DF sont équivalents s’ils ont la même F +
MIN(F ) Couverture minimale de F
Ensemble minimal MIN(F ) de F obtenu en supprimant les dépendances
fonctionnelles redondantes, c’est à dire celles qui peuvent être déduites
à partir de MIN(F ).
+
(MIN(F ))+ = F + et @F 0 ⊂ MIN(F ) tel que F 0 = F +
Théorème : Tout ensemble de DFE admet une couverture minimale, en
général non unique.
Sergio Peignier Bases de Données: Normalisation 20 / 31
Algorithme de calcul de la couverture minimale

Écrire les DF sous la forme X → A. X étant un ensemble d’attributs et


A un attribut élémentaire. (Écrire toutes les DF de ce type que vous
pouvez → fermeture transitive)
Les DF du type X → A1 A2 . . . An sont remplacé par n DF du type
X → Ai (parfois utile mais ce n’est pas nécéssaire)
Supprimer des DF grâce aux opérations liés à la notion de fermeture
(trouver l’ensemble de DF le plus simple qui permet de retrouver la
fermeture transitive).

Sergio Peignier Bases de Données: Normalisation 21 / 31


Retour à la normalisation

Normalisation 7→ Méthodologie de conception descendante pour


produire un "bon schéma" par décomposition d’un schéma d’origine
Le schéma produit doit :
Éviter des anomalies lors de la mise à jour de la BD (forme normale)
Preserver la sémantique du schéma d’origine sans perdre de
l’information ni les DF
Cependant, la décomposition entraine parfois une dégradation des
performances (besoin de faire des jointures pour faire des recherches).
Il existent plusieurs formes normales. Nous allons voir les 3 premières
formes normales (NF1, NF2 et NF3) proposées par E.F. Codd en 1972.

Sergio Peignier Bases de Données: Normalisation 22 / 31


NF1

Une relation est NF1 si elle ne contient que des "valeurs atomiques"
non multi-valuées.
Exemple : "01-01-2000" pour l’attribut Jour.
Contre-exemple : "01-01-2000, 06-06-2006" pour l’attribut Jour.
Non-respect de 1NF ⇒ recherche parmi les données plus lente (il faut
analyser le contenu des attributs)
Pensez à un exemple ou cette retriction peut être contraignante.

Sergio Peignier Bases de Données: Normalisation 23 / 31


NF2

NF2 s’appuie sur la notion de dépendance fonctionnelle "complète"


(ou "pleine").
Une relation est NF2 si elle est NF1, et si tout attribut n’appartenant
pas à la clé (primaire) dépend complètement de cette clé, c’est-à-dire
si toutes les dépendances fonctionnelles s’appliquant sur R sont
complètes.
En gros une relation est NF2 si elle est NF1 et les attributs non-clé ne
doivent pas deépendre que d’une partie de la clé mais de sa totalité.
Remarque : si toutes les DF ont un seul attribut en partie gauche, ou
si les clés sont atomiques, alors la relation est NF2.
Non-respect de 2NF ⇒ Redondance encombrant inutilement la
mémoire.

Sergio Peignier Bases de Données: Normalisation 24 / 31


NF2

Soit Employe(idEmp, idService, nom, salaire, nomService) avec


[idEmp, idService] étant la clé de la table et on sait que
idEmp → idService, nom, salaire, nomService Est-ce que cette relation est
NF2 ?

Sergio Peignier Bases de Données: Normalisation 25 / 31


NF3
Une relation est NF3 si elle est NF2 et si les attributs non clés ne
dépendent pas d’un attribut non clé.
Une relation est NF3 si tous les attributs non clé sont en DFE directe
avec la clé. Il ne doit pas y avoir de dépendance fonctionnelle entre
des attributs non clé.
Il peut rester des dépendances fonctionnelles entre attributs de la clé
et entre attributs non clé vers des attributs de la clé
Une relation est NF3 si, pour toute DF X → A s’appliquant sur R
avec A non inclus dans X, soit X est clé de R, soit A fait partie d’une
clé de R.
Pour rendre la relation NF3, il faut donc éliminer les dépendances
fonctionnelles transitives en plaçant certains attributs dans une autre
relation.
Non-respect de 3NF ⇒ Redondance encombrant inutilement la
mémoire.
Sergio Peignier Bases de Données: Normalisation 26 / 31
NF3

Soit R(NomF , AdresseF , Produit, Prix) et


DF = {NomF → AdresseF ; NomF , Produit → Prix} La clé de R étant
[NomF , Produit]. La relation est-elle NF3 ?

Sergio Peignier Bases de Données: Normalisation 27 / 31


Théorème de Heat

Soit la relation R{A, B, C } dans laquelle A, B et C sont des


sous-ensembles d’attributs de R. Si R satisfait la DF A → B, alors R est
égale à la jointure de ses projections sur {A, B} et {A, C }.

Sergio Peignier Bases de Données: Normalisation 28 / 31


Décomposition
Soit F un ensemble de DF définies sur l’ensemble des attributs de la
relation
Déterminer la couverture minimale MIN(F) de F
Construire la relation universelle R, relation composée de tous les
attributs
Déterminer la clé primaire de R à partir de MIN(F)
Pour chaque DF, tant que la DF ne contient pas tous les attributs de
la relation, décomposer la relation en deux nouvelles relations en
utilisant le théorème de Heat :
Si la relation R(A, B, C ) avec la DF B → C n’est pas en NF3, elle
sera décomposée en R(A, B) set R2(B, C )
Appliquer ce processus de décomposition sur les relations jusqu’à
l’obtention de relations en NF3. La décomposition peut être représenté
sous forme d’arbre, les feuilles de l’arbre constituent les relations de la
base.
Sergio Peignier Bases de Données: Normalisation 29 / 31
Exercice : Decomposer la relation pour qu’elle soit en NF3

Relation universelle R : R(A, B, C , D, E , F , G , H, I , J, K )


Couverture minimale : F = {AB → CE ; A → F ; F → DGH; D → IJK }

Sergio Peignier Bases de Données: Normalisation 30 / 31


Correction

Sergio Peignier Bases de Données: Normalisation 31 / 31

Vous aimerez peut-être aussi