![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, подскажите, как организовать древовидную БД?, [D6, IB6.x]
Соловьев © (2003-01-22 11:02:00)Задача такая: БД кадров. Понятно, что кадры постороены по древовидной структуре : начальники->отделы->подразделения->...->бригады. Структура кадров будет менятся, т.е. количество веток может изменятся, т.е. сделать несколько справочных таблиц для каждой ветки не получится... Как быть? Посоветуйте, те кто уже сталкивался с такой проблемой.
За ранее спасибо.
Соловьев (2003-01-23 10:02:00) [1]Мастера, действительно я не силен СУБД, поэтому и спрашиваю, и задаю глупые вопросы, но зачем тогда этот сайт? Задать порос и получить ответ, что иди ты ка купи CD и сиди сам и разбирайся? Мне казалось что это не так, извините...
Sergey13 (2003-01-23 09:48:00) [2]ИМХО, Jeer © (22.01.03 22:52) прав. Тут надо разделить волков и агнцев. Структура предприятия и штатное расписание - это взаимосвязанные, но абсолютно разные вещи. И если первое - однозначно (для меня по крайней мере) иерархия, то второе может быть плоской таблицей, в которую по желанию можно добавить и внутреннюю иерархию. Например у всех есть однозначная ссылка на подразделение, но внутри этого подразделения можно организовать свою иерархию начальник-подчиненный.
roottim (2003-01-23 08:18:00) [3]Мне так кажется что господин мало что понимает в СУБД и ее релятивности.
Можно купить какой-нить компактик с 1С "зарплата и кадры" и хотябы посмотреть каким образом реализованы структуры...
это быоло бы хорошим началом, а так на пальцах в форуме объяснить что да как... нерешаемая ИМХО задача
Jeer (2003-01-22 22:52:00) [4]А как Вам случай, когда штатным расписанием и живыми людьми заведует секретарша, находящаяся в конце и на конце ? :)))
Если по теме, то:
1. Иерархия - структура подразделений.
2. Должности - плоская таблица
3. Иерархия вторичная, наследуемая от п.1 - Подчиненность персонала
4. Сотрудники - плоская таблица со ссылками на 1,2,3
5. Должностные оклады - плоская таблица, возможно со ссылкой на п.1
MsGuns (2003-01-22 17:38:00) [5]>Соловьев © (22.01.03 17:25)
Уважаемый Александр из не менее уважаемого мною г.Харькова (я там хаевничал с 74-го по 80-й) ! Настоятельно рекомендую Вам, прежде чем садиться за комп, побеседовать хоть с одним отизовцем БОЛЬШОГО завода или учреждения. И ХОРОШО усвойте, чтО такое штатное расписание завода и штатное расписание цеха, КБ, отдела и т.п. Вы пытаетесь, ИМХО, подружить волков и баранов, а это уже совершенно безнадежное дело. Кроме того, Вам вряд ли удасться создать ОДНУ прогу и для ПЭО/ОТИЗ и для ОК,- придется писать РАЗНЫЕ проги. БД, конечно же, будет на 50% общая. Кроме того, для учета и планирования фонда з/пл (а штатное в основном для этого и существует) в подразделениях надо писать прогу третью ! Уже для каждого подразделения со своей спецификой.
Впрочем, это все ИМХО. (Просто все это уже было, было, было..)
Соловьев (2003-01-22 17:25:00) [6]Построение штатного расписания - в виде дерева.
Johnmen (2003-01-22 17:03:00) [7]>Соловьев © (22.01.03 15:59)
>И что вышло, что нужно каждого работника редактировать и
>вписывать вручную каждому(о какой целостности можно говорить)
>имя отдела где работатет?
Судя по этому высказыванию, ты все-таки не догоняешь...:)
Полностью согласен с kaif © (22.01.03 15:49), деревьев не видно !
Romkin (2003-01-22 16:43:00) [8]www.ibase.ru
http://www.ibase.ru/devinfo/treedb.htm
http://www.ibase.ru/devinfo/mappingObjects.pdf
MsGuns (2003-01-22 16:13:00) [9]При разработке топологии БД используй объекты. Т.е. объект "Подразделение", объект "Должность", объект "Персона" и т.д. При описании объектов укажи вложенность, например, в подразделении может быть список должностей и т.д.
После того, как у тебя будет готова лог.модель БД приступай собственно к созданию таблиц, межтабличных связей и вообще бизнес-логики БД. Львиная доля вопросов отпадет !
Соловьев (2003-01-22 15:59:00) [10]У нас была БД кадров, так вот програмеры которые ее писали, не долго думали над структурой, а тоже загнали все в плоскую таблицу и отображали дерево. БД заполнили(несколько тысяч). Потом пришла пора, когда полностью изменилась структура нашего предприятия. И что вышло, что нужно каждого работника редактировать и вписывать вручную каждому(о какой целостности можно говорить) имя отдела где работатет? Вот сейчас мне и дали задание написать такую БД, для которой не страшны наши постоянные реструктуризации.
kaif (2003-01-22 15:49:00) [11]Я не понимаю, откуда здесь вообще дерево видится? От того, что начальник один это еще не значит, что он узел дерева. Хотя, возможно, в таких логических ошибках и состоит весь секрет власти...
А что, если один специалист обслуживает сразу 2 цеха? Но в то же время он не начальник гиперцеха.
Лучше всего, ИМХО, простая плоская таблица. Ведь в картотеке кодров все эти бумажки совершенно одинаковы, имеют одинаковый набор полей и лежат на одной полке в ряд.
Отображать в виде дерева можно всегда. Хранить в виде дерева нужно в исключительных случаях.
MsGuns (2003-01-22 13:29:00) [12]"Поедатель мосса", как всегда, прав ;)))))
В смысле, прав стратегически. Нельзя смешивать состав подразделений, т.е. живых людей, числящихся в подразделении любого уровня, и ШТАТНОЕ РАСПИСАНИЕ.
ШТАТНОЕ РАСПИСАНИЕ - таблица (если произвольное кол-во кровней, то как советует 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-я Часть - состав подразделений, связана со штатным по некоторому ключу, однозначно идентифицирующему СТРОЧКУ штатного.
Вот здесь-то и указываются ссылки на идент-ры конкретных челов (инфа о которых должна храниться в КАРТОТЕКЕ КАДРОВ)
Такая организация БД свободно допускает :
- человек числится сразу на неск.должностях в одном или разных подразделениях
- человек временно переводится из одного подразделения в другое
- человек временно замещает другого на другой должности с соотв.окладом (тариф.ставкой)
- подразделение переводится из одного цеха в другой
- слияние и дробление подразделений
Соловьев (2003-01-22 13:26:00) [13]:)))
Извини...
Штат цеха №Х? Это если он последний в иерархии, а если он еще под собой имеет отделы, а те в свою очередь, еще?
Как штат организован, как дерево? тогда я вообще запутался....
Reindeer Moss Eater (2003-01-22 13:19:00) [14]Это шутка что ли?
Сосчитать сколько записей в штате цеха №Х не имеют имеют значения в поле "ID работника"
Соловьев (2003-01-22 13:14:00) [15]Т.е. добавится еще одна таблица - штат.
Ну икак ответить : сколько у нас вакансий в цехе №X ?
Reindeer Moss Eater (2003-01-22 12:51:00) [16]Каждая штатная клетка может быть занята или вакантна (плюс разные тонкости ИО, ВрИО). Если она занята - имеет ссылку на id "живого" работника из списка работающих, в дереве он живет или нет. Если вакантна - null.
Соловьев (2003-01-22 12:47:00) [17]ОК.Это как раз отдел кадров мне и дал в екселе. Это сделать можно, ну а как связать с деревом иерархий?
Reindeer Moss Eater (2003-01-22 12:42:00) [18]Ну предметную-то область решаемой задачи знать все же следует.
Штатное расписание:
Генеральный директор
Его длинноногая секретарша
Директор по общим вопросам
Директор по маркетингу
Начальник транспортного цеха №1
Начальник транспортного цеха №2
.....
Соловьев (2003-01-22 12:37:00) [19]2 Reindeer Moss Eater
>модель штатного расписания
Вот тут я конечно не доганяю, ты говорил, что оно 2-х мерное. можешь привести структуру(приблизительную).
Reindeer Moss Eater (2003-01-22 12:33:00) [20]Ты не понял.
Даже если нет никакого дерева, а есть простая таблица - список работающих ("живых" людей), то все равно нельзя сказать сколько вакансий есть всего и сколько токарей можно принять на работу не нарушив штат (даже если не нужны вложенные запросы).
Ответить на этот вопрос можно имея в базе данных модель штатного расписания. (должности, а не живых людей).