Você está na página 1de 6

Transparents de Jeffrey Ullman (Stanford University)

Traduits/adapts par C. Retor (U. Bordeaux 1)

Formes Normales et Anomalies


Anomalies et Redondance
Normalisation
!Bon schma relationnel:
" pas de redondance
(c.--d. plusieurs fois la mme information)
" pas danomalies.
Anomalies Types danomalies Anomalie de mise jour : une occurrence
dune information est modifie et pas les autres
Boyce-Codd BCNF Exemple derreurs de conception Anomalie de suppression : une information
pertinente est perdue en dtruisant un n-uplet.
3e Forme Normale 3NF

1 2 3

Erreurs de conception
Exemple de schma mal conu Forme Normale de Boyce Codd
et Anomalies
BCNF
Drinkers(name, addr, beersLiked, manf, favBeer)

name addr beersLiked manf favBeer name addr beersLiked manf favBeer
Janeway Voyager Bud A.B. WickedAle Janeway Voyager Bud A.B. WickedAle
Janeway ??? WickedAle Petes ??? Janeway Voyager WickedAle Petes WickedAle
Spock Enterprise Bud ??? Bud Spock Enterprise Bud A.B. Bud Exemple
Mise en forme normale
Les donnes sont redontantes: Anomalie de Mise jour: si Janeway part pour lIntrepid,
les Dpendances Fonctionnelles pensera-t-on changer tous les n-uplets?
name -> addr favBeer Anomalie de Descruction: si personne naime Bud,
beersLiked -> manf. on perd le faut que son fabricant Anheuser-Busch.
dterminent les ??? 4 5 6

Forme Normale de Boyce-Codd


Exemple Autre Exemple
BCNF
!Une relation R est dite en BCNF ssi Drinkers(name, addr, beersLiked, manf, favBeer) Beers(name, manf, manfAddr)
FDs: name->addr favBeer, beersLiked->manf
pour toute Dpendance Fonctionnelle FDs: name->manf, manf->manfAddr
non triviale (c.--d. X ne contient pas A) !Une seule cl minimale
{name, beersLiked}. !Une seule cl minimale {name} .
X ->A sur les attributs de R
X est une cl (pas forcment minimale) !Pour chacune DF: !name->manf ne contredit pas BCNF,
la partie droite nest pas une cl mais par contre la relation nest pas BCNF
! Drinkers nest pas en BCNF cause de: manf->manfAddr .
(prendre lune des deux DF Au choix)
7 8 9
Dcomposer R
Dcomposition en BCNF Schma de la Dcomposition
en suivant X -> B
!Donne: une relation R avec des DF F. R1
! Remplacer R par deux relations
!Chercher les DF X ->B
dont les attributs sont:
telles que X ne soit pas une cl
1. R1 = X +. R-X + X X +-X
" Si R pas BCNF, il y en a au moins une.
2. R2 = R (X + X ).
!Calculer X +.
! Projeter les DF sur ces schmas R2
" Qui ne contient pas tous les attributs, sinon
X serait une cl. (attention! cest la clture de F, R
Cl(F), quon projette sur R1 et R2
10 11 12

Exemple
Exemple, suite Exemple, suite
Drinkers(name, addr, beersLiked, manf, favBeer)
F = name->addr, ! Il faut maintenant voir si Drinkers1 et ! Pour Drinkers2(name, beersLiked, manf), la
name -> favBeer, Drinkers2 sont en BCNF seule DF est beersLiked->manf,
beersLiked->manf ! Projection des DF assez facile pour ce cas et la seule cl est {name, beersLiked}.
! Trouver une DF qui fait que Drinkers nest pas particulier -- calcul de la clture Cl(F) " Pas BCNF, on recommence.
en BCNF: name->addr. ! Pour Drinkers1(name, addr, favBeer), ! beersLiked+ = {beersLiked, manf},
! Clture des attributs de gauche: les DF pertinentes sont name->addr on dcompose Drinkers2 en:
{name}+ = {name, addr, favBeer}. et name->favBeer. 1. Drinkers3(beersLiked, manf)
! On obtient deux relations: " {name} est la seule cl et Drinkers1 est en BCNF. 2. Drinkers4(name, beersLiked)
1. Drinkers1(name, addr, favBeer)
2. Drinkers2(name, beersLiked, manf) 13 14 15

Exemple, fin 3e Forme Normale - Motivation


3e Forme Normale 3NF
! Il y a des DF qui posent problme quand on
! Dcomposition de Drinkers :
dcompose
1. Drinkers1(name, addr, favBeer) AB ->C
2. Drinkers3(beersLiked, manf) C ->B.
3. Drinkers4(name, beersLiked) " Exemple (Paris, Marseille, Lyon, Rennes, )
! Remarque: A = adresse,
Motivation B = ville,
" Drinkers1 parle des personnes, C = code postal.
Dcomposition
" Drinkers3 parle des bires, ! IL y a deux cls, {A,B } et {A,C }.
" Drinkers4 relation entre personnes et bires ! C ->B contredit BCNF,
il faudrait dcomposer en AC, BC.
16 17 18
Une DF non prserve
On ne peut pas garder les DF 3NF: vite ce problme
Ville Code postal Adresse Code postal

!Si dcomposition AC et BC Paris 75005 80, Bd St-Germain 75005 ! 3e Forme Normale (3NF) assouplit la condition
on ne peut pas retrouver AB ->C Paris 75006 80, Bd St-Germain 75006 de BCNF pour ne pas dcomposer dans ce cas.
partir des DF projetes. ! Un attribut est dit premier
Adresse Ville Code postal
sil fait partie dune cl minimale.
!Exemple avec 80, Bd St-Germain Paris 75005
! Une relation nest pas en 3NF
A = adresse, 80, Bd St-Germain Paris 75006
ssi on peut trouver une DF X ->A
B = ville, telle que X nest pas une cl
C = code postal Bien que toutes les DF soient vrifies et A ne fait pas partie dune cl minimale.
sur le transparent suivant. dans chacune des tables,
la DF adresse ville -> code_postal nest pas respecte.
19 20 21

Dcomposition SPI
Exemple
Dcomposition SPI Sans Perte dInformation
!Dans notre exemple avec les DF R(A1,,An)
Dcomposition de R suivant
AB ->C et C ->B, X1,,Xk ensembles dattributs ! {A1,,An}
les cls minimales sont AB et AC. Ri = "Xi (R) pour 1! i ! k
!Chaque attribut A, B, ou C est premier. (R)=R1 |X||X| Rk
Test pour SPI Jointure note |X|,
!Bien que C ->B contredise BCNF,
le schma A, B,C est en 3NF. Thorme de Heath
a-t-on: R=(R) ?

22 23 24

Dcomposition SPI Dcomposition SPI Dcomposition SPI


Quelques proprits: ! R(A,B,C,D,E) ! Dcomposition:
A B C D E
! Dpendances ! X1=AD
1. (R)=R1 |X||X| Rk # R
fonctionnelles: ! X2=AB
X1 A1 B12 B13 A4 B15
2. "Xi((R))=Ri ! A -> C ! X3=BE
! X4=CDE
3. ((R))=(R)
! B->C X2 A1 A2 B23 B24 B25
! C->D ! X5=AE
! DE->C X3 B31 A2 B23 B24 B25
Dmonstration au tableau de 1. ! CE->A
X4 B41 A2 B33 B34 A5
X5 A1 B52 B53 B54 A5
25 26 27
Dcomposition SPI Dcomposition SPI Dcomposition SPI
!Thorme de Heath:
Remplir la table Si la ligne A1..An napparat pas,
on a une relation qui satisfait les DFs
une dcomposition en X1 et X2 est SPI
Forcer les galits jusqu ce que les DF soient vraies et A1..An est dans la jointure des projections ssi
Si une ligne est A1..An dcomposition SPI mais pas dans R " (X1$X2)->X1-X2
Sinon, il ny a pas de perte dinformation, ou
Sinon, il y a perte dinformation, c.--d. (R) % R
c.--d. (R) = R " (X1$X2)->X2-X1
(explication au tableau)
!Application du test prcdent

28 29 30

Dcomposition 3NF SPI


et sans perte de DF Dcomposition 3NF Dcomposition 3NF
! Calculer une couverture minimale ! Correction de la dcomposition:
! DF prserves, OK
! Crer une table par DF + une par attribut isol
! Si pb avec X->A dans YB (de Y->B)
" Le rsultat est 3NF " A=B
! Si on veut une dcomposition SPI ajouter il faut X pas cl donc X strictement inclus Y
X->A peut remplacer Y->B
Algo de base une table avec les attributs dune cl minimale couverture pas minimale
" Dcoule du test SPI " A"B
Raffinement soit Z cl minimale de YB incluse dans Y
A pas dans Z car A premier et Z cl de YB
Z->B et Z strictement inclus dans Y
couverture pas minimale

31 32 33

Dcomposition efficace en
Dcomposition 3NF BCNF SPI Quelques proprits
Le premier algo donn
! C->P impose de calculer les projections des DFs,
Prop. 1

! HP->S et donc leur clture ce qui est coteux.


Si on dcompose R en R1R2.Rk SPI
! HE->S On peut faire mieux et si on dcompose R1 en S1 et S2 SPI
! HS->C alors la dcomposition de R en
S1S2 R2.Rk est SPI
! CE->N
! HC->P Raison: la jointure est associative.

34 35 36
Quelques proprits Quelques proprits Quelques proprits
Prop. 2 Explication Prop. 2 Prop. 3

Toute schma deux attributs est BCNF pas BCNF cause de X-> A SI
Si R nest pas BCNF alors ! on projette un ensemble de DF F (sa clture)
il existe des attributs A et B tels que Si pas dautres attributs que X et A, X cl. sur R1!R et quon obtient G
(R-AB) -> A
Donc il existe B tq
! et si on projette G (sa clture) sur R2!R1
Rciproque fausse: R-AB->X (rflexivit)
R(A,B,C) X->A ALORS
C->A et donc (R-AB)->X On obtient la mme chose que si on projette F (sa
C->B clture) sur R2
ABC-AB->A et pourtant R est BCNF 37 38 39

Algo dcomposition BCNF SPI Algo dcomposition BCNF SPI Algo dcomposition BCNF SPI
Correction de lalgo:
Z:le schma dcomposer ! Cours ! C->P
! Heure ! HP->S Le schma extrait est BCNF (Prop. 2)
Init: Y:=Z
Pour chaque paire dattributs A B ! Salle ! HE->S
si Y-AB->A ! Prof ! HS->C On dcompose Z en XA et Z-A avec X->A
faire Y:=Y-B et C:=A ! Etudiant ! CE->N (pas de perte par jointure, th; de Heath)
Si aucune paire ne marche ou si |Y|=2 ! Note
Y est BCNF La combinaison des dcomposition SPI est SPI
Dcomposer Z en Y et Z-C. (Prop. 1)
Attention les DFs ne sont pas conserves
Recommencer avec Z-C. 40 41
Les X+ sont calculs avec F (Prop. 3) 42

Algo dcomposition BCNF SPI Proprits de 3NF et de BCNF


Peut dcomposer un schma dj en BCNF Comparaison 3NF BCNF
! Il y a deux proprits importantes des
Identifiant dcompositions:
Nom 1. Dcomposition SPI: Sans perte dinformation : on
Dpartment peut projeter la relation de dpart sur chacine des
Salaire composantes et reconstruire la relation de dpart.
Dcompositions 2. Prservation des dpendances fonctionnelles :
I->N sans perte dinformation on peut vrifier dans les relations projetes que les
I->D dpendances originales sont prserves.
I->S avec prservation des DF

Dcompos en IN, ID, IS mais dj BCNF! 43 44 45


3NF et BCNF, fin
! On peut toujours mettre en BCNF sans perte
dinformation.
! On peut toujours mettre en 3NF
" Sans perte dinformation
" En prservant les Dpendances Fonctionnelles
! Par contre il ny a pas toujours de forme BCNF
sans perte dinformation et sans perte de
dpendance fonctionnelle
" Adresse rue ville est un exemple.

46

Você também pode gostar