小编典典

最佳用户角色权限数据库设计实践?

sql

我想为一个Web应用程序设计数据库,在该数据库中,用户可以根据授予角色的权限来访问特定选项卡。

到目前为止,我已经创建了两个表 USER_TABLEUSER_ROLES

USER_TABLE 具有以下字段:

  • id(主键)
  • 用户名
  • 密码
  • 创建日期
  • role_id_fk(外键)

USER_ROLES 具有以下字段:

  • id(主键)

  • 角色名称(例如ADMIN,TAB1_USER,TAB2_USER)

  • 创建日期

在这里,具有role_name“ ADMIN ”的用户可以看到所有选项卡,其他用户只能访问特定的选项卡。

我的问题是我需要在 USER_ROLES* 表中创建一个具有外键的表 USER_PERMISSIONS, 其字段如下: *

  • id(主键)
  • Permission_type(ALL,TAB1,TAB2 ....)

还是应该在代码级别进行管理?两种方法的利弊是什么?


阅读 241

收藏
2021-04-15

共1个答案

小编典典

正如krokodilko在其评论中所写,这取决于您所需的灵活性水平。
我已经为我的一个客户实现了基于角色的权限,如下所示:

  1. 用户(用户ID(PK),用户名(唯一),密码,名字,姓氏,电话等))
  2. 角色(角色ID(PK),角色名称(唯一),角色描述)
  3. 权限(权限ID(PK),权限名称(唯一))-选项卡/屏幕/操作位于此处
  4. 用户到角色(用户ID,角色ID)-PK是两个列的组合
  5. 权限角色(角色ID,权限ID)-PK是两列的组合

但是我的要求是要尽可能地灵活,并且该系统仍在不断发展(6年且不断增长)。

我猜很多应用程序都可以使用户扮演一对多的关系,而不是像我这种情况下的多对多关系,但是我不会在任何应用程序中对权限或角色进行硬编码。

2021-04-15