Я прошу вашей помощи, потому что я не продвинутый пользователь MySQL, и я не очень осведомлен о каждой операции, которую я могу сделать.
Проект, над которым я работаю, — это веб-приложение, предназначенное для управления компанией. «Администратор» должен иметь возможность визуализировать организационную схему всей структуры компании, редактировать, добавлять сотрудников и т. Д.
График готов, но я борюсь со структурой mysql. На самом деле я не такой эксперт, я никогда не работал с иерархиями, и я теряю слишком много времени, пытаясь понять, возможно, с неправильным подходом.
Итак, мне нужен совет эксперта, если это возможно.
Вот пример того, как структура диаграммы
Органическая диаграмма компании
- There are 3 divisions types(A - B - C) -----> *Orange*
- - There are 3 head offices, 1,2,3. -----> *Green*
- - - Every office, can have three divisions. in this case, office 1 has got division A,B,C / office 2 has got division A / office 3 as got division A,C. (customer wants it in this way...)
- - - - Every division has got 5 roles for his employees(*PINK*). In division A, we have for example Sales Manager, Manager, Team manager, sen. agent, agent.
В подразделении B они имеют разные имена, и роли 5.
Дивизион С имеет только 2 роли.
Итак, органическая диаграмма берет данные из очень простой базы данных, где основными столбцами являются ID и parentID (другие столбцы являются метками).
Должен быть SQL-запрос, который строит таблицу источника данных, строит структуру компании, начиная с других таблиц:
Я пытаюсь!
Пожалуйста, мне нужно написать функцию, которая, начиная с таблиц сотрудников, офисов и подразделений, создает таблицу источника данных (table4), чтобы заполнить органическую диаграмму. (Если запись уже существует, обновите данные!).
Не забывайте, что есть другие таблицы, которые называются «Division1_Roles», «Division2_Roles», где у каждого roleCode есть roleName.
1 - Manager
2 - Supervisor
3 - Agent ...
В таблице (3) «Сотрудники» есть еще один столбец с именем «RoleCodeID», который я забыл.
Я думаю, что это может быть логический путь:
1) Query Divisions table(1) and add them to Chart dataSource (table4)
2) Query Offices table(2), determine which divisions every office have(*how?*), then save in Chart dataSource table(4) the office record.
Note: If a office has got 2 or 3 divisions, there should be created multiple records in table(4) for every office. table4.parentID will change, in order to get the right hierarchy (select * table(4) where ?).
3) Query Employees table(3);
4) Get the EmployeeDivisionID and
IF EmployeeDivisionID == 1 -> query RoleCodes_division1 table to get roleNome
ELSE IF EmployeeDivisionID == > query RoleCodes_division2 table to get roleName
[...]
THEN save the roleName in a variable ($roleName)
5) Add the employee to the Chart dataSource table(4).
ВАЖНО: В диаграмме я могу добавить нового сотрудника (под другим сотрудником или офисом) или офис в подразделении.
Каждый «прямоугольник» в диаграмме имеет собственный идентификатор, который представляет собой поле идентификатора в таблице источников данных (4).
Таким образом, я не могу определить, нажимает ли пользователь на подразделение, офис или сотрудника.
По этой причине, возможно, мне нужно сохранить officeID, DivisionID для каждого сотрудника в таблице (4). Но в этом случае другие таблицы похожи на дубликаты.
Я не знаю людей, я чувствую себя немного сумасшедшим. Может быть, мы можем попытаться найти решение шаг за шагом, будет очень полезно для меня.
Я не тот человек, который просит код, но мне нужна логика для решения этой проблемы и функции SQL для правильного объединения таблиц.
Что-то вроде иерархических SQL-запросов.
Я использую PHP & MySql.
СПАСИБО!!
Задача ещё не решена.
Других решений пока нет …