Title: Formes Normales
1Formes Normales
2Objectifs
- Illustrer les redondances dans le stockage de
linformation - Introduire les dépendances fonctionnelles comme
outil pour identifier les problèmes de
redondance et y apporter des solutions - Introduire la décomposition en formes normales
(normalisation) comme solution aux problèmes de
redondance de linformation - Introduire la normalisation comme une des étapes
du design des base de données
3Les problèmes de la Redondance
- La redondance est à la base de beaucoup de
problèmes associées avec les schémas
relationnels - Stockage redondant, anomalies dinsertion,
deffacement et de changement - Les contraintes dintégrité, en particulier les
dépendances fonctionnelles, peuvent être
utilisées pour identifier les problèmes et
suggérer des solutions. - Solution décomposition (remplacement dune
relation par des relations plus petites). - La décomposition devrait être utilisée
judicieusement - Y-a-t-il une raison valable pour décomposer?
- Quels problèmes sont causes par la décomposition?
4Dépendances Fonctionnelles (DFs)
- Notation
- R schéma relationnel r instance de R
- X, Y sous ensemble dattributs de R
- Il existe une dépendance fonctionnelle entre X et
Y (X ? Y) sur une relation R si, pour chaque
instance permise r de R, le fait suivant est
valide - t1 r, t2 r, (t1) (t2)
implique (t1) (t2) - i.e., étant donne deux tuples dans r, si les
valeurs X sont les mêmes, alors les valeurs Y
doivent aussi être les mêmes. - K est une candidate clé pour une relation R si K
? R - Cependant K ? R ne requiert pas que K soit
minimal! - Lectures possible pour X ? Y
- X détermine Y
- Y dépend fonctionnellement de X
5Exemple de Dépendance Fonctionnelle
- Considérez la relation suivante
- Hourly_Emps (ssn, name, lot, rating, hrly_wages,
hrs_worked) - Notation Cette relation sera notée en donnant
la liste de ses attributs SNLRWH (En réalité,
il sagit de lensemble dattributs
S,N,L,R,W,H). - Parfois, nous nous référerons à tous les
attributs dune relation en utilisant le nom de
la relation (p.ex. Hourly_Emps au lieu de
SNLRWH) - Quelques DFs sur Hourly_Emps
- ssn est la clé S SNLRWH
- rating détermine hrly_wages R W
6 Exemple (Suite)
Wages
Hourly_Emps2
- Problèmes causés par R ? W
- Anomalie de modification Peut-on changer W
juste dans le 1er tuple de SNLRWH? - Anomalie dinsertion Toute insertion demployé
dont on ne connait pas le salaire horaire est
problématique. - Anomalie deffacement Tout effacement de tous
les employés ayant un niveau 5 entraine la perte
de linfo sur le salaire associé avec le niveau
5. - Solution introduire 2 tables plus petites
7Raisonnement avec les DFs
- Etant données des DFs, on peut inférer dautres
DFs - ssn did, did lot implique ssn
lot - Une DF f est impliquée par un ensemble de DFs F
si f est valide chaque fois que toutes les DFs
dans F sont valides. - fermeture (closure) de F ensemble de
toutes les DFs impliquées par F. - Axiomes dArmstrong (X, Y, Z sont des ensembles
dattributs) - Réflexivité X Y ? Y X
- Augmentation X Y ? XZ YZ
pour tout Z - Transitivité If X Y et Y Z ?
X Z - Ces axiomes sont des règles dinférence correctes
et complètes.
8Raisonnement avec DFs (Suite)
- Règles additionnelles (impliquées par les
axiomes) - Union X Y et X Z ? X
YZ - Décomposition X YZ ? X Y et
X Z - Exemple Contracts(cid,sid,jid,did,pid,qty,valu
e) - C est la clé C CSJDPQV
- Un projet achète chaque pièce en usant dun seul
contrat JP C - Un département achète tout au plus 1 pièce dun
fournisseur SD P - JP C, C CSJDPQV ? JP
CSJDPQV (Trans.) - SD P ? SDJ JP (Augm.)
- SDJ JP, JP CSJDPQV ? SDJ
CSJDPQV (Trans.)
9Raisonnement avec les DFs (Suite)
- Calculer la fermeture dun ensemble DFs peut
couter cher. (La taille de la fermeture est
exponentielle) - Si par contre, nous voulons simplement vérifier
si une DF donnée X Y est dans la fermeture
dun ensemble de DFs F, nous pouvons le faire de
manière efficiente comme suit - Calculer la fermeture des attributs de X
(dénotée par ) par rapport à F - Ensemble de tous les attributs A tels que X
A est dans - Il existe un algorithme linéaire pour faire ce
calcul (Voir page 614) - Vérifier si Y est dans
- F A B, B C, C D E
impliquent A E? - i.e, A E est-elle dans la fermeture de
? Ce qui veut dire E est-elle dans ?
10Formes Normales
- Lorsque nous avons obtenu un schéma relationnel,
lon doit décider si ce schéma est un bon design
ou pas. Si ce nest pas un bon design, une
décomposition en des schémas plus petits
simpose. - Une telle décomposition permet dévacuer des
anomalies éventuelles et obtenir un bon design. - Certaines forme normales (BCNF, 3NF etc.) sont
connues comme éliminant ou diminuant certaines
anomalies spécifiques. - Ainsi donc, lon décomposera le schéma
relationnel en une forme normale selon le type
danomalie que lon veut éviter. - Afin dapprécier le rôle des DFs dans la
détection des redondances, considérez une
relation R avec 3 attributs ABC. - Si ABC na aucune DF, aucune redondance nest
possible. - Si A ? B plusieurs tuples peuvent avoir la
même valeur de A et ces dernières auront la même
valeur de B.
11Forme Normale de Boyce-Codd (BCNF)
- Une relation R avec les DFs F est en BCNF si pour
tous les DFs X A dans - A X (DF trivial), ou
- X contient une clé pour R.
- En dautres termes, R est en BCNF si les seules
DFs non-triviales qui sont valides sur R sont
les contraintes de clé primaire. - Supposez que X ? A soit valide sur XYA
- Si linstance ci-contre est en BCNF, les 2 tuples
- doivent être identiques (puisque X est la
clé). - Ainsi, y1 y2 et le deuxième tuple aura
- a comme valeur de A.
-
12Troisième Forme Normale (3NF)
- Une relation R avec les DFs F est en 3NF si pour
tous les DFs X A dans - A X (DF trivial), ou
- X contient une clé pour R, ou
- A fait partie dune clé.
- La contrainte de minimalité de la clé est
cruciale dans la 3ème condition ci-dessus (Ce
nest pas suffisant si A fait partie dune
superclé)! - Si R est en BCNF, elle est aussi en 3NF.
13Troisième Forme Normale (Suite)
- Si 3NF est violée par X A, cela peut être
due à lune des raisons suivantes - X est un sous-ensemble dune clé K (Dépendance
partielle). - Nous devrons stocker des valeurs (X, A)
redondantes . - Ex. Reserves SBDC, S ? C.
- X nest pas un sous-ensemble propre dune clé
(Dépendance transitive). - Il y a une chaine de DFs K X A .
- Nous ne pouvons pas associer une valeur de X avec
une valeur de K sans en même temps associer une
valeur de A avec X. - Ex. Hourly_Emps SNLRWH, S ? SNLRWH , R ? W.
- Une relation en 3NF peut toujours avoir des
problèmes. - P.ex., Reserves SBDC, S C, C S
est en 3NF (car BDC est aussi une clé pour
Reserves), mais la même paire (S,C) est quand
même stockée pour toute réservation faite par le
navigateur S. - Ainsi donc 3NF est un compromis par rapport a
BCNF.
14Décomposition dun Schéma Relationnel
- Supposez que la relation R contient les attributs
A1 ... An. Une décomposition de R consiste en un
remplacement de R par 2 ou plusieurs relations
telles que - Chaque nouvelle relation contient un
sous-ensemble des attributs de R (et ne contient
aucun attributs napparaissant pas dans R). - Chaque attribut de R apparait comme un attribut
de lune des nouvelles relations. - Intuitivement, décomposer R signifie stocker des
instances des relations produites par la
décomposition en lieu et place de linstance de
R. - Exemple SNLRWH gt SNLRH et RW.
15Exemple de Décomposition
- Nutiliser les décompositions quen cas de
nécessité. - SNLRWH avec les DFs S SNLRWH et R
W - La 2ème DF cause une violation de la 3NF les
valeurs de W sont associées avec R de manière
répétée. Solution créer une nouvelle relation
RW pour stocker ces associations et enlever W du
schéma principal - i.e., décomposer SNLRWH en SNLRH et RW
- Linformation originale à stocker consiste en des
tuples de SNLRWH. - Si nous ne stockons maintenant que des
projections des tuples de SNLRWH sur SNLRH et
RW, quelles nouveaux problèmes apparaissent ?
16Problèmes Causés par les Décompositions
- Trois problèmes potentiels sont à considérer
- (1) Certaines requêtes deviennent trop chères.
- P.ex. Combien dargent le navigateur Joe a-t-il
gagné? (salary WH) - (2) Etant donné des instances des relations
décomposées, nous pourrions ne pas être en mesure
de reconstruire les instances correspondantes
originales de la relation! - Lexemple SNLRWH na pas ce problème.
- (3) Vérifier certaines DFs pourrait requérir de
faire un join des instances des relations
décomposées. - Lexemple SNLRWH na pas ce problème.
- Compromis Considérer ces problèmes en rapport
avec la redondance.
17Décomposition à Join sans Perte
- Une décomposition de R en X et Y est dite à join
sans perte (lossless-join ) par rapport à un
ensemble F de DFs si pour toute instance r qui
satisfait F - (r) (r) r
- Il est toujours vrai que r (r)
(r) - En général, lautre direction nest pas toujours
satisfaite! Si elle lest, alors la
décomposition est dite à join sans perte. - Il est essentiel que toutes les décompositions
utilisées pour traiter la redondance aient cette
propriété! (Lon évite ainsi le problème (2) au
transparent précédent.)
18Décomposition à Join sans Perte (Suite)
- La décomposition de R en X et Y est à join sans
perte par rapport à F ssi la fermeture de F
contient - X Y X, ou
- X Y Y
- I.e. lintersection contient une clé de lune des
2 relations X et Y. - Ex. SNLRWH R ? W gt
- SNLRH RW R ? W
- Si U V est valide sur R et lintersection
de U et V est vide, la décomposition de R en UV
et R - V est à join sans perte.
19Décomposition Préservant les Dépendances
- Ex. CSJDPQV, C est une clé, JP C et SD
P. - Décomposition en BCNF CSJDQV et SDP
- Problème JP C requiert un join!
- Décomposition préservant les dépendances
(Intuition) - Si R est décomposée en X, Y et Z, et nous devons
nous assurer que les DFs qui sont valident sur X,
Y et Z séparément fassent en sorte que toutes les
DFs qui étaient valides sur R le soient toujours.
(Lon évite ainsi le Problème (3).) - Projection des DFs de F sur X Si R est
décomposée en X, ..., la projection de F sur X
(dénotée FX ) est lensemble des DFs U
V dans F telles que tous les attributs de U et V
sont dans X.
20Décomposition Préservant les Dépendances (Suite)
- La décomposition de R en X et Y préserve les
dépendances si (FX union FY ) F - i.e., si nous ne considérons que les dépendances
dans la fermeture de F qui peuvent être
vérifiées dans X sans considérer Y et dans Y
sans considérer X, ces dernières implique
toutes les dépendances dans F . - Ci-haut, il est important de considérer F , pas
F - ABC, A B, B C, C A, décomposée
en AB et BC. - Préserve-t-on les dépendances ici? C A
est-elle préservée ????? - La préservation de la dépendance nimplique pas
la propriété de join sans perte Voir exemple
ci-haut. - Et vice-versa!
21Normalisation Décomposition en BCNF
- Considérer la relation R avec les DFs F. Si X
Y viole BCNF, décomposer R en R - Y et XY. - Répéter lapplication de cette idée jusqua
lobtention dune collection de relations qui
sont en BCNF - Garantie de décomposition à join sans perte et de
terminaison. - Ex. CSJDPQV, cle C, JP C, SD P,
J S - Pour traiter SD P, décomposer en SDP,
CSJDQV. - Pour traiter J S, décomposer CSJDQV en JS
et CJDQV - En général, plusieurs dépendances peuvent causer
des violations de BCNF. Lordre de traitement
conduit à des résultats différents.
22BCNF et Préservation des Dépendances
- En général, une décomposition en BCNF qui
préserve les dépendances nest pas toujours
possible. - Ex. SBD, SB D, D B
- SBD nest pas en BCNF car D nest pas une clé
Une décomposition éventuelle ne préserverait pas
SB ? D. - De même, la décomposition de CSJDQV en SDP, JS et
CJDQV ne préserve pas les dépendances
(Avec les DFs JP
C, SD P and J S).
Cependant, elle est à join sans perte. - Dans ce cas, ajouter JPC à la collection des
relations nous donnera une décomposition qui
préserve la dépendance.
23Normalisation Décomposition en 3NF
- En principe, lalgorithme pour la décomposition
en BCNF vu plus haut pourrait être utilisé pour
obtenir une décomposition en 3NF garantissant la
propriété de join sans perte (On stoppera souvent
plutôt de toute évidence). - Cette approche ne garantie cependant pas la
préservation de la dépendance. - Solution Utiliser la couverture minimale de F
au lieu de F.
24 Couverture Minimale dun Ensemble de DFs
- G est une Couverture Minimale de lensemble F de
DFs ssi - Fermeture de F Fermeture de G.
- Toute DF de G est de la forme X?A (A est un
attribut). - Tout effacement dune DF de G change la fermeture
de G. - Intuitivement, chaque DF dans G est nécessaire et
est aussi petit que possible pour obtenir la
même fermeture que F. - Ex. A B, ABCD E, EF GH,
ACDF EG a la couverture minimal suivante - A B, ACD E, EF G et EF
H - Couverture minimale ? join sans perte et
préservation des dépendances.
25Algorithme de transformation en 3NF
- Algorithme
- Input une relation R, un ensemble F de DFs
- Transformer F en une Couverture Minimale G en
utilisant lalgorithme en page 626 du livre RG. - Utiliser lalgorithme donné au transparent 21
avec G et R comme input pour obtenir une
décomposition à join sans perte de R en une
collection de relations R1, , Rn qui sont toutes
en 3NF. - Pour chaque FD X?A qui nest pas préservée, créer
une relation XA et lajouter a la collection des
relations R1, , Rn.
26Exemple de transformation en 3NF
- Relation CSJDPQV DFs JP?C, SD?P, J?S
- (0) Lensemble des DFs est déjà une couverture
minimale. - (1) Puisque SD?P viole 3NF, décomposer CSJDPQV en
CSJDQV et SDP en utilisant SD?P. - (2) Puisque CSJDQV nest pas en 3NF et que cela
est due à J?S, décomposer CSJDQV en CJDQV et JS
en utilisant J?S. - (3) Remplacer CSJDPQV par SDP, JS et CJDQV qui
sont toutes en 3NF et sont toutes à join sans
perte. - (4) SDP, JS et CJDQV ne préservent cependant pas
la DF JP?C. On ajoute JPC a notre collection
obtenue a létape (3) ci-dessus. - (5) Le résultat final est SDP, JS, CJDQV, JPC.
27Résumé
- Une relation qui est BCNF est exempte de toute
redondance détectable via les DFs. Doù, il est
désirable de transformer toutes les relations en
BCNF. - Si une relation nest pas en BCNF, nous pouvons
essayer de la décomposer en une collection de
relations en BCNF. - On doit sassurer que toutes les DFs sont
préservées. Si une décomposition en BCNF qui est
à join sans perte et qui préserve les dépendances
nest pas possible (ou nest pas souhaitable Ã
cause des requêtes typiques existantes), lon
devrait considérer une décomposition en 3NF. - Les décompositions devraient être faites en ayant
les exigences de performance (des requêtes) a
lesprit.