1

我不是數據庫專家,所以這對我來說很複雜,但對許多人來說可能不是這樣。我有以下幾點:數據庫中複雜關係的最佳模式

quiz:表裏麪包含一些測驗

project:表包含一些項目

project_has_quiz:一個多對多的關係表項目的測驗

team:表,包含一些團隊

event:表中包含一些事件(項目加上日期和其他一些f ields)

event_has_team:一個多對多的關係表事件團隊

現在,我必須分配的測驗每隊在事件的順序。例如:

說你有5個測驗abcde

您創建了一個項目projectA,其中包含測驗a,bc

你有兩支球隊:teamAteamB

創建和事件eventAprojectA和你的關係將其與teamAteamB

現在我必須把地方,eventAteamA必須有一個測驗爲了a, b, ceventAteamB必須有一個測驗順序c, a, b

這樣做的最好方法是什麼?

我的第一個想法是建立另一個表格:event_has_team_has_quizOrder,列quizOrder插入了編程代碼a, b, cc, a, b。但我不認爲這是實現這一目標的最純粹的方式,而且這肯定存在非規範化問題。

非常感謝。

回答

1

你可以做

event_has_team_has_quizOrder

(event, team, quiz, sequence) 


eventA, teamA, a, 1 
eventA, teamA, b, 2 
eventA, teamA, c, 3 
eventA, teamB, c, 1 
eventA, teamB, a, 2 
eventA, teamB, b, 3 
+0

但是,是不是有什麼更好的辦法?我的意思是,我希望'event_has_team_has_quizOrder''quiz'列的值被數據庫強制在由事件相關項目中'quiz'列值定義的範圍內。在你的回答中,也許是唯一可能的,我必須確保編程時,「測驗」欄永遠不會是「d」或「e」。謝謝。 – 2011-12-22 22:54:51

+0

好問題。目前沒有可以製作(事件,測驗)的表格作爲外鍵。希望有更多有經驗的人提出建議你可以放棄使用檢查約束/觸發器的方法。 – goat 2011-12-23 18:40:30

+0

謝謝@chris。我會等待,否則我會將您的答案設置爲正確答案。 – 2011-12-23 21:26:07

相關問題