我目前正在为网络项目(PHP/SQL)创建一个角色系统 首先,我将有大约 5 个可以分配给用户的固定角色。 然后我获得了很多不同的特权。 现在我必须创建一个表来为不同的角色分配不同的权限,我想知道最好的方法是什么:
1)具有如下列的表格:
id | privilege | sysadmin | editor | ... | guest
0 | db_view | True | False | ... | False
1 | page_edit | True | True | ... | False
...
这似乎是最好的解决方案,只要只有五个固定的不同角色,但是当我在未来版本中将角色系统开放给用户定义的角色时,它仍然可行吗?
2)包含这样的列的表格:
id | role | db_view* | page_edit | ... | usermanagement
0 | sysadmin | True | True | ... | True
1 | Editor | False | True | ... | False
...
最后这个表将有大量的列 - 这是一个好主意吗? 2)带有这样的列的表:
id | role | privilege | Value
0 | sysadmin | page_edit | True
1 | Editor | page_edit | True
2 | sysadmin | dbview | True
3 | Editor | dbview | False
...
在这里,为真实的特权创建一个数据集可能就足够了。但它仍然需要一张大 table 。
<小时/>还有别的办法吗?创建该表的最清晰、最灵活的方式是什么?
学习数据库设计时,你是通过什么方式学习的?
预先感谢您的任何建议或问题!
最佳答案
这似乎是多对多关系的经典案例:
TblPrivileges
-------------
Privilege_Id (primary key)
Privilege_name
Other privileges related data
TblRoles
--------
Role_Id (primary key)
Role_Name
Other role related data
TblPrivilegesToRoles
--------------------
PTR_Privilege_Id (reference privilege id in tblPrivileges)
PTR_Role_Id (reference role id in tblRoles)
在表TblPrivilegesToRoles
中,主键应该是两列。
关于php - 数据库布局权限和角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155827/