Mysql 用于用户管理的数据库表

Mysql 用于用户管理的数据库表,mysql,database,Mysql,Database,我想从您那里得到一些关于用户角色管理最佳实践的建议 我想创建一个应用程序,其中的用户注册,并将有不同的角色。现在显而易见的是,要创建users表并在其中保存用户数据,如下所示: SELECT * FROM UserRoles u INNER JOIN RolePermissions p ON u.rid=p.rid WHERE u.ID=<USER> AND p.pid=<PERMISSION> 用户 身份证 用户UUID 用户名

我想从您那里得到一些关于用户角色管理最佳实践的建议

我想创建一个应用程序,其中的用户注册,并将有不同的角色。现在显而易见的是,要创建users表并在其中保存用户数据,如下所示:

SELECT * 
    FROM UserRoles u INNER JOIN RolePermissions p 
        ON u.rid=p.rid 
    WHERE u.ID=<USER> AND p.pid=<PERMISSION>
用户

  • 身份证
  • 用户UUID
  • 用户名
  • 角色
但我考虑的是针对不同群体的单独表格。就像:

管理员

  • 身份证
  • userUUID(->外键用户表)
  • 访问权限1
  • 访问权限2
订户

  • 身份证
  • userUUID(->外键用户表)
这有意义吗?那么,所有用户,无论其角色如何,都应该在一个数据库中吗?那么,不同角色的具体信息是什么呢


谢谢

如果你的角色很少改变,那可能会奏效。但是,您应该始终计划更改,并且一个更灵活的选项允许您添加角色,而无需更改数据库架构,如下所示:

SELECT * 
    FROM UserRoles u INNER JOIN RolePermissions p 
        ON u.rid=p.rid 
    WHERE u.ID=<USER> AND p.pid=<PERMISSION>
用户:

  • 液体
  • 用户信息
角色:

  • 摆脱
  • 名字
用户角色:

  • uid(FK到用户表)
  • rid(FK到角色表)
在代码中,您可以检查UserRoles表,以确定用户是否具有给定的角色,因此应该允许用户执行任何操作

此外,如果您希望混合和匹配多个角色的操作权限(即管理员和版主都有删除帖子或其他内容的权限)。您可以添加另一个具有权限表的级别,以及链接到角色表的联接表(RolePermissions)。您的访问检查会变得稍微复杂一些,需要您加入UserRoles表和RolePermissions加入表,以确定用户是否具有执行某项操作的给定权限

大概是这样的:

SELECT * 
    FROM UserRoles u INNER JOIN RolePermissions p 
        ON u.rid=p.rid 
    WHERE u.ID=<USER> AND p.pid=<PERMISSION>
选择*
从用户角色u内部加入角色权限p
关于u.rid=p.rid
其中u.ID=和p.pid=