当谈到 SQL 时,我是一个完全的新手。我正在 ASP.NET 中创建一个站点来进行调查。特权管理员用户将能够构建调查。然后很多其他人会回复调查。
一旦我有了新调查的一组问题,自动构建表和 INSERT 查询以存储响应的最佳方法是什么?
更新
感谢您的快速回复!我仍然不清楚在这种情况下如何最好地存储调查响应。每个受访者会得到表格的一排吗?如果是这样,这些列是否会是“针对第 1 列中的条目确定的调查的问题 k 给出的答案”?
当谈到 SQL 时,我是一个完全的新手。我正在 ASP.NET 中创建一个站点来进行调查。特权管理员用户将能够构建调查。然后很多其他人会回复调查。
一旦我有了新调查的一组问题,自动构建表和 INSERT 查询以存储响应的最佳方法是什么?
更新
感谢您的快速回复!我仍然不清楚在这种情况下如何最好地存储调查响应。每个受访者会得到表格的一排吗?如果是这样,这些列是否会是“针对第 1 列中的条目确定的调查的问题 k 给出的答案”?
您不想为每个调查建立一个新表。
创建一个调查表(SurveyID、UserID、Name 等)
创建问题表(QuestionID、SurveyID、QuestionText、SortOrder 等)
可选地,创建一个选项表,假设您有多项选择类型的问题(OptionID、QuestionID、OptionText 等)
然后当有人创建调查时,您插入到调查表中,引用该人的 UserID 作为外键,然后获取新插入的 SurveyID,
然后对于他们添加的每个问题,将其插入到 Questions 表中,使用上面的 SurveyID 作为外键......等等。
编辑回答您的编辑:
抱歉,我也应该继续介绍存储答案。
你会想要另一个名为 SurveyResponses (ResponseID, Name, etc) 的表和另一个表我会调用 ResponseAnswers(ResponseAnswerID, SurveyID, ResponseID, QuestionID, AnswerText/AnswerID) 其中 SurveyID 和 ResponseID 是他们各自表的外键,并且取决于无论用户有多项选择,还是输入答案,您都可以将他们的答案存储为文本(varchar)或作为选项表的另一个外键。
您可能不想以编程方式生成模式。
相反,有一个用于调查、问题(属于调查)、响应集(每个用户一个)和问题响应(属于响应集)的表。
我会想到几个选择:
Survey
表和Question
表,其中每个表Question
都有一个列DataType
,其中包含我们期望的响应数据类型的代码,以及可选的其他一些列/可用选项的相关表,一个指定此问题的列是多选/单选,必选/可选问题等Answer
。根据问题数据类型,表格的答案是序列化/去序列化/索引/格式化等您不会自动构建表格。该表将被预定义,并且答案将被添加到其中。我认为这些天开始使用 ASP.NET 的最佳方式是深入研究 MVC 和 Linq (http://asp.net/learn )