0

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

用户希望能够对这些条目中的每一个拥有权限;例如,人力资源投诉需要被索引,但不应被数据库的所有用户查看。

用户层次结构是两层的。每个用户都是一个或多个分发列表(类似于电子邮件列表)的成员。当一个文件被索引时,用户选择其他人的权限:例如,他/她可以为示例 HR 投诉选择以下内容:

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 中的条目设置读/写/不可见权限的最佳方法是什么?

4

1 回答 1

0

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

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

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

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

于 2012-06-29T12:51:10.683 回答