Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2008, 12h30   #1
Débutant
 
Inscription : mai 2005
Messages : 1 960
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 960
Points : 615
Points : 615
Par défaut [Conception] Besoin d'un conseil pour structurer ma base

Bonjour a tous,

Je me lance dans un projet et j'aurais aimé avir votre avis sur la structure de ma base.

Mon client veux ventre des objects, disons des stores.

Il y a 5 types de stores
Pour chauqe type, il y a 5 à 9 coloris
Pour chaque type il y a 5 à 10 matiere

Complication, il veut afficher des prix en fonction des tailles des stores (largeur-hauteur) et en fonction de la matiere.

Je dois structurer ma base de donnée....

Qu'en pensez-vous, que pourriez-vous me conseiller.

En attendabnt, voila ce que je pensais, mais je ne sais pas si c'est la meilleur solution.

Je crée 20 tables:
Citation:
table 1 : type (champs: type, matiere, coloris)
table 2 : matiere (champs: type, matiere) --> je mets toutes les matiere par type
table 3 : coloris (champs: type, coloris) --> je mets tous les coloris par type
table 4 : 60mm (champs: type, prix, matiere, largeur)
table 5 : 70mm (champs: type, prix, matiere, largeur)
table 6 : 80mm (champs: type, prix,matiere, largeur)
table 7 : 90mm (champs: type, prix, matiere, largeur)
table 8 : 100mm (champs: type, prix, matiere, largeur)
etc justqu'a:
table x : 230mm (champs: type, prix, matiere, largeur) ou plus
et je fais des lien entre table..

Qu'en pensez-vous? Avez-vous mieux?


Merci a tous
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 13h15   #2
Membre du Club
 
Inscription : octobre 2006
Messages : 59
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : octobre 2006
Messages : 59
Points : 40
Points : 40
Au lieu de faire une table par dimension tu fais une table store avec les champs : type, prix, matiere, largeur, hauteur.

Pour afficher les prix en fonction des tailles, tout se fait dans une requete de selection dans la clause WHERE

ex : SELECT prix from Table_store Where largeur=30 AND hauteur=60 AND matiere=idmatiere
Dam1en est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 13h16   #3
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Je ne suis pas sûr que le forum PHP soit le plus adapté pour poser tes questions sur la conception de base de données...
Pour répondre à ta question :
Citation:
table 1 : type (champs: type, matiere, coloris)
=> pourquoi enregistrer les matiere et coloris dans la table type ?
Citation:
table 2 : matiere (champs: type, matiere) --> je mets toutes les matiere par type
table 3 : coloris (champs: type, coloris) --> je mets tous les coloris par type
=> là, ok
Citation:
table 4 : 60mm (champs: type, prix, matiere, largeur)
table 5 : 70mm (champs: type, prix, matiere, largeur)
table 6 : 80mm (champs: type, prix,matiere, largeur)
table 7 : 90mm (champs: type, prix, matiere, largeur)
table 8 : 100mm (champs: type, prix, matiere, largeur)
etc justqu'a:
table x : 230mm (champs: type, prix, matiere, largeur) ou plus
=> aïe aïe aïe !!!
pourquoi avoir toutes ces tables avec toutes la même structure et renfermant des informations équivalentes ? Il suffirait de faire :
Code :
table 4 : tarifs (type, matiere, largeur, dimensions, prix)
Pour résumer et pour être tout a fait complet moi, je ferais (comme ce n'est pas dit, je suppose que le coloris n'a pas d'incidence sur le prix) :
Code :
1
2
3
4
5
6
TypeStore(idTypeStore, libelleType)
Coloris(idColoris, libelleColoris)
ColorisDisponibles(idTypeStore#, idColoris#)
Matiere(idMatiere, libelleMatiere)
DimensionStores(idDimension, largeur, profondeur)
Tarif(idTypeStore#, idMatiere#, idDimension#, prix)
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 21h56   #4
Débutant
 
Inscription : mai 2005
Messages : 1 960
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 960
Points : 615
Points : 615
Merci beaucoup pour ces info!!!
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2008, 22h42   #5
Débutant
 
Inscription : mai 2005
Messages : 1 960
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 960
Points : 615
Points : 615
Salut Hervé,
merci pour tes codes et idées.
Cependant j'ai quelques question.

Question 1:
La table dimensionStore
Citation:
DimensionStores(idDimension, largeur, profondeur)
ne derait-elle pas avoir le champs isTypeStore# qui dera la liaison avec le type du store, car les prix vont correspondre au type en fonction des dimention et des matieres.

Question 2:
pour mes deux champs idTypeStores, j'ai créé quatre champs avec les valeurs suivante: 1,2,3,4

Pour ma table idMatiere, j'ai créé 5 champs.
Es-ce que les valeur de ces champs peuvent etre: 1,2,3,4,5?
Il risque pas d'avoir un confli?
devrais-je pas donner les valeur suivante: 10,20,30,40,50?

Idem pour idColoris: 100,200,300,400?

Question 3:
Je ne comprends pas un truc sur ce que tu m'as montré.
Quel est le but de cette table, dans ton exeple?
Citation:
ColorisDisponibles(idTypeStore#, idColoris#)
Question 4:
le idTypeStore... (tous ceux qui commence pas id...) es-ce qu'ils doivent être autoincrémenté?
Citation:
extra: auto_increment
Question 5:
je ne suis pas expert en liaison (comme tu as pu le voir :o)).
Aurais-tu, ou qulqu'un d'autre, des liens sur des tutos sur les liaisons de table ou un bref résumé???

Mille mercis pour vos aides
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 14h33   #6
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Citation:
Question 1:
La table dimensionStore
Citation:
DimensionStores(idDimension, largeur, profondeur)
ne derait-elle pas avoir le champs isTypeStore# qui dera la liaison avec le type du store, car les prix vont correspondre au type en fonction des dimention et des matieres.
Tout dépend des règles de gestion de ton application, ce que je t'ai donné n'est qu'un exemple, à toi de l'adapter exactement à tes besoins.
En proposant ça, j'ai supposé qu'il y avait des dimensions "prédéfinies" pouvant être utilisées pour plusieurs types de stores différents, c'est pourquoi j'ai mis la table :
Code :
Tarif(idTypeStore#, idMatiere#, idDimension#, prix)
mais cela ne reflète pas forcément les besoins de tes utilisateurs, je ne sais pas ...

Citation:
Question 2:
pour mes deux champs idTypeStores, j'ai créé quatre champs avec les valeurs suivante: 1,2,3,4

Pour ma table idMatiere, j'ai créé 5 champs.
Es-ce que les valeur de ces champs peuvent etre: 1,2,3,4,5?
Il risque pas d'avoir un confli?
devrais-je pas donner les valeur suivante: 10,20,30,40,50?

Idem pour idColoris: 100,200,300,400?
Quand tu dis "champs" je suppose que tu veux dire "tuples" ? sinon je n'ai rien compris à ta question. Essayes d'être précis dans ton vocabulaire.
Citation:
pour mes deux champs idTypeStores, j'ai créé quatre champs avec les valeurs suivante: 1,2,3,4
deux champs ? quatre champs ? je comprends rien ...
Citation:
Pour ma table idMatiere, j'ai créé 5 champs.
Es-ce que les valeur de ces champs peuvent etre: 1,2,3,4,5?
Il risque pas d'avoir un confli?
Non, les identifiants de tes différentes tables sont indépendants, ils ne risquent pas de rentrer en conflit, heureusement ...
Question 3:
Citation:
Je ne comprends pas un truc sur ce que tu m'as montré.
Quel est le but de cette table, dans ton exeple?
Citation:
ColorisDisponibles(idTypeStore#, idColoris#)
Eh bien j'ai supposé que tous les types de stores n'étaient pas disponibles dans tous les coloris ... Cette table permet de savoir quels sont les coloris disponibles pour un type de store donné.
Citation:
Question 4:
le idTypeStore... (tous ceux qui commence pas id...) es-ce qu'ils doivent être autoincrémenté?
Citation:
extra: auto_increment
Oui, c'est mieux en effet. Ca te permettra nottament d'etre sur que les identifiants sont bien attribués et de façon unique, le tout sans avoir à t'en soucier dans ton code PHP (c'est le SGBD qui le gère)
Citation:
Question 5:
je ne suis pas expert en liaison (comme tu as pu le voir :o)).
Aurais-tu, ou qulqu'un d'autre, des liens sur des tutos sur les liaisons de table ou un bref résumé???
Je vois ...
En fait, ce dont tu as besoin, c'est des bases élémentaires des bases de données relationelles ...
Ca tombe bien, ce site regorge de cours et de tutoriels
Va voir cette page et concentre toi dans un premier temps sur les cours d'introduction à destination des débutants avant d'aller plus loin
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 13h55   #7
Débutant
 
Inscription : mai 2005
Messages : 1 960
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 960
Points : 615
Points : 615
salut, un grand merci pour le temps que tu as pris pour cette réponse,
j'ai pas pu prendre le temps de l'étudier, mais je vais le faire tout prochainement, je voulais deja te remrcier..
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h02   #8
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
De rien.
Penses à mettre le sujet en "Résolu".
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h31.


 
 
 
 
Partenaires

Hébergement Web