Что такое лучший способ моделирования следующие ...«один-ко-многим» моделирования вопрос
Предположим у меня есть два объекта: Agency
и Publisher
, и оба имеют отношение 1-к-п к Employee
, Это истинное отношение 1 к n, так как каждый Employee
может работать только для одного Agency
или одного Publisher
. Предположим далее, что я не могу ввести супертип (например, Employer
), который содержит отношения 1-к-n.
Моего предпочтительное решения является внешним ключом в Employee
, который могут либо ссылка на первичный ключ Agency
или Publisher
(все мои первичные ключи 64-разрядные идентификаторы, которые являются уникальными для всей базы данных). Однако теперь я не смогу сопоставить двунаправленную связь, не указывая в Employee
, является ли это отношением Agency
или Publisher
.
Моим другим вариантом является использование двух таблиц, AgencyEmployee
и PublisherEmployee
, которые затем могут быть связаны как традиционные двунаправленные ассоциации 1-на-n.
Что вы считаете лучшей практикой в этой ситуации?
ОБНОВЛЕНИЕ: Спасибо за отличные ответы за такое короткое время! Что вы думаете о следующем решении: внешние ключи в Employee
для обоих Agency
и Publisher
, такие как agency_id
и publisher_id
?
Я соглашаюсь на лучшие практики и звонки Bad Thing, но я думаю, что с точки зрения нормализации, имея 3-й стол с EmployeeID как PK, EmployerID и EmployerType, было бы лучше. –
@Harper: Это правильно, но с прагматической точки зрения это означает другое соединение (и первичный ключ с несколькими столбцами). –