在MySQL数据库前端查看条目的权限

时间:2012-06-29 12:35:50

标签: php mysql permissions

我有一个PHP / HTML / Javascript驱动的前端用于MySQL数据库,该数据库存档我们办公室的不同文件/文件(物理文书工作的电子索引)。

用户希望能够对每个条目拥有权限;例如,HR投诉需要编入索引,但不应该被数据库的所有用户查看。

用户层次结构是两层的。每个用户都是一个OR MORE分发列表的成员(类似于电子邮件列表)。索引文件时,用户会为其他人选择权限:例如,他/她可以为样本人力资源投诉选择以下内容:

List           |      Permission
`````````````````````````````````
HR Dept        |      Read/Write

Board Members  |      Read

John Smith     |      Read/Write
Mary Smith     |      Read

并且应该对任何人都不可见。现在我已经尝试了几个方法来实现它,最近的一个关系表涉及以下内容:

User 1->Many DistributionList // Assoc the user to some lists
Permission 1->Many DistributionList  //Indicates level of permission that the list has
Permission 1->Many User //Indicates level of permission for each user

但是,权限表包含每个权限的每个文件的行,给定几千个文件和~50-60个列表/用户,意味着几十万个条目。由于此索引不会经常刷新(可能是超过50年的刷新文件),因此该数字可能会飙升。更不用说查询有点复杂了,并且花费了相当多的时间(SQL请求大约1秒),只有几百个文件。

有没有更有效的方法来创建这种基于用户的东西?是否有可能在SQL本身中使用这些权限并让连接处理这些事情?

tl; dr:使用PHP,Javascript,HTML和PHPMyAdmin对MySQL中的条目设置读/写/不可见权限的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果没有多组(最多64个),您可以为每个文件使用一组权限(1个额外列)。 http://dev.mysql.com/doc/refman/5.0/en/set.html

因此,每个文件可以有一列表示它所属的组,可以随着系统的增长而扩展。

如果你想要超过64,你也可以添加第二列,但这需要更复杂的查询(保持部门分开对这里有帮助,HRgroups,Boardgroups等。)

您还可以向特定用户添加例外或创建另一个组。但正如你所说的那样,每个文件/用户的一个关联条目是你最好的。