Creation d'une base de donnée

ViPHP
pjl
ViPHP | 2119 Messages

17 juil. 2005, 12:21

conclusion de pjl debrouille toi.

Merci c'est sympa
J'ai fait un certain nombre de remarques dont il n'a pas été tenu compte.
Pour la structure de la base de données, il me semble que dans le précédent post, ouckileou avait dit ce qu'elle devait être.

Perso, je donne des indications, la personne concernée refléchit dessus, fait son boulot, le propose et on corrige mais il ne faut pas compter sur moi pour faire le boulot à ta place.


Autre chose, perso, c'est seulement maintenant que je découvre qu'il s'agit de 5000 concours et que ceux-ci se répettent régulièrement (à priori, tous les ans).
Autre point, on stocke des concours mais je n'ai vu nulle part si on stockait des résultats ou des participations?

Eléphant du PHP | 174 Messages

17 juil. 2005, 12:28

je demande pas qu'on face le boulot à ma place, je débute et je part de rien
la seule aide c'est vous et les membres du forum et les docs du site http://www.developpez.com/
je remercie d'avance ceux et celle qui répondent à mes post's.

PS: il n'y aura pas de resultat et de participation.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 12:50

et bien personnellement ce schéma me semble bon compte tenu des infos dont je me souviens.

Maintenant, comme les autres l'ont dit au début du post, utilise les bons types pour tes champs et tu pourras te lancer dans ton interface

Si tu souhaites garder ce système de phrase pour indiquer la date de ton concours, tu peux peut-être séparer les informations. Par exemple stocker juste le numéro du mois, et ajouter une petite phrase de complément :

Code : Tout sélectionner

mois : 7 precision : "dernier week-end"
si tu cherches tous les concours qui sé déroulent en juillet, ce sera plus simple de chercher sur des entiers tous les 7, que directement dans tes phrases.

pareil pour heure début/heure fin, tu pourrais les stocker à part dans un champ time

Eléphant du PHP | 174 Messages

17 juil. 2005, 13:30

Excellent ton idée, par contre dois je crée une table date
contenant les champs id_date, mois, et détails.
http://users.rockweb.org/f4bph/baserela.JPG
En ajoutant une table je pourrais la faire évolué au cas ou.
PS: c'est vrai que 1:1 on est pas obligé d'ajouté une table. :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 13:46

non là je vois pas l'intérêt de créer une nouvelle table :roll:

Eléphant du PHP | 174 Messages

17 juil. 2005, 16:43

Voici la modif :
http://users.rockweb.org/f4bph/b_concours.JPG

Voici ma table concours

Code : Tout sélectionner

CREATE TABLE `concours` ( `id_concours` int(11) unsigned NOT NULL auto_increment, `nom` varchar(100) NOT NULL default '', `mois` int(11) NOT NULL default '0', `d_mois` varchar(255) NOT NULL default '', `report` varchar(255) NOT NULL default '', `lien` varchar(255) default NULL, `infos` varchar(255) default NULL, PRIMARY KEY (`id_concours`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Par contre pour mon problème de jointure je ne devrais plus avoir de problème ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 17:28

c'était quoi le problème de jointure ?

int(11) c'est peut-être voir grand pour un champ 'mois' qui a priori, si tu es dans le même espace temps que nous, contiendra un truc entre 1 et 12 ;)

Eléphant du PHP | 174 Messages

17 juil. 2005, 17:43

concernant l'alimentation des tables de liaison concours_bande et concours_mode (jointure) :

Voici mes autres tables :

Code : Tout sélectionner

CREATE TABLE `concours_bande` ( `id_concours` smallint(5) unsigned NOT NULL default '0', `id_bande` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id_concours`,`id_bande`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Code : Tout sélectionner

CREATE TABLE `concours_mode` ( `id_concours` smallint(5) unsigned NOT NULL default '0', `id_mode` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id_concours`,`id_mode`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Code : Tout sélectionner

CREATE TABLE `bandes` ( `id_bande` smallint(5) unsigned NOT NULL auto_increment, `bande` set('160m','80m','40m','30m','20m','17m','15m','12m','10m','6m','2m','70cm') NOT NULL default '', PRIMARY KEY (`id_bande`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Code : Tout sélectionner

CREATE TABLE `modes` ( `id_mode` smallint(5) unsigned NOT NULL auto_increment, `mode` set('phonie','télégraphie','mode digitaux') NOT NULL default '', PRIMARY KEY (`id_mode`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INT(2) pour deux chiffres ex:99

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 17:47

je ne comprends pas ce problème persistant que tu as pour remplir les relations... ce ne sont que des tables comme les autres, dedans tu mets un id_concours et un id_mode ou un id_bande...


et tu n'as pas compris le principe : tu mets un enum comme libellé de mode ou de bande... #-o

on va reprendre encore une fois : ta table modes recense les possibilités de modes disponibles
donc là tu en as 3 donc 3 lignes :

Code : Tout sélectionner

modes ------- 1 | phonie 2 | télégraphie 3 | mode digitaux
et si un jour tu veux rajouter un nouveau mode, tu rajouteras une ligne

Code : Tout sélectionner

4 | nouveau mode
avec ton système d'énum, tu serais obligé de modifier la structure de la base pour pouvoir rajouter une possibilité
tu dois pouvoir utiliser ta base en ne manipulant que les données, pas la structure

sinon pourquoi parles-tu de int(2) ? il n'y a pas de int(2) dans tes tables.
Pour stocker un numéro de mois, un tinyint suffira largement

Eléphant du PHP | 174 Messages

17 juil. 2005, 17:53

quelle commande dois je utilisé alors au lieu de set ?

dois je crée les champs phonie, télégraphie et mode_digitaux au lieu de mode.

je ne comprend pas là :cry:

Ok pour tinyint

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 17:56

non : phonie, télégraphie et mode_digitaux sont des valeurs et non des champs

tes champs de la table mode sont :
id_mode : un entier qui va identifier la ligne
lib_mode : le libellé du mode, qui va donc être phonie ou télégraphie ou mode_digitaux

et ensuite tu relieras un concours à un mode via la table concours_mode, en insérant un id_concours et un id_mode

Eléphant du PHP | 174 Messages

17 juil. 2005, 18:00

phonie, télégraphie et mode_digitaux sont des valeurs et non des champs
Ok pour ça donc cette ligne est correct :
  • `mode` set('phonie','télégraphie','mode digitaux') NOT NULL default '',

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 18:03

disons que effectivement ce n'est pas totalement incorrect, mais à partir du moment où cette table va contenir uniquement les modes possibles, donc être modifiée rarement pourquoi mettre un enum ?

tu mets un VARCHAR pour ton lib_mod, et voilà
et si jamais un jour tu veux rajouter un nouveau mode tu rajouteras une ligne comme je te l'ai dit juste avant

si tu gardes ton enum, tu ne pourras jamais rajouter de mode sans changer la structure de la table

là ça ne sert à rien, tu te compliques la vie avec ce enum

Eléphant du PHP | 174 Messages

17 juil. 2005, 18:08

d'accord moi de mon côté j'avais compris que varchar ça permettait d'inseré
du texte seulement, je ne savais pas que l'on pouvait l'utilisé avec des checkbox.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 18:15

d'accord moi de mon côté j'avais compris que varchar ça permettait d'inseré
du texte seulement je ne savais pas que l'on pouvait l'utilisé avec des checkbox.
tu mélanges tout :)

varchar c'est effectivement pour stocker du texte

mais que viennent faire tes checkbox dedans ? pour l'instant tu t'occupes de la base de données, de la structure.
Avec des checkbox tu récupères une valeur et tu en fais ce que tu veux ça n'a rien à voir.

Tu ne comprends toujours pas que la table modes stockera uniquement les possibilités de modes, les différents modes disponibles (ici 3) et qu'elle ne sera modifiée que si tu rajoutes un nouveau mode un jour.

Et que c'est concours_mode qui fera la liaison entre un concours et un mode...