在表格中表示的组织结构图

时间:2009-11-06 17:13:48

标签: ms-access hierarchy organization

我有一个Access应用程序,其中有一个employee表。员工是组织中不同级别的一部分。 orgranization有1个GM,5个部门负责人,每个部门负责人都是几个主管,而在这些主管下是工人。

根据员工的职位,他们只能访问其下的人员的记录。

我想用一种水平系统来表示组织。我看到的问题是,同一级别上有许多人(例如主管)但他们不应该访问另一个部门的主管的记录。我该如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

在数据库中保留此类分层数据的一种常用方法是仅使用一个表,其字段如下:

  1. userId(主键)
  2. 的userName
  3. supervisorId(自引用“外键”,指同一表中的另一个userId)
  4. positionCode(可能很简单,如1 = lakey,2 = supervisor;或指向另一个位置表的外键等)
  5. ......无论你需要为每位员工存储什么......
  6. 然后您的应用使用SQL查询来计算权限。要确定允许主管'X'(例如,其userId为'3')的员工,请查询supervisorId = 3的所有员工。

    如果你想让更高级别的老板能够看到他们下面的每个人,最简单的方法就是进行递归搜索。即查询报告给这个大老板的每个人,并为每个人查询向他们报告的人,一直到树下。

    这有意义吗?你让数据库完成了对所有用户进行排序的工作,因为计算机很擅长这种事情。

    我将positionCode放在此示例中,以防您希望某些人拥有不同的权限...例如,您可能拥有代表'99'的HR员工,他们有权查看所有员工的列表。< / p>


    也许我会让其他人试着更好地解释一下......