Дизайн базы данных для сотрудников, отделов и иерархии ролей

Предположим, у меня есть сотрудники, отделы и роль сотрудника, где один сотрудник может принадлежать другому отделу с другой ролью.

Например, Emp 1 принадлежит отделу 1 с ролевым менеджером. где один и тот же сотрудник может принадлежать к отделу 2 с ролью наладчика.

У каждого сотрудника также есть дочерняя иерархия, такая как Emp 2, Emp 3 принадлежит отделу 1 с ролью помощника, а их родителем является Emp 1.

В этом случае, что будет лучшим решением для разработки этой концепции. Пожалуйста, поделитесь своим мнением.

Рассмотрим сущности и атрибуты:

Сотрудники: id, имя

Отделы: deptID, dept_name

Роли: role_id, role_name


person Nahid Islam    schedule 24.07.2020    source источник
comment
Вы сами работали над этим? У вас есть отправная точка? Какие атрибуты есть у ваших сущностей, о которых мы должны заботиться?   -  person Neville Kuyt    schedule 24.07.2020
comment
Просто имя сотрудника, название отдела, роль и родитель каждого сотрудника.   -  person Nahid Islam    schedule 24.07.2020


Ответы (1)


Я попытаюсь указать домен бизнеса, как вы его изложили, а затем превратить это в предложение схемы.

В системе 0 или более сотрудников

В системе 0 или более отделов

В системе 0 или более ролей ‹‹EDIT: в вашем комментарии говорится, что родительская роль зависит от отдела›› сотрудник принадлежит к 1 или более отделам< /strong>, и в этом отделе ровно одна роль и один родитель (родителем является другой сотрудник).

Employee
------------
Employee_id (pk)
Name

Roles
------
Role_id (pk)
Name

Departments
-----------
Department_id (pk)
Name

Employee_deparment_role
-------------------------
employee_id (pk, fk)
department_id (pk, fk)
role_id (pk, fk)
Parent_id (pk, fk to employees) 

Эта модель фиксирует только одно состояние — она не позволяет людям менять отделы, роли или родителя, но вы не упомянули это как требование.

person Neville Kuyt    schedule 24.07.2020
comment
Можете ли вы рассказать мне о проблеме, если я хочу сохранить parent_id в таблице Employee_deparment_role? @Невилл Кайт - person Nahid Islam; 25.07.2020