MySQL工作台中完全可选的一对一关系?
我只能创建部分可选的一对一关系
我的情况是:
GROUP 可以分配问题
可以问题 分配到 GROUP
EDIT2:如果应该避免完全可选的一对一关系,也许更好的问题是什么呢?
答案 0 :(得分:1)
让我们看看是否有任何问题可以解决您的问题。
可以为GROUP分配一个问题
可以将问题分配给GROUP
从以下结构开始:
PROBLEM
id | title
1 | Prob1
2 | Prob2
GROUP
id | title
1 | Group1
2 | Group2
同样重要的是要知道GROUP是否可以一次分配多个问题。是否可以将同一个问题分配给多个GROUP。
假设有一个严格的可选1:1关系。这意味着一个组不能同时分配2个问题,并且不能将同一个问题分配给2个组。
严格的1:1将通过将表A的PK添加为表B的FK来实现。如果FK可以为空,那么您将注意到这已经是可选的1:1,因为您可能留下空单元格指示分配了0个问题(或分配了0个组)。
PROBLEM
id | title
1 | Prob1
2 | Prob2
GROUP
id | title | problem
1 | Group1 | 2
2 | Group2 | null
在此示例中,Group2没有分配任何问题。 Group1已分配Prob2,Prob1已分配给任何组。
你不是被迫分配任何东西,但一切都可能有1:1的关系。
这个结构可能意味着很多空(null)值。这不是最佳实践,但可以胜任。如果你想避免空值,那么你可能需要进行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个相同的问题分配给1个以上的组。但是如果为两个字段(组和问题)中的每一个定义一个UNIQUE索引,那么你应该解决这个问题。