php - 数据库布局权限和角色

标签 php mysql database-design

我目前正在为网络项目(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/

相关文章:

php - 我的 sql 语句或我的 php 代码有什么问题?

php - 使用 crontab 执行 PHP 文件

php - 将输入更改为文本区域时不显示数据

mysql - 我应该如何处理成分数据库中的计量单位?

java - 在选择用于实现仪表板的解决方案方面需要一些帮助

sockets - 指定连接到 PHP CLI 套接字服务器的客户端的远程 IP 地址

mysql - SQL Server 单独的 : FirstName, MiddleName 和 LastName

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - 大数据量数据库设计

database-design - 数据模型设计模式,在其他用户授权之前保留数据更改