Comment bien structurer ma BD MySQL?

Mammouth du PHP | 545 Messages

28 déc. 2005, 15:17

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
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

28 déc. 2005, 15:21

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Sebe le Néophyte
Invité n'ayant pas de compte PHPfrance

28 déc. 2005, 16:48

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

Mammouth du PHP | 19672 Messages

28 déc. 2005, 17:02

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

28 déc. 2005, 17:34

:shock:

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

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
ViPHP | 2144 Messages

28 déc. 2005, 17:46

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.

ViPHP
pjl
ViPHP | 2119 Messages

28 déc. 2005, 18:14

: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 ?

Mammouth du PHP | 545 Messages

28 déc. 2005, 18:27

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 ... ?
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

28 déc. 2005, 18:39

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

28 déc. 2005, 18:40

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.

Mammouth du PHP | 545 Messages

28 déc. 2005, 18:55

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
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

28 déc. 2005, 23:54

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
Modifié en dernier par Sebe le 30 déc. 2005, 00:32, modifié 2 fois.
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
fab
ViPHP | 2657 Messages

29 déc. 2005, 00:01

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 ?
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 545 Messages

29 déc. 2005, 00:10

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!
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
fab
ViPHP | 2657 Messages

29 déc. 2005, 00:14

une table dossart avec deux champs : année || numéro
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }