# Gnral Dveloppement > ALM > Modlisation > Schma > [MCD] Modle conceptuel plutt ambigu [tudiant dbutant]

## aymanamkassou

Bonjour ! J'ai t assez bloqu sur cette question d'examen, toute aide est apprcie. voici l'enonc:
"On dsire informatiser la gestion des courses de voitures. Chaque course est caractrise par une ville de dpart, une ville d'arrive et une distance. Une mme course peut avoir lieu dans plusieurs dates diffrentes constituant chacune un dpart particulier. Plusieurs employes(mdecins, mcaniciens, arbitres, ..) sont affectes a chaque dpart. Un pilote automobile connu pas son nom, son adresse et son ge peut participer a un dpart et peut n'appartenir a aucun club. Le club est caractris par son nom et sa date de cration.
Chaque voiture possde un numro, une marque et utilise une certaine quantit d'essence pour accomplir le trajet. Le prix d'une voiture dpend de son modle et la quantit d'essence dpend de la manire avec laquelle un pilote d'automobile conduit sa voiture."
Mon ambigut rside dans le fait que l'exercice mentionne que la quantit de carburant brl dpend uniquement de la mthode de conduite, et de la voiture,  l'exclusion de la distance. Cela implique-t-il automatiquement qu'il y aurait une association 1  1 entre le pilote et la course ? 
Voici le modle conceptuel que j'ai ralis. Dites-moi si cela a un sens, s'il vous plat.

Voila le modele logique:
Course(numcourse, villedep, villearr, distance, #numemploy, #numpil)
Pilote(numpil, nompil, adressepil, datenaissance, maniere_conduite)
Employe(numemploye, fonction)
Club(numclub, nomclub, datecreation)
Voiture(numvoiture, marque, modele, prix)
Conduit(#numvoi, #numpil, qttessence)

----------


## fsmrel

Bonjour aymanamkassou,

Il y a pas mal de choses  dire, mais dj :

Une course a un seul employ et un seul pilote, cest maigre...

Un pilote participe  au plus une course, ce qui est encore bien  peu... 

Un pilote peut appartenir en mme temps  plusieurs clubs. Normal ?

En passant, utilisez lexcellent Looping, trs beau cadeau de Paprick (forum  Looping, https://www.developpez.net/forums/f2...utils/looping/)

Bon courage !

----------


## aymanamkassou

D'abord Merci beaucoup pour votre temps.



> Une course a un seul employ et un seul pilote, cest maigre...


Je fixe la cardinalit  1 entre la course et le pilote pour viter une association ternaire entre les trois (course,pilote,voiture). Puisque la quantit de carburant brl dpend de la mthode de conduite, de la voiture et de la distance. Mais en y rflchissant, a n'a pas vraiment de sens d'avoir une course avec une seule voiture haha. 



> Un pilote participe  au plus une course, ce qui est encore bien peu...


J'ai un problme avec la cardinalit et les dimensions temporelles. Par exemple, un pilote peut participer  plusieurs courses mais pas en mme temps ; comment cela se traduit-il en termes de cardinalit ? Lorsque je fixe la cardinalit  n pour les pilotes et les clubs, vous mentionnez qu'ils ne peuvent pas tre dans plusieurs clubs en mme temps. Excusez ma confusion.

J'ai recr le modle en looping, faites-moi savoir si c'est mieux.


une dernire chose, l'association de particpation est-elle ncessaire ici aprs avoir ajout l'association ternaire ?

----------


## fsmrel

Aymanamkassou, vous allez dcouvrir le monde des CIF (contraintes dintgrit fonctionnes) 😉
Prenons le cas de la contrainte voulant qu une date un pilote ne puisse participer qu une seule course.

 Dans le cadre de la thorie relationnelle on crit : 

{PILOTE, DATE} -> {COURSE}

Au stade MCD, pour cela on cre une entit-type DATE que lon dclare fictive (ce qui pour marquer lil fait que son nom est mis entre parenthses par Looping). Il est surtout important de noter que cette entit-type ne fera en aucune faon lobjet dune table (MLD et SQL). 

Dans un deuxime temps, on choisit lobjet CIF et lon cre un lien entre la CIF et lassociation PARTICIPER. Ceci fait, on cre un lien entre la CIF et lentit-type COURSE, puis un lien avec lentit-type PILOTE. COURSE est alors la cible de la CIF.

Au rsultat : A une date, un pilote ne peut participer qu une course.

On marche sur des oeufs, avanons doucement. En attendant, merci Paprick !

----------


## fsmrel

Maintenant il sagit de modliser les contraintes :

(C1) A la date T, le pilote P conduit seulement la voiture V ;
(C2) A la date T, le pilote P participe seulement  la course C ;
(C3) A la date T, la voiture V est conduite seulement par le pilote P ;
(C4) A la date T, la voiture V participe seulement  la course C ;
Dans le contexte de la thorie relationnelle, ces contraintes sexpriment ainsi :

{P, T} -> {V, C}
{V, T} -> {P, C}
Avec le MCD merisien, laffaire se corse. L encore, on utilise des CIF, mais a devient de la gymnastique.

Il va falloir :

Une 1re CIF pour exprimer la contrainte (C1) : {P, T} -> {V}
Une 2e CIF pour exprimer la contrainte (C2) : {P, T} -> {C}
Une 3e CIF pour exprimer la contrainte (C3) : {V, T} -> {P}
Pas besoin de 4e CIF pour exprimer la contrainte (C4) : {V, T} -> {C}
car Looping manifestement linfre.

Peut-tre peut-on simplifier le MCD dans la mesure o Looping propose des CIF multi-cibles, mais je nai pas russi  mettre en oeuvre cette possibilit. Le MCD ci-dessous peut donner lenvie de partir en courant, mais en tout cas le code SQL produit est correct.

*Code SQL* (notez la contrainte UNIQUE(v, t) de la table R) traduisant une cl alternative :



```

```

Affaire  suivre...

----------


## aymanamkassou

Merci beaucoup ! Cela a beaucoup de sens, mais malheureusement, cela ne fait pas partie de mon programme d'tudes et j'ai peur de ne pas pouvoir l'utiliser le jour de l'examen, mais de toute faon, c'est trs logique et cela a beaucoup plus de sens. Je vous remercie encore une fois.

----------


## fsmrel

Bon, le MCD se lit plus facilement si on le dbarrasse de ses CIF. Il suffit de se souvenir quavant la gnrations du code SQL il faudra de les remettre en uvre, maintenant quon sait comment elles fonctionnent.




Simplement jai oubli de traiter  de lessence. 

Si la rgle est la suivante :

A la date _t_, lors de la course_ c_, la voiture_ v_ a consomm la quantit_ q_ dessence ;
il suffit donc de faire porter cette quantit par lassociation R :



La mise en oeuvre de la rgle reste valable si au lieu de quantit consomme on parle de quantit alloue.

Code SQL 



```

```

Et bonne route !  ::D:

----------


## fsmrel

En cherchant ce que javais pondu en ce qui concerne les courses de chevaux, je suis tomb par hasard sur un problme quivalent au vtre, o lon sappuie non pas sur un MCD mais dun diagramme UML.
a se passait en 2014. 

Voyez ici :  https://www.developpez.net/forums/d1...navigationnel/

----------

