1

我有以下数据库设计:

Employee Table: EmployeeID, Name, OrgCode
Department Table: OrgCode, DepartName
CompleteSurvey Table: ID, RespondantID, QuestionsAnswersID
Questions Table: QuestionID, Question
Answers Table: AnswerID, Answer
QuestionsAnswers Table: ID, QuestionID, AnswerID

每个问题都有不同的多项选择。除此之外,我正在考虑在问题下添加子问题。大多数

这些问题具有相同的选择,例如(同意,不同意)。我想编写显示问题的查询,包括

它的子问题及其所有选择以及每个选择中的参与者数量,即使它为零。

我不确定问题表是否会帮助我在任何问题下插入子问题。那个设计适用吗?你有什么建议吗?

4

2 回答 2

1

不,没有地方可以指定子问题的父问题(或问题的子问题)。

可能的方法是: 1. 添加一个父列问题表,您将在其中放置父问题的 id。2. 在 Questions 表中添加一个 subquestions 列,并将 subquestion ids 存储为 array / json 。我认为这可能会使查询变得困难。3. 创建新的表子问题 - 您创建的每个子问题都有 2 列。

于 2012-05-22T06:52:58.670 回答
1

在您当前的问题表中,您不能有子问题。您可以尝试使用代表子问题的 ID(例如 Question 有 ID 2,然后针对该问题的子问题有 ID 2A 或类似的东西),但这种设计可能会失败,这取决于您对 ID 的计算,您也不能确保子问题的水平。

更好的方法是为自引用关系设置父子维度。你可能有:

问题表:QuestionID、Question、ParentID

其中 ParentID 是某个问题的 ID。如果它为空,则该问题不是任何问题的子问题。您可能还会看到Employee-Manager 关系的递归关系,这可以帮助您更好地理解您的问题

于 2012-05-22T06:56:30.553 回答