MySQL工作台中完全可选的一对一关系

时间:2017-02-08 14:47:50

标签: database mysql-workbench entity-relationship

MySQL工作台中完全可选的一对一关系?
我只能创建部分可选的一对一关系 我的情况是:

GROUP 可以分配问题
可以问题 分配到 GROUP

EDIT1: enter image description here

EDIT2:如果应该避免完全可选的一对一关系,也许更好的问题是什么呢?

1 个答案:

答案 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索引,那么你应该解决这个问题。