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 :

Quelle structure choisir: de nombreuses colonnes ou 1 ligne par valeur


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 25
    Points
    25
    Par défaut Quelle structure choisir: de nombreuses colonnes ou 1 ligne par valeur
    Bonjour tout le monde,

    J'hésite entre deux structures pour stocker ~750 valeurs différentes pour chaque utilisateur d'un dispositif.
    La table mysql sert à stocker les résultats d'un questionnaires en ligne. On enregistre les données à chaque changement de page, 4 ou 5 valeurs par pages sont stockées.

    Dans la FAQ je lis concernant le nombre max de colonnes:
    [...] au moins 2000 colonnes. Il est préférable d'éviter des tables avec trop de colonnes.
    Ma question est de savoir si c'est mieux d'avoir comme structure
    • une colonne "code" et une colonne "valeur" -- afin d'éviter d'avoir justement 750 colonnes, mais cela donne donc 750 lignes par utilisateurs;
    • ou une colonne pour chaque code -- donc 1 ligne par utilisateur, avec un tableau qui contient 750 colonnes.


    En sachant qu'à chaque changement de page on exécute la requete suivante:
    • Version 1: ajout d'une ligne pour chaque paire code/valeur
    • Version 2: update de la ligne de l'utilisateur pour chaque paire/valeur

    Et qu'à part ça la table sera pas sollicitée, sauf au moment de la récupération des résultats (requête SELECT ... WHERE)

    Si quelqu'un a des éléments de réponses ils sont les bienvenus!

    Merci d'avance
    nat

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Points : 465
    Points
    465
    Par défaut
    je serais plutot sur la structure en ligne qu'en colonne apres le mieux est de tester.
    La connaissance s'accroit lorsqu'on la partage.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Personne d'autre n'a une idée, une opinion?

    J'ai bien sûr essayé de créer les deux tables et d'insérer quelques données.. Avec la solution sur 700 colonnes, la taille augmente beaucoup moins vite --même si la structure prend plus de place.

    Mais à part ça, y a t'il des avantages/inconvénients à utiliser telle ou telle solution?

    Je peux prendre une des deux solutions au hasard mais j'aimerais apprendre ce qu'il y a à apprendre..
    SVP, laquelle des solutions préféreriez vous, et pourquoi?!?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    crée une colone demande plsu de parametre que de crée une ligne donc moi je pencherai sur 700 ligne plutot que 700 colone

  5. #5
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Tout dépend de ce que tu fais de ta table.
    Si tu dois régulièrement modifier des paramètres pour tes utilisateurs (ajouter une colonne, modifier le nom tout en gardant l'historique...), mieux vaut opter pour une structure en ligne.
    Elle te permettra de ne toucher qu'aux données, et pas à la structure.
    C'est encore plus vrai si certains des champs sont à NULL pour de nombreux utilisateurs, car tu gagneras beaucoup en taille.
    Si ta structure est fixe, et surtout si tu as besoin de données de type tableau (ça peut être le cas pour une table résultat d'un questionnaire), une structure en champs sera plus pratique. Elle permettra surtout d'éviter de simuler des pseudos requêtes croisées pour avoir un tableau du type
    Utilisateur Propriété1 ... Propriété n
    ---------------------------------------
    toto alpha truc
    machin beta bidule

    Prend aussi en compte la réutilisabilité de ta table. Si c'est une structure qui doit resservir, la structure en ligne me paraît meilleure.

    Pour moi le choix viendra surtout du type d'interrogations que tu feras.

  6. #6
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    J'oubliais : pour remplir ta table, je te conseille d'utiliser un système DELETE/INSERT plutôt qu'un INSERT/UPDATE (pour moi ça a toujours généré plus d'embouilles : test d'existence, d'unicité, etc.).
    La structure par lignes me paraît donc plus adaptée.

  7. #7
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Sachant que c'est pour dépouiller un questionnaire, tu vas vouloir faire des statistiques sur la table je suppose donc je pense que l'accès sera plus facile dans le cas des 750 colonnes car comme l'a judicieusement constaté Guidav, la structure est fixe pour ton questionnaire alors qu'elle ne l'est pas sur ton utilisateur.La majorité du travail consistera alors à faire des INSERT sans modification de structure...

    Voilà mon avis mais la question n'est pas simple à trancher.
    Cordialement,
    champijulie

  8. #8
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par champijulie
    Bonjour,

    Sachant que c'est pour dépouiller un questionnaire, tu vas vouloir faire des statistiques sur la table je suppose donc je pense que l'accès sera plus facile dans le cas des 750 colonnes car comme l'a judicieusement constaté Guidav, la structure est fixe pour ton questionnaire alors qu'elle ne l'est pas sur ton utilisateur.La majorité du travail consistera alors à faire des INSERT sans modification de structure...

    Voilà mon avis mais la question n'est pas simple à trancher.
    Cordialement,
    champijulie

    Sauf que je doute que quelqu'un réponde à 750 questions à la suite : il va donc falloir faire des INSERT en plusieurs fois, ce qui suppose des UPDATE (à la fin de chaque page, comme indiqué dans le topic).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Merci pour vos réponses

    Je pense que je vais opter pour la structure en colonne à cause de la taille de la table. Néanmoins je me questionne toujours sur ce qui est mentionné dans la FAQ

    Je laisse le fil de discussion ouvert au cas où d'autres éléments de réponses se présenteraient

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

Discussions similaires

  1. Select 1 ligne par valeur de colonne
    Par Abyssin dans le forum Développement
    Réponses: 2
    Dernier message: 10/09/2013, 11h15
  2. Réponses: 2
    Dernier message: 06/12/2011, 14h26
  3. [MySQL] Quelle structure choisir pour commentaires des articles
    Par Happy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/11/2008, 16h41
  4. Datawarehouse, Datamarts : Quelle structure choisir ?
    Par caballero dans le forum Alimentation
    Réponses: 2
    Dernier message: 30/05/2007, 08h57
  5. [Strategie]arborescence : quelle structure choisir ?
    Par iubito dans le forum Général Java
    Réponses: 12
    Dernier message: 20/09/2004, 14h46

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