MySQL-Créer une table pour réponse de sondage [Résolu/Fermé]

Signaler
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
-
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
-
Bonjour,

Je me pose une petite question sur une table de je dois créer. Je dois créer une table de sondage, il est a noté que c'est un sondage de 25 questions, d'autre peuvent être ajouter ou même supprimer dans le future
2 choix me vienne a l'esprit:

1- Je crée une table avec le ID et 25 champs pour chaque réponses au question. ex.
id,reponse1,reponse2,reponse3,reponse4,reponse5,...,reponse35, IdUser

OU

2- je crée aussi une seule table avec comme champs, le ID, la question elle même, la réponse, donc 4 champs.
ex.:id,Q1,Reponse1, IDUser
Donc dans le deuxième exemple, vu qu'un enregistrement contient une question, il y aura 25 enregistrements par usagers.
si 100000 usagers qui fait le sondage=25 000 000 d'enregistrements.


Y en a tu une plus mieux que l'autre?

Il est aussi a noté, que toutes les réponses sont en formats varchar de maximum 200 caractères et que les réponses sont optionnelles, l'usager peut choisir de ne pas répondre à tutes les questions.

MErci beaucoup de votre aide!

Pascal

9 réponses

Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
221
Salut,

Perso j'opterais pour la première même si c'est plus long à mettre en place car elle permettra de trier les différentes réponses individuellement contrairement à la seconde qui sortira tout en bloc.
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
Moi aussi j'hésite.
Merci de ta réponse. Cependant, si je ne veux pas trier... opterais tu pour la premiere aussi avec les 25 champs dans le meme enregistrement?
Messages postés
1292
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
221
Si les réponses n'ont pas besoin d'être triées, alors oui je stocke tout en vrac dans un seul champ (id,user,question,reponses).
Une question stupide engendre une réponse stupide!
Une question mal formulé engendre une réponse aléatoire!
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
Super ok!
Franchement, moi aussi j'opterais pour celle la, maintenant, me vient la question de la mise a jour des réponse.... en cas de modifications.

c'est impensable de créer 25 query update lors de l'enregistrement des modif.... alors on efface tout les réponse de l'utilisateur et on réinscrit ce que le membres à entrer comme réponse...? avec un multiple insert?

PAscal
La conception d'un système d'information et du système de gestion de base de données(SGBD) qui en découle est la partie la plus importante.

Elle doit tenir compte des données (informations) à retenir.

A)Lister
1)Faites une liste de toutes les informations utiles SANS CLASSEMENT NI ORDRE
2)Ajoutez les informations qui peuvent être utiles dans l'avenir
3a)Éliminez les informations qui peuvent être obtenues à partir d'autres informations présentes(exemple: prix ttc, taxe et prix ht: il faut éliminer prix ttc car en faisant le calcul du prix ht +la taxe vous l'obtiendrez et que ce calcul devra être fait puis enregistré si vous le laissez ce qui fait un traitement INUTILE en plus et peut provoquer des erreurs).
3b)éliminez les doublons, des informations identiques ne peuvent pas apparaître deux fois
3c)Repérer les homonymes pour les différencier(ex: Jean Dupont, il peut exister 2 personnes du même nom, pour les identifier on peut par exemple ajouter leur date de naissance, 2 Jean Dupont né le même jour est possible mais très peu probable tandis que 2 personnes s'appelant Jean Dupont est fortement probable).
B)Regourper en entité
Regrouper par thème chacune des informations ainsi collectées:
Pour vérifier si un regroupement est possible vous devez vous demander si pour une valeur A dans un regroupement il peut y avoir plusieurs valeurs B et si pour une donnée B il peut y avoir plusieurs valeurs A. Si la réponse à une ou 2 des questions est oui il faut que A et B soient dans des regroupements différents.


- Je crée une table avec le ID et 25 champs pour chaque réponse
Faux, vous ne pourrez jamais ajouter de question, ID ne correspond à rien, vous ne pouvez pas changer les questions, ni associer un utilisateur à une série de questions etc...
je crée aussi une seule table avec comme champs, le ID, la question elle même, la réponse, donc 4 champs.
Faux toujours, comment aller vous distinguer et trier et calculer vos statistiques(le but d'un sondage?) avec une seule table?

Sans connaître toutes vos données je vous propose ce système d'informations:


Table SONDé:
ID(clé primaire, est utile pour ne pas retenir la date de naissance-voir ex:Il peut exister 2 Jean Dupont mais ils n'auront pas le même ID)
nom
prenom

Table Question
question
questionnaire(si plusieurs questionnaires on pourra obtenir tout un questionnaire en regroupant toutes les questions qui ont la même valeur questionnaire)

Table Réponse
ID_sondé(associe les réponses à un sondé)
ref_question(associe la question à leur réponses)
réponse

Il y a des liaisons entre les différences tables.
Cela me paraît le (strict) minimum pour avoir un système qui marche et fournisse des résultats justes(statistiques).

Je vous conseille de faire vous même le tri pour voir les données que j'ai oubliées(j'ai voulu faire le plus simple et ne connaît pas toutes les contraintes).

Analyse et explications basées sur la méthode Merise.
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
Wow super!! très bonne explications. J'apprécie beaucoup.

Comme tu le mentionnem j'ai omis plusieurs détail, qui peut être important.

Le détail principal que je vois que j'ai peut-être oublier, C'est que j'ai mentionné sondage, mais en fait ce n'Est pas un sondage. C'est comme une petite entrevu que les membres peuvent remplir ou pas.
Par exemple..
Ce que tu déteste le plus
Qu'elle est ta plus belle qualité...
Et quand un usager visite le profil d'un membre, j'Affiche les réponse auxquelles il/elle a répondu.

Donc Une table avec 3 champs: ,idMembre,IdQuestion,Réponse avec clé primaire sur IdMEmbre et IdQuestion

CEla semble t'il logique?
Attention ne mélangez pas valeur et données.

Une donnée signifie l'ensemble des valeurs que peut prendre un champ, une valeur n'est qu'un point de détail que vous ne pouvez considérer à la conception sauf pour vous servir d'exemple et lister/repérer les données.

Donc 3 tables comme je l'ai indiqué? C'est l'ensemble de ces tables qui permettent de recouper les résultats. Avez vous fait toutes les étapes dans l'ordre?
Une clé primaire est unique vous confondez avec les clés étrangères(clé primaire et étrangères sont dites identifiants, une id avec un nombre ne devrait pas apparaître dans votre tri des données puisqu'il ne correspond à rien, après il y a débat sur l'utilité ou non d'en mettre un ou de garder l'identifiant naturel-celui issu de la conception, mais vous vous avancez trop).
Un des champ au moins doit être identifiant, pour les liaisons entre les tables ce sont la clé primaire et les clés étrangères qui le sont.
Que vous l'appeliez sondage ou questionnaire cela entre il en compte? Que l'utilisateur ai rempli ou non le ou les questionnaires rentre il en compte dans le système d'information?
La pertinence est essentielle pour la première étape(collecte des données).
Pouvez modifier les questions d'un sondage/questionnaire?




Je vous répondrait si je passe par là un fois que vous aurez réalisé la première étape et aurez la liste des données nécessaires à vos besoins.
Avec cette méthode(Merise) vous ne pouvez pas avoir le résultat sans suivre les étapes dans l'ordre, donc pas de résultat sur l'intuition mais à partir d'une logique proche de l'ordinateur, l'intuition est fausse dans 90% des cas d'où l'utilité et l'invention de cette méthode).


Ceci peut vous aider:
http://www.commentcamarche.net/contents/merise/concintro.php3

Beaucoup plus complet si vous en avez le courage(pas compliqué mais didactique et non basé sur la logique donc nécessite d'oublier l'intelligence pour se conformer aux instructions), la méthode Merise:
http://cyril-gruau.developpez.com/merise/

edit: oups je vient de voir que le tuto que je vous indiqué ne présente que les étapes à partir du regroupement en entité donc la version complète de ce que j'ai écrit en 6 lignes dans B) et fortement éludé pour éviter la prise de tête. La partie A) est essentielle et le reste un peu trop technique mais bon je laisse mais vous devriez obtenir quelque chose de satisfaisant avec mes explication, le but n'est pas de faire de vous un analyste programmeur mais que vous obteniez un résultat.
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
Bonjour et merci!

Je viens de relire tous les étapes et tout est correct. J'ai tout les informations dont j'ai besoin.
Pour répondre à votre question:
Pouvez modifier les questions d'un sondage/questionnaire? : Oui, je peut en modifier, supprimer et ajouter des questions a mon questionnaire.

AUSSI, l'usager peut modifier c'est réponse aussi souvent qu'il le veux.

JE distingue la différence entre clé primaire et clé étrangère.
La raison pour laquelle j'ai fait une clé primaire sur 2 champs, dites le moi si je me trompe, c'est que a la table Questionnaire(idMembre,IdQuestion,Réponse) je ne voulais pas de id de cette table, un id unique propre a cette table, Voici la raison:
Car si un membre répond a 25 questions, pas de problème je fait un MULTI insert en une seul query, cependant, là ou venais le problème, c'est si le membre veux MODIFIER ces réponses, il n'y a pas de MULTI-UPDATE pour une seule query, et surtout pas question de faire 25 update en 25 query, a mon avis cela n'a pas de sens pour la rapidité d'un site, alors ce que je fais c'Estque je lance un DELETE de toutes ces réponses, et ensuite je refais un MULTI INSERT en une seul query.
Est-ce logique?
Si j'aurais un ID de type bigint a la table Questionnaire, c'est sure que c'est un entier qui va a des milliards et millards mais a force de deleter et re inséré, de deleté et ré inséré, j'aurais peux-être atteint la limit un jours.

Cela fait t'il du sens?

Merci
Non la conception est indépendante du traitement et du développement, vous ne devez pas en tenir compte sinon vous vous plantez. Disons pour faire simple que SQL et PHP seront facilités plus votre conception est correcte.

Le plus dur dans l'analyse et la conception c'est d'oublier ce que vos savez pour vous en tenir strictement à la méthode, mais c'est aussi le meilleur moyen d'avoir quelque chose d'exact.
Je vient de retrouver le support de cours que l'utilisait pour la formation en conception que je faisait tenir sur 1/2 journée avant d'attaquer ACCESS à mes éléves, je vous envoit le docx.
à télécharger ici:
http://mediahref.zxq.net/analyse_sgbd.docx
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
D'accord je l'ai télécharger et je le regarde sous peu d'ici quelques minutes.
Cependant vous mentionnez:Non la conception est indépendante du traitement et du développement, vous ne devez pas en tenir compte sinon vous vous plantez. Disons pour faire simple que SQL et PHP seront facilités plus votre conception est correcte.

Vous avez raison a 100%, mais si vous me dites cela, c'Est qu'a quelques part, vous croyez que je me suis planté, mais où? Où, dans ma description n'est-je pas respecter cette règle?


Le plus dur dans l'analyse et la conception c'est d'oublier ce que vos savez pour vous en tenir strictement à la méthode, mais c'est aussi le meilleur moyen d'avoir quelque chose d'exact.
100% d'Accord!!!

Merci beaucoup!
Pas de soucis mais je pense que vous êtes sur la bonne voie, je ne peut dire pour les particularités. Ceci dit mettez vos tables je ne peut pas deviner d'après vos explications.

Le non c'était pour:
Un clé primaire est unique(en MLD ou les tables résultant de l'analyse si vous préférez).
Ce sont les champs identifiants qui peuvent être multiples(en conception c'est dans le MCD), qu'ils soient clés étrangère ou non.
Les questions que j'ai évoquées(sur pouvoir changer/ajouter des questions) et auxquelles je n'ai pas répondues étaient pour vous aider dans la conception, elles font partie d'une étape dont je n'ai pas parlé(il y a 9 étapes dans la méthode complète et je n'ai fait qu'évoquées 2 d'entre elles) qui s'appelle l'univers du discours qui sert à justifier les choix, ajouts et suppressions de données dans la liste; cela s'appelle l'univers du discours, la seule partie où il faut sortir de la logique pour faire travailler son imagination et ainsi parer à la toutes les éventualités.
Messages postés
534
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
29 août 2014
52
D'accord et merci beaucoup pour tous vos informations précieuse et pour le document.!!

Bonne fin de semaine!

Pascal