Merise MCD : comment modéliser ca :

Merise MCD : comment modéliser ca : - SQL/NoSQL - Programmation

Marsh Posté le 10-08-2004 à 09:03:10    

J'ai un petit soucis je suis en train de réaliser un MCD et je bloque sur une contrainte.
Je vais prendre un exemple pr vs expliquer :
 
Admettons il y a une course d'une ville à une autre :
 
j'ai une entité "Course","ville"
 
Dans course je veux mettre la ville d'arrivée et la ville de départ
dc ca donne :  
VILLE(code_ville,nom_ville)
COURSE(numero_course,code_ville_départ,code_ville_arrivée)
 
Je sais pas si vous voyez ce que je veux dire mais je pense pas que ca soit bien représenté au niveau du code_ville_depart et code_ville_arrivé car je peux pas relié les entités entre elle avec une association et des cardinalités.
 
Merci de votre aide !
 

Reply

Marsh Posté le 10-08-2004 à 09:03:10   

Reply

Marsh Posté le 10-08-2004 à 09:19:02    

tu a deux entités :
VILLE(code_ville, nom_ville) clef principal code_ville
COURSE(numero_course) clef principal numero_course
et deux relations "a pour ville de depart" "a pour ville d'arrivée" ce qui aura pour consequence par la suite que tu aura deux clefs etrangeres dans ta table COURSE qui seront code_ville_depart et code_ville_arrivé mais ca n'apparait pas dans les entités de ton MCD (c est sous entendu par la relation) en fait. Les cardinalités sont 1-n (une seule ville de part/ d'arrivée par course, n courses pour une ville)

Reply

Marsh Posté le 10-08-2004 à 09:20:04    

au passage pour etre pointilleux si deux villes ne peuvent pas avoir le meme nom, code_ville ne sert a rien.

Reply

Marsh Posté le 10-08-2004 à 09:25:04    

Ok merci, c t evident mais je ne savais plus comment faire !

Reply

Marsh Posté le 17-08-2004 à 11:45:46    

J'ai modélisé selon vos ton conseil et ca marche :
 
VILLE(code_ville, nom_ville) clef principal code_ville  
COURSE(numero_course) clef principal numero_course  
 
J'ai donc ds COURSE 2 clé etrangères : CODE_VILLE_DEPART et CODE_VILLE_ARRIVEE
 
Par contre j'ai un probleme lorsque je fais une requete sur COURSE. Ex :
 
SELECT * FROM COURSE,VILLE WHERE COURSE.CODE_VILLE_DEPART = VILLE.CODE_VILLE AND COURSE.CODE_VILLE_ARRIVEE = VILLE.CODE_VILLE
 
il ne me trouve rien comme resultat. Je pense que c normal il y a un pb avec le code ville ..
 
Vois tu ce que je veux dire ?
 
Merci

Reply

Marsh Posté le 17-08-2004 à 11:51:32    

J'ai trouvé ..
Il suffit de rajouer une 2eme table "fictive" ds la clause "FROM"
 
Nvelle requete :
SELECT * FROM COURSE,VILLE,VILLE2 V2 WHERE COURSE.CODE_VILLE_DEPART = VILLE.CODE_VILLE AND COURSE.CODE_VILLE_ARRIVEE = V2.CODE_VILLE

Reply

Marsh Posté le 18-08-2004 à 11:09:24    

c est quoi cette table fictive ????

Reply

Marsh Posté le 18-08-2004 à 11:13:43    

Je me suis trompé il faut mettre 2 fois la meme table mais avec un alias pr la 2eme.
 
SELECT * FROM COURSE,VILLE,VILLE V2 WHERE COURSE.CODE_VILLE_DEPART = VILLE.CODE_VILLE AND COURSE.CODE_VILLE_ARRIVEE = V2.CODE_VILLE

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed