Bonsoir,
Terminons-en avec la dépendance fonctionnelle au sens merisien du terme. Je rappelle ce que j’ai déjà écrit :
En Merise, on dit qu’il existe une dépendance fonctionnelle entre deux entités-types X et Y :
X → Y
si à toute occurrence de X correspond une seule occurrence de Y.
Revenons au triplet PERSONNE, OFFRE, RENDEZ_VOUS.
1) Cas de l’identification absolue
D’après cette représentation graphique, on a les dépendances fonctionnelles merisiennes suivantes :
DF1 : RENDEZ_VOUS → OFFRE
DF2 : OFFRE → PERSONNE
Donc par transitivité :
DF4 : RENDEZ_VOUS → PERSONNE
2) Cas de l’identification relative
On a exactement les mêmes dépendances fonctionnelles :
DF1 : RENDEZ_VOUS → OFFRE
DF2 : OFFRE → PERSONNE
Et par transitivité :
DF4 : RENDEZ_VOUS → PERSONNE
Autrement dit, que l’identification soit relative ou absolue, cela ne joue en rien quand on traite des dépendances fonctionnelles merisiennes et a fortiori de la la transitivité.
Considérons maintenant votre affirmation à propos de la transitivité :
personne (1,n)------ propose-----(1,1) rendez-vous
qui corresponde à DF4 : rendez-vous-> personne (qui a proposé l'offre)
ce qui contredit (la transitivité)
Puisque du point de vue de Merise, votre affirmation ne s’applique pas, si elle avait un sens, ça serait dans le contexte de la théorie relationnelle. Traitons donc des dépendances fonctionnelles dans ce contexte.
Dépendance fonctionnelle dans le contexte de la théorie relationnelle
Une dépendance fonctionnelle est une contrainte entre les attributs d’une variable relationnelle (en abrégé relvar) ou plus informellement d’une table si on se situe dans le contexte SQL. Notons déjà qu’une dépendance fonctionnelle ne met plus en relation des entités-types, mais des sous-ensembles d'attributs au sein d’une relvar.
Une dépendance fonctionnelle (DF) est une instruction de la forme :
X → Y
où X et Y sont deux sous-ensembles d’attributs de l’en-tête d’une relvar R, et satisfaisant à la règle : pour une valeur de X, correspond exactement une valeur de Y, c'est-à-dire que si deux tuples (ou lignes dans le cas des tables) ont la même valeur vx pour X, alors ils ont aussi la même valeur vy pour Y.
On dit encore que Y est fonctionnellement dépendant de X, ou que X détermine fonctionnellement Y. X est appelé le déterminant de la DF et Y le dépendant.
Examinons maintenant les structures tabulaires.
a) Utilisation de l’identification absolue :
Concernant la relvar PERSONNE, on a les dépendances fonctionnelles suivantes (notez l’utilisation des accolades, car les déterminants et les dépendants sont des ensembles (au sens de la théorie des ensembles), alors que les attributs ne sont que des éléments de ces ensembles) :
DFa : {PersonneId} → {PersonneNom}
DFb : {PersonneId} → {Autres_Attributs_Communs}
Il existe d’autres dépendances fonctionnelles dites triviales, mais qui ne nous intéressent pas ici.
Concernant la relvar OFFRE, on a les dépendances fonctionnelles non triviales suivantes :
DFc : {OffreId} → {PersonneId}
DFd : {OffreId} → {Offre_Autres_Attributs}
Concernant la relvar RENDEZ_VOUS, on a les dépendances fonctionnelles non triviales suivantes :
DFe : {RVId} → {OffreId}
DFf : {RVId} → {PersonneReservantId}
DFg : {RVId} → {RV_Date}
DFh : {RVId} → {RV_Heure}
DFi : {RVId} → {RV_Duree}
b) Utilisation de l’identification relative :
Concernant la relvar PERSONNE, rien de changé.
Concernant la relvar OFFRE, on a la dépendance fonctionnelle non triviale suivante :
DFc’ : {PersonneOffrantId, OffreId} → {Offre_Autres_Attributs}
Mais il n’existe pas cette fois-ci d'autres dépendances fonctionnelles non triviales telles que :
{OffreId} → { PersonneOffrantId}
{OffreId} → {Offre_Autres_Attributs}
Car OffreId est relatif à PersonneOffrantId : il s'agit par exemple d'un banal numéroteur dont les valeurs recommencent à 1 pour chaque valeur de PersonneOffrantId. Exemple :
1 2 3 4 5 6 7
| PersonneOffrantId OffreId Offre_Autres_Attributs
1 1 v11
1 2 v12
1 3 v13
2 1 v21
2 2 v22
... ... ... |
On voit clairement que pour une valeur de OffreId, on a plus d’une valeur de PersonneOffrantId et de Offre_Autres_Attributs.
Concernant la relvar RENDEZ_VOUS, comme dans le cas de l’identification absolue, on a les dépendances fonctionnelles non triviales suivantes :
DFe : {RVId} → {OffreId}
DFf : {RVId} → {PersonneReservantId}
DFg : {RVId} → {RV_Date}
DFh : {RVId} → {RV_Heure}
DFi : {RVId} → {RV_Duree}
Avec en plus la dépendances fonctionnelle non triviale suivante :
DFj : {RVId} → {PersonneOffrantId}
Mais il n’existe pas de dépendance fonctionnelle non triviale dont {PersonneOffrantId, OffreId} constituerait le déterminant, puisqu’on sait que pour une offre on peut avoir plus d’un rendez-vous.
En conclusion, parmi l'ensemble des dépendances fonctionnelles, on constate qu'aucune n'est transitive : votre affirmation concernant la transitivité ne s’applique pas plus dans le contexte de la théorie relationnelle que dans celui du formalisme de Merise.
Accessoirement, s’il y avait d’autres dépendances fonctionnelles à rechercher, ça serait en relation avec des règles de gestion des données sans relation avec le choix du type d’identification, que celle-ci soit absolue ou relative. Exemple : peut-on effectuer plus d’une réservation le même jour, à la même heure pour la même personne ?
Question subsidiaire :
mais en conséquence de l'application de règles d'annuler la transitivité cette dépendance fonctionnelle doit être annulée
D’où tirez-vous cette expression « en conséquence de l'application de règles d'annuler » ? Serait-ce en relation avec la troisième forme normale ?
Partager