0

在我公司,我们要求所有部门的所有员工都参加了一项调查。本次调查的结构如下:分为四类;一、二、三、四。三个类别有几个问题,而最后一个类别有从 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

那么,可以存储所有这些信息并为我提供所需的一般统计数据的最佳数据库设计是什么?

4

2 回答 2

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]
于 2012-05-17T17:38:19.137 回答
0

您的 Employee & Department 表看起来不错。我有以下建议:

-- 在各自的表格中包括子、类别、子和问题编号(即:I、II、III、IV 用于类别,A、B、C 等用于问题等等,假设 Question/CategoryName 是完整的-长度问题/类别)

-- QuestionID 表应该包含一个 SubCategoryID FK。

- 我也会有一个评论中建议的员工ID(用户名可以在人们离开后重用)。

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

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)

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

于 2012-05-17T17:12:28.903 回答