Sam*_*aby 8 mysql sql database
我目前正在使用PHP/MySQL开发调查创建/管理Web应用程序.我已经经历了数据库表的几个修订,我再次发现我可能需要重新考虑某种类型的答案的存储.
现在,我有一个看起来像这样的表:
survey_answers
id PK
eid
sesid
intvalue Nullable
charvalue Nullable
Run Code Online (Sandbox Code Playgroud)
id =分配给每一行的唯一值
eid =此答案的回答调查问题
sesid =调查"会话"(有关调查时间和日期的信息)id
intvalue =如果是数值,则为答案的值
charvalue =答案的值,如果它是文本表示
这使我能够继续使用MySQL的数学函数来加速处理.
然而,我发现了一个新的挑战:存储具有多个响应的问题.一个例子是:
您喜欢吃以下哪种食物?(选择所有申请)
现在,当我想存储结果时,我不确定处理它的最佳方法.目前,我有一个表只是为了多选项,看起来像这样:
survey_element_options
id PK
eid
value
Run Code Online (Sandbox Code Playgroud)
id =与每行关联的唯一值
eid =与此选项关联的问题/元素
value =该选项的文本值
通过此设置,我将返回的多个选择答案存储在'survey_answers'中,作为在调查中选择的element_options行的逗号分隔id的字符串.(即类似"4,6,7,9")我想如果这确实是最好的解决方案,或者如果它是更实际的创建新表,将持有每个答案选择,然后引用回给定的答案行反过来引用回到元素并最终引用调查.
编辑
对于任何感兴趣的人,这是我最终采取的方法(在PhpMyAdmin关系视图中):

收集多选问题的计数的基本查询如下所示:
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
Run Code Online (Sandbox Code Playgroud)
这确实取决于很多事情。
作为一个简单的示例,这可能会变得稍微复杂一些:
表格示例:
Users(Username,UserID)Questions(qID,QuestionsText)Answers(AnswerText[在这种情况下,示例可能是可重用的,但这也确实造成了额外的复杂性],aID)Question_Answers([此问题可用的答案,每个问题的多个条目] qaID,qID,aID),UserQuestionAnswers(qaID,uID)注意:此举仅供参考,并非建议
| 归档时间: |
|
| 查看次数: |
10972 次 |
| 最近记录: |