powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Снова иерархический
8 сообщений из 8, страница 1 из 1
Снова иерархический
    #38817845
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть иерархическая таблица Должности:

ID PARENT Name1Директор21Менеджер32Работник

т.е. должности находятся в жесткой иерархии: Директор->Менеджер->Работник

Есть таблица Сотрудники, тоже иерархическая:

ID PARENT Name ID Должности1Сан Саныч121Петр232Василий3

где сотрудники подчиняются этой иерархии.


Вопрос: как правильно организовать такие таблицы?
Т.к. в таком варианте придется поддерживать обе иерархии в обоих таблицах: если изменится отношение между должностями (например Менеджер и Директор вдруг станут равноправными, а Работник будет подчиняться напрямую Директору), то между сотрудниками его придется менять самостоятельно.
Как быть?
...
Рейтинг: 0 / 0
Снова иерархический
    #38817857
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н если изменится отношение между должностямиИ они часто меняются?
Максим Н то между сотрудниками его придется менять самостоятельно.
Как быть? Писать скрипт. Если это будет часто, то писать триггер.

Максим Н Вопрос: как правильно организовать такие таблицы?parent в таблице сотрудников лишний. Он должен браться из должности. Вы денормализовали эту таблицу.
...
Рейтинг: 0 / 0
Снова иерархический
    #38817958
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н Вопрос: как правильно организовать такие таблицы?parent в таблице сотрудников лишний. Он должен браться из должности. Вы денормализовали эту таблицу.[/quot]

Возможно, но если добавятся отделы, то как тогда определить всех подчиненных по конкретному отделу?
Нужно будет ввести внешний ключ "Отдел" в таблицу "Сотрудники", и тогда еще следить, чтобы все сотрудники в каждой иерархии были из одного отдела (т.е. при переводе сотрудника в другой отдел, помимо его айдишника нужно (правильно) сменить айди начальника)
...
Рейтинг: 0 / 0
Снова иерархический
    #38818122
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НВозможно, но если добавятся отделы, то как тогда определить всех подчиненных по конкретному отделу?
Нужно будет ввести внешний ключ "Отдел" в таблицу "Сотрудники", и тогда еще следить, чтобы все сотрудники в каждой иерархии были из одного отдела (т.е. при переводе сотрудника в другой отдел, помимо его айдишника нужно (правильно) сменить айди начальника)

Если иерархия в отделах одинаковая, то вам достаточно добавить в сотрудники ИД_Отдела (в самом простом случае).
В более сложном - отдельную таблицу с маппингом Сотрудник-Отдел.

В таком случае поиск "начальника" будет формироваться примерно таким запросом (с точностью до синтаксиса):

Код: plsql
1.
2.
3.
4.
5.
Select 
  .... 
from Employee E
  join Post P on P.ID = E.Post_ID
  join Employee Boss on Boss.Post_ID = P.Parent_ID and Boss.Unit_ID = E.Unit_ID



"всех сотрудников начальника" таким:

Код: plsql
1.
2.
3.
4.
5.
Select 
  .... 
from Employee Boss
  join Post P on P.Parent_ID = Boss.Post_ID
  join Employee E on E.Post_ID = P.ID and E.Unit_ID = Boss.Unit_ID



Если дойдете таки до маппинга сотрудников и отделов - запрос не сильно усложниться.
...
Рейтинг: 0 / 0
Снова иерархический
    #38820900
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83,

Спасибо, это решение мне подходит.
...
Рейтинг: 0 / 0
Снова иерархический
    #38820952
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НМаксим Н Вопрос: как правильно организовать такие таблицы?parent в таблице сотрудников лишний. Он должен браться из должности. Вы денормализовали эту таблицу.

Возможно, но если добавятся отделы, то как тогда определить всех подчиненных по конкретному отделу?
Нужно будет ввести внешний ключ "Отдел" в таблицу "Сотрудники", и тогда еще следить, чтобы все сотрудники в каждой иерархии были из одного отдела (т.е. при переводе сотрудника в другой отдел, помимо его айдишника нужно (правильно) сменить айди начальника)[/quot]
подумаю только, какое горе!
...
Рейтинг: 0 / 0
Снова иерархический
    #38821235
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть же уже набившие оскомину решения по кадрам.

Иерархический справочник подразделений.
Справочник должностей.
Иерархическое штатное расписание (подразделение, должность).
Перечень сотрудников.
Должности в штатном расписании, занимаемые сотрудниками - периодический, с историей изменения и по приказам о назначении/снятии (позиция в штатном расписании, сотрудник, дата С, дата ПО)
...
Рейтинг: 0 / 0
Снова иерархический
    #38838191
dobroff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛЕсть же уже набившие оскомину решения по кадрам.

Иерархический справочник подразделений.
Справочник должностей.
Иерархическое штатное расписание (подразделение, должность).
Перечень сотрудников.
Должности в штатном расписании, занимаемые сотрудниками - периодический, с историей изменения и по приказам о назначении/снятии (позиция в штатном расписании, сотрудник, дата С, дата ПО)

Подскажите где искать?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Снова иерархический
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]