2015-10-16 143 views
-1

我正在設計在線測試應用程序,用戶登錄,參加考試並查看得分。很明顯,我們需要有問題,回答表如何避免表格之間的循環依賴關係

和我的設計總結如下

QUESTION 
-------- 
ID 
ANSWER_ID (ANSWER FOR THIS QUESTION) 
TEXT 
: 

ANSWER 

ID 
TEXT 
QUESTION_ID 

的如: - 題有4個選項,所以這將有同樣的問題,ID有4個答案行。和問題表將具有(以上4)

附圖enter image description here

但在上述情況下的實際answer_id,它具有循環依賴我感覺會產生問題時等休眠我用戶數據庫框架,以處理數據。尋找任何替代設計以上要求

回答

2

問問自己,兩張表之間的關係是什麼?問題可以有多個答案?答案可以有多個問題?如果是,你有一個m:n的關係。如果你只回答第一個問題,你有1:n的關係。

如果您有1:n relationship,則表question表中不需要answer_id。加入會就像

... 
FROM question q 
JOIN answer a ON q.question_id = a.question_id 
... 

工作,如果你有一個m:n relationship,就需要第三個表能解決關係(它被稱爲結合表,或橋接表)。

表:

問題(question_id)
答案(answer_id)
question_2_answer(question_id,answer_id)

加入:

... 
FROM question q 
JOIN question_2_answer q2a ON q.question_id = q2a.question_id 
JOIN answer a ON a.answer_id = q2a.answer_id 
... 

順便說一句,你不需要BIGINT作爲數據類型,只需INT會做,或​​者你會有超過2147483647問題/答案?

+0

櫃面1方案的..我怎麼會知道哪個選項是答案的一個問題? –

+0

完全像我加入我的答案。沒有「其他方式加入」。像我一樣加入表格,就是這樣。或者我不明白你的問題。 – fancyPants

+0

如果你想知道,例如如何得到沒有答案的問題(用我的連接你會得到一個空的結果(只是'連接'相當於'內部連接'),[這裏](http:// blog。編碼horror.com/a-visual-explanation-of-sql-joins/)對不同連接的一個很好的解釋。 – fancyPants