Bonjour Barnabech,
Il y a plusieurs manières de résoudre cette question. Par exemple, en découpant les pistes qui passent par plusieurs nœuds en tronçons de pistes.
Mais le principal problème de ce MCD est que les nœuds et les liaisons ne sont pas reliés entre eux. Cette affirmation peut paraître débile au premier abord étant donné que LIAISON est une association réflexive sur NOEUD. Ce que je veux dire, c'est que LIAISON représente en réalité une piste, une RM ou une partie (un tronçon) de piste mais ni NOEUD, ni LIAISON n'est relié à PISTE ou à RM. Ce sont ces liens qu'il faut modéliser.
Théoriquement, il faudrait associer directement l'association LIAISON avec les entités PISTE et RM mais l'association entre une entité et une association est un concept inconnu des outils de modélisation. On doit donc en passer par l'artifice consistant à transformer LIAISON en entité doublement identifiée relativement à NOEUD et sans identifiant propre.
[ LIAISON ]--1,1----( bas )----0,n->[ NOEUD ]
[ LIAISON ]--1,1----( haut )----0,n->[ NOEUD ]
[ LIAISON ]--0,1----( )----1,1--[ RM ]
[ LIAISON ]--0,1----( )----1,n->[ PISTE ]
Ces deux dernières CIF doivent être dotées d'une contrainte d'exclusion exprimant le fait qu'une LIAISON est soit sur une RM soit une PISTE.
Envoyé par
Barnabech
Les RM ont un nom, des horaires d'ouvertures qui varient selon la saison (hausse et basse saison). Elles peuvent être fermées ou ouvertes selon la météo.
C'est mieux de le modéliser comme ça :
[ RM ]--1,n----( HORAIRE )----0,n--[ SAISON ]
L'association HORAIRE contient les propriétés HoraireOuverture et HoraireFermeture.
Envoyé par
Barnabech
Les pistes ont un nom, une difficulté et une longueur précise.
Il manque une propriété Longueur dans l'entité PISTE.
Envoyé par
Barnabech
Pour définir une liaison, il me faut donc deux nœuds et soit une RM soit une piste. Il y a souvent des intersections entre les pistes et j'ai besoin de calculer la longueur du trajet effectué. Pour cela j'ai ajouté une donnée "longueur" à liaison si elle est égale à 0, la piste n'est pas "coupé" si elle est différente de 0, elle représente la longueur de la liaison.
Faut-il comprendre que la longueur d'une LIAISON n'est pertinente que dans le cas où elle est reliée à une PISTE et pas à une RM ? Si oui, alors il devient nécessaire de spécialiser les liaisons. On introduit donc deux entités spécialisées LIAISON_RM et LIAISON_PISTE :
[ LIAISON_RM ] ===> [ LIAISON ]
Ce qui se lit "une LIAISON_RM est une LIAISON" et permet à LIAISON_RM d'hériter des caractéristiques de LIAISON (propriétés et associations). De même pour les pistes :
[ LIAISON_PISTE ] ===> [ LIAISON ]
L'intérêt est double. D'une part, on peut doter l'entité LIAISON_PISTE de la propriété Longueur sans polluer les liaisons RM, d'autre part on associe chaque entité spécialisée à l'entité lui correspondant. Les cardinalités ne sont plus 0,1 ce qui évite l'ajout d'une table intermédiaire dans le MLD.
[ LIAISON_RM ]--1,1----( )----1,1--[ RM ]
[ LIAISON_PISTE ]--1,1----( )----1,n->[ PISTE ]
Envoyé par
Barnabech
Je n'ai pas résolu le problème des navettes.
Lequel ?
Partager