Page 1 sur 4

Comment bien structurer ma BD MySQL?

Posté : 28 déc. 2005, 15:17
par Sebe
Salut,
J'ai fait un site pour un club de course à pied et j'aimerai valoriser les courses organisées par les sociètaires du club. Je voudrais reprendre chaque classement des courses depuis qu'elles existent et les mettre dans une BD (elles existent toutes sur papier mais pas sur disquette!)
Quelle serait la bonne structures de ma Base de Données en voyant ce classement ci-joint

http://img529.imageshack.us/img529/4622 ... ent7oj.jpg

J'ai déjà pensé à faire une BD avec les différentes courses:
ID_course / n_course / nom_course / kilométrage

et une autre avec les résultats
ID_résultat / n_course / arrive / nom du coureur / prénom / club / temps

Le reste pouvant être calculé dans la page internet. Qu'en pensez-vous?
Merci

Posté : 28 déc. 2005, 15:21
par Cyrano
Le sujet concerne la Modélisation de la base et non le SQL : sujet déménagé.

As-tu des notions de modélisation (MERISE, UML, Autre) ou pas du tout ?

Posté : 28 déc. 2005, 16:48
par Sebe le Néophyte
Comme je ne sais pas de quoi tu me parles, je vais dire que je n'ai aucune notion :roll:

Ceci dit, je suis déjà intervenu sur ce forum pour avoir un petit coup de main pour la création d'une base de données. Cette aide concernait la création d'un listing de coureur http://www.kain-bruyere.be/autres_pages/societaire.php où j'avais eu un sérieux coup de main.

NB dans le forum débutant ! ! !

Merci

Posté : 28 déc. 2005, 17:02
par Cyrano
Ok, il est difficile de te résumer un cours de modélisation pour concevoir une base de données, il existe du reste des tutos sur le sujet, notamment sur developpez.com. Mais pour résumer, disons que tu dois partir d'une liste des données que tu dois pouvoir manipuler : des noms, des dates, des lieux etc.. Tu dois répartir ces éléments en entités ou en propriété d'entités afin d'établir ensuite les relations qu'il existe entre ces entités. Par exemple, tu pourrais avoir une entité competiteur avec comme propriétés "nom", "prenom" et une autre entité "competition" avec pour propriété "date_evenement", "lieu", etc... On peut définir qu'un compéttieur peut participer à 0 à n compétition et qu'une compétition concerne 1 à n compétiteur.

Partant de là, tu vas pouvoir créer un modèle physique de données qui sera la modèle te servant à concevoir les différentes tables de ta base de données avec les champs nécessaires.

Posté : 28 déc. 2005, 17:34
par Sebe
:shock:

Je suis si loin du compte que cela avec mes propositons de base de données?

Posté : 28 déc. 2005, 17:46
par iclo
On dira qu'il a de l'idée, mais qu'il faut encore plus décomposer, pour parvenir à une structure sans redondances d'informations. Par exemple notamment en ajoutant une table "coureur" et en ayant un champ idCoureur dans la table resultat.

Posté : 28 déc. 2005, 18:14
par pjl
:shock:

Je suis si loin du compte que cela avec mes propositons de base de données?
Le principe de base d'une base de données : éviter la répétion des données.

Avec ta proposition, dans club, tu auras combien de doublons à ton avis ?

Posté : 28 déc. 2005, 18:27
par Sebe
C'est vrai une bonne dizaine! Le hic, c'est que d'une année à l'autre, on peut changer de club!


Donc, si je comprend bien:
ID_course / n_course / nom_course / kilométrage
ID_club / n_club / nom_club
ID_résultat / n_course / place_arrive / nom_coureur / prénom / n_club / temps

Question neccessaire:
Dois-je encoder tous les résultats de toutes les courses dans la même BD ou dois-je refaire une nouvelle à chaque année, course, ou ... ?

Posté : 28 déc. 2005, 18:39
par Cyrano
Peut-être bien qu'en ajoutant un champ comportant la date suffirait : par la suite, tu peux ne chercher les résultats que dans une tranche de temps.

Posté : 28 déc. 2005, 18:40
par iclo
Je pense que tu confonds base de donnée et table.
Non, inutile d'avoir des tables identiques, tu peux très bien ajouter une informations de date pour différencier les courses des différentes années.

Posté : 28 déc. 2005, 18:55
par Sebe
Si je n'emplois pas les bons termes mais dans ma tête, c'est bon!

Ce soir, je proposerai d'autres tables et vous pourrez mz donner votre avis!

Merci

Posté : 28 déc. 2005, 23:54
par Sebe
J'ai rien inventé ... j'ai été un peu (beaucoup) aidé!

Voici les tables que je vous propose:

- une table pour définir les courses en question ... à savoir que d'une année à l'autre, le kilométrage pourrait varier!
Image

-une table pour les participants ... les années étant un numéro de dossart
Un grand changement (voir page 2)

- une table pour définir la catégorie du participant
Image

- une table avec les résultats pour chacune des années pour l'instant, il y en a 5 mais ... !
Image

Si toute fois l'idée devient bonne, est-ce que les types de champs sont correctes?

Merci

Posté : 29 déc. 2005, 00:01
par fab
y a un truc qui me choque pour dans table courses_part au lieu de mettre toutes ces années qui selon toi font office de numéro de dossart tu mets pas un seul champ : numero_dossart ?

Posté : 29 déc. 2005, 00:10
par Sebe
En faite, chaque année le dossart change. Voilà pourquoi faire une table où on y trouve les numéros de dossart.
J'admets que cette table me pose aussi quelques problèmes à cause de sa longueur mais si il y a un autre moyen ... pourquoi pas!

Posté : 29 déc. 2005, 00:14
par fab
une table dossart avec deux champs : année || numéro