Bonsoir,
Avant de parler de clé primaire, on parle d’abord de clé candidate (ou encore plus simplement de clé). La clé primaire d’une table T n’est qu’une clé (peut-être la seule) parmi l’ensemble des clés candidates de cette table.
Soit K un sous-ensemble d’attributs de T. Si deux lignes de T ne peuvent pas avoir la même valeur pour K, alors K est une surclé de T. On dit encore que K vérifie ce qu’on appelle la règle d’unicité des surclés.
Cette règle équivaut à dire que K détermine fonctionnellement chaque attribut de T :
K → {A1, A2, A3, A4, A5, A6, A7}
(Notez l’emploi des accolades, car dans une dépendance fonctionnelle, le déterminant et le dépendant sont des ensembles).
Pour affirmer que la paire {A1, A6} est une surclé, il faut donc démontrer que
{A1, A6} → {A1, A2, A3, A4, A5, A6, A7}.
Pour cela, il faut en passer par les règles d’Armstrong :
Soient X, Y, Z, W des sous-ensembles quelconques d'attributs de T. Notons XY l'union de X et de Y.
Les trois premières règles sont les suivantes:
1. Réflexivité : si Y est un sous-ensemble (non nécessairement strict) de X, alors X → Y.
2. Augmentation : si X → Y, alors XZ → YZ.
3. Transitivité : si X → Y et Y → Z alors X → Z.
Règles que l'on peut compléter par les suivantes qui en sont inférées :
4. Union : si X → Y et X → Z alors X → YZ.
5. Décomposition : si X → YZ alors X → Y et X → Z.
6. Pseudo-transitivité : si X → Y et YW → Z alors XW → Z.
En avant.
Les dépendances fonctionnelles connues sont les suivantes :
DF1 : {A1} → {A2, A3}
DF2 : {A2, A3, A6} → {A4, A5}
DF3 : {A5} → {A7}
Montrons que le sous-ensemble {A1, A6} est une surclé.
En vertu de la règle d’augmentation appliquée à DF1 :
{A1} ∪ {A6} → {A2, A3} ∪ {A6}
Que l’on note encore ainsi :
DF4 : {A1, A6} → {A2, A3, A6}
En vertu de la règle de transitivité appliquée à DF4 et DF2, on produit :
DF5 : {A1, A6} → {A4, A5}
En vertu de la règle d’augmentation appliquée à DF3 :
DF6 : {A4, A5} → {A4, A7}
En vertu de la règle de transitivité appliquée à DF5 et DF6, on produit :
DF7 : {A1, A6} → {A4, A7}
En vertu de la règle d’union appliquée à DF4, DF5 et DF7 (et non pas DF6, merci JPhi33 !), on produit :
DF8 : {A1, A6} → {A2, A3, A4, A5, A6, A7}
Et finalement, par augmentation :
DF9 : {A1, A6} → {A1, A2, A3, A4, A5, A6, A7}
Ainsi, la paire {A1, A6} est une surclé. Est-ce une clé candidate ?
Une clé candidate est une surclé K qui en plus de vérifier la règle d’unicité imposée aux surclés, vérifie en plus une règle dite règle d’irréductibilité, selon laquelle il n’existe pas de sous-ensemble K’ strictement inclus dans K qui vérifie lui aussi la règle d’unicité.
Les sous-ensembles de la paire {A1, A6} sont les singletons {A1} et {A6}, or au mieux on a :
{A1} → {A1, A2, A3}
{A6} → {A6}
Ces singletons ne vérifient pas la règle d’unicité et ne peuvent constituer des clés candidates. En conséquence, la paire {A1, A6} vérifie la règle d’irréductibilité outre celle d’unicité : elle constitue bien une clé candidate. Dans le contexte SQL, elle peut donc être retenue comme clé primaire.
Qu’en est-il du quadruplet {A1, A2, A3, A6} ?
Selon la méthode appliquée ci-dessus, on montre qu’il représente une surclé :
{A1, A2, A3, A6} → {A1, A2, A3, A4, A5, A6, A7}
Mais il inclut le sous-ensemble strict {A1, A6} qui, comme on l'a vu, vérifie lui aussi la règle d’unicité : le quadruplet {A1, A2, A3, A6} ne vérifie pas la règle d'irréductibilité et ne constitue donc pas une clé candidate (et a fortiori il ne peut être retenu comme clé primaire).
That's all.
Partager