Un petit exercice...
Supposons que vous souhaitiez conserver la trace des changements d’état des projets : la règle deviendrait donc la suivante :
(R1) A une date donnée, un projet donné est dans un état et un seul.
Auquel cas, la date d’état pouvant être multiple pour un projet, l’attribut correspondant doit être évacué de l’entité-type PROJET.
Le MCD deviendrait alors le suivant :
http://www.fsmwarden.com/developpez_...ate_cif_v3.png
Où la flèche rouge représente la traduction de la règle d’unicité (R1). Cette flèche symbolise ce qu’en Merise on appelle une CIF (abréviation de « contrainte d’intégrité fonctionnelle »).
Certains auteurs préfèrent la représentation graphique suivante (équivalente) :
http://www.fsmwarden.com/developpez_...ate_cif_v2.png
La représentation « canonique » étant la suivante, plus lourde, mais une fois encore équivalente :
http://www.fsmwarden.com/developpez_...ate_cif_v1.png
Quoi qu’il en soit, PowerAMC ne sait pas ce qu’est une CIF... En conséquence de quoi, au niveau SQL, il générera une table PROJET_ETAT dont la clé primaire sera le triplet {ProjetId, EtatDate, EtatId} : il faudra réduire manuellement cette clé à la paire {ProjetId, EtatDate} pour que la règle R1 soit respectée.
:!: Par défaut il y aura génération d’une table DATE dont on a strictement rien à faire et qui est plus une gêne qu’autre chose. On peut demander à PowerAMC de ne pas la générer :
http://www.fsmwarden.com/developpez_...s_genener_.png
Résultat produit par PowerAMC lors du passage direct du MCD au « MPD » :
http://www.fsmwarden.com/developpez_...e_mld_brut.png
Ce qu’il faut obtenir (évacuation de l’attribut EtatId de la clé primaire) :
http://www.fsmwarden.com/developpez_..._mld_clean.png
Pour évacuer l’attribut EtatId de la clé primaire : Sélectionner « Propriétés de la table PROJET_ETAT » et cliquer sur l’onglet « clés » :
http://www.fsmwarden.com/developpez_..._mld_cle_a.png
Clic droit sur Identifiant1 et sélection de « Propriétés » :
http://www.fsmwarden.com/developpez_..._mld_cle_b.png
Dans la fenêtre « Propriétés de la clé », sélectionner l’onglet « Colonnes » :
http://www.fsmwarden.com/developpez_..._mld_cle_c.png
On accède alors à la composition de la clé :
http://www.fsmwarden.com/developpez_..._mld_cle_d.png
Il n’y a plus qu’à supprimer la ligne 3, porteuse de EtatId, suite à quoi la clé sera réduite à la paire {ProjetId, EtatDate} :
http://www.fsmwarden.com/developpez_..._mld_cle_e.png
Fermez le ban.