数据库设计表有很多列

时间:2013-10-19 17:03:28

标签: 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页面的最简单方法。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

选项1:

QuestionId - int primary key, 
QuestionType - bit - A1,A2...A7,B1,B2,...C1,C2...D1,D2...D8 
QuestionComment - varchar

选项2:

您可以考虑添加QuestionType和/或QuestionComment表格:

<强> QuestionTable:

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

<强> QuestionType:

Id 
QuestionType

<强> QuestionComment:

Id
QuestionComment:

答案 1 :(得分:0)

创建一个描述每个问题的问题表和描述每个用户的用户表会好得多。然后是第三个表来处理用户与他们的答案之间的关系。类似的东西:

user( user_id, name, date_answered, ... )
question( question_id, question_type, name, question_text, ... )
answer( user_id, question_id, answer, comment, ... )

将为每个用户会话自动生成user_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" )