Скорее всего, вы действительно имеете отношения 1: N или отношения M: N.
Если пользователь может работать только для ОДНОГО и ТОЛЬКО ТОЛЬКО ВПЕРЕД (1: N), то вы можете либо поместить BranchID (FK) в таблицу Employee, либо использовать дополнительную таблицу BranchEmployee (Link). . Предоставлял уникальное ограничение на (BranchID, UserId) в таблице BranchEmployee (Link).
Большинство предпочитает помещать BranchID (FK) в таблицу Employee, поскольку это меньше таблиц.
Однако предположим, что вы хотите изолировать эти данные, и поместите некоторые метаданные об этих отношениях. Скажите: «Сотрудник начал работу в филиале на эту дату», aka EmployeeBranchStartDate.
Затем дополнительный стол имеет немного больше смысла. Заметьте, я сказал «немного».
BranchEmployee(Link) (Table)
-----------
BranchEmployeeLinkSurrogateKey
BranchId (FK)
UserId (FK)
EmployeeBranchStartDate (datetime)
(unique on BranchId, UserId)
Лично я бы пошел с BranchEmployee (Link) сейчас. Потому что, если есть довольно хороший шанс, что мне может понадобиться Сотрудник для работы в 2-х филиалах (что изменило бы отношение к M: N), тогда мне не нужно перепроектировать все. Я могу просто удалить ограничение (уникальное по BranchId, UserId). Ака, небольшой профилактический дизайн, чтобы сохранить много страдания позже.
a 1 до 1? Имеет ли филиал много сотрудников, но у сотрудника есть 1 филиал? – automatic
Я цитирую OP об этом. – ApplePie
Извините, что прокомментировал вопрос, а не ваш ответ – automatic