1) A propos de la clé : attention à la règle d’irréductibilité :
{B, G, H}+ est une clé non seulement parce que tous les attributs de R sont dépendants du sous-ensemble d’attributs {B, G, H} de R, mais aussi parce qu’aucun des sous-ensembles de {B, G, H} :
{B}, {G}, {H}, {B, G}, {B, H}, {G, H}
n’est clé (je vous laisse le soin de le montrer, en calculant la fermeture de ces sous-ensembles d’attributs).
En ce sens, je cite Chris Date dans « An Introduction to Database Systems »
Let K be a set of attributes of relvar R. Then K is a candidate key for R if and only if it has both of the following properties:
a. Uniqueness: No legal value of R ever contains two distinct tuples with the same value for K.
b. Irreducibility: No proper subset of K has the uniqueness property.
We know observe that if X is a candidate key for relvar R, then all attributes Y of relvar R must be functionally dependant on X.
Ou Georges Gardarin dans « Bases de données, les systèmes et leurs langages » :
Clé de relation (Relation Key)
Sous-ensemble X des attributs d’une relation R (A1, A2, ..., An) tel que :
1. X -> A1 A2 ... An
2. Il n’existe pas de sous-ensemble Y ⊂ X tel que Y -> A1 A2 ... An.
Observez que, par exemple, {A, B, G, H} n’est qu’une surclé, mais pas une clé candidate car si ce sous-ensemble de R respecte la règle d’unicité, il ne respecte pas celle d’irréductibilité, pas plus que le sous-ensemble{A, B, C, D, E, F, G, H, K}...
2) Concernant la décomposition en 3NF :
Je détaille à l’intention des visiteurs qui voudraient connaître le détail de la décomposition. Selon l’algorithme de Bernstein (cf. Synthesizing Third Normal Form Relations from Functional Dependencies ACM Transactions on Database Systems (TODS), v.1 n.4, p.277-298), la couverture minimale que vous aviez correctement établie :
{{B, H} -> {C}, {B, H} -> {K}, {A} -> {D}, {C} -> {E}, {F} -> {A}, {E} -> {F}}
donne lieu à la décomposition en relvars (variables relationnelles) :
S1 = {B, H, C}, {B, H, K}, {A, D}, {C, E}, {F, A}, {E, F}
Comme d’une part vous avez procédé à l’union de {B, H, C} et {B, H, K} puisque ces deux relvars ont la même clé {B, H} ;
Comme d’autre part vous n’avez pas oublié de préserver la clé de R en ayant ajouté la relvar {B, G, H} :
S2 = {B, H, C, K}, {A, D}, {C, E}, {F, A}, {E, F}, {B, G, H}
La conclusion s’impose, votre décomposition est en 3NF, elle est sans perte et elle préserve les dépendances fonctionnelles : c’est tout bon, bravo !
Partager