具有严格 1-2 关系的实体

Res*_*ict 2 database-design entity-relationship er-diagram

我试图了解当关系具有精确性质时,我们如何建模和定义两个实体的基数。让我们说 1 到 2。

例如,如果我有实体 Journey 和 Location。现在每个旅程都有 2 个位置,一个起始位置和一个结束位置。

那么我们如何建模这种关系并将基数放在每个实体(旅程和位置)上。

简单的 google 搜索结果是简单的 1-1、1-m 和 mn 关系解释。但是我们如何将它们限制为恰好 1-2 呢?

Bra*_*vic 5

您的示例不是“1 到 2”,而是“N 到 2”,您只需通过两个外键对其进行建模:

在此处输入图片说明

(可能还有一个 CHECK 以确保开始和结束位置不同。)


如果你真的想要“1 到 2”,从某种意义上说,任何给定的位置总是只连接到一个旅程,你必须做这样的事情......

在此处输入图片说明

...并使用支持延迟约束的 DBMS,因此您可以在插入新数据时解决先有鸡还是先有蛋的问题。

在不支持延迟约束的 DBMS 上,您可以将起始位置和结束位置设为 NULL,但随后它将不再是“1 到 2”,而是“1 到 0..2”的关系。