Текущий архив: 2003.02.10;
Скачать: CL | DM;
ВнизМастера, подскажите, как организовать древовидную БД?, Найти похожие ветки
← →
Соловьев (2003-01-22 11:02) [0]Задача такая: БД кадров. Понятно, что кадры постороены по древовидной структуре : начальники->отделы->подразделения->...->бригады. Структура кадров будет менятся, т.е. количество веток может изменятся, т.е. сделать несколько справочных таблиц для каждой ветки не получится... Как быть? Посоветуйте, те кто уже сталкивался с такой проблемой.
За ранее спасибо.
← →
Reindeer Moss Eater (2003-01-22 11:06) [1]Несмотря на эту древовидность, существует штатное расписание, которое всегда двумерно. Можно плясать от него.
← →
Соловьев (2003-01-22 11:10) [2]2 Reindeer Moss Eater
Пожалуйста, можешь конкретнее?
Это как? Почему двумерно? И почему оно обязательно существует?
← →
Johnmen (2003-01-22 11:10) [3]>т.е. количество веток может изменятся, т.е. сделать несколько
>справочных таблиц для каждой ветки не получится
Оба-на... Вообще то одна таблица для каждой ветки...
← →
ПИТОН (2003-01-22 11:14) [4]Ну вообще лучше как и любое дерево:
- Код,
- Код начальствующего отдела (родителя),
- Тип (отдел, подразделение, бригада) для информации и проверки терархии штатов,
- Наименование
....
← →
Соловьев (2003-01-22 11:18) [5]2 Johnmen ©
>Оба-на... Вообще то одна таблица для каждой ветки...
А у этой таблицы , ты , не подскажешь сколько полей? 5? 6? может 10? Оно может меняться...
2 ПИТОН
Для твоей организации дерева нужно заранее знать сколько веток. А их не известно сколько...
← →
Reindeer Moss Eater (2003-01-22 11:19) [6]И почему оно обязательно существует?
Существует оно для того, что бы нельзя было принять на работу 10 секретарш одному шефу. :) Это документ, в котором определены все штатные единицы.
Поектировать кадры можно отталкиваясь от него.
← →
VAleksey (2003-01-22 11:20) [7]
> Соловьев © (22.01.03 11:18)
Не - а
С любым кол-вом веток можно дерево построить по принципу
код ID
код родителя ParentID
и остальные поля по вкусу
← →
ПИТОН (2003-01-22 11:21) [8]
> Соловьев © (22.01.03 11:18)
Как раз в такой организации БД воженность может быть любая
← →
Johnmen (2003-01-22 11:30) [9]>Соловьев © (22.01.03 11:18)
>А у этой таблицы , ты , не подскажешь сколько полей? 5? 6?
>может 10? Оно может меняться...
По-моему, ты не улавливаешь...:)
Меняется не количество полей, а количество записей !
← →
Соловьев (2003-01-22 11:33) [10]Большое спасибо ВСЕМ, я наконец-то догнал. Все оказалось просто так 2х2. Еще раз спасибо.
← →
Reindeer Moss Eater (2003-01-22 11:39) [11]Про штат все же подумай.
Организовав "живых" людей в виде дерева, будет не так просто ответить на вопрос: сколько у нас вакансий в цехе №X и скольких водителей мы можем принять на работу.
← →
Соловьев (2003-01-22 12:20) [12]2 Reindeer Moss Eater
Я думаю сделать так:
1-а таблица описывает дерево, 2-я - профессии, а 3-я уже живых людей.
Ответить будет конечно сложно, если цех №Х содержит в себе много других отделов, а те в свою очередь еще, и так далее. Ну икак быть? Вложеные запросы не помогут.
← →
Reindeer Moss Eater (2003-01-22 12:33) [13]Ты не понял.
Даже если нет никакого дерева, а есть простая таблица - список работающих ("живых" людей), то все равно нельзя сказать сколько вакансий есть всего и сколько токарей можно принять на работу не нарушив штат (даже если не нужны вложенные запросы).
Ответить на этот вопрос можно имея в базе данных модель штатного расписания. (должности, а не живых людей).
← →
Соловьев (2003-01-22 12:37) [14]2 Reindeer Moss Eater
>модель штатного расписания
Вот тут я конечно не доганяю, ты говорил, что оно 2-х мерное. можешь привести структуру(приблизительную).
← →
Reindeer Moss Eater (2003-01-22 12:42) [15]Ну предметную-то область решаемой задачи знать все же следует.
Штатное расписание:
Генеральный директор
Его длинноногая секретарша
Директор по общим вопросам
Директор по маркетингу
Начальник транспортного цеха №1
Начальник транспортного цеха №2
.....
← →
Соловьев (2003-01-22 12:47) [16]ОК.Это как раз отдел кадров мне и дал в екселе. Это сделать можно, ну а как связать с деревом иерархий?
← →
Reindeer Moss Eater (2003-01-22 12:51) [17]Каждая штатная клетка может быть занята или вакантна (плюс разные тонкости ИО, ВрИО). Если она занята - имеет ссылку на id "живого" работника из списка работающих, в дереве он живет или нет. Если вакантна - null.
← →
Соловьев (2003-01-22 13:14) [18]Т.е. добавится еще одна таблица - штат.
Ну икак ответить : сколько у нас вакансий в цехе №X ?
← →
Reindeer Moss Eater (2003-01-22 13:19) [19]Это шутка что ли?
Сосчитать сколько записей в штате цеха №Х не имеют имеют значения в поле "ID работника"
← →
Соловьев (2003-01-22 13:26) [20]:)))
Извини...
Штат цеха №Х? Это если он последний в иерархии, а если он еще под собой имеет отделы, а те в свою очередь, еще?
Как штат организован, как дерево? тогда я вообще запутался....
← →
MsGuns (2003-01-22 13:29) [21]"Поедатель мосса", как всегда, прав ;)))))
В смысле, прав стратегически. Нельзя смешивать состав подразделений, т.е. живых людей, числящихся в подразделении любого уровня, и ШТАТНОЕ РАСПИСАНИЕ.
ШТАТНОЕ РАСПИСАНИЕ - таблица (если произвольное кол-во кровней, то как советует VAleksey © (22.01.03 11:20)) или таблицы по чилу уровней, если кол-во оных фиксированно. Например: Цех(Отдел)->Участок(Бюро). Для фиксации временных рабочих групп типа бригад, секторов и пр. (которые, кстати, в штатном могут вообще отсутствовать) можно организовать спец.доп.таблицу.
В этой таблице по каждому подразделению содержится список должностей с кол-вом единиц по штату. При этом если должность предусматривает дифференциацию (по разрядам, категориям ИТР и пр), то для каждого разряда - отд. строка. Пример
Цех 1 (кузнечно-прессовый)
1. Начальник цеха 1 8000р
2. Зам начальника цеха 3 6500р
3. ПДБ (группа) 1 57900р
3.1. Начальник ПДБ 1 5000р
3.2. Ст.Инженер 2 3700р
3.3. Инженер I кат 3 3500р
3.4. Инженер II кат 5 3000р
3.5. Техник-диспетчер 8 2500р
4. БТЗ (группа) 1
...
2-я Часть - состав подразделений, связана со штатным по некоторому ключу, однозначно идентифицирующему СТРОЧКУ штатного.
Вот здесь-то и указываются ссылки на идент-ры конкретных челов (инфа о которых должна храниться в КАРТОТЕКЕ КАДРОВ)
Такая организация БД свободно допускает :
- человек числится сразу на неск.должностях в одном или разных подразделениях
- человек временно переводится из одного подразделения в другое
- человек временно замещает другого на другой должности с соотв.окладом (тариф.ставкой)
- подразделение переводится из одного цеха в другой
- слияние и дробление подразделений
← →
kaif (2003-01-22 15:49) [22]Я не понимаю, откуда здесь вообще дерево видится? От того, что начальник один это еще не значит, что он узел дерева. Хотя, возможно, в таких логических ошибках и состоит весь секрет власти...
А что, если один специалист обслуживает сразу 2 цеха? Но в то же время он не начальник гиперцеха.
Лучше всего, ИМХО, простая плоская таблица. Ведь в картотеке кодров все эти бумажки совершенно одинаковы, имеют одинаковый набор полей и лежат на одной полке в ряд.
Отображать в виде дерева можно всегда. Хранить в виде дерева нужно в исключительных случаях.
← →
Соловьев (2003-01-22 15:59) [23]У нас была БД кадров, так вот програмеры которые ее писали, не долго думали над структурой, а тоже загнали все в плоскую таблицу и отображали дерево. БД заполнили(несколько тысяч). Потом пришла пора, когда полностью изменилась структура нашего предприятия. И что вышло, что нужно каждого работника редактировать и вписывать вручную каждому(о какой целостности можно говорить) имя отдела где работатет? Вот сейчас мне и дали задание написать такую БД, для которой не страшны наши постоянные реструктуризации.
← →
MsGuns (2003-01-22 16:13) [24]При разработке топологии БД используй объекты. Т.е. объект "Подразделение", объект "Должность", объект "Персона" и т.д. При описании объектов укажи вложенность, например, в подразделении может быть список должностей и т.д.
После того, как у тебя будет готова лог.модель БД приступай собственно к созданию таблиц, межтабличных связей и вообще бизнес-логики БД. Львиная доля вопросов отпадет !
← →
Romkin (2003-01-22 16:43) [25]www.ibase.ru
http://www.ibase.ru/devinfo/treedb.htm
http://www.ibase.ru/devinfo/mappingObjects.pdf
← →
Johnmen (2003-01-22 17:03) [26]>Соловьев © (22.01.03 15:59)
>И что вышло, что нужно каждого работника редактировать и
>вписывать вручную каждому(о какой целостности можно говорить)
>имя отдела где работатет?
Судя по этому высказыванию, ты все-таки не догоняешь...:)
Полностью согласен с kaif © (22.01.03 15:49), деревьев не видно !
← →
Соловьев (2003-01-22 17:25) [27]Построение штатного расписания - в виде дерева.
← →
MsGuns (2003-01-22 17:38) [28]>Соловьев © (22.01.03 17:25)
Уважаемый Александр из не менее уважаемого мною г.Харькова (я там хаевничал с 74-го по 80-й) ! Настоятельно рекомендую Вам, прежде чем садиться за комп, побеседовать хоть с одним отизовцем БОЛЬШОГО завода или учреждения. И ХОРОШО усвойте, чтО такое штатное расписание завода и штатное расписание цеха, КБ, отдела и т.п. Вы пытаетесь, ИМХО, подружить волков и баранов, а это уже совершенно безнадежное дело. Кроме того, Вам вряд ли удасться создать ОДНУ прогу и для ПЭО/ОТИЗ и для ОК,- придется писать РАЗНЫЕ проги. БД, конечно же, будет на 50% общая. Кроме того, для учета и планирования фонда з/пл (а штатное в основном для этого и существует) в подразделениях надо писать прогу третью ! Уже для каждого подразделения со своей спецификой.
Впрочем, это все ИМХО. (Просто все это уже было, было, было..)
← →
Jeer (2003-01-22 22:52) [29]А как Вам случай, когда штатным расписанием и живыми людьми заведует секретарша, находящаяся в конце и на конце ? :)))
Если по теме, то:
1. Иерархия - структура подразделений.
2. Должности - плоская таблица
3. Иерархия вторичная, наследуемая от п.1 - Подчиненность персонала
4. Сотрудники - плоская таблица со ссылками на 1,2,3
5. Должностные оклады - плоская таблица, возможно со ссылкой на п.1
← →
roottim (2003-01-23 08:18) [30]Мне так кажется что господин мало что понимает в СУБД и ее релятивности.
Можно купить какой-нить компактик с 1С "зарплата и кадры" и хотябы посмотреть каким образом реализованы структуры...
это быоло бы хорошим началом, а так на пальцах в форуме объяснить что да как... нерешаемая ИМХО задача
← →
Sergey13 (2003-01-23 09:48) [31]ИМХО, Jeer © (22.01.03 22:52) прав. Тут надо разделить волков и агнцев. Структура предприятия и штатное расписание - это взаимосвязанные, но абсолютно разные вещи. И если первое - однозначно (для меня по крайней мере) иерархия, то второе может быть плоской таблицей, в которую по желанию можно добавить и внутреннюю иерархию. Например у всех есть однозначная ссылка на подразделение, но внутри этого подразделения можно организовать свою иерархию начальник-подчиненный.
← →
Соловьев (2003-01-23 10:02) [32]Мастера, действительно я не силен СУБД, поэтому и спрашиваю, и задаю глупые вопросы, но зачем тогда этот сайт? Задать порос и получить ответ, что иди ты ка купи CD и сиди сам и разбирайся? Мне казалось что это не так, извините...
Страницы: 1 вся ветка
Текущий архив: 2003.02.10;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.01 c