Bonjour,
Envoyé par
robocop333
Si je définit un autre attribut (technique) pour la table "EQUIPE", cette dernière ne serai plus en 2eme forme normale (et donc pas en 3eme).
Reprenons la structure que vous proposez pour la table EQUIPE :
EQUIPE (INTITULE, THEME, DATE_CREATION, ACTIF)
Vous avez retenu {INTITULE} pour être la clé primaire de cette table (j’ai utilisé des accolades en plus du nom de l'attribut, car une clé primaire est un ensemble dont les éléments sont des attributs de la table).
Une clé primaire est un cas particulier de la clé candidate (pour la petite histoire, le concept de clé primaire ne figure plus dans la théorie relationnelle qu’à titre historique). Une fois de plus, je vous renvoie à la discussion Courses hippiques, pour savoir ce qu’est une clé candidate. Quoi qu’il en soit, une clé candidate a la propriété de participer à une dépendance fonctionnelle avec chaque attribut de la table :
DF1 : {INTITULE} → {INTITULE}
DF2 : {INTITULE} → {THEME}
DF3 : {INTITULE} → {DATE_CREATION}
DF4 : {INTITULE} → {ACTIF}
En notant que la dépendance fonctionnelle DF1 est triviale.
Si on définit un attribut technique ID_EQUIPE tel que {ID_EQUIPE} → {INTITULE} et {INTITULE} → {ID_EQUIPE}, alors, par transitivité, ce nouvel attribut est en dépendance fonctionnelle avec chaque attribut de la table (en outre il existe par définition la DF triviale {ID_EQUIPE} → {ID_EQUIPE}) :
DF5 : {ID_EQUIPE} → {ID_EQUIPE}
DF6 : {ID_EQUIPE} → {INTITULE}
DF7 : {ID_EQUIPE} → {THEME}
DF8 : {ID_EQUIPE} → {DATE_CREATION}
DF9 : {ID_EQUIPE} → {ACTIF}
Et la table possède EQUIPE possède désormais deux clés candidates, dont l’une {INTITULE} peut changer de valeur, au gré de l’utilisateur et l’autre non {ID_EQUIPE}, car on a dit "pas touche". Ainsi, si on a décidé que la table CHERCHEUR fait référence à la table EQUIPE, ça sera par le biais de {ID_EQUIPE}, invariant, et donc l’utilisateur pourra bricoler les valeurs de l’attribut INTITULE comme bon lui chante, cela n’aura aucun impact sur la table CHERCHEUR.
Mais vous affirmez que la mise en œuvre de l’attribut ID_EQUIPE implique de facto un viol de 2e forme normale. Une fois de plus, je vous invite à relire l’énoncé de la 2NF :
Une table 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.
La table EQUIPE possède deux clés candidates :
CK1 : {INTITULE}
CK2 : {ID_EQUIPE}
Seuls les attributs suivants n’appartiennent pas à une clé candidate :
THEME, DATE_CREATION, ACTIF.
Les DF dans lesquels ces attributs sont impliqués sont les suivantes :
DF2 : {INTITULE} → {THEME}
DF3 : {INTITULE} → {DATE_CREATION}
DF4 : {INTITULE} → {ACTIF}
DF7 : {ID_EQUIPE} → {THEME}
DF8 : {ID_EQUIPE} → {DATE_CREATION}
DF9 : {ID_EQUIPE} → {ACTIF}
Les attributs THEME, DATE_CREATION et ACTIF sont-ils en dépendance totale vis-à-vis de chaque clé candidate ?
Je rappelle à nouveau qu’une dépendance fonctionnelle A → B est totale s’il n’existe pas de sous-ensemble A’ strictement inclus dans A tel que A’ → B.
Or {INTITULE} et {ID_EQUIPE} sont des ensembles singletons et ne comportent donc pas de sous-ensembles (non-vides) de la forme A’ → B.
Conclusion, les attributs "non clés" THEME, DATE_CREATION, ACTIF sont en dépendance totale vis-à-vis de l'ensemble des clés candidates de la table EQUIPE, à savoir CK1 et CK2 : cette table est en 2NF. Je vous laisse le soin de prouver qu’elle est, oui ou non, en 3NF.
Envoyé par
robocop333
Ces mot_cle sont saisi lors de l'insertion d'une nouvelle publication, ou d'un nouveau projet.
Je peut donc supprimer la table MOT_CLE je crois,
non ?
Vous pouvez.
Partager