• Aucun résultat trouvé

Partie I Problématique et état de l'art

4.6 Les dépendances fonctionnelles dans les bases de données

4.6.4 Les détails techniques

Nous allons maintenant regarder en détail ce qu'est une dépendance fonctionnelle, an de voir si elle s'exprime par les mêmes calculs qu'une règle d'association.

Un exemple de table présente dans les schémas de bases de données

Pour cela nous reprenons un exemple du cours de M. Léonard [164]. D'après lui, les dé- pendances fonctionnelles "permettent aux concepteurs d'une structure de données de repé- rer les propriétés des objets qui jouent un rôle déterminant (un numéro de machine et une heure permettent de déterminer exactement une entité de l'emploi du temps)" Dans la rela- tion EmploiDuTemps(NoMachine, NoHeure, NoProduit, NoLot), la dépendance fonctionnelle NoMachine,NoHeure→NoProduit,NoLot exprime la contrainte "à une heure donnée, une ma- chine donnée fabrique un seul lot d'un même produit".

Appelons C cette contrainte, E, M, H, P et L les attributs EmploiDuTemps, NoMachine, NoHeure, NoProduit, NoLot et imaginons qu'on a saisi les données observées selon le tableau 4.6. E M H P L e1 m1 h1 p2 l1 e2 m1 h1 p2 l1 e3 m1 h1 p2 l1 e4 m1 h2 p1 l1 e5 m1 h2 p1 l1 e6 m2 h2 p3 l2 e7 m2 h2 p3 l2 e8 m3 h2 p2 l1 e9 m3 h2 p2 l1 e10 m3 h2 p2 l1

Tab. 4.6  Une table T en 22ème forme normale, avec la dépendance fonctionnelle MH→PL Dans cette table, on voit que la contrainte C qui est MH→PL est vériée car les 4 valeurs diérentes de MH qui sont m1h1, m1h2, m2h2 et m3h2 déterminent entièrement les valeurs de P et L qui sont respectivement p2l1, p1l1, p3l2 et p1l1. La table est en deuxième forme normale car elle est en première forme normale (chaque ligne a pour chaque attribut des valeurs simples, et non composites c'est-à-dire pour H, h1 ou h2, mais pas h1h2) et de plus les contraintes E→M, E→H, E→P et E→L sont assurées de par la dénition de E qui est une clé de la table. Par contre, elle n'est pas en troisième forme normale pour la raison suivante : il est possible de saisir une nouvelle ligne de données du moment que sa valeur de e est diérente de celle des autres. Si on choisit e11, m3, h2, p3, l2, e11 aura les mêmes valeurs que e9 pour M et H, mais pas pour P et L. La contrainte MH→PL n'est plus vériée. Donc si cette relation doit être respectée, la saisie de la ligne telle que nous la proposons est erronée. Il convient donc de l'interdire. Pour cela, on peut passer en troisième forme normale en découpant le tableau en deux tables comme indiqué dans le tableau 4.7.

Désormais la première table assure les contraintes E→M, E→H et la deuxième table ayant comme clé MH assure la contrainte MH→PL et on retrouve les deux contraintes E→P et E→L en appliquant des règles d'inférence sur le jeu des 3 règles {E→M, E→H, MH→PL}. En pratique,

E M H M H P L e1 m1 h1 m1 h1 p2 l1 e2 m1 h1 m1 h2 p1 l1 e3 m1 h1 m2 h2 p3 l2 e4 m1 h2 m3 h2 p2 l1 e5 m1 h2 e6 m2 h2 e7 m2 h2 e8 m3 h2 e9 m3 h2 e10 m3 h2

Tab. 4.7  La transformation en 33ème forme normale : T est remplacé par deux tables T1 et T2

les attributs M et H de la première et ceux de la seconde ne sont pas les mêmes, un lien entre les deux tables permet de passer des attributs M et H de la première à ceux de la seconde. Ainsi, on ne peut pas créer dans la première table un enregistrement de type e11, m3, h3 sans avoir ajouté une ligne dans la seconde commençant par m3, h3. La table sous cette forme permet de garder la cohérence de la structure.

La table modiée pour en extraire les règles d'association

Voyons le jeu de règles d'association extrait de cette table. Pour cela, il convient de remplacer chaque propriété par autant de propriétés qu'il y a de valeurs, exception faite de la propriété E. Celle-ci étant l'identiant de la table correspond aux sujets habituels des tableaux de données. Cela nous donne le tableau suivant :

sujets m1 m2 m3 h1 h2 p1 p2 p3 l1 l2 e1 1 0 0 1 0 0 1 0 1 0 e2 1 0 0 1 0 0 1 0 1 0 e3 1 0 0 1 0 0 1 0 1 0 e4 1 0 0 0 1 1 0 0 1 0 e5 1 0 0 0 1 1 0 0 1 0 e6 0 1 0 0 1 0 0 1 0 1 e7 0 1 0 0 1 0 0 1 0 1 e8 0 0 1 0 1 0 1 0 1 0 e9 0 0 1 0 1 0 1 0 1 0 e10 0 0 1 0 1 0 1 0 1 0

Tab. 4.8  Tableau T' de données booléennes correspondant à la table T

Dans le tableau T', on retrouve la dépendance fonctionnelle MH→PL sous la forme de 4 règles d'association exactes qui sont m1h1→p2l1, m1h2→p1l1, m2h2→p3l2 et m3h2→p2l1. Mais ces règles d'association ne sont pas les seules règles du jeu de règles exactes extrait de ce tableau. Il y en a beaucoup plus qui se déduisent toutes de la base lisible sur le diagramme simplié en gure 4.7du treillis de Galois associé à ce tableau.

4.6. Les dépendances fonctionnelles dans les bases de données

Fig. 4.7  Diagramme de Hasse et diagramme simplié du treillis des concepts du tableau T'

Et retrouver ces 4 règles parmi les autres nécessite qu'on soupçonne un lien entre MH et PL. Mais la découverte des 4 règles ne sut pas à nous l'assurer. En eet, il va ensuite falloir se convaincre que pour les 6 valeurs possibles du croisement des 3 valeurs de M et des 2 valeurs de H, il est normal qu'il n'y ait que 4 règles sur 6 dans le jeu de règles. C'est-à-dire que si aucune règle n'est apparue ayant en partie gauche m2h1 ou m3h1 et en partie droite une valeur du croisement de PL, c'est que ces deux motifs n'apparaissent jamais. On peut s'en assurer en vériant qu'on n'a pas les règles m2h1→∅ et m3h1→∅ pour autant qu'on fasse apparaître des règles avec ∅ dans le jeu fourni. On voit donc qu'on a beaucoup de mal à retrouver une dépendance fonctionnelle à partir d'un jeu de règles d'association. Cela vient en partie du fait qu'on n'a pas maintenu le lien entre toutes les variables créées à partir d'une même variable. Et la restauration après coup de ce lien détruit est nécessaire pour pouvoir extraire la dépendance fonctionnelle MH→PL du jeu de règles d'association.

Comparaison des deux formalismes sur cette table

Pour conclure, notons que les règles d'association exactes font découvrir des liens comme par exemple ici l'équivalence entre m2, p2 et l2, qui pourraient peut-être s'exprimer en dépendances fonctionnelles moyennant une restructuration de la base de données en d'autres tables, et d'autres variables, comme c'est le cas de la table T2 qui exprime la dépendance fonctionnelle MH→PL, mais que le passage des règles d'association aux dépendances fonctionnelles ne peut pas se faire directement, sans ajout de connaissance supplémentaire sur la base de données.

Dans la gure 4.8 on a représenté une dépendance fonctionnelle simple, et une règle d'asso- ciation simple, pour montrer leurs diérences structurelles. Dans le graphique de gauche, A a 5 modalités, qui sont a1, a2, a3, a4 et a5, et B a 3 modalités qui sont b1, b2, et b3. Au croisement de a1 et de b1, il y a 20 sujets, indiqués par un gros point, surmonté du nombre 20, et dans les autres croisements de a1 avec B, il n'y a aucun sujet, ce qu'on a indiqué par une croix surmontée du nombre 0. La dénition de la dépendance fonctionnelle exige que pour pour chaque modalité

Fig. 4.8  Une dépendance fonctionnelle et une règle d'association exacte

de A il y ait une seule modalité de B avec un nombre de sujets non nuls. Cela a pour conséquence que la classication des individus selon les diverses modalités de A est plus ne que celle selon les diverses modalités de B. Les 230 sujets se répartissent en 70 sujets pour lesquels la valeur de B est b1, 140 sujets pour lesquels elle est b2, et 20 sujets pour lesquels elle est b3. Puis les 70 sujets de la classe b1 se répartissent à leur tour en 20 sujets qui ont la valeur a1 de A et 50 qui ont la valeur a5, les 140 sujets de la classe b2 se répartissent en 50 sujets de la classe a2 et 90 de la classe a4, les 20 sujets de la classe b3 allant tous dans la classe a3. Ainsi la classication (b1 b2 b3) devient ((a1 a5)(a2 a4)(a3)).

Ce n'est pas la même chose pour la règle d'association. D'abord, A et B n'ont que deux modalités, la modalité 1, qui indique une présence, et la modalité 0 qui indique une absence. Et la règle d'association exacte exige une seule chose, c'est qu'il n'y ait aucun sujet ayant simulta- nément a1 et b0, ou autrement dit, ayant a1 sans avoir b1. On n'a pas cette fois de classication plus ne pour A, car on peut avoir a0 avec b0 et a0 avec b1.