Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSandrine Jourdain Modifié depuis plus de 10 années
1
1 Formes Normales Chapitre 19
2
2 Objectifs 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
3
3 Les 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?
4
4 Dé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
5
5 Exemple 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
6 Exemple (Suite) 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 Hourly_Emps2 Wages
7
7 Raisonnement 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.
8
8 Raisonnement 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,value ): 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.)
9
9 Formes 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.
10
10 Forme 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.
11
11 Troisiè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.
12
12 Dé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 ===> SNLRH et RW.
13
13 Exemple 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 ?
14
14 Problè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 = W*H) (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.
15
15 Dé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.)
16
16 Dé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 ===> 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.
17
17 Dé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 F X ) est lensemble des DFs U V dans F + telles que tous les attributs de U et V sont dans X.
18
18 Décomposition Préservant les Dépendances (Suite) La décomposition de R en X et Y préserve les dépendances si (F X union F Y ) + = 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!
19
19 Normalisation: 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.
20
20 Normalisation: 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.
21
21 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.
22
22 Algorithme 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 R&G. 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.
23
23 Exemple 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.
24
24 Ré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.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.