IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Besoin d'un conseil pour structurer ma base


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    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:
    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

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 55
    Points
    55
    Par défaut
    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

  3. #3
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    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 :
    table 1 : type (champs: type, matiere, coloris)
    => pourquoi enregistrer les matiere et coloris dans la table type ?
    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Merci beaucoup pour ces info!!!

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Salut Hervé,
    merci pour tes codes et idées.
    Cependant j'ai quelques question.

    Question 1:
    La table dimensionStore
    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?
    ColorisDisponibles(idTypeStore#, idColoris#)
    Question 4:
    le idTypeStore... (tous ceux qui commence pas id...) es-ce qu'ils doivent être autoincrémenté?
    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

  6. #6
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Tarif(idTypeStore#, idMatiere#, idDimension#, prix)
    mais cela ne reflète pas forcément les besoins de tes utilisateurs, je ne sais pas ...

    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.
    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 ...
    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:
    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é.
    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)
    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

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    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..

  8. #8
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    De rien.
    Penses à mettre le sujet en "Résolu".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2007, 19h04
  2. [Mail] Besoin d'un conseil pour l'envoi d'e-mail
    Par olive_le_malin dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2006, 11h39
  3. conseil pour structurer un xml
    Par jbat dans le forum Delphi
    Réponses: 2
    Dernier message: 14/07/2006, 07h49
  4. Besoin de quelques conseils pour un script java
    Par poussin544 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2006, 10h41
  5. Besoin d'un conseil pour une sélection Access/fichier
    Par Oluha dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/03/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo