我正在用数据库构建一个小项目。我有一个用户表,其中有两列user_id
和name
,第二个表存储了一些文档的ID和名称:它还有两列doc_id
和doc_name
。 我想授予特定用户访问特定(多个)文档的权限。
例如:
user1
只能访问doc_2
和doc_3
。
user2
只能访问doc_1
和doc_2
,依此类推。
用户和表单不断变化(例如,在一段时间后我需要添加新文档,并将现有用户或新用户的访问权限添加到该新文档中。)
我是否需要更改数据库设计? (例如在docs中添加一列来存储可以访问它的每个用户的名字?)如果是这样,你能告诉我应该做些什么改变吗?
OR
是否可以通过创建视图来实现?在这种情况下,我还需要更改数据库设计吗?如果是这种情况,你能告诉我一个示例视图吗?在这种情况下,我需要为每个用户创建视图吗?例如,如果有100个用户,我需要创建100个视图吗?
答案 0 :(得分:1)
你需要第三张桌子(我称之为user_doc
)。你需要2个主要栏目; user_id
和doc_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(引用文档)。每次必须为用户提供文档访问权时,都需要填充此表。