零..一对一关系 SQL
Zero..One to One Relationship SQL
我正在尝试更好地理解 1-1 与 1-0..1 的关系。
假设我有一辆汽车、SteeringWheel和天窗
- 1 Car 必须有 1 个 SteeringWheel 和 1 个 SteeringWheel 必须属于 1 汽车;因此这是 1:1 关系
- 1 Car 可以有 0 或 1 个 Sunroof 并且 Sanroof 必须属于 1 汽车;因此这是 0..1:1 关系。
但在实体方面,我不确定如何实现 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 的唯一限制阻止了给定汽车的多个天窗。
我正在尝试更好地理解 1-1 与 1-0..1 的关系。
假设我有一辆汽车、SteeringWheel和天窗
- 1 Car 必须有 1 个 SteeringWheel 和 1 个 SteeringWheel 必须属于 1 汽车;因此这是 1:1 关系
- 1 Car 可以有 0 或 1 个 Sunroof 并且 Sanroof 必须属于 1 汽车;因此这是 0..1:1 关系。
但在实体方面,我不确定如何实现 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 的唯一限制阻止了给定汽车的多个天窗。