powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персоны, должности и предприятия
25 сообщений из 28, страница 1 из 2
Персоны, должности и предприятия
    #35272339
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, вопрос поднимался, но все же. Выделены 3 таблицы (они же сущности): "Персоны", "Должности", "Предприятия". Названия должностей могут совпадать, например, инженеры существуют на очень многих предприятиях. Первоначально был вариант создать таблицу "Должности-Предприятия", где есть поле с номером связки должности и предприятия, а также "Персоны-Должности-Предприятия", т.к. вроде бы персона занимает должность на определенном предприятии. Но возможен и другой вариант, когда существует по одной связующей таблице между каждой парой. Т.е. "Персоны-Должности", "Должности-Предприятия", "Персоны-Предприятия". Этот вариант (и мне он больше нравится) удобнее тем, когда известно, что лицо работает на определенном предприятии, но неизвестно, на какой должности.
Помогите определиться!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35272680
Страдалецъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиоему вы усложняете.
1. Сделать абстрактный словарь должностей.
Если не путаю, то есть на каждом предприятии штатное расписание, которое по сути и является вашей таблицей возможных должностей.
2. Сделать таблицу Штаты которая и будет иметь одно из полей код из словаря должностей.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35272780
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нравится - не нравится. Ты описал две принципиально разные модели данных, а уж какая из них отвечает реальным требованиям только тебе решать.

Если речь идёт о БД отдела кадров предприятия, то есть штатное расписание (то что ты назвал "должности-предприятия"), есть трудовые книжки или приказы о назначении чела на определённую должность (то что ты назвал "Персоны-Должности"), а такого, чтобы человек работал неизвестно на какой должности не бывает. Хотя, возможно, бывает что человека нанимают по контракту на выполнение определённой работы. А ещё бывает люди путают звания, специальности и должности.

Я вот по диплому имею специальность учитель, а в должности инженера работаю нянькой.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35272974
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часто бывает достаточно разделить должности на "свои" - своей собственной организации и "внешние" - для всех других организаций.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35275303
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Страдалецъ
> По-моему, вы усложняете.
Наоборот, проще уж некуда – 6 таблиц!

> Сделать абстрактный словарь должностей.
А разве это не моя таблица "Должности"?

Штатное расписание присутствует только в виде нескольких полей в таблице "Персоны-Должности": дата назначения на должность, ссылка на документ о назначении, дата оставления должности, ссылка на документ об оставлении. Вот и все. Никаких окладов и т.д. – ничего этого не нужно.

2 mcureenab
> такого, чтобы человек работал неизвестно на какой должности не бывает.
Я имел в виду, что мне это неизвестно, но и не требуется. Достаточно знать, что человек работает на определенном предприятии, а в какой должности – пофиг. А иногда важно знать и должность, поэтому и нравится вариант 2.

> Ты описал две принципиально разные модели данных, а уж какая из них отвечает реальным требованиям только тебе решать.
Так это я понимаю, было бы непринципиально – стал бы я выносить это на форум? Но, похоже, под мою задачу больше подходит вариант 2? Мне не нужно делать "Отдел кадров". Все очень упрощено.

Но тут вот еще какая закавыка – как сделать иерархию для должностей? Ведь на одном предприятии инженер может подчиняться одной должности, а на другой – другой. Поэтому сделать иерархичной таблицу "Должности", наверное, не получится. А вот таблицу "Должности-Предприятия", пожалуй, можно. Но тогда, наверное, и персон правильнее привязывать к этой таблице, а не к "Должностям"? Получается, что тут лучше вариант 1?

> А ещё бывает люди путают звания, специальности и должности.
Я вроде не путаю :). Сам тоже по специальности учитель, и работаю тоже инженером, но, правда, не нянькой :). Но как ты в няньки попал? или это условно – "нянька"?
Кстати, еще бывают степени.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35275510
Фотография GUESТ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страдалецъ1. Сделать абстрактный словарь должностей.

RE: 1) если не привязываться к единым Классификаторам названий должностей и профессий типа:
Код: plaintext
общероссийский классификатор профессий рабочих, должностей служащих 
то смысла в этом будет не больше чем во Всемирном словаре фамилий...

RE: 2) справочник должностей привязан к штатному расписанию предприятия (+1)
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35280963
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35298454
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще запара – Должность 1 может подчиняться Должности 2 и Должности 3, причем Должности 2 и 3 не то что в прямом подчинении друг у друга не состоят, но и относятся к разным структурам (на своем уровне иерархии). Над этими Должностями (2 и 3) есть общий начальник, но они у него не в прямом подчинении, а тоже через несколько уровней. Вот как с такими извратами быть – дополнительную таблицу подчинений создавать (одной иерархической уже, наверное, не обойдется)?
И еще, попадались ли кому на SQL.RU или еще где интерфейсные решения для отображения предприятий и должностей? Охота поглядеть на что-н. красивое для ориентира.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35298699
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вам важно подчинение людей друг другу, то отображать надо деревом. Дерева дюдей у меня нет, есть дерево организаций. Штаб-квартира - дирекция - филиала или Мать-дочка и т.п. Для каждой организации на форме есть много вкладок - реквизиты (всякие ИНН), адресные данные, должности и физ. лица ...

Для физ. лиц тоже есть форма, можно в обратную строну на вкладке "работает на должности в организациях" посмотреть где лицо работает или работало ранее.

И физ. лица и должности и организации можно посмотреть в виде плоских таблиц а не структуры, т.е. всех подряд. В таком виде работает мгновенный поиск и отбор.

При переходе между формами структура-таблица-карточка и организации-физ. лица-должности новая фома позиционируется, разумеется, на текущем контексте того места, из которго она была открыта. Т.е. открыли таблицу организаций - нашли организацию - окрыли её карточку - на вкладке физ. лиц нашли лицо - открыли карточку физ. лица, причем показали вкладку "работает" на той строке, где будет именно исходная организация... ну и т.д.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35303687
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35310499
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Программист-Любитель
А иерархии должностей у вас нет (м.б. это вам не нужно)?
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35310573
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, иерархии мне оказалось не нужно. Но есть условный вес должностей от 1 - Самый Главный Руководитель до 1000 - Самый Трудолюбивый Исполнитель. Они нужны для выборки топ-менеджеров, руководства филиалаов и т.п.

Зато нужен оказался справочник падежей. Для автоматического формирования всяческих документов в ворде ФИО людей склоняются автоматически, функцией, а организации - берутся из таблицы склонений.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35311309
Фотография GUESТ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительНо есть условный вес должностей

разбил на 4 WorkGroups - достаточно
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35311521
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условный вес нужен для сортировки.
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35315833
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35316748
Фотография Владимир П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДИ еще, попадались ли кому на SQL.RU или еще где интерфейсные решения для отображения предприятий и должностей? Охота поглядеть на что-н. красивое для ориентира.
Если отобразить схему: кто кому подчиняется, какое подразделение в какое входит и т.п. -- то такая схема является графом. Для отображения графов подойдет софтина Graphviz. См. http://graphviz.org/ .
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35319799
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылку! Буду разбираться...
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35798183
smitatyana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-ЛюбительЕсли вам важно подчинение людей друг другу, то отображать надо деревом. Дерева дюдей у меня нет, есть дерево организаций. Штаб-квартира - дирекция - филиала или Мать-дочка и т.п. Для каждой организации на форме есть много вкладок - реквизиты (всякие ИНН), адресные данные, должности и физ. лица ...

Для физ. лиц тоже есть форма, можно в обратную строну на вкладке "работает на должности в организациях" посмотреть где лицо работает или работало ранее.

И физ. лица и должности и организации можно посмотреть в виде плоских таблиц а не структуры, т.е. всех подряд. В таком виде работает мгновенный поиск и отбор.

При переходе между формами структура-таблица-карточка и организации-физ. лица-должности новая фома позиционируется, разумеется, на текущем контексте того места, из которго она была открыта. Т.е. открыли таблицу организаций - нашли организацию - окрыли её карточку - на вкладке физ. лиц нашли лицо - открыли карточку физ. лица, причем показали вкладку "работает" на той строке, где будет именно исходная организация... ну и т.д.

а мне как раз нужно дерево организаций и должнослей в виде конечных листов дерева! У меня 4 справочника Департаменты, Отделы, Секторы и Должности. Структура справочниов:
id: int
name: str
И еще одна таблица - Штатное расписание:
id: int
depart: int - подстановка из справочника департаментов
otd: int - подстановка из справочника отделов
sek: int - подстановка из справочника секторов
dolj: int - подстановка из справочника должностей
и еще поля описательного характера данной штатной единицы (минимум, максимум, вредные условия, категория, количество ставок, ШПЗ ну и мелочи ...)
В таблице Личная карточка помимо полей, описывающих все характеристики человека(табельный, ФИО, датарож, и др.) есть поле СТАВКАШТ - ставка из штатного расписания. Как раз ID из таблицы штатное расписание. Так я узнаю какой человек на какой должности и в каком департаменте работает. Служебные данные.
Вот незадача-то: всю структуру организации мне нужно изобразить в виде дерева treeview!
Так, чтобы при выделении листа - должности на форме справа, например, были харакеристики данной штатной единицы (минимум, максимум, вредные условия, категория, количество ставок, ШПЗ ну и мелочи ...). Ну и конечно подтягивался человек на этой ставкеШТ.
Могу я с моей структурой БД организовать такое дерево с возможностью редактирования всех узлов дерева? Удалить/добавить/изменить ветку дерева. Сделать удобным формирование и изменение штатного расписания. Подскажите, как организовать подчиненость отделов департментам и т. п.?
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35803391
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smitatyanaа мне как раз нужно дерево организаций и должнослей в виде конечных листов дерева! У меня 4 справочника Департаменты, Отделы, Секторы и Должности. Структура справочниов:
id: int
name: str
И еще одна таблица - Штатное расписание:
id: int
depart: int - подстановка из справочника департаментов
otd: int - подстановка из справочника отделов
sek: int - подстановка из справочника секторов
dolj: int - подстановка из справочника должностей
Фигня ...
Что будешь делать когда иерархия подразделений глубже твоих 3-х уровней?
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35803630
А еще очень интересно, что будет когда кто-нибудь укажет, что один из ваших отделов относится сразу к двум департаментам :) Или еще что-нибудь в таком духе :)
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35804076
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smitatyanaМогу я с моей структурой БД организовать такое дерево с возможностью редактирования всех узлов дерева? Удалить/добавить/изменить ветку дерева. Сделать удобным формирование и изменение штатного расписания. Подскажите, как организовать подчиненость отделов департментам и т. п.?
Да.

Это будет не сложнее или немного сложенее чем текущая реализация у меня (без деления организации на отделы и пр., но зато с делением организации на региональные центры, филиалы и т.п.). Все редактируется через деревья/карточки/таблицы.

Не вижу препятствий!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35804790
smitatyana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДБ дезигнерА еще очень интересно, что будет когда кто-нибудь укажет, что один из ваших отделов относится сразу к двум департаментам :) Или еще что-нибудь в таком духе :)

Такого быть не может!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35804802
smitatyana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-ЛюбительsmitatyanaМогу я с моей структурой БД организовать такое дерево с возможностью редактирования всех узлов дерева? Удалить/добавить/изменить ветку дерева. Сделать удобным формирование и изменение штатного расписания. Подскажите, как организовать подчиненость отделов департментам и т. п.?
Да.

Это будет не сложнее или немного сложенее чем текущая реализация у меня (без деления организации на отделы и пр., но зато с делением организации на региональные центры, филиалы и т.п.). Все редактируется через деревья/карточки/таблицы.

Не вижу препятствий!

Программист-Любитель!
Спасибо, просмотрела весь форум на эту тему и нашла несколько ваших примеров. Я тоже считаю, что ваша реализация подобной задачи очень похожа на ту, что мне нужно. Очень надеюсь на вашу помощь!

Я так понимаю, что при открытии формы, из моей таблицы Штатное раписание:
Код: plaintext
1.
2.
3.
4.
5.
id: int
depart: int - подстановка из справочника департаментов
otd: int - подстановка из справочника отделов
sek: int - подстановка из справочника секторов
dolj: int - подстановка из справочника должностей
и еще поля описательного характера данной штатной единицы (минимум, максимум, вредные условия, категория, количество ставок, ШПЗ ну и мелочи ...)

должно сформироваться дерево. Причем, бывает так, что в департаменте нет ни отделов, ни секторов, есть только должности. Управленческий персонал, например: директора, замы, исп. Обяз-ти. Помогите пожалуйста реализовать это. Когда я пытаюсь, постоянно выходит ошибка, что мол, не уникальный ключ дерева .... Подскажите, пожалуйста! :)
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35808091
smitatyana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Form_Open(Cancel As Integer)
Dim rs_dep, rs_otd As DAO.Recordset
Dim strInput As String
Dim TypeKey, key_dep, key_otd, Parent_Key As String

Set rs_dep = CurrentDb.OpenRecordset("Спр_Департаментов")
Do While Not rs_dep.EOF
 key_dep = rs_dep.Fields("ID").Value
 TypeKey = "a" & rs_dep.Fields("ID").Value
 strInput = rs_dep.Fields("Name").Value
 cTV1.Nodes.Add , , TypeKey, strInput
 cTV1.Nodes.Item(TypeKey).Expanded = True

 Set rs_otd = CurrentDb.OpenRecordset("SELECT [Штатное расписание].Департ, [Штатное расписание].ОТДЕЛ, [Спр_Отделов].Name FROM [Штатное расписание] LEFT JOIN [Спр_Отделов] ON [Штатное расписание].ОТДЕЛ = [Спр_Отделов].ID WHERE ((([Штатное расписание].Департ)=key_dep) AND (([Штатное расписание].ОТДЕЛ) Is Not Null));") ' здесь начинает ругаться Слишком мало параметров. Требуется 1.
     Do While Not rs_otd.EOF
     TypeKey = "b" & rs_otd.Fields("ОТДЕЛ").Value
     strInput = rs_otd.Fields("Name").Value
     Parent_Key = "a" & rs_dep.Fields("ID").Value
     cTV1.Nodes.Add Parent_Key, 4, TypeKey, strInput ' и здесь начинает ругаться key is not unique in collection
     rs_otd.MoveNext ' набор данных из запроса, выбирающего отделы в штатном расписании по данному департаменту.
    Loop
    
 rs_dep.MoveNext ' набор данных из справочника департаментов 
 Loop
End Sub

так я пытаюсь ветками первого уровня обозначить департаменты, а ветками второго уровня - отделы. Ну и думаю повторить это вплоть до должностей. Только не совсем сама понимаю, насколько это правильно. Подскажите, пожалуйста, Программист-Любитель!
...
Рейтинг: 0 / 0
Персоны, должности и предприятия
    #35809605
smitatyana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub Form_Open(Cancel As Integer)
Dim db As DAO.Database
Dim rst_dep As DAO.Recordset
Dim rst_otd As DAO.Recordset
Dim nodX As Node

Set rs_dep = CurrentDb.OpenRecordset("SELECT * FROM [Спр_департаментов]", dbOpenSnapshot)
 
Do Until rs_dep.EOF
   Set nodX = cTV1.Nodes.Add(, , "a" & rs_dep("ID"))
   
   nodX.Text = rs_dep("Name")
   nodX.Tag = rs_dep("ID")
   
   Set rst_otd = CurrentDb.OpenRecordset("SELECT [Штатное расписание].ДЕПАРТ, [Штатное расписание].ОТДЕЛ, [Спр_Отделов].Name" & _
          " FROM [Штатное расписание] LEFT JOIN [Спр_Отделов] ON [Штатное расписание].ДЕПАРТ = [Спр_Отделов].ID" & _
          " WHERE (([Штатное расписание].ДЕПАРТ = " & rs_dep("ID") & ")" & _
          " AND (([Штатное расписание].ОТДЕЛ) Is Not Null))", dbOpenSnapshot)

 
   Do Until rst_otd.EOF
      Set nodX = cTV1.Nodes.Add("a" & rs_dep("ID"), tvwChild, "b" & rst_otd("ОТДЕЛ")) ' здесь ругается key is not unique in collection
        
  '    nodX.Text = rst_otd("Name")
   '   nodX.Tag = rst_otd("ОТДЕЛ")
      rst_otd.MoveNext
   Loop
  rs_dep.MoveNext
Loop
    
cTV1.Sorted = True
End sub

Исправила вот так, учитывая примеры на форуме. Это построение только 2х веток: департаменты и отделы. Сначала пытаюсь отладить это. А потом уже таким же образом попытаюсь постороить другие 2 ветки : секторы и должности. Но при компиляции вылетает ошибка, уже описанная. Подскажите ее решение! ПОЖАЛУЙСТА!
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Персоны, должности и предприятия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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