1

我有一个 Access 应用程序,其中有一个员工表。员工是组织中几个不同级别的一部分。组织有总经理1人,部门负责人5人,每个部门负责人下设监事若干名,监事下设职工。

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

我想用某种级别系统在表格中表示组织。我看到的问题是同一级别有很多人(例如主管),但他们不应该访问另一个部门主管的记录。我应该如何解决这个问题?

4

1 回答 1

2

将这种分层数据保存在数据库中的一种常见方法仅使用一个表,其字段如下所示:

  1. 用户 ID(主键)
  2. 用户名
  3. supervisorId(自引用“外键”,指同一张表中的另一个userId)
  4. positionCode(可以很简单,例如 1=lakey,2=supervisor;或者指向另一个位置表的外键等)
  5. ...无论您需要为每个员工存储什么...

然后,您的应用程序使用 SQL 查询来确定权限。要找出主管“X”(例如,其 userId 为“3”)可以查看的员工,请查询所有 supervisorId=3 的员工。

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

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

如果您希望某些人具有不同的权限,我将 positionCode 放在此示例中...例如,您可能为有权查看所有员工列表的 HR 员工设置了代码“99”。


也许我会让其他人尝试更好地解释它......

于 2009-11-07T02:51:01.260 回答