besoin d'aide sur la modélisation d'une relation "pseudo ternaire"
Bonjour à tous,
J'ai un petit souci de modélisation sur un projet perso dont voici les informations:
- un programme peut avoir plusieurs versions
- un programme a été développé par une ou plusieurs personnes
- Les programmeurs peuvent changer d'une version à l'autre
- dans certains cas, la version du programme n'est pas spécifiée (dû à un manque d'informations)
Au début j'ai pensé à faire la relation binaire suivante:
http://img227.imageshack.us/img227/3958/mcd1l.th.png
un programmeur participe à 0 ou n projets, avec une version indiquée pour un même projet. Un projet est réalisé par une ou plusieurs personnes.
Désolé pour le shéma, mais je n'ai pas les outils qu'il faut sosu la main, et je me suis peut être même trompé au niveau cardinalités (MERISE/UML... je mélange toujours :()
Avec la situation suivante ça devient problématique:
Si le développeur D travaille pour le projet A sur les version 1 et 2, mon SGBD va me crier dessus car il trouvera dans la table "participe" un doublon sur les clés primaires (il y aura deux fois le couple A/D pour une valeur du champs version différente).
Si maintenant j'utilise une relation ternaire, dans ma table "participe", j'aurai:
dev_id
prog_id
version
Les trois clés étant primaires. Le seul souci concerne la version:
Si je ne me trompe pas, le fait de déclarer "version" comme clé primaire, signifie qu'elle doit référencer une clé primaire dans une table "version" que je devrais créer.
Ici je ne vois pas l'utilité d'une telle table dans la mesure où les versions ne suivent pas une norme définie (format un peu batard, tout le monde met plus ou moins ce qu'il veut). A la limite, ça pourrait me permettre d'effectuer une sélection selon le critère de la version, mais je n'en ai pas besoin ici. Au final, il faudra juste pour un logiciel donné fournir le listing de toutes les versions et des participants (pas de filtre sur une version donc).
De plus, la version n'étant pas toujours mentionnée, le SGBD n'acceptera pas que je lui fournisse une valeur nulle qui ne correspond à aucune clé dans la table version.
Je suis donc bloqué à ce niveau, et mes souvenirs de modélisations se sont bien estompés (la preuve je n'ai même pas pu employer les bons termes pour décrire mon problème).
Si quelqu'un aurait la gentillesse de guider mes pas.
En vous remerkiant.