Sql server 包含大量列的数据库设计表

Sql server 包含大量列的数据库设计表,sql-server,database-design,Sql Server,Database Design,我有一个调查要做。还有30个是/否问题(有4种类型A、B、C、D)。若答案为否,用户应给出原因。我想创建一个表,其中有30多列的答案,列名如下 A1、A2…A7、B1、B2…C1、C2…D1、D2…D8. 他们的数据类型是位。我创建了另一个表,只用于1:1关系的注释。列名 'A1Cm,A2Cm,...A7Cm,B1Cm.....D8Cm' 我认为这不是一个好的设计。但这是将数据加载到asp.net页面的最简单方法。 有什么建议吗?选项1: QuestionId - int primary ke

我有一个调查要做。还有30个是/否问题(有4种类型A、B、C、D)。若答案为否,用户应给出原因。我想创建一个表,其中有30多列的答案,列名如下
A1、A2…A7、B1、B2…C1、C2…D1、D2…D8.

他们的数据类型是位。我创建了另一个表,只用于1:1关系的注释。列名

'A1Cm,A2Cm,...A7Cm,B1Cm.....D8Cm'
我认为这不是一个好的设计。但这是将数据加载到asp.net页面的最简单方法。 有什么建议吗?

选项1:

QuestionId - int primary key, 
QuestionType - bit - A1,A2...A7,B1,B2,...C1,C2...D1,D2...D8 
QuestionComment - varchar
备选案文2:

可以考虑添加<代码> QuestionType < /代码>和/或<代码>问题评论< /代码>表:

问题表:

QuestionId - int primary key, 
QuestionTypeId - int (forigen key QuestionType(Id))
QuestionCommentId - int (forigen key QuestionComment(Id))
Id 
QuestionType
Id
QuestionComment:
问题类型:

QuestionId - int primary key, 
QuestionTypeId - int (forigen key QuestionType(Id))
QuestionCommentId - int (forigen key QuestionComment(Id))
Id 
QuestionType
Id
QuestionComment:
问题评论:

QuestionId - int primary key, 
QuestionTypeId - int (forigen key QuestionType(Id))
QuestionCommentId - int (forigen key QuestionComment(Id))
Id 
QuestionType
Id
QuestionComment:

最好创建一个问题表来描述每个问题,创建一个用户表来描述每个用户。然后是第三个表,用于处理用户和他们的答案之间的关系。比如:

user( user_id, name, date_answered, ... )
question( question_id, question_type, name, question_text, ... )
answer( user_id, question_id, answer, comment, ... )
用户id列将为每个用户会话自动生成

示例数据如下所示:

user( 555, "Some User", 2013-10-19 )
question ( 1, "A", "Dog question", "Do you like dogs?" )
answer( 555, 1, "NO", "I am afraid of them" )