Подсказки для иерархической базы данных MySQL структуры компании

Я прошу вашей помощи, потому что я не продвинутый пользователь 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.

СПАСИБО!!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]