【发布时间】:2014-08-02 17:46:39
【问题描述】:
我目前正在使用 Symphony 2 库在 PHP 中构建应用程序,但我想这个问题适用于任何类型的 Web 应用程序。这是我想要实现的基本基础架构:
- 每个用户都属于一个或多个组
- 每个组都实现一个或多个角色
- 组实施的角色适用于该组中的所有用户
- 用户可以实现不在其组中的其他角色
一个例子
- “作者”组实现“作者”角色和“评论版主”角色
- “管理员”组实现了“管理员”角色
- 用户“Henry”是作者组和管理员组的成员
- 用户“Henry”实现了“所有者”角色
对该用户有效的角色是“作者”、“评论版主”、“管理员”和“所有者”。
编辑
这种行为是否是一种好习惯:用户可以从自己的组继承角色,也可以拥有个人角色。 如果是这样,如何使它成为现实?
我想到了 5 张桌子:
用户:
- 身份证
- 姓名
角色:
- 身份证
- 姓名
用户角色:
- id_user (FK)
- id_role (FK)
组:
- 身份证
- 姓名
组角色:
- id_group (FK)
- id_role (FK)
用户组:
- id_user (FK)
- id_group (FK)
这可能有效,主要问题是防止添加用户已从其所属的组中拥有的个人角色。
这似乎有点复杂。有没有更好的方法呢?
谢谢
【问题讨论】:
-
那么...问题是什么?看来您已经计划好了,那么您需要我们帮助的哪一部分?
-
编辑了我自己的帖子 ;)
-
您基本上在那里描述了一个相当正常的系统,并且已经制定了您将拥有的正常表。用户在他们的组中也有角色是否有问题?这真的有区别吗?他们有这个角色,不管他们从哪里得到这个角色,或者他们是否有两次角色——如果他们有,他们就有了。
-
好的,以这种方式实现它不是一个令人窒息的事情吗?人家是这样的吗?
-
最常见的论坛系统之一 (phpBB) 正是这样做的,而且非常高兴。要记住的主要事情是确保您正确地制作查询和表(索引)以保持最佳速度。