1 Décomposition sans perte d`information
Transcription
1 Décomposition sans perte d`information
1 Décomposition sans perte d’information La décomposition de schémas est pour but d’éviter les redondances de données. Cependant, lors de la recherche d’information, il est souvent nécessaire de recomposer les tables stockées pour retrouver les informations dans les tables d’origine. Cette opération est non seulement coûteuse, mais peut avoir plusieurs problèmes, par exemple le problème de perte d’information. Considérons l’exemple suivant. EXEMPLE 1 Soit l’univers U = ABC et une relation u sur U . Considérons la décomposition de u en deux relations r et s, respectivement sur AB et BC, par la projection. u: A a a0 a B b b b C c c c0 r: A a a0 B b b s: B b b C c c0 Figure 1: Relation u et sa décomposition en relations r et s La recomposition des deux relations sur AB et BC, par la jointure, resulte la relation u0 : u0 : A a a0 a a0 B b b b b C c c c0 c0 Figure 2: Relation u0 obtenue par la jointure de r et s Il est clair que u0 6= u: on n’obtient pas l’information de la relation d’origine u. Définition 1 (Décomposition) Soit u une relation sur l’univers U . • Un schéma de base S = {R1 , ..., Rk } est une décomposition de U ssi U = R1 ∪ ... ∪ Rk . Bases de Données - V. Phan Luong 1 • La décomposition de u en relations ΠR1 (u), ..., ΠRk (u) est sans perte d’information (SPI) si ΠR1 (u) ./ ..., ./ ΠRk (u) = u. • Soit F un ensemble de DFs définies sur U . Le schéma de base S est une décomposition SPI de U , par rapport à F , ssi ∀u ∈ Sat(F ), ΠR1 (u) ./ ..., ./ ΠRk (u) = u. Nous considérons le problème de vérification si un schéma de base S = {R 1 , ..., Rk } est une décomposition SPI de U , par rapport à un ensemble F de DFs. D’après une propriété de la jointure, il est toujours vrai que u ⊆ ΠR1 (u) ./ ..., ./ ΠRk (u). Donc, pour résoudre le problème, il suffit de vérifier si ΠR1 (u) ./ ..., ./ ΠRk (u) ⊆ u. Supposons que U = A1 ...An . Soit t = (a1 , ..., an ) un n-uplet dans ΠR1 (u) ./ ..., ./ ΠRk (u). Alors t[R1 ] ∈ ΠR1 (u), ..., t[Rk ] ∈ ΠRk (u). Pour 1 ≤ i ≤ k, t[Ri ] ∈ ΠRi (u) ssi il existe q ∈ u tel que t[Ri ] = q[Ri ]. En supposant que Ri = Ai1 ...Aij , où j est la cardinalité de Ri . On doit avoir q(Ai1 ) = t(Ai1 ), ..., q(Aij ) = t(Aij ). Bases de Données - V. Phan Luong 2 Pour tout A ∈ U , tel que A 6= (Ai1 ), ..., A 6= (Aij ), on ne sait pas si q(A) = t(A). Si l’on peut montrer qu’il existe un tel q tel que pour tout A ∈ U , q(A) = t(A), alors t = q, d’où t ∈ u, et donc ΠR1 (u) ./ ..., ./ ΠRk (u) ⊆ u. Méthode de poursuite La vérification de décomposition sans perte d’information en présence de dépendances fonctionnelles peut être réalisée avec un tableau appelé un tableau de poursuite. Chaque colonne du tableau a pour entête un attribut de U . Pour chaque schéma R i ∈ S, une ligne qi est établit pour le tableau, telle que si Ri = Ai1 ...Aij alors, • q(Ai1 ) = t(Ai1 ) = ai1 , ..., q(Aij ) = t(Aij ) = aij , et • Pour tout A ∈ U , tel que A 6= (Ai1 ), ..., A 6= (Aij ), q(A) = xh , où h est un indice n’est jamais utilisé pour indexer x dans le tableau. Les aim , 1 ≤ m ≤ j, sont appelés les constantes, et les symboles xh sont appelés les variables. Dans ce tableau, on répète les actions suivantes, jusqu’à ce qu’une ligne soit remplie par des constantes ou le tableau ne change plus. Soient q1 et q2 deux lignes du tableau. Pour chaque DF X → Y de F , si q1 [X] et q2 [X] sont identiques sur tous les attributs de X, alors pour chaque A ∈ Y , 1. Si q1 (A) est une constante et q2 (A) est une variable (ou inversement), alors remplacer la variable par la constante. 2. Si q1 (A) = xg et q2 (A) = xh sont des variables telles que g < h, alors remplacer xh par xg . Lorsque la répétition termine, si une ligne du tableau est remplie avec des constantes, ce qui veut dire que t = q ∈ u, alors la décomposition est SPI. Sinon, on n’a pas de conclusion: La conclusion dépend d’autres choses, par exemple d’autres contraintes de données différentes de DFs, ou dépend de domaines des attributs. Bases de Données - V. Phan Luong 3 EXEMPLE 2 Soit l’univers U = ABCDEF et F = {A → B, B → C, C → D, E → D, D → A}. Soit S = {ABE, AD, BEF, CEF }. Le tableau de poursuite initial est dans la figure 3. Le résultat de la première répétition est dans la figure 4. Les constantes obtenues par les remplacements sont notées par les caractères du texte normal. La deuxième étape de répétition résulte le tableau dans la figure 5. Les constantes obtenues dans cette étape, par les remplacements sont noées par les caractères gras. La dernière ligne du tableau est remplie par les constantes. Donc, la poursuite s’arrête et on conclut que la décomposition est SPI. A ABE a AD a BEF x8 CEF x11 B b x4 b x12 C x1 x5 x9 c D x2 d x10 x13 E e x6 e e F x3 x7 f f Figure 3: Tableau de poursuite: état d’initialisation ABE AD BEF CEF A B a b a b a b a x12 C x1 x1 x1 c D d d d d E e x6 e e F x3 x7 f f Figure 4: Tableau de poursuite: première étape de répétition ABE AD BEF CEF A B a b a b a b a b C c c c c D d d d d E e x6 e e F x3 x7 f f Figure 5: Tableau de poursuite: deuxième étape de répétition EXEMPLE 3 Soit l’univers U = ABC et F = {}. Soit S = {AB, BC}. Le tableau de poursuite initial est dans la figure 6. Dès la première répétition il n’y a pas de Bases de Données - V. Phan Luong 4 changement, car F est vide. Donc, la poursuite s’arrête, et on n’a pas de conclusion sur la propriété SPI de la décomposition. Maintenant, supposons que l’ on dispose d’autres informations sur les contraintes de données. Par exemple, • Si le domaine de A est un singleton A = {a}. Alors la variable x2 ne peut pas prendre d’autres valeurs que a, c’est-à-dire, x2 est forcément égale à a. Donc, La décomposition est SPI. • Ou, si dom(A) = {a, a0 } et dom(C) = {c, c0 }, alors en choissant x1 = c0 et x2 = a0 on obtien une relation u = {(a, b, c0 ), (a0 , b, c)} qui satisfait F (évidemment), et ΠAB (u) ./ ΠBC (u) 6⊆ u. Donc, la décomposition S = {AB, BC} n’est pas SPI, par rapport à F . ABE AD A a x2 B b b C x1 c Figure 6: Tableau de poursuite de l’exemple 3 Théorème 1 Soit S = {R1 , R2 } une décomposition de U . Soit F un ensemble de DFs définies sur U . Si F ` R1 ∩ R2 → R1 − R2 ou F ` R1 ∩ R2 → R2 − R1 , alors S est SPI. Théorème 2 Soit S = {R1 , R2 , ..., Rn } une décomposition SPI de U par rapport à F , un ensemble de DFs définies sur U . Si {S1 , Z2 } est une décomposition SPI de R1 , par rapport à F , alors S 0 = {Z1 , Z2 , R2 , ..., Rn } est une décomposition SPI de U par rapport à F . 2 Décomposition sans perte de dépendances Soit F un ensemble de DFs définies sur l’univers U , et u une relation sur U . Supposons que pour des raisons de redondances de données, on décompose U en un ensemble de Bases de Données - V. Phan Luong 5 schémas S = {R1 , R2 , ..., Rn }, tel que S est une décomposition SPI de U par rapport à F . Ainsi u est décomposée en relations ΠRi (u), 1 ≤ i ≤ n, telle que u = ΠR1 (u) ./ ..., ./ ΠRn (u). Les données de la base seront stockées dans les relations ΠR1 (u), ..., ΠRn (u). Comment vérifier si ces données satisfont les DFs de F ? Ces données sont théoriquement les données de u. Donc, une méthode de vérification est de recomposer u par la jointure ΠR1 (u) ./ ..., ./ ΠRn (u), et vérifier la satisfaction dans u. Cependant, la jointure est coûteuse. Peut-on éviter la recomposition, c’est-à-dire, vérifier la satisfaction de DFs localement dans chaque relation ΠRi (u), 1 ≤ i ≤ n et conclure la satisfaction de DFs globalement dans u. Définition 2 (Décomposition SPD) Une décomposition S est sans perte de dépendances, par rapport à F , s’il existe G ⊆ F + tel que • pour toute X → Y ∈ G, ∃Ri ∈ S : XY ⊆ Ri , et • G+ = F + . Définition 3 Soit F un ensemble de DFs définies sur un univers U . • Soit R ⊆ U . Une DF X → Y est applicable sur R si XY ⊆ R. • FR = {X → Y ∈ F + | XY ⊆ R}. • Soit S = {R1 , ..., Rn }. Alors FS = FR1 ∪ ... ∪ FRn . EXEMPLE 4 Soit U = ABCDE, F = {A → BC, C → A, A → D, D → E, A → E}, et S = {ABC, BCD, DE}. Les DFs de FABC sont d’abord toutes les DFs X → Y de F telles que XY ⊆ ABC, c’est-à-dire, A → BC, C → A. Ensuite, on inclut dans FABC les DFs X → Y dérivées Bases de Données - V. Phan Luong 6 de F , telles que XY ⊆ ABC. Par exemple, C → B. Notons que C → B peut aussi être dérivée de A → BC et C → A. Avec des remarques similaires, on peut montrer que FABC = {A → BC, C → A}+ FBCD = {C → B, C → D}+ FDE = {D → E}+ Ainsi, FS = {A → BC, C → A, C → B, C → D, D → E}+ . On remarque que {A → BC, C → A}, {C → B, C → D}, et {D → E} sont respectivement les couvertures minimales de FABC , FBCD , et FDE . En général, le calcul de FS n’est pas une tâche simple. Cependant, FS est un ensemble G à retrouver pour la définition 2. Théorème 3 Soit S = {R1 , R2 , ..., Rn } une décomposition de U , par rapport à F , un ensemble de DFs définies sur U . S est SPD par rapport à F , ssi FS+ = F + . Preuve. Supposons que S est SPD par rapport à F . D’après la définition 2, il existe G ⊆ F + tel que • pour toute X → Y ∈ G, ∃Ri ∈ S : XY ⊆ Ri , et • G+ = F + . Donc, G ⊆ FS , et donc G+ ⊆ FS+ . Or FS+ ⊆ F + et G+ = F + . Donc, F + ⊆ FS+ ⊆ F + D’où, FS+ = F + . Maintenant, supposons que FS+ = F + . Pour montrer que S est SPD par rapport à F , d’après la définition 2, on peut prendre G = FS . Bases de Données - V. Phan Luong 7 D’après la définition de FS , théoriquement son calcul demande le calcul de F + , dont la cardinalité peut être exponentiel par rapport au nombre d’attributs figurés dans F . Cependant, nous pouvons remarquer, avec l’exemple 4, que l’on a besoin seulement de l’essentiel de FS . Algorithme SPD Entrée: Un univers U , un ensemble F de DFs et une décomposition S = {R1 , R2 , ..., Rn }. Sortie: Vrai si S est SPD, faux sinon. Méthode: spd = vrai; Tant que spd et il existe X → Y ∈ F non traitée faire Z = X; Répéter Pour i de 1 à n faire Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ); Jusquà ce que Y ⊆ Z ou Z ne change pas. Si Y 6⊆ Z alors spd = faux; Fait; Retourne spd; Fin. Dans l’algorithme, la fermeture (Z ∩ Ri )+ est calculée par rapport à F . Cependant, dans la boucle calculant Z = Z ∪ ((Z ∩ Ri )+ ∩ Ri ), l’algorithme calcule la fermeture de X par rapport FS . En effet, Z est initialisée à X. Dans une étape i de la boucle Pour, 1. Z ∩ Ri ⊆ Ri , + + 2. (Z ∩ Ri )+ = (Z ∩ Ri )+ F , donc Z ∩ Ri → (Z ∩ Ri ) ∈ F , 3. ((Z ∩ Ri )+ ∩ Ri ) ⊆ Ri , donc, Z ∩ Ri → (Z ∩ Ri )+ ∩ Ri ∈ FRi , et Bases de Données - V. Phan Luong 8 4. Z ∪ ((Z ∩ Ri )+ ∩ Ri : Z est augmenté par (Z ∩ Ri )+ ∩ Ri . Par les deux derniers points, on retrouve l’idée de l’algorithme Ferme, où F est remplacé par FR1 ∪ ... ∪ FRn . Théorème 4 L’algorithme SPD retourne vrai ssi S est SPD. EXEMPLE 5 Soit U = ABCD, F = {A → B, B → C, C → D, D → A}, et S = {AB, BC, CD}. Le tableau 7 donne l’exécution de l’algorithme SPD pour ces données. X→Y A→B B→C C→D D→A Ri AB BC AB BC CD AB BC CD AB BC CD AB BC CD AB BC Z A AB B AB ABC C C BC BCD D D D CD CD BCD BCD ABCD Z ∩ Ri A B B B C − C C (Z ∩ Ri )+ ABCD ABCD ABCD ABCD ABCD − ABCD ABCD (Z ∩ Ri )+ ∩ Ri AB BC AB BC CD − BC CD − − D − C CD B BC − − ABCD − ABCD ABCD ABCD ABCD − − CD − BC CD AB BC spd vrai vrai vrai vrai Figure 7: Exécution de l’algorithme SPD Donc, S = {AB, BC, CD} est une décomposition SPD de U , par rapport à F . Bases de Données - V. Phan Luong 9