我有以下数据库设计:
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
每个问题都有不同的多种选择。除此之外,我想在这个问题下添加子问题。大多数
问题有相同的选择,例如(同意,不同意)。我想编写显示问题的查询,包括
它的子问题及其所有选择和每个选择的参与者数量,即使它是零。
我不确定问题表是否可以帮助我在任何问题下插入子问题。这种设计适用吗?你推荐什么?
答案 0 :(得分:1)
嗯不,没有地方指定子问题的父级(或问题的子级)。
可能的方法是: 1.添加父列问题表,在其中放置父问题的ID。 2.将一个子问题列添加到Questions表,并将子问题ID存储为array / json。我认为这可能会使查询变得困难。 3.创建新的表子项 - 为您创建的每个子项创建2列。
答案 1 :(得分:1)
在您当前的问题表中,您不能有子问题。您可以尝试使用代表子问题的ID(例如问题有ID 2,然后针对具有ID 2A或类似内容的子问题),但此设计可能会失败,这取决于您的ID计算,也不能确保子问题的水平。
更好的方法是让Parent-Child Dimension用于自引用关系。你可能有:
问题表:QuestionID,Question,ParentID
其中ParentID是某个问题的ID。如果它为null则问题不是任何问题的子问题。您还可以看到Employee-Manager Relationship的递归关系,这可以帮助您更好地理解您的问题