Ноль .. Один в один SQL отношения - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь лучше понять отношения 1-1 против 1-0..1.

Допустим, у меня есть Автомобиль , SteeringWheel и Люк в крыше

  • 1 Автомобиль должен иметь 1 Рулевое колесо и 1 Рулевое колесо должно принадлежать 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 голосов
/ 26 сентября 2018

С точки зрения данных ваш дизайн поддерживает это правильно.Чтобы достичь отношений за пределами 1: 1, вы просто используете левое соединение от автомобиля до люка.Таким образом, если нет люка на крыше, вы получаете NULL.Но уникальное ограничение на CarId предотвращает более одного люка для данного автомобиля.

0 голосов
/ 26 сентября 2018

Я нашел эту ссылку, которая, я думаю, применима.

Реализация отношения один-к-нулю-одному в SQL Server

По сути, это говорит все 1-1 отношения действительно 0..1-1.В этом случае реализация будет такой же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...