首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库访问权限模型

数据库访问权限模型
EN

Stack Overflow用户
提问于 2017-01-19 17:14:15
回答 1查看 56关注 0票数 0

在web应用程序(基于laravel 5.3,mysql)中,有三个主要模型:UserDepartmentUserRole,以及许多其他模型(ticketstasks等) User有管理器(顶层的另一个User )。

User属于Department。部门构成了层次结构。用户具有一些角色,例如,允许他查看其部门和其部门下的所有部门中的任务。

例如,零级部门的用户可以看到系统中的所有任务。

一级部门中的用户可以看到自己部门中的任务,二级部门中的用户可以看到其部门的直属下级等。可以有多个级别(最多10个)。

假设我想为部门B中的用户显示所有可见任务(见图)。我必须查询数据库以获取部门B中的任务,然后在部门D中,然后按修改时间排序并分页显示第一页。

这里的主要问题:在部门B中有100000个任务,在部门D中有200000个任务。这样的系统不能很好地扩展。

我害怕以下问题:

要显示部门B中的用户可见的所有任务,我将使用如下内容: select * from tasks where creator_id in (long list of user ids which can be queried for currently authenticated user, if this user in department b, than here will be list of user ids in departments B and C, task has no connection to department, only to user)。我如何避免这样的查询?

我有什么选择?

EN

回答 1

Stack Overflow用户

发布于 2017-01-19 21:33:18

给出每个部门的编号,然后编写类似如下的查询:

部门1的用户示例:

代码语言:javascript
复制
select * from tasks
join department on department.id = task.department_id where department.number <= 1;

编辑:

代码语言:javascript
复制
select * from tasks
join users on users.id = tasks.user_id 
join department on department.id = users.department_id where department.number <= 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41737875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档