我尝试使用基于ms sql server的asp.net(c#)创建一个调查应用程序。用户可以看到要输入的多项选择,单项选择和文本框答案选项。我可以在我的数据库中存储文本框和单选答案,但我仍然坚持存储多个答案。
我的设计如下:
员工 :( id,username)
survey_title :( id,title,description,creation_data)
survey_answer_type :( id,type_name)
survey_question :( id,question,survey_id,survey_answer_type_id)
survey_answer :( id,question_id,answer) - 所有答案选项(如果答案类型为文本框,答案为空) -
survey_eanswer :( id,employee_id,answer_id,str_answer) -answers of employees(str_answer用于存储文本框答案) -
我找不到在survey_eanswer表中存储多个答案的方法,而且我知道逗号分隔的输入不是一个好的设计策略。
感谢。
答案 0 :(得分:1)
一个好的设计就是有一张桌子
survey_question_options :( ID,QUESTION_ID,OPTION)
| ID | question_id |选项|
| 1 | 1 |红色|
| 2 | 1 |蓝色|
| 3 | 1 |白色|
| 4 | 2 |小|
| 5 | 2 |介质|
| 6 | 2 |大|
然后只保存选择选项的ID。 将每个选择的选项保存为自己的单独数据库条目 这使您可以使用标准sql操作来加入/分组并最终评估您的调查。
示例,您现在想要有多少用户选择媒体:
SELECT Count(*)
FROM survey_answers
WHERE question_ID = 2 AND answer = 2
或者,更复杂,但意思相同:
SELECT Count(survey_answer.id)
FROM survey_answers
LEFT JOIN survey_question_options ON
survey_question_options.ID = survey_answers.Answer AND
survey_question_options.question_ID = survey_answers.question
WHERE survey_answer.question_ID = 2
AND survey_question_options.option LIKE 'medium'