Hello John,
Je vais essayer de jouer les bonnes âmes...
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
John
Pourquoi vérifie-t-on D->C dans ACD ?
Reprenons le schéma R(ABCD). Lui est associé un ensemble de dépendances fonctionnelles :
DF1 : A → B
DF2 : B → C
DF3 : D → B
Par transitivité (3e axiome des axiomes d’Armstrong), vous avez inféré les DF suivantes :
DF4 : A → C
DF5 : D → C
Si vous projetez R(ABCD) sur A, C, D, vous obtenez un schéma de variable relationnelle R1(ACD) avec préservation des DF qui font mention de A, C, D, tandis que ne sont pas préservées les DF qui font mention de B (car absent du nouveau schéma).
Ainsi, ne sont pas préservées DF1, DF2 et DF3, mais sont préservées DF4 et DF5.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
John
Par contre A -> B et B -> D ne peuvent être des dépendances projetées de F ni sur (ACD) ni sur (BD)
Comme on vient de le voir, B ne faisant pas partie du schéma R1(ACD), il est impossible d'associer les dépendances DF1, DF2 et DF3 à ce schéma.
De la même façon, si l’on considère la projection de R(ABCD) sur B, D, vous obtenez un schéma de variable relationnelle R2(BD) avec préservation des DF qui font mention de B et D, à savoir DF3, tandis que ne sont pas préservées les DF qui font mention de A et C (car absents du nouveau schéma), à savoir DF1, DF2, DF4, DF5.
Concernant la dépendance B → D, c’est nouveau, ça vient de sortir, car :
(a) Elle ne fait pas partie de F.
(b) Elle ne fait pas partie non plus de F+. En effet, elle ne peut pas être inférée par les axiomes d’Armstrong car D ne joue jamais le rôle de dépendant (partie droite de DF) dans quelque DF que ce soit appartenant à F. (Le principe vaut du reste pour A, mutatis mutandis.)
Dans ces conditions, il est faux de dire que B → D.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
John
Je ne comprends pas du tout le corrigé de la question 2
Rappelons ce qu’est une surclé :
Dans une variable relationnelle telle que V (X, Y, Z, T), où X, Y, Z et T désignent les attributs de V, une surclé K est un sous-ensemble (non strict) d’attributs déterminant fonctionnellement chaque attribut de V :
K → X
K → Y
K → Z
K → T
Le sous-ensemble {X, Y, Z, T} est-il une surclé de V ? La réponse est affirmative, car par application du 1er axiome d’Armstrong (réflexivité) :
{X, Y, Z, T} → X
{X, Y, Z, T} → Y
{X, Y, Z, T} → Z
{X, Y, Z, T} → T
En notant que ces DF sont toutes triviales ("trivial" est un raccourci pour dire que le tout détermine la partie).
Un cas particulier de la surclé est celui de la clé candidate (expression souvent abrégée en "clé"). Une clé candidate est une surclé vérifiant la règle d’irréductibilité à gauche (on dit encore règle de minimalité) selon laquelle :
Il n’existe pas de sous-ensemble strict K’ de K qui lui aussi détermine fonctionnellement chaque attribut de V.
Reprenons votre exemple avec la variable relationnelle R1 (ACD). En vertu de ce qui précède, ACD est une surclé de R1.
ACD est-il clé candidate ? Montrons d’abord que AD → C :
A → C (donné)
AD → AC (2e axiome d’Armstrong, dit d’augmentation)
AD → C (règle de décomposition)
En conséquence, R1 (ACD) comporte les DF suivantes :
AD → A (DF triviale)
AD → C (démontré)
AD → D (DF triviale)
AD détermine fonctionnellement chaque attribut de R1 et c’est donc une surclé. Ça n’est pas le cas du sous-ensemble AC de ACD, car D ne jouant jamais le rôle de dépendant, il ne peut exister de DF telle que AC → D et AC ne peut donc prétendre à être clé candidate. Même impossibilité pour CD.
AD est une surclé, mais est-ce une clé candidate ? Pour qu’il n’en soit pas ainsi, il faudrait que A ou D soient surclés. Dans le cas de A, il faudrait s'assurer des DF suivantes :
A → A
A → C
A → D
Or si les deux premières DF sont vérifiées, la 3e ne l’est pas (comme on dit, elle ne fait pas partie de F+).
A n’est donc pas surclé, pas plus que D pour les mêmes raisons.
AD est donc une surclé qui ne comporte pas de sous-ensemble strict qui soit surclé : AD est clé candidate de R1. C’est aussi la seule, puisque comme on l’a vu, AC et CD ne peuvent pas être surclés.
R1 est-elle en 3FN ?
Pour que R1 soit en 3FN, il d’abord qu’elle soit en 2FN.
L’énoncé de la 2FN est le suivant (celui qui fut donné par Ted Codd en 1971, père de la 2FN et de la 3FN) :
Une relation R est en deuxième forme normale si elle est en première forme normale et si chaque attribut n’appartenant pas à une clé candidate est en dépendance totale de chaque clé candidate de R.
Admettons que R1 soit en 1FN. Une dépendance totale est une dépendance fonctionnelle qui n’est ni triviale ni partielle. Qu’est-ce qu’une DF partielle ?
Soit R une relvar, X un sous-ensemble quelconque d’attributs de R et C un attribut quelconque de R. Une dépendance fonctionnelle X → {C} est dite partielle si elle n’est pas triviale et s’il existe Y strictement inclus dans X tel que Y → {C}.
Or, R1 comporte la DF partielle AD → C puisque A → C (et aussi D → C) : R1 n’est donc pas en 2FN et a fortiori en 3FN laquelle implique la 2FN.
Concernant la variable relationnelle R2 (BD), en utilisant la même approche, on montre que R2 est en 3FN.
J'espère ne pas avoir fait des copier/coller sources de bugs... Bon courage,
fsmrel
Partager