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

Requêtes MySQL Discussion :

Problème THEORIQUE de création de ma table...


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut Problème THEORIQUE de création de ma table...
    Bonjour,

    Je travaille en asp.net et je dois réaliser un site web pour m'entrainer. Le but du site est de répertorier des produits, articles de tous genres. Donc ca va de l'ordinateur au dictionnaire en passant par un album de musique. Mais le problème c'est au moment de l'affichage du produit avec tous les détails. Je peux pas mettre les mêmes caractéristiques pour une ordinateur que pour un jeans... Donc au lieu de faire qu'une seule table produits je devrais faire pdt_informatique et pdt_vetements et ajuster pour chaque tabels les caractéristiques ou alors en une table mettre TOUTES les caractéristiques et les afficher ou pas selon le type du produit?

    Voilà ca me pose problème, car d'habitude (avec php) je fesais qu'un seul type de produit ou avec des caractéristiques proches mais entre la taille et la vitesse du proecsseur ca diffère lol :d

    Merci de m'aider babaille !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ce que je fais dans ce cas c'est une table "Produit" avec les caractéristiques communes et ensuite des tables "Ordinateur" "Vetement" avec dans ces tables un lien vers "Produit"

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Une autre solution serait de faire une table des caractéristiques, si tu veux éviter la multiplication de tables du genre produit_informatique, produits_musique, produits_vetements, etc.

    Ca donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Produit (num_produit,
    nom_produit,
    type_produit,
    prix,
    réf,
    ...)
     
    Caracteristique (
    num_produit,
    nom_caracteristique,
    valeur_caracteristique
    )
    Un exemple de code pour récupérer les couleurs disponibles pour un jean par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT c.valeur_caracteristique from Produit p, Caracteristique c
    WHERE p.nom_produit='Levis 501'
    and c.num_produit=p.num_produit
    and c.nom_caracteristique='couleurs_dispo'
    C'est plus redondant (le nom d'une caractéristique est stocké n fois où n est égal au nombre de produits ayant cette caractéristique) mais aussi plus évolutif : on peut rajouter des types de produit et des caractéristiques sans toucher aux structures des tables.
    Pensez au bouton

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Maximilian, vraiment pas bête!
    Je vais tenter d'appliquer cette méthode, d'abrod avec mon designer puis ensuite on verra si ca tient mais je pense que c'est la (meilleure) solution

    Merci en tout cas ! Si vous avez des choses à ajouter dites-les

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    oui mais je viens de voir un problème : si j'ai beaucoup de produits, ca va faire beaucoup d'entrées dans la table caractéristiques nan ? Car si pour un produits j'ai 10 caractéristiques et qu'il y a des centaines de produits... Ce qu'il faudrait c'est la table de caractéristiques donc avec par exemple : taille, microproecsseur, couleur, nombre de boutons sur la souris (pr les souris ^^), nbre de poches, déstinations, heure, etc...
    Puis avoir une table où il y aurait les produits mais avec les caractéristiques qui leurs conviennent (pr un voyage par exemple, c'est inutile d'avoir la couleur ou la vietsse du microproc !!).

    Enfin j'ai du mal à vous faire comprendre :s

    Si qqun peut m'aider

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par Mr.KisS
    oui mais je viens de voir un problème : si j'ai beaucoup de produits, ca va faire beaucoup d'entrées dans la table caractéristiques nan ? Car si pour un produits j'ai 10 caractéristiques et qu'il y a des centaines de produits... Ce qu'il faudrait c'est la table de caractéristiques donc avec par exemple : taille, microproecsseur, couleur, nombre de boutons sur la souris (pr les souris ^^), nbre de poches, déstinations, heure, etc...
    Puis avoir une table où il y aurait les produits mais avec les caractéristiques qui leurs conviennent (pr un voyage par exemple, c'est inutile d'avoir la couleur ou la vietsse du microproc !!).

    Enfin j'ai du mal à vous faire comprendre :s

    Si qqun peut m'aider
    dans ce cas ma méthode est bien, non ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    bah ca va faire beaucoup (trop) de tables? donc pour gérer, classer c pas le top je pense
    enfin je sais plus faut que je trouve une solution! help-me!!!!

  8. #8
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    je vote pour la solution de mathix ... sans argumentation d'ailleurs !
    quels sont tes critères ?
    - taille de la BD ?
    - rapidité d'acces aux données ?
    - effort de saisie des données ?

  9. #9
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par Mr.KisS
    oui mais je viens de voir un problème : si j'ai beaucoup de produits, ca va faire beaucoup d'entrées dans la table caractéristiques nan ?
    Le calcul est facile à faire.

    Faisons abstraction des champs communs à tous les produits (prix, nom, etc.) qui sont en même nombre quelle que soit la solution. On suppose que les champs ont tous la même taille, ce qui est raisonnable. Posons n le nombre de produits et m le nombre moyen de caractéristiques par produit :

    - d'un coté, plusieurs tables (produit_informatique, produits_musique, produits_vetements, etc. ).

    Total : n(m+1) champs. (le +1 est pour la clé).

    - de l'autre, 2 tables : Produit qui compte n enregistrements elle aussi, donc n champs si on compte juste la clé; et Caractéristique qui compte n(3m) champs (car il y a m fois (3 champs) par produit).

    total : n + n(3m) = n(1+(3m)) champs.


    Si je ne me suis pas trompé dans mes calculs (ce qui est fort possible ), ce n'est pas la mer à boire. Après, à toi de trancher entre des requêtes simples et une base plus petite mais "figée", et une solution plus "lourde" mais aux possibilités d'évolution et à la simplicité de maintenance plus grandes
    Pensez au bouton

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Disons que je dois travailler sur une grosse base de donnée (taille du genre annuaire de sites de ventes avec les produits vendus donc grosse bd), et il faut un accès rapide à la base (asp.net avec utilisation de mysqldrivercs)!

    Et ce que je voudrais c'est que selon le type de produits quand j'ajoute un article, ca m'affiche les caractéristiques DU PRODUIT, donc jdevrais ptete définir quelque part : quelles caractéristiques pour quels produits! Donc ensuite pour un type de produit on voit quelles sont les caractéristiques demandées et on els remplies, mais où les remplir ? car la table caractéristiques sera utilisée juste pr lister les caractéristiques et la table produit ne contient pas les caractéristiques mais juste le type du produit avec lequel on peut faire un lien poru els caractéristiques à afficher!! Mais où els remplir en fait... ?

    mais l'idée de plusieurs tables est impossible car il y a tellement de produits différents... rien que ds les produits informatiques ca va du microproc à la carte mère en passant par l'écran, la souris, le clavier etc...

    Donc faut que j'opte pour la solution deux en modifiant qqch pour arriver à coupler ce que j'ai dit dans ce même post en 1er (en gras)! Car ski faudrait c une table caractéristiques avec toutes les caractéristik confondues mais avec pr chacune un champs "type_produit" où on mettra pour quels produits mettre cette caractéristiques et mettre des ";" pr séparer les types"!

    Mais bon après comment remplir cette caractéristiques ...

    Pfiou jmembrouille lol emrci pr l'aide vous tous jvous aime :d continuons à réfléchir j'ai usé un bloc note entier ss trouver la solution!!!)

  11. #11
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par Mr.KisS
    Donc ensuite pour un type de produit on voit quelles sont les caractéristiques demandées et on els remplies, mais où les remplir ?
    Rien de plus simple. Il suffit d'insérer un enregistrement dans la table Caractéristique par caractéristique du produit.

    Par ex, si le produit numéro 1208 correspond à un écran dans la table Produit, on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    INSERT INTO caracteristique (num_produit, nom_caracteristique, valeur_caracteristique )
    VALUES ('1208', 'taille', '17 pouces');
     
    INSERT INTO caracteristique (num_produit, nom_caracteristique, valeur_caracteristique )
    VALUES ('1208', 'marque', 'LG');
     
    etc.
    Pensez au bouton

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    bah je crois que je vais me résoudre à ca :s pas trop de choix donc je vais tenter cette solution...

    Dernière interrogation : si il y a beaucoup de produits, donc beaucoup de caractéristiques, ca va être très très lent non? Car c'est plutot dans une fourchette de milliers de produits que de centaines ou dizaines! Donc la table "caractéristiques" sera lourde ? :s

    Merci pr votre aide si vous avez une soudaine vision dites moi!

    Ciao

  13. #13
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ah d'accord ! un milliers de produit avec chacun 10 caractèristiques ca fait une table bien remplie !!!!

    dans ce cas il vaux mieux faire 3 tables

    Produit
    idProduit
    nomProduit
    ....


    Carac
    idCarac
    nomCarac
    typeCarac (je propose ca comme ca pour l'évolution de ta base comme l'unité par exemple)
    ....

    CaracProduit
    idProduit
    idCarac
    valeur

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Oui, c'est ce que je pensais et le mettre schématisé! Donc je crois que je vais adopter cette solution ! On aura fini par la trouver :p En tout cas merci à vous pour tout, je vais commençer par la faire sur papier puis après on mettra sur mysql..

    Ciao merci!

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Les informations caractéristiques du produit sont donc dans une table à deux colonnes, Comment faire si on veut les affichier
    sur la même ligne ?
    Exemple:
    Product_Name, Caractéristique 1, Caractéristique 2, Caractéristique
    Ref Product , 10 , 5 , 6


    Au lieu de
    Caractéristique 1 10
    Caractéristique 2 5
    Caractéristique 3 6

  16. #16
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ca ne me parait pas possible.

    De toute façon en ASP, tu peux ensuite reformater les données comme tu le souhaites.
    Pensez au bouton

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

Discussions similaires

  1. Création d'une table - Problème....
    Par JoN28fr dans le forum Débuter
    Réponses: 7
    Dernier message: 13/11/2008, 20h27
  2. problème lié à la création d'une table
    Par Rajasthan dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/09/2008, 17h02
  3. Problème avec la création de mes tables innoDB (Pb de Foreign Key)
    Par pofexpray dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 08/03/2007, 08h44
  4. probléme avec la création de table Mysql 5
    Par developpeur_mehdi dans le forum Outils
    Réponses: 3
    Dernier message: 19/10/2005, 19h08
  5. Clé étrangère problème lors de la création de la table.
    Par snoopy69 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 18/08/2005, 08h15

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