Предполагая, что один «обычный» менеджер может управлять более чем одним отделом, ваша модель данных шо пакетирования, вероятно, искать что-то вроде этого:
CHIEF_MANAGER_ID может "точка" или:
- менеджеру из того же отдела (т.е. чей MANAGER.DEPARTMENT_ID соответствует Департаменту.Department_id из строки, содержащей этот CHIEF_MANAGER_ID), в этом случае он является менеджер «первичной» Главного
- или менеджер от другого отдела, в этом случае он является менеджером «заменить» главным.
В случае, если вы хотите, чтобы обеспечить тот же человек не может управлять несколько отделов в своей роли в качестве главного менеджера (в то время как еще в состоянии управлять еще один отдел, как обычный менеджер), добавьте UNIQUE ограничение на CHIEF_MANAGER_ID.
В случае, если вам нужно запомнить как первичные, так и замещающие главные менеджер одновременно использовать два поле, а не просто CHIEF_MANAGER_ID (в этом случае, вы также должны обеспечивать отдел соответствия, не декларативно).
В приведенной выше модели DEPARTMENT.CHIEF_MANAGER_ID имеет значение NULL. Это делается для разрыва цикла внешних ключей, поэтому данные могут быть фактически вставлены в базу данных без отсрочки внешних ключей. Если ваша СУБД поддерживает отложенные ограничения, вы можете сделать это поле NOT NULL и отложить один из FK, поэтому он проверяется в конце транзакции (после того, как обе строки были вставлены).
Я только что понял, что есть дополнительное требование: не каждый менеджер может быть заменен. Только начальник может. Вы могли бы сделать что-то подобное, чтобы смоделировать его:
SUBSTITUTE_DEPARTMENT_ID баллы в отдел мы «заимствование» главный менеджер заменитель из. Поскольку мы указываем на департамент, а не на непосредственного менеджера, мы знаем, что мы должны с ним руководить начальником .
Звучит как домашнее задание. Вы должны добавить этот тег к своему вопросу, если это так. – JAB
Это вопрос домашнего задания? –
Нет, это упрощенная реальная ситуация, с которой я столкнулся. У меня больше идей моделирования, и мне было любопытно услышать другие идеи. – yoozz