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 :
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) :
La représentation « canonique » étant la suivante, plus lourde, mais une fois encore équivalente :
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 :
Résultat produit par PowerAMC lors du passage direct du MCD au « MPD » :
Ce qu’il faut obtenir (évacuation de l’attribut EtatId de la clé primaire) :
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 » :
Clic droit sur Identifiant1 et sélection de « Propriétés » :
Dans la fenêtre « Propriétés de la clé », sélectionner l’onglet « Colonnes » :
On accède alors à la composition de la clé :
Il n’y a plus qu’à supprimer la ligne 3, porteuse de EtatId, suite à quoi la clé sera réduite à la paire {ProjetId, EtatDate} :
Fermez le ban.
Partager