3

Надеюсь, кто-то сможет быстро посоветовать мне лучший способ моделирования моей ERD (я использую IDEF1X & ERWin not Chen Notation), хотя это не имеет большого значения.Дизайн базы данных - ERD. Вопрос моделирования

В принципе у меня есть три сущности

  1. Организация
  2. лицо
  3. Доверительного

Бизнес-правила утверждают, что попечитель может быть либо лицом или организацией.

Мой вопрос в том, было бы правильным иметь два основных отношения с внешним ключом к Доверенному лицу. Один из «Организация»> «Доверенное лицо», а второй - «Лицо»> «Доверенное лицо». Если одно из полей FK Доверенного лица всегда будет NULL в зависимости от того, является ли Доверительный управляющий лицом или организацией.

Или было бы лучше иметь какую-то ассоциативную таблицу между человеком и организацией (person_organisation) и создать отношения PK, FK от person_Organisation> Trustee.

Второй вариант кажется лучше, поскольку могут существовать другие объекты, которые также должны быть связаны как с Организацией, так и с человеком.

Надеюсь, это имеет смысл.

Много много спасибо заранее

ответ

2

trustee_model

EDIT

Ну, это должно работать тоже:

trustee_model_2

+0

Привет, Дамир, это здорово. Я действительно думал о методе подтипа супертипа, но у меня также есть несколько других объектов, которые могут быть либо организацией, либо человеком, которые недостаточно связаны, чтобы свернуться в один универсальный супертип, например, Доверительный управляющий, заинтересованная сторона и акционер. – Pixelated

+0

Мне кажется, что такие субъекты, как заинтересованные стороны и акционеры, действительно являются Ролями, которые могут выполнять Личность или Организация, как в примере Джастина К. –

+0

Дамир, большое спасибо за ERD, всегда кажется настолько очевидным, как только кто-то сделал это за вас. Очень ценим!:) Я, вероятно, займусь этим решением и посмотрю, как все обернется (может даже назвать атрибут после вас, если все пойдет хорошо! Lol) – Pixelated

1

Мне кажется, что Доверительный только один пример роли, которую человек может играть в организациях. Так вот, мы говорим о трехсторонней ассоциации Person_Organization_Role, где все три являются первичным ключом. Теперь это можно разбить на Person_Organization> PO_Role, но мое предпочтение - не то, что нужно.

+0

Привет Джастин. Большое спасибо за ответ. Было ли ваше решение по-прежнему работать, если бы человек не был связан с какой-либо организацией? – Pixelated

+0

Фактической таблицей будет (person_id, org_id, role_id), поэтому у вас все равно будет таблица Person, и у нее могут быть строки, не связанные в ассоциации. –

+0

Приветствия за совет. Я, очевидно, все еще учась, поэтому любые решения, такие как ваши, очень ценятся. – Pixelated

Смежные вопросы