2009-02-25 41 views
2

当谈到SQL时,我是个新手。我正在ASP.NET中制作一个网站来进行调查。特权管理用户将能够构建调查。然后很多其他人会回应调查。SQL结构存储调查和答案 - 基于用户数据建立表和查询?

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

UPDATE

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

+0

更新了我的回复 – 2009-02-25 14:20:48

+0

Neil发布的内容正是我们过去的做法。 – schooner 2009-02-25 14:27:06

回答

8

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

创建一个调查表(SurveyID,用户ID,姓名等)

创建一个问题表(QuestionID,SurveyID,QuestionText,SortOrder的,等等)

可选,创建一个选项表,假设你有选择题型题(OptionID,QuestionID,OptionText等)

然后当有人创建了一个调查,你插入的调查表,引用此人的用户名作为foriegn键,然后获得新插入的SurveyID,

然后对于他们添加的每个问题,将其插入到问题表中,使用上面的SurveyID作为foriegn键......等等。

编辑回答您的编辑:

对不起,我应该遵循通过覆盖存储的答案为好。

你希望另一台名为SurveyResponses(ResponseID,名称等) 而另一张表,我会打电话ResponseAnswers(ResponseAnswerID,SurveyID,ResponseID,QuestionID,AnswerText/AnswerID)凡SurveyID和ResponseID是foriegn键thier各自表格,并根据其他用户有多种选择,或者输入答案,您可以将其答案存储为文本(varchar)或作为选项表的另一个foriegn键。

1

您可能不希望以编程方式生成架构。

取而代之的是,针对问题(属于调查),针对回答集(每个用户一个)和问题回答(属于回答集)的表进行调查。

0

您不会自动构造表格。该表将被预定义,并且答案将被添加到它们中。我认为现在开始使用ASP.NET的最佳方式是深入MVC & Linq (http://asp.net/learn