【问题标题】:Mandatory and Non mandatory in non identifying relationships非识别关系中的强制性和非强制性
【发布时间】:2011-04-07 10:12:11
【问题描述】:

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

非识别关系可以是 可选或强制,这意味着 外键列允许 NULL 或 分别不允许 NULL。

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

谢谢

【问题讨论】:

    标签: database database-design data-modeling


    【解决方案1】:

    生日,

    答案:MySQL Workbench 中的错误。

    解决方案:工作台有时会出现混乱,我注意到我需要首先删除所有现有关系,然后手动从关系中删除表中遗留的工件。然后重新建立关系。

    对于非识别关系,工作台应通过实心粉红色菱形图标指示它是否是强制性的(或非实心粉红色菱形图标是强制性的)。对于识别关系,您应该看到一个表示主键的键。

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

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

    干杯

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2020-03-29
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      相关资源
      最近更新 更多