Vous êtes sur la page 1sur 11

7.

Normalisation des Bases de Donnes relationnelles


7.1 Introduction
Nous avons appris auparavant manipuler les bases de donnes relationnelles, nous allons nous intresser maintenant la manire dlaborer une base relationnelle. Nous formulons lhypothse de dpart que la phase danalyse pralable nous a fourni un schma relationnel universel : R dfini sur un ensemble dattributs U, plus un ensemble de prdicats sur la smantique des attributs, plus un ensemble de contraintes dintgrit.

7.2 Difficults lies au caractre relationnel de la modlisation.


Avant de se pencher sur les formes normales reprenons les piges auxquels expose la structure relationnelle. Si lon modlise mal on peut tomber sur des rptitions, des inaptitudes, des pertes dinformations. Exemple : Nous disposons dune modlisation relative au domaine bancaire :

R(Nomagence,NPrts,Client,Montant,Ch dAffaires) correspondant au prdicat : Une agence de nom Nomagence possde un chiffre daffaires et consent des prts de Numro donn des Clients pour un montant dtermin". Les contraintes suivantes (dpendances fonctionnelles) sont tablies :
Nomagence -> Ch dAffaires Client NPrt -> Montant Soit une instance r de

R:

r Nomagence Montpellier Montpellier Bziers Nimes Bziers Nimes .... NPrt 17 23 15 20 16 18 ... Client Dupont Durand Nestor Adam Achille Dsir ... Montant 1000 2000 1500 500 2000 1500 ... Ch.d'Affaires 90 M 90M 45M 85M 45M 85M

7.2.1 Divers problmes


On veut insrer un nouveau client Amanda qui contracte le prt 30 de montant 1500 auprs de lagence de Bziers, il faut aussi rajouter linformation redondante relative au chiffre daffaires 45M. Si une agence change de nom tous les n-uplets relatifs cette agence doivent subir la modification. Si une nouvelle agence se cre sans encore aucun client comment insrer linformation sans valeur nulle? si on tolre les valeurs nulles les contraintes ne sont plus respectes.

7.2.2 Dcomposition de schma


Ide : Dcomposer le schma initial en sous-schmas, mais plusieurs dcompositions sont envisageables.

Normalisation

7.2.2.1 Premier essai de dcomposition


Soit une dcomposition de R :

R1(Nomagence, Ch dAffaires) et R2(Nomagence, NPrt, Client, Montant) telle que, quelle que soit r instance de R , r1 instance de R1 et r2 instance de R2 :
r1= Nomagence, Ch dAffaires (r) r2= Nomagence, NPrt, Client, Montant(r ) Cette dcomposition vrifie les proprits suivantes : r2 = r (jointure conservative) - r1 - les contraintes sont toujours valables : Nomagence -> Ch dAffaires sur r1, Client NPrt -> Montant sur r2 (dpendances conservatives)

7.2.2.2 Second essai


On peut aussi envisager la dcomposition de R en :

R1(Nomagence, NPrt, Montant) , R2(Client, Montant) et R3 (Nomagence, Ch dAffaires)


dont une occurrence est
r1 Nomagence Montpellier Montpellier Bziers Nimes Bziers .... NPrt 17 23 15 20 16 ... Montant 1000 2000 1500 500 2000 ... r2 Client Dupont Durand Nestor Adam Achille Dsir ... Montant 1000 2000 1500 5000 2000 500 .... r3 Nomagence Ch d'affaires Montpellier Bziers Nimes 90 M 45 M 85 M

Divers problmes :
Supposons que lon souhaite poser la requte suivante : Quelles sont les agences auprs desquelles Achille a emprunt ?

Nomagence ( Client=Achille (r2) r1 ) donne Bziers et Montpellier ! La jointure donne plus de n-uplets (jointure non conservative donc perte dinformation).
De manire informelle nous voyons que cette deuxime dcomposition nest pas satisfaisante, dans la premire dcomposition lintersection des ensembles dattributs des schmas relationnels Nomagence cl de R1 ; dans la deuxime dcomposition lintersection des ensembles dattributs des schmas relationnels R1 et R2 donnait Montant or un client peut emprunter dans une mme agence le mme montant pour des prts diffrents, ou bien emprunter le mme montant dans des agences diffrentes ...etc. Nous nous attacherons donc dcrire une mthodologie amenant une bonne dcomposition.

R1 et R2 donnait

7.3 Normalisation sous dpendances fonctionnelles

Normalisation 3

7.3.1 Dfinitions
Les dpendances fonctionnelles constituent un type important de contrainte d'intgrit intervenant dans uns structure relationnelle. Un schma relationnel R dfini sur un ensemble d'attributs U vrifie la dpendance fonctionnelle G -> D o G et D sont des sous ensemble ou parties de U ssi (r instance de R) (t ,t' r tel que t[G] = t'[G] => t[D] = t'[D]) ( si deux n-uplets de r concident sur G alors ils concident sur D)

t [G] note la projection de t sur G.


On dit que G dtermine fonctionnnellement ou identifie D, que D est fonctionnellement dpendant de G ou est identifi par G.

Remarque :
Si DG est l'ensemble des attributs de R, on ne peut avoir deux n-uplets t,t' r instance de R concidant sur G car sinon ils seraient gaux. Or les relations sont des ensembles, un n-uplet ne figure qu'une seule fois.

Exemple :
Soit le schma relationnel EMPLOI_DU_TEMPS(Professeur,Heure,Salle,Classe,Matire) associ au prdicat intentionnel "tout enseignement d'une matiere est effectu par un professeur pour une classe donne dans une salle donne une heure donne" L'ensemble des dpendances fonctionnelles suivant peut lui tre associ : {Professeur -> Matire ; Un professeur n'enseigne qu'une seule matire Professeur Heure -> Classe ; Un professeur une heure donne enseigne une seule classe Heure Salle -> Professeur ; A une heure donne et dans une salle donne ne peut se trouver qu'un seul professeur Heure Classe -> Salle ; A une heure donne et pour une classe donne ne peut tre associ qu'une seule salle} Notons que selon l'observateur qui modlise l'ensemble de dpendances fonctionnelles peut tre diffrent : {Professeur -> Matire ; Heure Classe -> Professeur ; Heure salle -> Classe} Le problme sera de savoir si les ensembles de DF aboutissent au mme schma normalis.

7.3.2 Equivalence entre ensembles de DF


7.3.2.1 Fermeture transitive d'un ensemble de DF
Dfinitions :
consquence logique Etant donn un schma relationnel R (U,F), une dpendance fonctionnelle f sera une consquence logique de F (au sens des formules logiques) si f est vrifie pour toute relation R de R. fermeture transitive d'un ensemble de DF Etant donn un ensemble F de DF, d'autres DF peuvent en tre la consquence logique. Comme les DF sont en nombre fini (si U est fini), l'ensemble des consquences existe et s'appelle la fermeture transitive de F, note F+.

exemple si (1) X-> Y et (2) Y-> Z sont 2 DF sur R, alors X -> Z est une DF sur R.
en effet soit R contenant les attributs XYZ, si tet t' sont tels que t[X] =t'[X] alors (1) => t[Y] =t'[Y] et (2) => t[Z] =t'[Z]. Il existe plusieurs moyens de driver toutes les "consquences" d'un ensemble de DF, nous en citerons un, celui utilisant des rgles de drivation appeles axiomes d'ARMSTRONG.

Normalisation

Rgles principales DF1 rflexivit DF2 augmentation DF3 transitivit


si X Y alors X ->Y si X -> Y et Z est un ensemble d'attributs, alors XZ -> YZ si X -> Y et Y-> Z alors X -> Z

Nous admettrons sans le dmontrer que l'ensemble de ces rgles de drivation constituent un ensemble valide (sain ou consistant) et complet.

Dfinition :
Un systme de rgles de drivation est valide (sain ou consistant), si lorsque f est drive de F l'aide du systme f est une consquence logique de F (le systme de rgles ne permet donc d'engendrer que des DF valables). Un systme de rgles de drivation est complet si lorsque f est une consquence logique de F alors f est drivable de F en utilisant ce systme de rgles. On utilise aussi des consquences de ces rgles qui sont utiles en pratique lors des manipulations de DF.

DF4 union DF5 dcomposition DF6 pseudo-transitivit

si X -> Y et X -> Z alors X -> YZ si X -> YZ alors X -> Y et X -> Z si X -> Y et WY -> Z alors WX -> Z

7.3.2.2 Fermeture transitive d'un ensemble d'attributs par rapport un ensemble de DF.
Dfinition :
L'ensemble des attributs directement atteignables partir de X par rapport F est appel fermeture transitive des attributs de X par rapport F et note X+. exemple : Soit F = { A ->B, BC->D} et lhypergraphe correspondant

A B D
A+/F= AB B+/F= B C+/F= C D+/F= D BC+/F= BCD AC+/F= ABCD

C
Il y a un algorithme gnral simple pour calculer X+.

Algorithme Fermeture_trans(X,F,X+) {calcule dans X+ la fermeture de X par rapport F, ens de DF} X+ := X; ENU := F; {ENU ensemble des DF non utilises} tant que < une DF G->D dans ENU tel que GX+> faire choisir (et enlever) un arc G->D de ENU tel que G X+ X+ := X+ {D}; Remarque : d'autres algorithmes plus sophistiqus ont t dvelopps. Dfinition
Soit F un ensemble de DF, F+ la fermeture transitive de F est lensemble des DF : {G -> D tq D G+F}

Normalisation 5

Exemple Soit F = { A ->B, BC->D} F+={A->AB, B->B, C->C, D->D, AB->AB, AC->ABCD, AD->ABD, BC->BCD, BD->BD, CD->CD, ABC->ABCD, ABD->ABD, ACD->ABCD, BCD->BCD, ABCD->ABCD} Thorme
Deux ensembles de dpendances fonctionnelles F et F' sont quivalents ssi F+ = F'+ ssi F+ F'+ et F'+ F+ ssi F F'+ et F' F+ ssi toute DF de F F '+ et toute DF de F' F+ ssi pour toute DF de F G -> D , alors G+ par rapport F' contient D et pour toute DF de F' G -> D , alors G+ par rapport F contient D Grce au thorme prcdent, on ramne le calcul de la fermeture transitive de lensemble des dpendances fonctionnelles F celui des fermetures des parties gauches des dpendances fonctionnelles de F. On peut en effet montrer qu'en remplacant G->D par G->G+, on a un ensemble de DF quivalent F : {F - (G->D) (G-->G+}+ = F+

7.3.2.3 Eliminer la redondance : obtention dune Couverture irredondante Minimale (CIM)


a - minimisation des parties gauches de DF : dfinition : A G est redondant dans G -> D par rapport F ssi D {G-{A}}+ par rapport F
On appellera dpendance fonctionnelle minimale = une DF sans attribut redondant en partie gauche.

Exemple : F={A->B, AB->C} ; AB->C nest pas minimale/F, A->C est minimale ! b - redondance d'une DF (G -> D) par rapport un ensemble F de DF dfinition : G->D est redondant par rapport F ssi D G+ par rapport (E - {G-> D}) ssi (E - {G-> D})+ = E+
Pour chasser la redondance des dpendances fonctionnelles, rappelons qu'il faut dcomposer G->D1D2...Dn en n dpendances fonctionnelles lmentaires (un seul attribut en partie droite) G-> D1, G->D2,... G-> Dn

Exemple : F={A->B, B->C, A->BC} ; A->BC nest pas lmentaire : on la dcompose en A->B, dj prsente, et A->C. Cette dernire est redondante car A+/{A->B, B->C}={A, B, C} c - couverture irredondante minimale (CIM) d'un ensemble F de DF
C'est un ensemble F' de DF quivalent F qui ne contient aucune DF redondante, et dont les parties gauches sont minimales. Pour en obtenir une (il n'y a pas forcment unicit), il faut appliquer les tests a et b dans cet ordre.

7.3.2.4 Cls de schma relationnel


a - surcl K d'un schma relationnel dfinition : K est surcl (ou identifiant) de R sur U ssi K->U est une DF sur R

Normalisation

Deux n-uplets distincts ne peuvent avoir la mme surcl (sinon ils concident entirement et une une ralisation R de R contient 2 tuples gaux) U est toujours une surcl (triviale)

b - cl d'un schma relationnel dfinition : K est une cl ssi (K est une surcl de R) et K est minimale (ne contient pas strictement une autre surcl K') ssi non A K tel que K-{A} ->U c - calcul d'une cl
On essaie de minimiser la partie gauche de U->U Remarque : une cl sera reprsente par un soulignement continu au niveau du schma relationnel associ. exemple : EMPLOI_DU_TEMPS(Professeur,Heure,Salle,Classe,Matire).

Algorithme cl ( U,F,K)
{calcule une cl K d'un schma relationnel R sur U avec un ensemble de DF F} K := U; {surcl} tant que un attribut A K tel que K-{A} ->U faire choisir un tel attribut A; K := K -{A}; Il existe d'autres algorithmes capables de calculer l'ensemble des cls possibles pour un schma R.

7.3.3 Proprits dune dcomposition


La normalisation va permettre de dcomposer un schma relationnel R (U,F) en un ensemble de schma relationnels ayant une "bonne forme" incorporant l'ensemble des dpendances fonctionnelles F et rduisant la redondance des donnes et par suite rduisant les diverses difficults de mise jour cites initialement. On appelle dcomposition d'un schma R dfini sur U en sous-schmas Ri dfinis sur Ui sous-ensemble de U ssi U = des Ui (recouvrement de l'ensemble des attributs) Les dcompositions effectues doivent prsenter un certain nombre de prorits que nous allons dtailler.

7.3.3.1 Dcomposition sans perte


Dfinitions On appelle dcomposition sans perte dun schma R soumis un ensemble de dpendances fonctionnelles
F en sous-schmas Ri dfinis sur {Ui} ssi pour toutes les instances R de R vrifiant F, on a : R = U1 (R) U2 (R) Un (R)

7.3.3.1.1 Test d'une dcomposition


Algorithme Test_sans_perte(R, {Ui}, F) : boolen {retourne Vrai si {Ui} est une dcomposition sans perte} Construire un tableau T de n colonnes (n tant le cardinal de U) et de k lignes (k est le nombre de sousschmas de la dcomposition) : la ligne i correspond au schma Ri et la colonne j correspond l'attribut j de U. Pour tous les attributs Aj si Aj Ri mettre T(i,j)=aj sinon T(i,j)=bi,j Pour toute DF G->D de F faire Pour toutes les lignes qui sont identiques pour tous les attributs Aj de G faire concider les attributs de D de la manire suivante : - si l'un d'entre eux est de la forme aj, mettre les autres aj

Normalisation 7

- sinon les mettre gaux l'un d'entre eux (bij par ex) Rsultat := si la table T possde au moins une ligne remplie de ai alors la dcomposition est sans perte.

Exemple : Soit R ({A,B,C},{A->B, B->C}) dcompos en R1(A,B), R2(B,C) ; Le tableau est initialis : i\j A B C R1 a1 a2 b13 R2 b21 a2 a3
Le traitement en : i\j A B R1 a1 a2 R2 b21 a2 de la premire DF A->B ne donne rien ; en revanche, la seconde DF B->C modifie le tableau C a3 a3

La dcomposition est donc sans perte.

7.3.3.1.2 Autre test


Les thormes suivants peuvent aussi permettre de vrifier qu'une dcomposition est sans perte.

Thorme
Si R soumis F( ens de DF) se dcompose en {R1(U1),R2(U2)} alors cette dcomposition est sans perte par rapport F ssi (U1 U2) -> (U1 - U2) ou (U1 U2) -> (U2 - U1)

ssi les attributs communs sont cls de l'une ou l'autre des schmas relationnels dcomposs.
Si

R soumis F (ens de DF) se dcompose en {U1,U2,Un} sans perte,


et si U1 soumis U1(F) se dcompose en {V1,V2} sans perte,

alors {V1,V2,U2,Un}est une dcomposition sans perte de R soumis F Ce dernier thorme permet une dcomposition sans perte par itrations successives.

7.3.3.2 Dcomposition avec prservation des DF


Dfinition La projection d'un ensemble de DF sur un ensemble d'attributs est l'ensemble des DF de F+ qui ont tous leurs attributs dans Z Z(F) = {G->D | G->D F+ et GD Z}
Une dcomposition prserve un ensemble F de DF ssi { Ri (F)}+ = F+ ssi "l'union des projections est quivalent l'ensemble initial"

Exemple Soit R sur ABC soumis F={ A->B, B->C}


a) la dcomposition sur AC, BC prserve-t-elle les DF ? F+ sans les dpendances triviales= {A->B, B->C, A->C} AC (F) ={A->C}, BC (F) ={B->C} AC (F) U BC (F) ={A->C, B->C} et A->B n'est pas retrouve donc la dcomposition ne prserve pas les DF. De plus, cette dcomposition nest pas sans perte : ACBC=C et C nest cl daucune des 2 relations !

Normalisation

b) au contraire la dcomposition AB, BC les prserve et est sans perte. Il existe des mthodes pour vrifier la prservation des DF dans une dcomposition mais nous ne les examinerons pas au niveau de ce cours.

7.3.4 Formes Normales


7.3.4.1 1re FN
Un schma relationnel monovalus).

est en premire forme normale si tous les attributs de U sont atomiques (ou

7.3.4.2 2me FN
Un schma relationnel R dfini sur U et sur un ensemble de dpendances fonctionnelles F est en 2FN ssi tout attribut nappartenant pas une cl dpend directement dune cl. Exemple : Soit R(Appareil,Vol,AroportDpart,AroportArrive) avec F={ Vol ->Appareil, Vol AroportdeDpart ->AroportArrive}

Vol

AroportDpart

AroportArrive Appareil
Lunique cl de R est Vol AroportdeDpart Vol, AroportdeDpart appartiennent la cl, AroportArrive dpend directement de la cl, mais Appareil dpend dune partie de la cl et non de la cl entire donc le schma nest pas en 2FN. Il faut scinder en deux relations : R1(Vol, Appareil), R2(Vol, AroportDpart, AroportArrive)

7.3.4.3 3me FN
Un schma de relation R soumis F(CIM) est en 3 ime forme normale ssi pour toute DF X ->A de F : - soit X est une cl, - soit A appartient une cl. Par exemple, soit R sur ABC soumis F={ A->B, B->AC} Alors {R1(A,B), R2(B,C)} est en 3FN Ainsi que {R1(B,A), R2(B,C)} et {R1(B,A), R2(A,C)}

7.3.4.4 3me BCNF (forme normale de Boyce-Codd)

R soumis a F(CIM), est en BCNF ssi pour toute

DF G->D de F, G est une cl.

Normalisation 9

1FN 2FN 3FN 3BCNF

Remarquons que pour lexemple prcdent, {R1(B,A,C), R2(A,B)} est en 3BCNF.

7.3.5 Dcomposition en 3FN


Thorme :
Tout schma relationnel peut dcomposer en schmas sous 3ime forme normale, sans perte et avec prservation des Dpendances fonctionnelles. Il existe divers algorithmes de dcomposition (nous n'en tudierons qu'un "classique" d Bernstein).

Algorithme de dcomposition en 3 ime forme normale


Lalgorithme prend en entre un schma R soumis F et donne en rsultat un ensemble {Ri(Ui,Fi)} tel que tout Ri est en 3FN. Le schma relationnel modlisation. 1. 2. 3.

et surtout F sont eux-mmes le rsultat dune phase de

Calculer une CIM (F1) partir de lensemble de toutes les dpendances fonctionnelles lmentaires de F en chassant la redondance des attributs de partie gauche, puis les dpendances fonctionnelles redondantes. Trouver les cls de F1 Regrouper les DF de F1 ayant mme partie gauche Gj -> Dj. Fabriquer les schmas de relation maximaux par l'inclusion ensembliste.

4.

Ri {Ui=Gj Dj ; Gj -> Dj } Si aucune cl ne figure dans une des relations produites l'tape prcdente ajouter un schma de relation Ri = {K; K->K}
Remarque : Cet algorithme peut conduire une dcomposition en 3BCNF (meilleur des cas).

7.3.6 Normalisation par rapport dautres contraintes


Dans certains cas de modlisation, les dpendances fonctionnelles ne suffisent pas traduire toute la smantique de lapplication. Il faut donc introduire de nouvelles contraintes et les rajouter dans le processus de normalisation.

7.3.6.1 Dpendances de jointure


Dfinition Le schma relationnel R(U) admet la dpendance de jointure note * [U1,U2,...Ui] o chaque Ui est un sous-ensemble de U
ssi

R1(U1)

R2(U2)...

Ri(Ui).c'est

dire ssi toute relation R extension de

R(U)

est la jointure

naturelle des relations R1,R2,...Ri extensions des schmas R1,R2,

Ri.

Chaque schma relationnel Ri(Ui) est appel composante de jointure.

10

Normalisation
Un n-uplet u ne peut appartenir R que si chacune de ses projections u[Ui] est un n-uplet de Ri R[Ui] Ri(Ui)

Exemple : Soit le schma de relation VINS(Buveur,Cru,Producteur) modlisant des vins bus par des buveurs d'un cru donn et commands un producteur produisant ce cru et une de ces extensions :

BUVEUR Jacques Jacques Jacques Louis

CRU Chablis Chablis Volnay Chablis

PRODUCTEUR Pierre Nicolas Nicolas Nicolas

Cette extension prsente encore des redondances. Si la contrainte d'intgrit : " tout buveur ayant bu un cru et ayant command un producteur produisant ce cru, a aussi command ce cru ce producteur" est dclare, le schma relationnel VINS obit la dpendance de jointure : * [Buveur Cru, Buveur Producteur, Cru Producteur] et peut tre dcompos en trois schmas (composantes de jointure).

BUVEUR Jacques Jacques Louis

CRU Chablis Volnay Chablis

BUVEUR Jacques Jacques Louis

PRODUCTEUR Pierre Nicolas Nicolas

CRU Chablis Chablis Volnay

PRODUCTEUR Pierre Nicolas Nicolas

Dans le processus de normalisation vu prcdemment, on rajoute les DJ en introduisant chaque ensemble d'attributs associ chaque composante de jointure CJ (comme une DF Ui->) .

7.3.6.2 Dpendances dinclusion


Dfinition Soit deux schmas relationnels R1 sur U1 et R2 sur U2 soit X1 et X2 deux attributs tels que X1U1 et X2 U2
On a une dpendance d'inclusion (note i ) X1 i X2 ssi

R1,R2 extensions ou instances de R1 R2 on a t 1R1 un n-uplet t2 R2 tel que t2[X2]= t1[X1]


Remarque : gnralisation des ensembles d'attributs, on note X1X2 Y1 Y2 X1 X2 est appel la partie gauche ou membre inclus, et Y1 Y2 la partie droite ou membre incluant de la DI. attention : X1X2 Y1 Y2 => X1 Y1 et X2 Y2 mais l'inverse est faux.

Proprits L'existence de DF et de DI implique l'existence d'autres DF et DI que l'on peut obtenir grce aux rgles suivantes : DI1 rflexivit X X DI2 : transitivit si X Y et Y Z alors X Z avec = . DI3: hritage de DF : si XL GD et G -> D alors X ->L

Normalisation 11

Lintroduction de DI dans le processus de normalisation peut entraner des suppressions dattributs, des simplifications par fusion de schmas.