此数据库设计是否适合存储调查结果?

时间:2012-05-17 17:01:03

标签: sql database database-design

在我的公司,我们要求所有部门员工参与调查。本次调查的结构如下:它由四类组成; I,II,III,IV。三个类别有几个问题,而最后一个类别有从A到L的子类别。每个子类别都有很多问题。而且大多数问题都有子问题。

有两种问题;具有不同数量的选择(有时2或4或5或6个选择)和书面问题的多项选择题(例如请评论以下内容......)。具有子问题的问题的示例: 您如何看待以下服务? 服务1
服务2 服务3

顺便说一句,这个问题是一个多项选择问题,其中每个子问题(例如service1)有5个选择。

现在的问题只是创建一个存储用户信息,问题和用户答案的​​数据库。此数据库的目的是根据问题稍后提供统计信息。例如,我必须编写一个查询,显示有多少员工在问题#3上说(同意或非常不同意),并显示子问题。

我提出了以下不完整的数据库设计,但似乎很复杂:

Employee Table: Username, Name, DepartmentID
Department Table: DepartmentID, DepartmentName
Category Table: CategoryID, CategoryName
SubCategory Table: SubCategoryID, SubCategoryName, CategoryID
Question Table: QuestionID, Question
SubQuestion Table: SubQuestionID, SubQuestion, QuestionID
Answer Table: AnswerID, Answer, QuestionID, SubQuestionID

那么什么是最好的数据库设计可以存储所有这些信息,然后给我一些我想要的一般统计数据?

2 个答案:

答案 0 :(得分:2)

我的建议是这样的:

Employee Table: UserId, Username, Name, DepartmentId
Department Table: DepartmentId, DepartmentName
Category Table: CategoryId, CategoryName, ParentId

Question Table: QuestionId, Question, CategoryId
QuestionChoices Table: ChoiceId, QuestionId, Choice, Sequence

Answer Table: AnswerId, QuestionId, UserId, Text
AnswerChoices Table: AnswerId, QuestionId, UserId, ChoiceId, [Value]

答案 1 :(得分:0)

您的员工&部门表看起来很好。我有以下建议:

- 包括子,类别,子&各自表格中的问题编号(即:I,II,III,IV类别,A,B,C等问题等,假设问题/类别名称是全长问题/类别)

- QuestionID表应包含SubCategoryID FK。

- 我还会在评论中建议使用employeeID(人们离开后可以重复使用用户名)。

- 然后我会设计以下表格:

Answer Table:

AnswerID
SubquestionID
AnswerType (choose between 'Multiple', 'Long')
AnswerName (NULL if AnswerType is 'Long', a, b, c, etc if 'Multiple')

SurveyResults Table: 

EmpID (FK from Employee table),
SubQuestionID (a, b, c, ...; again if no subquestion, then put in a)
Answer (varchar(4000), so you can accommodate both types of answers)

请注意,您应该保留一个答案表来保留多项选择题的选择。

相关问题