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