Die optimale Möglichkeit, um zu speichern Mehrfachauswahl-Umfrage-Antworten in einer Datenbank

Ich bin derzeit an einer Umfrage-Erstellung/Verwaltung web-Anwendung mit PHP/MySQL. Ich habe gegangen durch mehrere Revisionen der Datenbank-Tabellen, und ich wieder einmal feststellen, dass ich möglicherweise ein Umdenken bei der Lagerung eine bestimmte Art von Antwort.

Gerade jetzt, ich habe eine Tabelle, die wie folgt aussieht:

survey_answers

id          PK
eid
sesid
intvalue    Nullable
charvalue   Nullable

id = eindeutiger Wert zugewiesen jede Zeile

eid = Umfrage-Frage, die diese Antwort ist in der Antwort zu

sesid = Die Umfrage 'Sitzung' (Informationen über die Zeit und das Datum einer Umfrage nehmen) id

intvalue = Der Wert, wenn die Antwort es ist ein numerischer Wert,

charvalue = der Wert der Antwort, wenn es eine textliche Darstellung

Dies erlaubte mir, weiterhin mit MySQL mathematische Funktionen, um die Bearbeitung zu beschleunigen.

Habe ich jedoch eine neue Herausforderung: die Speicherung von Fragen, die mehrere Antworten.
Ein Beispiel wäre:

Welche der folgenden tun, die Sie Essen zu genießen? (wählen Sie alle zutreffenden)

  • Girl Scout Cookies
  • Speck
  • Mais
  • Wal Fett

Nun, wenn ich möchte, speichern das Ergebnis, ich bin nicht sicher, der beste Weg, damit umzugehen.
Derzeit habe ich einen Tisch nur für multiple-choice-Optionen, die wie folgt aussieht:

survey_element_options

id        PK
eid
value

id = eindeutiger Wert zugeordnet, wobei jede Zeile

eid = Frage/element, dass diese option im Zusammenhang mit

Wert = textueller Wert der option

Mit diesem setup habe ich dann meine zurückgegeben Auswahl mehrere Antworten in "survey_answers' als strings durch Komma getrennt die id ' s der element_options Zeilen, die ausgewählt wurden in der Umfrage. (also so etwas wie "4,6,7,9") Frage ich mich, ob das ist in der Tat die beste Lösung, oder wäre es praktischer, eine neue Tabelle zu erstellen, halten würde, jede gewählte Antwort, und dann der Rückbezug auf eine gegebene Antwort die Zeile, die wiederum verweist zurück auf das element und schließlich die Umfrage.


BEARBEITEN

für alle interessierten, hier ist der Ansatz, den ich landete dabei (In PhpMyAdmin Beziehungen-Ansicht):

Die optimale Möglichkeit, um zu speichern Mehrfachauswahl-Umfrage-Antworten in einer Datenbank

Und eine rudimentäre Abfrage zu sammeln, das zählt für mehrfach-Auswahl-Frage würde so Aussehen:

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
Schreibe einen Kommentar