我有一个Access应用程序,其中有一个employee表。员工是组织中不同级别的一部分。 orgranization有1个GM,5个部门负责人,每个部门负责人都是几个主管,而在这些主管下是工人。
根据员工的职位,他们只能访问其下的人员的记录。
我想用一种水平系统来表示组织。我看到的问题是,同一级别上有许多人(例如主管)但他们不应该访问另一个部门的主管的记录。我该如何处理这个问题?
答案 0 :(得分:2)
在数据库中保留此类分层数据的一种常用方法是仅使用一个表,其字段如下:
然后您的应用使用SQL查询来计算权限。要确定允许主管'X'(例如,其userId为'3')的员工,请查询supervisorId = 3的所有员工。
如果你想让更高级别的老板能够看到他们下面的每个人,最简单的方法就是进行递归搜索。即查询报告给这个大老板的每个人,并为每个人查询向他们报告的人,一直到树下。
这有意义吗?你让数据库完成了对所有用户进行排序的工作,因为计算机很擅长这种事情。
我将positionCode放在此示例中,以防您希望某些人拥有不同的权限...例如,您可能拥有代表'99'的HR员工,他们有权查看所有员工的列表。< / p>
也许我会让其他人试着更好地解释一下......