Envoyé par
Geff's
Je dois admettre que Merise est toujours obscure, de mon côté
Vous avez proposé un MCD sans fournir les règles de gestion des données, or la construction du MCD est la conséquence de ces règles : comme dit CinePhil, « règle de gestion bien écrite => modélisation des données facile ». Un corollaire est évidemment : règle de gestion approximative => modélisation des données délicate et douteuse...
Commençons à énumérer. Au paragraphe 3.2 de votre cahier des charges, on lit (je prends l’initiative de numéroter les règles) :
RG01 - Un collaborateur n’interviendra jamais sur 2 projets simultanément
RG02 - Un collaborateur peut intervenir sur un projet avec une fonction n’étant pas encore la sienne
RG03 - Un collaborateur ne peut cumuler plusieurs fonctions en même temps
Il est évident que ces règles doivent figurer dans le référentiel des règles (le thésaurus, pour le moment bien vide...)
Mais quand les règles sont ambiguës ou entrent en collision, gare ! Je n’ai jamais connu de projet en entreprise où le thésaurus ne fut pas à corriger et compléter.
Par exemple, au paragraphe 3.3 :
« Le responsable des études a besoin de l’historique des différentes interventions des collaborateurs par rapport à leur(s) fonction(s) sur les différentes étapes des projets. »
On en déduit qu’il doit exister une association entre COLLABORATEUR, ETAPE et FONCTION. Toutefois, la règle ne précise pas si un collaborateur peut exercer plusieurs fonctions au cours d’une étape donnée. On pourrait invoquer la règle RG03 pour conclure qu’un collaborateur ne peut exercer qu’ne seule fonction au cours d’une étape, ce à quoi on pourrait opposer : à la lecture de la règle RG03, que signifie "en même temps" ? Le même jour ? Pendant une certaine période (le temps que le fût du canon se refroidisse) ? Le temps d’une étape ? Qu’est-ce qui interdit qu’un collaborateur change de fonction au cours d’une étape ? Par conséquent, du point de vue de la modélisation, dans la figure 6, devrait-on conserver la pointe de la flèche rouge connectant PARTICIPER et FONCTION ?
2e exemple :
Intuitivement (ou sous l’influence de la règle RG01), on a le réflexe d’établir une association, nommons-la AFFECTER entre COLLABORATEUR et PROJET, parce que des collaborateurs sont affectés aux projets :
Et l’on complétera le diagramme de la figure 6 en conséquence.
D’un autre côté, nommons RG04 la règle suivante, reprise elle aussi du paragraphe 3.3 :
RG04 - « Les collaborateurs sont associés par le chef de projet au fur et à mesure de leurs interventions sur les étapes du projet ».
L’association INTERVENIR de la figure 6 est impliquée par cette règle. Mais alors, on peut se poser la question de la nécessité de la mise en oeuvre de l’association AFFECTER. En effet, si le chef de projet associe chaque collaborateur à une étape d’un projet, on sait automatiquement à quel projet un collaborateur est affecté. Un doute plane cependant concernant la date d’affectation (cf. entité-type COLLAB_DATE_PROJET de la figure 12).
De même, la règle suivante peut inciter à conserver l’association AFFECTER :
RG05 - « Les collaborateurs peuvent être amenés à titre d’essai à intervenir sur un projet avec une fonction n’étant pas encore la leur »
Règle qui fait comprendre qu’on ne peut a priori inférer ce genre d’affectation à partir de l’association INTERVENIR, servant pour les collaborateurs vraiment opérationnels, et non pas pour les collaborateurs en période d’essai.
L’alternative est donc la suivante : conserver ou supprimer l’association AFFECTER. S’il faut la conserver, on peut envisager qu’elle ne concerne après tout que les collaborateurs en période d’essai. Sinon, si elle concerne aussi les opérationnels, alors il y a redondance des données entre INTERVENIR et AFFECTER et il faudra mettre en oeuvre ne contrainte d’inclusion (évidemment rendue opérationnelle au stade SQL !) selon laquelle chaque paire <collabMatricule, projetId> appartenant à INTERVENIR est valide seulement si cette paire appartient aussi à AFFECTER.
Il y a encore pas mal de points du dossier AFPA à « commenter », le Capitaine ne me démentira certainement pas...
Partager