Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мастера, подскажите, как организовать древовидную БД?, [D6, IB6.x]


Страницы:   1 2

Соловьев ©   (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]

Ты не понял.
Даже если нет никакого дерева, а есть простая таблица - список работающих ("живых" людей), то все равно нельзя сказать сколько вакансий есть всего и сколько токарей можно принять на работу не нарушив штат (даже если не нужны вложенные запросы).
Ответить на этот вопрос можно имея в базе данных модель штатного расписания. (должности, а не живых людей).


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо