2012-05-22 29 views
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 

每個問題都有不同的多種選擇。除此之外,我正在考慮在該問題下添加子問題。大多數

問題有相同的選擇,如(同意,不同意)。我想寫下顯示問題的查詢,其中包括

其子問題及其所有選擇和每個選擇中的參與者數量(即使它爲零)。

我不確定問題表是否會幫助我在任何問題下插入子問題。該設計是否適用?你有什麼建議?

回答

1

在您當前的問題表中,您不能有子問題。你可以嘗試有一個代表子問題的ID(例如Question有ID 2,然後子問題有ID 2A或類似的問題),但是這種設計可能會失敗,並且取決於你的ID計算,也不能確定子問題的級別。

更好的方法是將Parent-Child Dimension作爲自引用關係。你可能有:

問題表:QuestionID,問題,PARENTID

其中PARENTID是一些問題的ID。如果它是空的,那麼問題不是任何問題的子問題。您可能還會看到遞歸關係的Employee-Manager Relationship,這可能會幫助您更好地瞭解您的問題

+0

感謝您的幫助,並且能否請您爲我提供一個您的方法示例? – user1395782

+0

@ user1395782,檢查員工經理關係的鏈接,其類型相同。 – Habib

1

嗯不,沒有地方可以指定子問題(或問題的子代)的父親。

可能的方法是: 1.添加一個父列問題表,您將父問題的ID。 2.將子問題列添加到問題表中,並將子問題ID存儲爲數組/ json。我認爲這可能會使查詢變得困難。 3.創建新的表子問題 - 爲每個創建的子問題創建2列。