La meilleure façon de les stocker à sélection multiple réponses à l'enquête dans une base de données

Je suis actuellement en train de travailler sur une étude de la création/administration de l'application web avec PHP/MySQL. J'ai connu plusieurs révisions des tables de base de données, et encore une fois, je trouve que j'ai peut-être besoin de repenser le stockage d'un certain type de réponse.

Droit maintenant, j'ai une table qui ressemble à ceci:

survey_answers

id          PK
eid
sesid
intvalue    Nullable
charvalue   Nullable

id = valeur unique attribué à chaque ligne

eid = la question de l'Enquête que cette réponse est en réponse à

sesid = Le sondage "session" (informations sur l'heure et la date de l'enquête de prendre) id

intvalue = la valeur de La réponse si c'est une valeur numérique

charvalue = la valeur de la réponse si elle est une représentation textuelle

Cela m'a permis de continuer à utiliser MySQL fonctions mathématiques pour accélérer le traitement.

J'ai cependant trouvé un nouveau défi: le stockage des questions qui ont des réponses multiples.
Un exemple serait:

Qui est-ce que vous aimez manger? (choisissez toutes les appliquer)

  • Girl Scout Cookies
  • Bacon
  • Maïs
  • De La Graisse De Baleine

Maintenant, quand je veux stocker le résultat, je ne suis pas sûr de la meilleure façon de le gérer.
Actuellement, j'ai une table juste pour les choix multiples qui ressemble à ceci:

survey_element_options

id        PK
eid
value

id = valeur unique associé à chaque ligne

eid = question/élément que cette option est associée à

valeur = valeur textuelle de l'option

Avec cette configuration, puis je stocker mes retourné une sélection multiple de réponses dans "survey_answers' comme des chaînes de séparées par des virgules, l'identité de la element_options lignes qui ont été sélectionnés dans l'enquête. (c'est à dire quelque chose comme "4,6,7,9"), je me demandais si c'est en effet la meilleure solution, ou s'il serait plus pratique de créer une nouvelle table qui contiendrait chaque réponse choisie, puis un renvoi à une réponse de la ligne qui à son tour références de l'élément et, finalement, l'enquête.


MODIFIER

pour quiconque s'intéresse, ici, c'est l'approche que j'ai fini par prendre (Dans PhpMyAdmin Relations View):

La meilleure façon de les stocker à sélection multiple réponses à l'enquête dans une base de données

Et rudimentaire de la requête de recueillir des chiffres pour une sélection multiple question devrait ressembler à ceci:

SELECT e.question AS question, eo.value AS value, COUNT(eo.value) AS count
FROM survey_elements e, survey_element_options eo, survey_answer_options ao
WHERE e.id = 19
AND eo.eid = e.id
AND ao.oid = eo.id
GROUP BY eo.value
InformationsquelleAutor SamHuckaby | 2013-02-06