[MERISE] PB dans mon MLD ?

PB dans mon MLD ? [MERISE] - SQL/NoSQL - Programmation

Marsh Posté le 11-11-2005 à 18:12:54    

Bonjour !
 
J'ai un problème dans la création de ma BD sous Access.
 
Dans mon MCD j'ai ceci :
http://img472.imageshack.us/img472/4420/mcd7zn.th.jpg
 
L'association problèmatique c'est "Est Responsable2". Je ne suis pas sûr mais je crois qu'avec des cardinalités 1,1 et 0,1 c'est le 1,1 qui "absorbe" la référence de l'autre entité.
 
De sorte que dans mon MLD j'ai :
 
ANIMATEUR (Matricule, NomAnim, PreAnim, AdresseAnim, TypeContrat, DateFinContrat, NumEquipe#)
 
EQUIPE (NumEquipe, NomEquipe, MatriculeResp#)
 
 
Du coup, dans mon MLD Access, je relie NumEquipe# à NumEquipe en appliquant l'intégrité référentielle. Jusque-là aucun problème. Mais quand je veux relier MatriculeResp# à Matricule, Access me met d'abord :  

Citation :

Une relation existe déjà. Voulez-vous modifier la relation existante ?


 
Alors là je fais oui. Je rajoute la relation entre MatriculeResp#et Matricule et quand je veux appliquer l'intégrité référentielle, il me met :

Citation :

Index unique introuvable pour le champ référencé d'une table principale


 
Quelqu'un pourrait m'expliquer ce que ça veut dire ? J'ai bien vérifié dans mes tables Equipe et Animateur si les types de données étaient bien identiques et c'est le cas ! Merci de votre aide !


Message édité par truman le 11-11-2005 à 18:13:08
Reply

Marsh Posté le 11-11-2005 à 18:12:54   

Reply

Marsh Posté le 11-11-2005 à 22:59:41    

Théoriquement, pour respecter les règles de normalisation édictées par Edouard Codd, il faudrait ajouter une table des responsables, qui serait différente de la table des animateurs, car il faut une table par objet et un animateur n'est pas la même chose qu'un responsable. Il y aurait un lien entre la table des animateurs et des responsables, et un lien de la table des responsables à la table des équipes.
 
D'une manière générale, dans un modèle conceptuel de données, il ne faut pas être avare de table. Plus il y en a, plus les relations sont faciles à établir.
 
Sans table des responsables, comment faire par exemple pour compter facilement les responsables ? Comment faire pour qu'une équipe aient plusieurs responsables ? Comment faire pour qu'un animateur soit responsable de plusieurs équipes ? Comment étendre le modèle, par exemple, avec une table des rétributions, qui n'aurait pas le même tarif pour un animateur et pour un responsable ? Si l'on rajoute dans la table des attributs pour les responsables, ces attributs ne seront pas renseignés pour les animateurs non responsables et cela créera des trous inutiles dans la base.
 
Cela dit, une table des responsables n'est pas nécessaire s'il ne peut pas y avoir plus d'un responsable par équipe, et si un animateur ne peut pas être responsable de plusieurs équipes, ni être responsable d'une équipe auquel il n'appartient pas. Dans ce cas-là (qui me semble être le cas en question (j'ai un peu dérivé dans le paragraphe précédent)), alors il ne faut pas créer de relation Est Responsable2, car la responsabilité est alors considérée comme un attribut de l'animateur. Il y aurait uniquement un flag dans la table animateur disant est_responsable oui/non, et le lien vers l'équipe est donné par la relation appartient à l'équipe.

Reply

Marsh Posté le 15-11-2005 à 22:20:32    

:jap:  J'aime bien quand les trucs compliqués sont expliqués simplement  :jap:

Reply

Marsh Posté le 16-11-2005 à 11:04:34    

olivthill a écrit :

Théoriquement, pour respecter les règles de normalisation édictées par Edouard Codd, il faudrait ajouter une table des responsables, qui serait différente de la table des animateurs, car il faut une table par objet et un animateur n'est pas la même chose qu'un responsable. Il y aurait un lien entre la table des animateurs et des responsables, et un lien de la table des responsables à la table des équipes.


 
Je ne suis pas d'accord. Responsable est un sous-ensemble d'animateur et peut très bien être indiqué par un simple flag ;)

Reply

Marsh Posté le 18-11-2005 à 00:13:17    

justement, puisque le responsable est un animateur, tu mets un lien d'h'éritage entre les 2 entités du mcd, et à al génération du mld, tu obtiens une table de responsables, et l'analyse d'olivthill est juste et prévoyante pour l'avenir de la base !!!
un lien 1,1 0,1 entre deux entités signifie que "matricule animateur" est un attribut facultatif de l'entité "Equipe".  
bre, oo modélise,mais où sont les responsables ? :D


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed