Creation d'une base de donnée

Eléphant du PHP | 174 Messages

15 juil. 2005, 09:00

Pour ouckileou
je n'est rien oublié de ce qu'on à fait ... :wink:
et pour Augure
oui pour répondre à ta première question
et ta deuxième question non.

Eléphant du PHP | 91 Messages

16 juil. 2005, 12:48

Code : Tout sélectionner

Create table Info ( ID int auto_increment , NOM varchar(40) NOT NULL , DATE varchar(255) NOT NULL , BANDE numeric(8,2) NOT NULL , MODE enum('phonie','télégraphie','mode digitaux') NOT NULL , REPORT varchar(255) NOT NULL , LIEN varchar(255) NOT NULL , INFOS varchar(255) NOT NULL , CONSTRAINT cst_BANDE CHECK BANDE IN ( 160, 80, 40 , 30 , 20 , 17 , 15 , 12 , 10 , 6 , 2 , 0.7 ) , CONSTRAINT UNIQUE INDEX idx_ID (ID) )
Note :
1/ Remplace les CHECKBOX par des RADIO BUTTON vu qu'on ne prendre qu'un seul choix
2/ J'ai mis tous les champs obligatoire ... vérifies ça en fonction de tes besoins en remplacant NOT NULL par NULL
3/ Ma solution est dénormalisée c'est vrai ... mais je préfére me simplifier la vie (en fonction des éléments que tu m'as donné) plutot que respecter à la lettre la forme normale.
4/ Je ne sais pas si j'ai bien compris ce que tu veux stocker dans le champs REPORT

Bonne continuation

Mammouth du PHP | 19672 Messages

16 juil. 2005, 13:06

Code : Tout sélectionner

... DATE varchar(255) NOT NULL , ...
Une date en VARCHAR ??? Ça va drôlement faciliter les manipulations et les tris par date ça tiens :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
pjl
ViPHP | 2119 Messages

16 juil. 2005, 13:06

Vu que elminio a répondu oui à la 1ere question, cette structure de table n'est pas valable.

Eléphant du PHP | 91 Messages

16 juil. 2005, 14:51

Pjl : Oups ... en effet boulette

Cyrano : C'est un peu choquant, mais voici l'exemple de contenu du champs "date" d'elminio qui explique le varchar
Date : 2 nd week-end entier de juillet, du samedi à 12:00 UTC
au dimanche à 12:00 UTC.
Mais c'est vrai que faire des recherches sur ce champs sera impossible.
Elimio Est ce que tu as voulu dire DATE DE DEBUT et DATE DE FIN ? Si oui c'est pas encore bon

Donc version II :

Code : Tout sélectionner

Create table Info ( ID int auto_increment , NOM varchar(60) NOT NULL , DATE varchar(255) NOT NULL , BANDE_160 tinyint DEFAULT 0, BANDE_80 tinyint DEFAULT 0, BANDE_40 tinyint DEFAULT 0, BANDE_30 tinyint DEFAULT 0, BANDE_20 tinyint DEFAULT 0, BANDE_17 tinyint DEFAULT 0, BANDE_15 tinyint DEFAULT 0, BANDE_12 tinyint DEFAULT 0, BANDE_10 tinyint DEFAULT 0, BANDE_6 tinyint DEFAULT 0, BANDE_2 tinyint DEFAULT 0, BANDE_07 tinyint DEFAULT 0, MODE_TELEGRAPHIE tinyint DEFAULT 0, MODE_PHONIE tinyint DEFAULT 0, MODE_DIGITAUX tinyint DEFAULT 0, REPORT varchar(255) NOT NULL , LIEN varchar(255) NOT NULL , INFOS varchar(255) NOT NULL , CONSTRAINT UNIQUE INDEX idx_ID (ID) )
Note :
1/ J'ai mis tous les champs obligatoire ... vérifies ça en fonction de tes besoins en remplacant NOT NULL par NULL
2/ Ma solution est dénormalisée c'est vrai ... mais je préfére me simplifier la vie (en fonction des éléments que tu m'as donné) plutot que respecter à la lettre la forme normale.
3/ elminio, je ne sais pas si j'ai bien compris ce que tu veux stocker dans le champs REPORT

Mammouth du PHP | 19672 Messages

16 juil. 2005, 15:59

Date : 2 nd week-end entier de juillet, du samedi à 12:00 UTC
au dimanche à 12:00 UTC.
Mais c'est vrai que faire des recherches sur ce champs sera impossible.
Précisément. Un petit tour dans la documentation sur le type DATETIME pourrait éclairer un peu le sujet. Il est en outre parfaitement possible d'enregsitrer des HEURES UTC.

Enfin, on parle ici d'une période : c'est donc un champ calculé. On ne met jamais un champ calculé dans une base de données, ce n'est pas optimal. Rien n'interdit d'avoir deux champs de type DATETIME, un début et un fin et on fait le calcul lors des traitements.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 983 Messages

16 juil. 2005, 16:29


Enfin, on parle ici d'une période : c'est donc un champ calculé. On ne met jamais un champ calculé dans une base de données, ce n'est pas optimal. Rien n'interdit d'avoir deux champs de type DATETIME, un début et un fin et on fait le calcul lors des traitements.
Petite rectification: on ne met jamais de champ calculé dans une base de données qui ne possède pas de déclencheurs (triggers). Autrement, cela peut être très utile et permettre de gagner en temps de réponse en évitant de faire des jointures supplémentaires (ex: PostgreSQL, Oracle...).

Eléphant du PHP | 91 Messages

16 juil. 2005, 16:54

Ok Ok

mais est ce que Elimo veut stocker une date ou un message litteral pour indiquer une date, une période ou que sais je encore ?

Moi j'ai compris la seconde option pour le moment.

Eléphant du PHP | 174 Messages

16 juil. 2005, 20:53

Bon concernant la date je vais vous expliquez mon problème
avec plus de détails :

Tout au long de l'année il y a des concours, chaque année les concours changent de date car il se réalisent que le samedi ou dimanche.

Exemple:
il y a un concour du samedi 30 juillet 2005 au dimanche 31 juillet 2005,
l'année suivante le concour sera le samedi 29 juillet 2006 au 30 juillet dimanche 2006.
Je ne peux pas indiquer les dates précises de chaque concours sinon je serais obligé de mettre à jour la base réguliérement.
Donc comme les dates correspondent à la dernière semaine de juillet j'indique dans mon champs date "derniere semaine de juillet" à la place de "samedi 29 juillet 2005"
:)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

16 juil. 2005, 21:39

Je ne peux pas indiquer les dates précises de chaque concours sinon je serais obligé de mettre à jour la base réguliérement.
ça dépend du nombre de concours enregistrés alors, parceque le "régulièrement" ici c'est tous les ans
et faire vivre un site, un annuaire, ça demande effectivement un peu de suivi...

car comme je crois que je te l'avais dit, et comme certains l'ont répété ici, comme identifiant de date c'est pas terrible, et ça facilitera pas tes recherches :roll:

Eléphant du PHP | 174 Messages

17 juil. 2005, 09:05

il existe +5000 concours à travers le monde je ne peux pas géré celà
voilà :wink: .
Sinon ouckileou, tu en penses quoi de réaliser qu'une seule table ? voir post précédent.
PS: c'est quoi la commande php pour alimenter mode et bande dans la table
d'augure

ViPHP
pjl
ViPHP | 2119 Messages

17 juil. 2005, 10:57

tu en penses quoi de réaliser qu'une seule table ? voir post précédent.
Sur le paln professionnel, c'est un infame bricolage qui ne respecte pas les règles de conception des bases de données.

Maintenant, vu que je n'ai pas compris la finalité du projet (et je ne dois pas être le seul), ca te convient tant mieux.

Simplement, il ne faudra pas venir pleurer si un jour, tu dois rajouter une nouvelle fréquence.

Eléphant du PHP | 174 Messages

17 juil. 2005, 12:00

Sur le paln professionnel, c'est un infame bricolage qui ne respecte pas les règles de conception des bases de données.
Je ne peux pas te laisser dire ça pjl tu interviens seulement pour sortir une conclusion sans construction.
Maintenant, vu que je n'ai pas compris la finalité du projet (et je ne dois pas être le seul), ca te convient tant mieux.
Tu peux me poser des questions sur ce que tu ne comprends pas pjl ça serait plus constructif, et je n'est pas dis que ça me convenait.
Simplement, il ne faudra pas venir pleurer si un jour, tu dois rajouter une nouvelle fréquence.
conclusion de pjl debrouille toi.

Merci c'est sympa

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juil. 2005, 12:10

moi je crois avoir compris et le schéma que tu avais fait sous Word était bon si je me rappelle bien

tu peux redonner le lien qu'on regarde, mais il y aura toujours des remarques : comme ce problème de date par exemple
on t'a dit que c'était pas top de stocker des chaines mais c'est toi qui gère ta base

ce que pjl veut dire, c'est que pour les bases de données, y'a des trucs qui se font, et d'autres qui se font pas
et que si tu fais quelques concessions ou que tu bricoles au début, tu risques d'avoir des problèmes par la suite

sinon, la commande SQL pour remplir une table, qu'elle soit faite par Augure ou non c'est toujours la même ;)

Code : Tout sélectionner

INSERT INTO <table> (colonne1, colonne2) VALUES ('valeur1','valeur2');

Eléphant du PHP | 174 Messages

17 juil. 2005, 12:20

voici le schéma relationnel de ma base actuel :
http://users.rockweb.org/f4bph/relationelfinal.JPG
ce que pjl veut dire, c'est que pour les bases de données, y'a des trucs qui se font, et d'autres qui se font pas
et que si tu fais quelques concessions ou que tu bricoles au début, tu risques d'avoir des problèmes par la suite
je suis d'accord avec toi et pjl à ce niveau, actuellement j'essaye de résoudre
mon problème de base pour revenir à mes jointures
:wink: .
Modifié en dernier par elminio le 17 juil. 2005, 12:22, modifié 2 fois.