0

您可以选择在关系窗口的外键选项卡中取消选中 Mandatory,但这并不能完全捕捉不相交关系的含义,即多个关系之间的 EITHER-OR 关系。

4

1 回答 1

1

您提到外键的强制属性使我相信您要么误解了不相交关系的含义,要么是在错误的“方向”上使用关系来实现它。

假设我们要实现以下模式:

  • 班级:职员
  • 类别:永久(专攻工作人员)
  • 类:临时(专攻工作人员)
  • 工作人员是永久雇员临时承包商

相应的 EER 模式将是(MySQL 语法):

CREATE TABLE staff_member (
  id INT PRIMARY KEY,
  name VARCHAR(20) NOT NULL
);

CREATE TABLE permanent (
  id INT PRIMARY KEY,
  next_appraisal DATETIME NOT NULL,
  FOREIGN KEY (id) REFERENCES staff_member(id)
);

CREATE TABLE temporary (
  id INT PRIMARY KEY,
  contract_end DATETIME NOT NULL,
  FOREIGN KEY (id) REFERENCES staff_member(id)
);

请注意,外键是专用实体父实体(id作为主键,根据定义它也始终是强制性的)。

这仍然不能回答你的问题。如何建模这种关系的不相交属性?你不能轻易做到这一点(顺便说一句,你也不能模拟一个专业化是完整的)。

许多 RDBMS 支持使用CHECK约束来强制执行这些额外条件,但 MySQL 不支持(注意,语法被 MySQL 解析器接受,但声明被忽略)。但是,存在导致相同效果的简单解决方法。

于 2013-07-30T15:05:40.807 回答