Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Снова иерархический / 8 сообщений из 8, страница 1 из 1
26.11.2014, 22:26
    #38817845
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова иерархический
Есть иерархическая таблица Должности:

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

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

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

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

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


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

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

Возможно, но если добавятся отделы, то как тогда определить всех подчиненных по конкретному отделу?
Нужно будет ввести внешний ключ "Отдел" в таблицу "Сотрудники", и тогда еще следить, чтобы все сотрудники в каждой иерархии были из одного отдела (т.е. при переводе сотрудника в другой отдел, помимо его айдишника нужно (правильно) сменить айди начальника)
...
Рейтинг: 0 / 0
27.11.2014, 10:23
    #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
30.11.2014, 22:28
    #38820900
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова иерархический
Mikle83,

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

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

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

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

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


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