Многократные отношения один к одному - PullRequest
0 голосов
/ 31 марта 2020

Прошло много времени с тех пор, как мне пришлось переделывать всю базу данных, и я задаю очень простой вопрос c, и я не могу найти правильный ответ с помощью поиска. Похоже, я что-то упускаю.

Три таблицы (работающие в Entity Framework Core )

  • Клиенты
  • Компании
  • Адреса

Клиенты могут иметь несколько адресов, а компании могут иметь несколько адресов, но один и тот же адрес не должен быть связан с обоими, поэтому допускается только один. И я не могу найти самый правильный способ сделать это. На данный момент у меня есть два FK на адресах, поэтому один из них всегда пуст, но кажется странным.

Задумывались над тем, чтобы создать ClientAddress & CompanyAddress, который наследует от Address, и использовать метод таблицы на иерархию, поскольку таблица на тип еще не поддерживается в EF Core. Они оба будут иметь одинаковые поля, но только отношение будет другим, но не уверен, что это тоже правильный путь.

Любой совет здесь?

1 Ответ

0 голосов
/ 01 апреля 2020

Наличие двух необязательных FK для addresses, один из которых ссылается на clients, а другой - на companies, так что один из них равен NULL для любой заданной строки адреса, является правильным представлением альтернативной (XOR-) ассоциации между адресом или клиентом или компанией.

Таким образом, нет необходимости взрывать ваш дизайн искусственным различием между «ClientAddress» и «CompanyAddress».

...