公司结构的分层MySQL数据库的提示

时间:2016-02-02 11:20:04

标签: php mysql hierarchy hierarchical-data project-organization

我正在寻求你的帮助,因为我不是一个高级的mysql用户,而且我对我能够做的所有操作都不是很清楚。

我正在开发的项目是一个旨在管理公司的网络应用程序。 “管理员用户”应该能够可视化所有公司结构的组织结构图,编辑,添加员工等。

图表已完成,但我正在努力使用mysql结构。我不是那么专家,事实上,我从来没有使用过等级制度,而且我想要弄清楚的时间太多了,可能用错误的方法。

所以,如果可能的话,我需要一些专家提示。

以下是关于ogranic图表结构如何

的示例

Company organic chart

- 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。

C部门只有2个角色。

因此,有机图表从一个非常简单的数据库中获取数据,其中主列是ID和parentID(其他列是标签)。

应该有一个SQL查询来构建数据源表,从其他表开始构建公司结构:

Tables structure

我在挣扎!

请,我需要编写一个函数,从员工,办公室和部门的表开始,创建数据源表(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).

重要提示:在图表中,我可以添加新员工(在另一名员工或办公室下)或分部下的办公室。 图表中的每个“框”都有一个ID,它是dataSource表(4)中的ID字段。 通过这种方式,我无法确定用户是否正在点击部门,办公室或员工。

出于这个原因,我可能需要为表(4)中的每个员工保存officeID,divisionID。但通过这种方式,其他表格就像重复一样。

我不认识乡亲,我觉得有点生气。也许我们可以尝试逐步找到解决方案,对我来说将是一个很大的帮助。

我不是那种要求代码的人,但我需要的是面对这个问题的逻辑,以及正确连接表的SQL函数。 类似于分层SQL查询的东西。

我正在使用PHP& MySQL的。

谢谢!

0 个答案:

没有答案