0

我有一个简单的文档管理系统,目前它基于公司 ID 提供对文档的“公共”访问 - 我想逐个用户实施访问控制。我对如何在 PHP 中检查访问权限等感到满意,但不确定如何以有效的方式最好地维护表中已批准的用户。

一个文档可能具有仅限于 x 个用户的公共访问或私有访问,并且由于我不知道 x 的值,因此在 MySql 中实现多个名为 user1、user2 等的字段是没有意义的。

有一个表已经称为用户和一个称为文档。一个名为 users to docs 的新表是否有意义,或者是否有更好的方法来实现这一点,以便我可以检查用户是否有权访问该文档(如果他们尝试)?

4

1 回答 1

1

最好的方法是有链接表,例如

table #1: users (id, ...)
table #2: documents (id, ....)

table #3: user_documents (user_id, document_id)

其中 user_id 和 document_id 是指向用户表和文档表的外键

如果 user_documents 中存在记录,则用户有权访问该文档。如果您需要实现各种级别的访问(读/写/等),您可以将其存储在 user_documents 表中以及额外的字段中。

相比之下,如果你有类似的东西

table #1: users (id, doc1, doc2, doc3, etc...)

其中 doc# 字段指向该用户有权访问的文档,您必须在表中有 N 个字段来处理 N 个文档的权限。如果只有少数用户拥有 N 文档的权限,而大多数用户的权限要少得多,那么您将在未使用的字段上浪费大量空间。而且总会有一些小丑需要 N+1 个文档,这意味着您每次都在修改您的表格。

使用链接表,您永远只有 2 个字段,并且只有与用户/文档访问对一样多的记录。

于 2012-09-07T21:27:36.560 回答