授予特定用户对特定(多个)文档的访问权限

时间:2011-06-23 08:35:22

标签: database database-design views

我正在用数据库构建一个小项目。我有一个用户表,其中有两列user_idname,第二个表存储了一些文档的ID和名称:它还有两列doc_iddoc_name我想授予特定用户访问特定(多个)文档的权限。

例如:

user1只能访问doc_2doc_3

user2只能访问doc_1doc_2,依此类推。

用户和表单不断变化(例如,在一段时间后我需要添加新文档,并将现有用户或新用户的访问权限添加到该新文档中。)

我是否需要更改数据库设计? (例如在docs中添加一列来存储可以访问它的每个用户的名字?)如果是这样,你能告诉我应该做些什么改变吗?

OR

是否可以通过创建视图来实现?在这种情况下,我还需要更改数据库设计吗?如果是这种情况,你能告诉我一个示例视图吗?在这种情况下,我需要为每个用户创建视图吗?例如,如果有100个用户,我需要创建100个视图吗?

2 个答案:

答案 0 :(得分:1)

你需要第三张桌子(我称之为user_doc)。你需要2个主要栏目; user_iddoc_id

然后为每个文档和具有访问权限的用户组合插入一行。

如果他们的user_id没有出现在user_doc表中,并且有{rel。doc_id,那么他们就没有权限。

获取特定用户有权访问的所有文档列表的示例查询:

SELECT doc_id FROM user_doc WHERE user_id = @UserId

或查找有权访问特定文档的所有用户:

SELECT user_id FROM user_doc WHERE doc_id = @DocId

答案 1 :(得分:0)

您需要有一个PERMISSIONS表,其中包含用户与用户之间的关系。文档。列可以是PERMISSIONS_ID,USER_ID(引用用户),DOC_ID(引用文档)。每次必须为用户提供文档访问权时,都需要填充此表。