2017-02-08 35 views
1

MySQL工作臺中完全可選的一對一關係?
我只能創建部分可選的一對一關係。
我的情況下是:MySQL工作臺中完全可選的一對一關係

GROUP可以被分配問題
問題可以被分配到一個GROUP

EDIT1: enter image description here

編輯2:如果完全可選的一對一關係應該避免,也許更好的問題是?

+0

一個組只能分配1個問題?並且問題只能分配給1個組? –

+0

是的,一個組可能會被分配一個問題,而一個問題可以被分配給一個組。我不太清楚如何建模。我希望能夠創建組和問題而不必分配任何東西。 – Duy

+0

我真的可以放棄關係,並有一個problem_id作爲普通列嗎? – Duy

回答

1

讓我們看看是否有任何解決您的問題。

一組可分配的問題

一個問題可以被分配到一組

與如結構開始:

PROBLEM 
id | title 
1 | Prob1 
2 | Prob2 

GROUP 
id | title 
1 | Group1 
2 | Group2 

什麼還重要的是瞭解某個組織是否可以一次分配多個問題。並且是否可以將同一個問題分配給多個GROUP。

假設有嚴格的可選1:1關係。這意味着一個組不能同時分配兩個問題,同一個問題不能分配給兩個組。

通過添加表A的PK作爲表B的FK,可以實現嚴格的1:1。如果FK爲空,那麼您會注意到這已經是可選的1:1,因爲您可能會留下空單元表示分配了0個問題(或分配了0個組)。

PROBLEM 
id | title 
1 | Prob1 
2 | Prob2 

GROUP 
id | title | problem 
1 | Group1 |  2 
2 | Group2 | null 

在這個例子中Group2沒有被分配任何問題。組1已分配Prob2和Prob1已被分配到任何組。

你不是被迫分配任何東西,但一切可能有1:1的關係。

該結構可能意味着相當多的空(空)值。這不是最佳做法,但會完成這項工作。如果你想避免空值,那麼你可能不得不去N:M的實現。

PROBLEM 
id | title 
1 | Prob1 
2 | Prob2 

GROUP 
id | title 
1 | Group1 
2 | Group2 

GROUP_PROBLEM 
group | problem 
    1  |  2 

單獨使用此實現,您可能會有1個組分配多於1個問題,並將1個相同問題分配給多個組。但是,如果你爲兩個字段(組和問題)的每一個定義了一個UNIQUE索引,那麼你應該修復這個問題。