Le MCD devrait comporter une contrainte d’inclusion, symbolisant la contrainte :
Un lévrier ne peut participer à une course que s’il est engagé dans une épreuve à laquelle appartient cette course.
Cela dit, si on peut se contenter de dire :
L’engagement d’un lévrier dans une épreuve est connu parce qu’il participera à telle course (non encore effectuée) de cette épreuve, l’association ENGAGEMENT devient inutile.
Mais si l’on tient à ce que l’engagement soit connu, même sans participation du lévrier à une course, alors l’association doit être conservée.
Dans ces conditions, si vous utilisez WinDesign qui permet de modéliser la contrainte d’inclusion, celui-ci devrait générer les triggers qui vont bien pour le niveau SQL. Mais on peut s’en sortir au niveau MLD, sans avoir ensuite à mettre des triggers en œuvre, en modélisant avec MySQL Workbench (gratuit) :
On identifie COURSE relativement à EPREUVE, ce qui permet de propager l’attribut EpreuveId jusqu’à PARTICIPATION, table alors porteuse à la fois d’une clé étrangère référençant ENGAGEMENT et d’une clé étrangère référençant COURSE, clés étrangères contenant toutes deux l’attribut EpreuveId : dans ces conditions, un lévrier ne peut pas participer à une course sans avoir d’abord été engagé dans l’épreuve à laquelle appartient cette course :
Je reste à l'écoute...
Et n’oubliez pas de voter quand une réponse a pu vous aider...
Partager