Bonsoir,
J’ai effectué quelques recherches concernant la fameuse «Fermeture élémentaire élé(F+) ». Via Internet : a priori, rien qui puisse nous aider. Par contre, en fouillant dans ma bibliothèque, j’ai retrouvé un ouvrage datant de 1982 et qui s’y intéresse de très près. Cet ouvrage — auquel je ferai référence sous le nom de [DELADI] — est intitulé Bases de données et systèmes relationnels (Dunod informatique) et on le doit à Claude Delobel et Michel Adiba, à l’époque tous deux professeurs à l’Université scientifique et médicale de Grenoble. Cet ouvrage fut publié avec le concours du C.N.R.S.
La fermeture élémentaire y est définie comme l’ensemble des dépendances fonctionnelles élémentaires appartenant à la fermeture F+ de l’ensemble F des dépendances fonctionnelles associé à R.
Dans votre cas :
R {A, B, C, D, E}
F = {A → C, A → D, BC → A, E → B, E → D}.
Et la fermeture transitive est la suivante :
ELE(F+) = {A → C, A → D, BC → A, E → B, E → D, BC → D, CE → A}
ELE(F+) est constituée des dépendances fonctionnelles appartenant à F (puisqu’elles y sont toutes élémentaires), plus les deux dépendances fonctionnelles inférées, celle que vous aviez découverte : CE → A, plus BC → D qui était passée au travers des mailles du filet. Cette dépendance fonctionnelle est du reste facile à inférer, car :
BC → A (donnée)
A → D (donnée)
BC → D (par transitivité).
Maintenant, on peut se poser la question de l’utilité de ELE(F+)...
En fait, [DELADI] montre que ELE(F+) peut donner lieu à plus d’une couverture minimale (qu’il appelle couverture irredondante, ce qui est du reste sémantiquement plus pertinent). Dans votre cas, il n’y en a qu’une, mais [DELADI] donne un exemple dans lequel la chose se produit.
Mais, quel intérêt à chercher toutes les couvertures minimales ? Pour [DELADI], cela permet de découvrir différents schémas de relations normalisables en 3NF.
Ainsi, [DELADI] propose la variable relationnelle
R {P, T, H, Y, N}
A laquelle on associe l’ensemble F de dépendances fonctionnelles
F = {P → T, PH → Y, HN → P, HY → N}
R représente l’emploi du temps dans une école. P symbolise le professeur, H l’heure, N la salle, Y la classe, T la matière enseignée. D’après F, un professeur n’enseigne qu’une matière ; à une heure donnée il ne peut enseigner qu’à une seule classe ; dans une salle donnée, à une heure donnée on ne peut trouver qu’un professeur ; à une heure donnée, une classe donnée ne peut se trouver que dans une salle. Bref, des problèmes de bilocation à surveiller.
Par calcul on obtient
ELE(F+) = {P → T, PH → Y, HN → P, HY → N, PH → N, HN → Y, HY → P, HN → T, HY → T}
Ayant pour couvertures minimales :
F1 = {P → T, PH → Y, HN → P, HY → N} (c'est-à-dire F)
Et
F2 = {P → T, PH → N, HN → Y, HY → P}
Ce qui fait que par décomposition, on peut produire des schémas relationnels (en 3NF ou en BCNF si on préfère) différents selon que l’on part de F1 ou de F2. Quoi qu’il en soit, que l’on normalise ou non, l’essentiel est de préserver les règles de gestion qu’expriment les dépendances fonctionnelles, au besoin à l’aide contraintes (assertions de la norme SQL, ou triggers si votre SGBD ne propose pas l’instruction CREATE ASSERTION).
Partager