Bonjour Mélodie_et_rythmes,
(pseudo musical s'il en est !)
Une relation réflexive signifierait qu'on associe les employés entre eux. Ce n'est donc pas la bonne solution. Ici, il s'agit de
distinguer le gestionnaire des bénévoles.
La démarche a été correctement entamée en regroupant le gestionnaire et les bénévoles sous un même terme Employé car ils ont probablement des caractéristiques communes, par exemple animer des ateliers (association entre Employé et Atelier). Mais du coup, la distinction faite entre Gestionnaire et Bénévoles a disparu. D'où les difficultés à les faire rentrer dans la même boîte Employé : on veut connaître le nom du gestionnaire mais pas celui des bénévoles. Il y a probablement encore d'autres différences (à préciser).
Tout ceci indique qu'il faut
spécialiser l'entité Employé en deux entités Gestionnaire et Bénévole. Gestionnaire contient une propriété Nom alors que Bénévole n'en contient pas. C'est ce qui fait leur différence. Plus besoin de noms "bidons" pour les bénévoles. Le concept de la spécialisation permet, grâce au mécanisme d'
héritage, de faire partager le même identifiant aux trois entités. Ainsi :
- le gestionnaire a une occurrence dans Employé identifiée par l'ID 1111 et il a aussi une occurrence dans l'entité Gestionnaire identifiée (par héritage) par l'ID 1111, mais n'a pas d'occurrence dans l'entité Bénévole.
- le bénévole 1 a une occurrence dans Employé identifiée par l'ID 1112 et aussi une occurrence dans l'entité Bénévole identifiée (par héritage) par l'ID 1112, mais n'a pas d'occurrence dans l'entité Gestionnaire.
Ces entités sont liées par des associations de type "est un" :
- un gestionnaire "est un" employé
- un bénévole "est un" employé
[ Gestionnaire ]--1,1----(est un)----0,1--[ Employé ]
[ Bénévole ]--1,1----(est un)----0,1--[ Employé ]
"est un" peut s'entendre comme "est une sorte de".
Graphiquement, le lien "est un" est souvent représenté par une flèche à double trait orientée vers l'entité généralisée :
[ Gestionnaire ]===>[ Employé ]
[ Bénévole ]===>[ Employé ]
Au niveau logique, les tables issues du MCD sont :
Employé(
Id_employé, ...)
Gestionnaire(
#Id_employé, Nom, ...)
Bénévole(
#Id_employé, ...)
Partager