|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
|
Создаваемая структура подчинения25.10.2017, 01:13. Показов 1731. Ответов 18
Метки нет (Все метки)
В общем у меня есть довольно специфическое задание. Я хочу сделать планировщик работ, или учёт приказов в общем названий много. Суть такова. Есть администратор (секретарь) бд, который вносит новых пользователей или создаёт структуру отделов. Мне это нужно автоматизировать. Есть способ, сделать структуру состоящую из сущностей директора, зам директора, начальника отдела, работников отдела. С каждым разом все ниже по должности и возможностям как пользователя бд. Директор может добавлять приказы только своим замам, подчиняющимся своим замам и т. д. Для того, чтобы не плодить таблицу приказы, от сущности к сущности, мне нужен один общий ID для всех рабочих. Получается как бы таблица контрагент "пользователи" в которой есть ID пользователя, пароль и логин. У всех сущностей будет уникальный ID пользователя из таблицы пользователей. У сущности зам директора, будет ID директора, для того, чтобы определить какому директору он подчиняется, и все остальные тоже будут ссылаться на своих "начальников", пока не дойдут до простых рабов. Как говорит мне мой преподаватель у такого подхода(я уже пытался такой реализовать, с разделением физических и юридических лиц) есть "недопустимый недостаток", называется необязательность связи. Насколько он не допустим? Неужели это так плохо? Этот подход позволяет мне реализовать подчиненность и одновременно не плодить другие связи и таблицы. Но вот в чем ещё одна проблема, я не планирую иметь другие атрибуты у пользователей. Получается все те сущности дети, которые имеют предка "пользователь" имеют одни и те же атрибуты. Следовательно по логике я могу отказаться от кучи таблиц директора, замы и прочее. Ведь у всех сущностей одни и те же атрибуты, можно обойтись одной таблицей "пользователи" со всеми нужными атрибутами, но тогда я теряю структуру подчиненности. Директор не сможет иметь зам директора, тот не сможет иметь начальников отдела и прочее. Я думаю над тем как реализовать это совсем иначе, и мне так как я совсем не шарю не кажется это бредом. Может это нормальное явление и ему есть название, может я идиот и не знаю причин почему нельзя такое реализовать, или то, что я хочу можно сделать совсем по другому не так и не сяк. В общем вот, что я думаю. Есть таблица пользователи, там есть ID пользователя, естественно он уникален. Есть ФИО, Должность, прочая информация. Могу ли я создать таблицу "подчиненные" в которой будет ID_Пользователя Подчиненного, ID_ПользователяПодчиняющего. Ситуация, когда пользователь подчиняется сам себе недопустима, как и ситуации, когда один и тот же пользователь подчиняется двум разным пользователям. Получается связующая таблица подчиненные, которая одновременно связана двумя связями с одной и той же таблицей пользователей. Из которой она берет ID подчиненных и подчиняющихся. Как я себе представляю, если такие возможно, то я смогу за администратора с нуля создать всю структуру подчиненности, не делая это через отдельные таблицы для каждой должности. Возможно я столько всего написал, что меня не поймут. Я постараюсь завтра прикрепить, er диаграмму или сущность связь первого и второго способа, которые я здесь описал.
0
|
|
| 25.10.2017, 01:13 | |
|
Ответы с готовыми решениями:
18
Заполнение таблиц многоуровневого подчинения
Варианты подчинения |
| 25.10.2017, 06:47 | ||
|
из бесплатного понравилась http://www.triniforce.com если хочешь сделать свое - нужно уметь программировать, и не просто SQL, а именно взять IDE с формами, написать логику работы, функции и тд и тп
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||
| 25.10.2017, 12:02 [ТС] | ||
|
0
|
||
| 25.10.2017, 12:31 | ||
|
начнем с того что твои вопросы никаким образом к БД отношения не имеют. ты будешь использовать ее только для хранения. основная твоя задача реализовать логику работы с помощью языка программирования пользователь входит в программу, обрабатывается его имя и ему выдаются права на основе прав на форме отображаются доступные ему элементы интерфейса с которыми он может взаимодействовать вот и все создание и заполнение таблиц в БД происходит прозрачно для пользователя. Создает директор задачу подчиненному - просто добавляется 1 строка в таблице и все.
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||
| 25.10.2017, 13:07 [ТС] | ||
0
|
||
| 25.10.2017, 13:24 | ||
Сообщение было отмечено deadshot2013 как решение
Решениеid | Уровень 1 Директор 2 Зам директора 3 Фин директор таблица сотрудники id | FIO | отдел | должность | id прав таблица подчиненности id строки | id начальника | id подчиненного таблица приказов id приказа | id строки | приказ | дата | выполнено ну на первый взгляд всего 4 таблицы (может будут еще какие справочники) по таблицам вопросы есть? Добавлено через 8 минут тут возможно частично дублируются таблицы "таблица прав" и "таблица подчиненности" но в таблицу прав можно внести цепочку Директорат-СреднееЗвено-МладшееЗвено а уже дальше разрулить кто кому подчиняется в директорате и у среднего звена можно в таблице подчиненности
1
|
||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||
| 25.10.2017, 13:26 [ТС] | ||
|
Я не собираюсь использовать отдельную таблицу для прав, в общем-то они не нужны, как мне кажется. Я буду проверять через запрос, есть ли у юзера подчиненные, если их нет, то у него будут отображаться только поступившие ему заявки и т.д. Получается права не нужны. Каждый юзер может делать, что хочет с заявками, которые он дал другому юзеру. Хотя права были бы интересно, если реализовывать отмену заявок вышестоящими правообладателями. Типа директор может отменить заявку зама.
0
|
||
| 25.10.2017, 13:55 | |||||
|
а как быть если нужна сквозная заявка от одного отдела к другому? а как быть если одна заявка тянет за собой несколько других?
0
|
|||||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
|||||
| 25.10.2017, 14:17 [ТС] | |||||
|
Добавлено через 10 минут
0
|
|||||
| 25.10.2017, 14:36 | |||
|
Пользователь (root) должен видеть свои задания (child) и своих подчиненных (отдельные подветки) и их задания, дату выдачи, статус их выполнения. или можно сделать вот так как на картинке, а меню вызывать правой кнопкой
1
|
|||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
|||
| 25.10.2017, 14:47 [ТС] | |||
|
0
|
|||
| 25.10.2017, 15:05 | |||||||
|
дерево оно на то и придумано - для отображения иерархии отобразить 20 строк, никто их не будет на всю форму же растягивать. может ты разделишь хранение данных, отображение и логику и начнешь объяснять поэтапно? у тебя большая каша в мыслях, структурируй их ЗЫ вы проходили нормализацию таблиц?
0
|
|||||||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||||||
| 25.10.2017, 15:17 [ТС] | ||||||
|
Вы предлагаете реализацию через ID_Строки таблицы подчиненности, а я вообще от нее абстрагируюсь, она нужна только для отображения подчиненных, а там уже я отдаю им приказы, используя их и свой ID.
0
|
||||||
| 25.10.2017, 15:37 | ||||||||
|
вот тут посмотри ВНИЗУ 2 картинки. Справа таблица. Все залито и ничего не понятно. Слева расширенное TreeView. Вот так должен выглядеть список. тут важно показать пользователю ВАЖНУЮ информацию удобным способом. но у меня и так выделена в отдельную таблицу, добавь нужные поля и все рекомендую прежде чем строить систему составить на нее ТЗ. полноценное взрослое ТЗ. потом выложить его здесь и исправлять по мере надобности.
0
|
||||||||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||
| 25.10.2017, 15:55 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||||
| 25.10.2017, 16:00 [ТС] | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 36
|
||
| 25.10.2017, 16:04 [ТС] | ||
|
0
|
||
| 25.10.2017, 16:14 | |
|
я бы предложил такое
слева TreeView ФИО -задача1 -задача2 -ПОДЧИНЕННЫЙ1 ---задача1 ---задача2 ---задача3 -ПОДЧИНЕННЫЙ2 ---задача1 ---задача2 -ПОДЧИНЕННЫЙ3 ---задача1 ---задача2 Справа у тебя TabControl c 3 вкладками при клике на человека открывается 1ая вкладка с информацией о сотруднике при клике на задачу открывается информация о задаче на 2й вкладке при клике правой кнопкой на сотруднике появляется меню (добавить задачу, удалить задачу, уволить) все действия совершаются на 3 вкладке Что это дает. При открытии человек видит только дерево со своими задачами и подчиненными Человек видит только первоочередную инфу, если нужно уточнить ему нужна мышка и не нужно искать в таблице Все действия однотипны и понятно сгруппированы
0
|
|
| 25.10.2017, 16:14 | |
|
Помогаю со студенческими работами здесь
19
Динамически создаваемая форма Напряжённость, создаваемая зарядом Плотость, создаваемая словами шаблона Источник записи - автоматически создаваемая форма Динамически создаваемая форма и ее методы Show() и ShowDialog() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|