非识别关系中的强制性和非强制性

时间:2011-04-07 10:12:12

标签: database database-design data-modeling

参考这里给出的答案的最后部分: What's the difference between identifying and non-identifying relationships?

  

可以是非识别关系   可选的或强制的,意思是   外键列允许NULL或   分别禁止NULL。

我在MySQL Workbench中创建了一个非标识关系,我是否保留外键列MANDATORY或NON-MANDATORY,没有任何效果。即使它是NON-MANDATORY,我也不能在其中输入NULL值。我必须明确选择特定的外键作为允许NULL,然后我才能存储NULL值 所以我想问一下这是否是正确的行为,或者这是MySQL Workbench或MySQL的问题?

由于

2 个答案:

答案 0 :(得分:0)

这听起来像是你的设计工具的问题,我不熟悉。

外键约束在SQL中始终是可选的。也就是说,外键在引用表中不需要行,它只要求每个引用行在被引用的表中具有相应的行(父表)。这是ER建模无法很好地映射到SQL数据库的一种方式。您可以在ER图中绘制强制1到N(N> 0)关系的图片,但是出于大多数实际目的,您无法在SQL中实现 - 它实际上总是1到0 / N.

虽然允许使用可以为空的外键,但我不建议您这样做。外键中的空值可能会导致以后出现错误结果的问题,它们在不同的DBMS中的工作方式不同,即使是专家用户也无法正确理解。

答案 1 :(得分:0)

天儿真好,

答案:MySQL Workbench中的错误。

解决方案:工作台似乎有时会感到困惑,我注意到我需要首先删除任何现有的关系,然后从关系中手动删除表中剩下的工件。然后重新建立关系。

对于非识别关系,工作台应通过填充的粉红色钻石图标(或未填充的粉红色钻石不强制)来指示它是否是强制性的。对于识别关系,您应该看到一个指示主键的键。

我不是在抱怨社区版中的错误!工作台软件从我这里得到一个10/10。另一方面,如果您正在运行标准版,请联系MySQL。

(我正在运行MySQL Workbench v5.2.34 CE,Rev 7780。)

干杯

相关问题