对于SQL来说,我是个新手。我正在ASP.NET中建立一个网站进行调查。特权管理员用户将能够构建调查。然后很多其他人会回应调查。
一旦我对新调查提出了一系列问题,自动构建表的最佳方法是什么,以及INSERT查询存储响应的最佳方法是什么?
更新
感谢您的快速回复!关于如何在这种情况下最好地存储调查答复,我仍然有点不清楚。每个受访者都会获得一排桌子吗?如果是这样,那么这些专栏是“为第1栏中的条目确定的调查问题k给出的回答”吗?
答案 0 :(得分:8)
你不想为每次调查建立一个新表。
创建调查表(SurveyID,UserID,Name等)
创建问题表(QuestionID,SurveyID,QuestionText,SortOrder等)
可选,创建一个Options表,假设您有多个选择类型的问题(OptionID,QuestionID,OptionText等)
然后当有人创建调查时,您插入调查表,将该人的UserID作为foriegn键引用,然后获取新插入的SurveyID,
然后对于他们添加的每个问题,将其插入到问题表中,使用上面的SurveyID作为foriegn键...等等。
编辑以回答您的修改:
对不起,我也应该通过以下方式来解决存储问题的答案。
您需要另一个名为SurveyResponses的表(ResponseID,Name等) 另一个表我将调用ResponseAnswers(ResponseAnswerID,SurveyID,ResponseID,QuestionID,AnswerText / AnswerID)其中SurveyID和ResponseID是相应表格的foriegn键,并且根据用户有多种选择,或输入答案,你要么将答案存储为文本(varchar)或作为选项表的另一个foriegn键存储。
答案 1 :(得分:1)
您可能不希望以编程方式生成架构。
相反,有一个调查表,问题(属于调查),响应集(每个用户一个)和问题响应(属于响应集)。
答案 2 :(得分:0)
您不会自动构建表格。该表将被预定义,并且答案将被添加到它们中。我认为现在开始使用ASP.NET的最佳方法是深入了解MVC& Linq (http://asp.net/learn)
答案 3 :(得分:0)
我会想到几个选择:
Survey
表和Question
表,其中每个Question
都有一列DataType
,该列包含响应数据类型的代码期望(可选地,还有一些其他列/可用选项的相关表)是一列,用于指定此问题是多选/单选,强制/可选问题等。Answer
表的答案已序列化/反序列化/索引/根据问题数据类型进行格式化等