我不是數據庫專家,所以這對我來說很複雜,但對許多人來說可能不是這樣。我有以下幾點:數據庫中複雜關係的最佳模式
quiz
:表裏麪包含一些測驗
project
:表包含一些項目
project_has_quiz
:一個多對多的關係表項目的測驗
team
:表,包含一些團隊
event
:表中包含一些事件(項目加上日期和其他一些f ields)
event_has_team
:一個多對多的關係表事件團隊
現在,我必須分配的測驗每隊在事件的順序。例如:
說你有5個測驗a
,b
,c
,d
,e
。
您創建了一個項目projectA
,其中包含測驗a
,b
和c
。
你有兩支球隊:teamA
和teamB
創建和事件eventA
與projectA
和你的關係將其與teamA
和teamB
。
現在我必須把地方,eventA
與teamA
必須有一個測驗爲了a, b, c
和eventA
與teamB
必須有一個測驗順序c, a, b
。
這樣做的最好方法是什麼?
我的第一個想法是建立另一個表格:event_has_team_has_quizOrder
,列quizOrder
插入了編程代碼a, b, c
和c, a, b
。但我不認爲這是實現這一目標的最純粹的方式,而且這肯定存在非規範化問題。
非常感謝。
但是,是不是有什麼更好的辦法?我的意思是,我希望'event_has_team_has_quizOrder''quiz'列的值被數據庫強制在由事件相關項目中'quiz'列值定義的範圍內。在你的回答中,也許是唯一可能的,我必須確保編程時,「測驗」欄永遠不會是「d」或「e」。謝謝。 – 2011-12-22 22:54:51
好問題。目前沒有可以製作(事件,測驗)的表格作爲外鍵。希望有更多有經驗的人提出建議你可以放棄使用檢查約束/觸發器的方法。 – goat 2011-12-23 18:40:30
謝謝@chris。我會等待,否則我會將您的答案設置爲正確答案。 – 2011-12-23 21:26:07