3

当谈到 SQL 时,我是一个完全的新手。我正在 ASP.NET 中创建一个站点来进行调查。特权管理员用户将能够构建调查。然后很多其他人会回复调查。

一旦我有了新调查的一组问题,自动构建表和 INSERT 查询以存储响应的最佳方法是什么?

更新

感谢您的快速回复!我仍然不清楚在这种情况下如何最好地存储调查响应。每个受访者会得到表格的一排吗?如果是这样,这些列是否会是“针对第 1 列中的条目确定的调查的问题 k 给出的答案”?

4

4 回答 4

10

您不想为每个调查建立一个新表。

创建一个调查表(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)或作为选项表的另一个外键。

于 2009-02-25T05:21:23.347 回答
1

您可能不想以编程方式生成模式。

相反,有一个用于调查、问题(属于调查)、响应集(每个用户一个)和问题响应(属于响应集)的表。

于 2009-02-25T05:20:14.880 回答
0

我会想到几个选择:

  • 创建一个一对多Survey表和Question表,其中每个表Question都有一个列DataType,其中包含我们期望的响应数据类型的代码,以及可选的其他一些列/可用选项的相关表,一个指定此问题的列是多选/单选,必选/可选问题等Answer。根据问题数据类型,表格的答案是序列化/去序列化/索引/格式化等
  • 考虑使用 NoSql 数据库以类似的方式存储调查数据
于 2018-12-16T07:32:23.873 回答
-1

您不会自动构建表格。该表将被预定义,并且答案将被添加到其中。我认为这些天开始使用 ASP.NET 的最佳方式是深入研究 MVC 和 Linq (http://asp.net/learn )

于 2009-02-25T05:24:26.803 回答