Conseil pour un MCD

Conseil pour un MCD - SQL/NoSQL - Programmation

Marsh Posté le 02-03-2013 à 15:38:26    

Bonjour,
j'aimerai avoir votre avis par rapport à un petit projet que je cherche à faire. Pour faciliter mon père avec le suivi du club je voulais lui faire un site internet avec la possibilité d'entré les athlètes et des compétitions et dans ses compétitions y mettre les épreuves souhaités !  
 
j'ai crée un mcd :
http://i.imgur.com/D9rt5OF.jpg
 
Ce que ça fais en sql :
 

Code :
  1. CREATE TABLE athlete (
  2. athlete_id int AUTO_INCREMENT NOT NULL,
  3. athlete_nom VARCHAR(30),
  4. athlete_prenom VARCHAR(30),
  5. athlete_num_licence INT(10),
  6. athlete_sexe VARCHAR(1),
  7. athlete_naissance_annee INT(4),
  8. athlete_naissance_jour INT(2),
  9. athlete_naissance_mois INT(2),
  10. PRIMARY KEY (athlete_id)
  11. );
  12. CREATE TABLE competition (
  13. competition_id int AUTO_INCREMENT NOT NULL,
  14. competition_lieu VARCHAR(20),
  15. competition_jour INT(2),
  16. competition_mois INT(2),
  17. competition_annee INT(4),
  18. PRIMARY KEY (competition_id)
  19. );
  20. CREATE TABLE epreuve (
  21. epreuve_id int AUTO_INCREMENT NOT NULL,
  22. epreuve_nom VARCHAR(30),
  23. competition_id INT NOT NULL,
  24. PRIMARY KEY (epreuve_id)
  25. );
  26. CREATE TABLE participer (
  27. athlete_id int AUTO_INCREMENT NOT NULL,
  28. competition_id INT NOT NULL,
  29. PRIMARY KEY (athlete_id,  competition_id)
  30. );
  31. CREATE TABLE concourir (
  32. athlete_id int AUTO_INCREMENT NOT NULL,
  33. epreuve_id INT NOT NULL,
  34. PRIMARY KEY (athlete_id,  epreuve_id)
  35. );


 
le tout grâce à Analysesi :D !
 
Il y a juste le problème des table participer et concourir qui se crée alors que je voie pas pourquoi :/


Message édité par wazany le 02-03-2013 à 15:43:46

---------------
L'annuaire des serveurs Discord Hardware.fr Aidez nous à le compléter ! | Mes ventes
Reply

Marsh Posté le 02-03-2013 à 15:38:26   

Reply

Marsh Posté le 08-03-2013 à 12:05:23    

Bonjour,
 
C'est la base des MCD et des MPD !  
Quand il y a deux entité (0,n, 1,n) une table est crée regroupant les deux clés primaires définis dans les tables.
 
 
++

Reply

Marsh Posté le 11-03-2013 à 10:19:11    

qq remarques sur le choix de certains types pour tes champs :
athlete_num_licence -> fais plutôt un varchar(10), ça sera plus générique. Si le format de la licence un jour contient des lettres, tu sera embêté.
 
athlete_naissance_annee / athlete_naissance_jour / athlete_naissance_mois -> fais plutôt un seul champ athlete_date_naissance de type DATE. Tu pourras ainsi utiliser les fonctions du sgbd pour faire des calculs sur les dates ;)
 
Même remarque pour competition_jour / competition_mois / competition_annee.
 
A mon avis, la table participer est inutile. J'imagine qu'on considère qu'un athlète participe à une compétition s'il est inscrit au moins à une épreuve. De ce fait, pour avoir la liste des athlètes participant à une compétition, tu l'auras via la table concourir.
 
Tu devrais mettre dans la table "competition" des champs en plus :
- un champ "nom" (mais non obligatoire),
- un champ date de début,
- un champ date de fin,
-  Pour le champ competition_lieu, tu devrais plutôt en faire une clé étrangère qui pointerait dans une table "lieu" (qui aurait un id, un nom et d'éventuels autres champs). Sans ça, tu risque d'avoir dans la BD des lieux identiques mais écrits différemment. Dans ce cas, tu pourras plus faire de requête précise donnant le nb de compétitions par lieu.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-03-2013 à 11:20:49    

Merci pour les conseils :) ! mais petite questions si on veux faire qu'un athlète puisse faire plusieurs concoure dans la même compétition, c'est possible?


---------------
L'annuaire des serveurs Discord Hardware.fr Aidez nous à le compléter ! | Mes ventes
Reply

Marsh Posté le 11-03-2013 à 11:32:38    

Bonjour !
 
Comme proposé ci-dessus, le lien en base est "concourir", donc la participation d'un athlète a une ou plusieurs épreuves, que celles-ci soient dans la même compétition ou non.
 
Et le lien "participe" peut être calculé en regardant si l'athlète concerné participe à au moins une épreuve de la compétition considérée.
 
Bonne continuation !

Reply

Sujets relatifs:

Leave a Replay

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