Рассмотрим этот случай, когда я пытаюсь смоделировать базу данных для компании:
Сотрудники
, Менеджеры
, Отделы
.Сотрудник
работает только в 1 Отделе
, в то время как в Отделе
может работать много Сотрудников
.Менеджер
может управлять только 1 Отделом
и аналогично Отдел
может иметь только 1 Менеджер
.Менеджер
контролирует множество Сотрудников
, но Сотрудник
контролируется только одним Менеджером
.Теперь у меня есть 2 способа смоделировать это:
Первое решение:
Я буду считать, что сущность Менеджер
наследуется от сущности Сотрудник
, учитывая, что я' будем хранить данные, которые уникальны для менеджеров (например, бонусы и статус).
Поскольку отношение между Отделом
и Сотрудником
равно 1:N
, я положу
Идентификатор отдела
в качестве внешнего ключа в таблице Сотрудник
для Работы
связь.
Поскольку соотношение между Отделом
и Менеджером
составляет 1:1
, то я положу
Идентификатор отдела
в качестве внешнего ключа в таблице Manager
для Manages
связь.
Проблема. Как представить рекурсивное отношение между Менеджером
и Сотрудником
?
Второе решение:
Я буду считать, что сущность Менеджер
не нужна, так как другие Сотрудники
также могут иметь Бонус
и Статус
. (На самом деле я добавил эти 2 атрибута только для того, чтобы посмотреть, как это смоделировать в обоих случаях)
Отделом
и Сотрудником
равно 1:N
, я положу
Идентификатор отдела
в качестве внешнего ключа в таблице Сотрудник
для Работы
связь.Сотрудником
и Менеджером
равно 1:N
, я положу
Идентификатор сотрудника
в качестве внешнего ключа в таблице Employee
для Supervises
отношение и назовите его Manager Id
. Проблема: Как представить отношение между Менеджером
и Отделом
?
Вопросы: