零..一对一关系 SQL

Zero..One to One Relationship SQL

我正在尝试更好地理解 1-1 与 1-0..1 的关系。

假设我有一辆汽车SteeringWheel天窗

但在实体方面,我不确定如何实现 0..1:1 关系。

下面是 1:1 汽车和天窗之间的关系,但它应该是 1:0..1.

如何建立1:0..1关系?

-------------- ONE TO ONE --------------
CAR                         SUNROOF
---------------             -------------
CarId PK    -1----+         SunroofId
Model             |         Diameter
Year              +--0..1-  CarId FK, UNIQUE

我发现这个 link 我认为适用。

Implementing one-to-zero-or-one relation in SQL Server

本质上,它表示所有 1-1 关系实际上是 0..1-1。在那种情况下,实现将是相同的。

从数据的角度来看,您的设计正确地支持了这一点。要实现 1:1 之外的关系,您只需使用从 Car 到 Sunroof 的左连接。这样,如果天窗没有行,您将得到 NULL。但是 CarId 的唯一限制阻止了给定汽车的多个天窗。