Bonsoir Mathieu,
Envoyé par
__mathieu__
Si je comprends bien pour trouver une
clé candidate il faut que
l'algorithme du saut à dépendant permette pour un identifiant donné :
- de retrouver tous les identifiants de la relation
- s'il est composé de deux identifiants (ici {A, D}+), l'application de ce même algorithme ne devrait pas donner le même résultat pour {A}+ ou pour {D}+
L’algorithme fait intervenir un seau et non pas un saut. Tous les attributs de la relvar R peuvent effectuer un saut dans le seau, mais c’est tout...
Attention à la terminologie : le terme « identifiant » est inconnu dans la théorie relationnelle, c’est plutôt un terme merisien (plus précisément utilisé dans les MCD). Quel sens donnez-vous ici à ce terme ?
Je rappelle le principe de l’algorithme :
Soit
Z un sous-ensemble d’attributs de l’
en-tête de la
relvar R, et
S l’ensemble des DF vérifiées par R.
On pose V := Z.
Pour chaque DF appartenant à S, si le
déterminant X de cette DF appartient à V, autrement dit se trouve dans le seau, alors son
dépendant Y peut tomber à son tour dans le seau.
Quand on a traité toutes les DF de S et que plus rien ne tombe dans le seau, on arrête.
{A}, {D}, {A,D}, sont quelques uns des très nombreux sous-ensembles d’attributs (et non pas d’identifiants, terme impropre et intraduisible ici) de l’en-tête {A,B,C,D,E,F} de la relvar R.
L’ensemble donné S des DF vérifiées par R est le suivant :
{A} → {B,C}
{E} → {C,F}
{B} → {E}
{C,D} → {E,F}
Par exemple, si on pose Z = {A}, alors la variable V prend la valeur initiale {A}.
Le contenu du seau est alors :
A _ _ _ _ _
Où les « _ » symbolisent des places pouvant héberger les autres attributs de R.
1er tour de manège.
Comme l’attribut A est dans le seau et que {A} est le déterminant de la DF {A} → {B,C}, l’algorithme autorise que les attributs composant le dépendant {B,C} de la DF tombent dans le seau, dont le contenu devient :
A B C _ _ _
2e tour de manège.
Comme l’attribut B est dans le seau et que {B} est le déterminant de la DF {B} → {E}, l’algorithme autorise que l’attribut composant le dépendant {E} de la DF tombe dans le seau, dont le contenu devient :
A B C _ E _
3e tour de manège.
Comme l’attribut E est dans le seau et que {E} est le déterminant de la DF {E} → {C,F}, l’algorithme autorise que les attributs composant le dépendant {C,F} de la DF tombent dans le seau (en notant que l’attribut C s’y trouve déjà) :
A B C _ E F
La seule DF non encore exploitée est {C,D} → {E,F}, mais son déterminant {C,D} contient l’attribut D qui malheureusement n’est pas dans le seau, ce qui fait que cette DF n’est pas exploitable et le contenu du seau reste inchangé.
Fin des tours de manège pour Z = {A}.
On peut passer à Z = {B} et repartir pour une nouvelle tournée avec l’algorithme, puis passer à Z = {C}, puis à Z = {D}, etc.
En particulier, grâce à l’algorithme on peut calculer les fermetures {A}+ de {A}, {D}+ de {D}, {A,D}+ de {A,D}.
La fermeture de {A} est composée de l’ensemble des attributs de R tombés dans le seau quand on a posé Z = {A} :
{A}+ = {A,B,C,E,F}, sous-ensemble strict de l’en-tête {A,B,C,D,E,F} de R.
La fermeture de {D} est l’ensemble des attributs de R tombés dans le seau quand on a posé Z = {D} :
{D}+ = {D}, sous-ensemble strict de l’en-tête {A,B,C,D,E,F} de R.
La fermeture de {A,D} est composée de l’ensemble des attributs de R tombés dans le seau quand on a posé Z = {A,D} :
{A,D}+ = {A,B,C,D,E,F}, c’est-à-dire l’en-tête de R.
Recherche des clés candidates
Pour rechercher les clés candidates, il aura fallu exploiter toutes les DF que peut comporter la relvar R, mais ces DF ne se limitent pas à celles qui ont été fournies au départ :
{A} → {B,C}
{E} → {C,F}
{B} → {E}
{C,D} → {E,F}
En effet puisque {A, D}+ = {A,B,C,D,E,F}, il existe aussi la DF :
{A,D} → {A,B,C,D,E,F}
Ce qui veut dire qu’il peut exister comme ici des DF inférables de celles qui ont été données (S). On est donc condamnés à faire tourner l’algorithme pour toutes les combinaisons des attributs de R (et ça fait du monde !), à savoir :
Tous les singletons : {A}, {B}, {C}, {D}, {E}, {F}
Toutes les paires : {A,B}, {A,C}, {A,D}, {A,E}, {A,F}, {B,C}, {B,D}, {B,E}, {B,F}, {C,D}, {C,E}, {C,F}, {D,E}, {D,F}, {E,F}
Tous les triplets : {A,B,C}, {A,B,D}, {A,B,E}, {A,B,F}, {A,C,D}, etc.
Tous les quadruplets : {A,B,C,D}, {A,B,C,E}, {A,B,C,F}, {A,B,D,E}, {A,B,D,F}, {A,B,E,F}, etc.
Tous les quintuplets : {A,B,C,D,E}, {A,B,C,D,F}, {B,C,D,E,F}
Le sextuplet {A,B,C,D,E,F}.
Et chaque combinaison est à soumettre à l’algorithme du seau afin d’en obtenir la fermeture, laquelle est à considérer ensuite comme déterminant de DF (en passant, l’ensemble des DF, données ou inférables est appelé la fermeture des DF de R). Il s’agit d’un travail décourageant, car le nombre de DF (en incluant celles qui sont triviales et en prenant aussi en compte l’ensemble vide {} comme déterminant ou dépendant de DF) est égal à 22n où n est le nombre de DF. Puisque l’en-tête de R contient 6 attributs, le nombre possible de DF est théoriquement égal à 212, c’est-à-dire 4096 (gloups !)
C’est pour cela qu’on utilise des astuces permettant de gagner du temps. Ainsi, comme je l’ai écrit par ailleurs, si un attribut n’appartient à aucun dépendant d’une DF quelle qu’elle soit, alors on se dépêchera de balancer cet attribut dans le seau pour voir ce que l’on peut en tirer. Contrairement aux attributs B, C, E, F, comme les attributs A et D n’appartiennent à aucun dépendant de DF, on les jette fissa ensemble dans le seau puis on met l’algorithme en branle.
Bien nous en a pris, car on a vu que
{A,D}+ = {A,B,C,D,E,F}, c’est-à-dire l’en-tête de R
Ce qui permet de conclure que la paire {A,D} est surclé de R. Mais est-ce une clé candidate ? En tant que surclé, {A,D} respecte la contrainte d’unicité, mais pour être clé candidate, {A,D} doit aussi respecter la règle d’irréductibilité. La paire {A,D} est-elle réductible ? Si oui, au moins un des singletons {A} ou {D} doit être surclé, donc il faudrait que :
{A}+ = {A,B,C,D,E,F}
ou {D}+ = {A,B,C,D,E,F}.
Or on a vu que :
{A}+ = {A,B,C,E,F} sous-ensemble strict de l’en-tête {A,B,C,D,E,F} de R.
{D}+ = {D} sous-ensemble strict de l’en-tête {A,B,C,D,E,F} de R.
{A}+ et {D}+ n’étant que des sous-ensembles stricts de R, ils ne peuvent en être surclés, et par conséquent la surclé {A,D} est irréductible, elle est donc clé candidate.
Tous les sur-ensembles de {A,D} sont évidemment des surclés, mais en même temps tous sont réductibles à {A,D} : ils ne peuvent donc pas prétendre à être clés candidates.
Ainsi, dans la recherche des clés candidates, on peut éliminer ces sur-ensembles, d’où un gain de temps fort appréciable : sur les 4096 cas à examiner, il n’en reste qu’une trentaine :
{A,B}, {A,C}, {A,E}, {A,F},
{B,C}, {B,D}, {B,E}, {B,F},
{C,D}, {C,E}, {C,F},
{D,E}, {D,F},
{E,F},
{A,B,C}, {A,B,E}, {A,B,F},
{B,C,D}, {B,C,E}, {B,C,F},
{C,D,E}, {C,D,F},
{C,E,F},
{D,E,F},
{A,B,C,E}, {A,B,C,F},
{B,C,D,E}, {B,C,D,F},
{C,D,E,F},
{A,B,C,E,F}, {B,C,D,E,F}.
On a vu que {A}+ est le sous-ensemble strict {A,B,C,E,F}, donc les paires, triplets et quadruplets que ce sous-ensemble contient ne pourront pas faire plus que lui, à savoir :
{A,B}, {A,C}, {A,E}, {A,F},
{B,C}, {B,E}, {B,F},
{C,E}, {C,F},
{E,F},
{A,B,C}, {A,B,E}, {A,B,F},
{B,C,E}, {B,C,F},
{C,E,F},
{A,B,C,E}, {A,B,C,F},
{A,B,C,E,F}.
Donc on les évacue. Sur la trentaine de cas à examiner il n’en reste qu’une douzaine :
{B,D}, {C,D}, {D,E}, {D,F},
{B,C,D}, {C,D,E}, {C,D,F}, {D,E,F},
{B,C,D,E}, {B,C,D,F}, {C,D,E,F},
{B,C,D,E,F}.
Courageusement, on s’attaque à la 1re paire, {B,D} et on en calcule la fermeture. Verdict de l’algorithme :
{B,D}+ = {B,C,D,E,F}
Les paires, triplets et quadruplets que ce sous-ensemble contient ne pourront pas faire plus que lui, ce qui est le cas de la douzaine ci-dessus, on les évacue donc, en conséquence de quoi il ne reste que {B,C,D,E,F}, quintuplet qui est un sous-ensemble strict du sextuplet {A,B,C,D,E,F} et ne peut donc prétendre à être surclé et a fortiori clé candidate.
Conclusion :
On a montré que la paire {A,D} est clé candidate et qu’il n’y en a pas d’autre.
Envoyé par
__mathieu__
vous expliquez que l'unicité s'applique à la clé candidate et non à la surclé.
Quand j’écris :
« Une clé candidate est une surclé spécialisée, car elle est astreinte à respecter le principe d'irréductibilité outre celui d'unicité. »
Alors je signifie qu’outre le principe d’unicité (qui vaut bien sûr pour toutes les surclés), une clé candidate doit en plus respecter le principe d'irréductibilité.
Je ne comprends donc pas votre remarque. Comment la justifieriez-vous, alors qu’en plus de l’unicité, c’est bien l’irréductibilité qui caractérise spécifiquement la clé candidate !
Partager