【问题标题】:Database Layout Privileges & Roles数据库布局特权和角色
【发布时间】:2015-07-02 14:32:46
【问题描述】:

我目前正在为 Web 项目 (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
...

在这里,为真实的特权创建一个数据集可能就足够了。但它仍然需要一张大桌子。


还有其他方法吗?创建该表的最清晰、最灵活的方法是什么?

你学习数据库设计的时候是从哪方面学的?

提前感谢您的任何建议或问题!

【问题讨论】:

    标签: php mysql database-design


    【解决方案1】:

    这似乎是多对多关系的经典案例:

    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 中,主键应该是两列。

    【讨论】:

    • 谢谢!我完全忘记了那个方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2015-05-10
    • 2016-03-30
    相关资源
    最近更新 更多