零..一对一关系SQL

时间:2018-09-26 17:44:09

标签: sql-server many-to-many one-to-one

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

假设我有一辆汽车 SteeringWheel 天窗

  • 1个汽车必须具有1个 SteeringWheel 和1个 SteeringWheel 必须属于1个汽车;因此这是1:1关系
  • 1个汽车可以具有0或1个天窗,并且天窗必须属于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

2 个答案:

答案 0 :(得分:1)

从数据角度看,您的设计正确地支持了这一点。要实现超过1:1的关系,您只需在Car和天窗之间使用左联接。这样,如果没有天窗行,则为NULL。但是,对CarId的唯一限制是,对于给定的汽车,它不仅可以防止单个天窗。

答案 1 :(得分:0)

我找到了我认为适用的链接。

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

从本质上讲,它说所有1-1关系都是0..1-1。在那种情况下,实现方式是相同的。