Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

Мастера, подскажите, как организовать древовидную БД?,   Найти похожие ветки 

 
Соловьев   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.012 c
4-29145
Николай Быков
2002-12-25 12:50
2003.02.10
Мне сказали, что это про WinAPI вопрос.......................


1-28741
Alpine
2003-01-31 23:33
2003.02.10
Как и с помощью чего лучше строить графики (векторы,треугольники)


6-28963
koly01
2002-12-17 11:29
2003.02.10
ПОМОГИТЕ!!! Server accept Client


14-29022
Tux
2003-01-23 00:01
2003.02.10
Как перестать беспокоиться и начать работать? :)


1-28785
For me
2003-02-01 18:33
2003.02.10
Определение пункта меню по его названию??? (API)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский