在数据库中表示用户角色的更好方法

ste*_*red 11 database database-design user-permissions

是在用户表中更好地表示用户权限还是在其自己的权限表中更好?

用户表
中的权限将权限放在用户表中意味着为用户表中的每个权限创建一列.优点是查询应该运行得更快,因为在将用户与用户权限相关联时不需要连接.缺点是拥有许多权限列会使用户表混乱.

权限表中的权限已连接到具有多对多关系的用户表
这样做可以干净地将权限从用户表中分离出来,但需要跨两个表进行连接才能访问用户权限.数据库访问速度可能较慢,但数据库设计似乎更清晰.

当有许多权限时,将权限保留在单独的表中可能会更好.做出这个决定还有哪些其他考虑因素,哪种设计在各种情况下更好?

Joe*_*own 23

访问控制的标准模式称为基于角色的安全性.由于两者的用户数不同类型的需要增长权限的数量,您的用户对链接的权限的管理会变得越来越困难.

例如,如果您有五个管理员和五十个用户,那么如何保持每个组的权限同步?当您的某个用户升级为管理员时,您需要进行多少次修改?答案是创建两个交叉点:用户到角色角色到权限.

在我对这个问题的回答中描述了这个解决方案(包括实体关系图).

在此输入图像描述

  • 对于更复杂的应用程序,这是一个强大的答案.正如@Nurkeiwicz所指出的,一个简单的应用程序甚至可能不需要滚动表或权限表. (2认同)