首页 > 解决方案 > 对于有权限的用户来说,最好的 mysql 数据库模型是什么

问题描述

我有一个用户表,每个用户都应该有一个权限列表。我在另一个答案中有红色,我应该使用带有用户 ID 的第二个名为权限的表来将权限分配给特定用户。

userID  | permission   
--------|----------
     1  | read
     1  | write
     1  | delete

使用此解决方案,我只需选择具有用户 ID 的所有权限并获取特定用户的所有权限。

我认为对此效率低下的事实是,所有权限都将针对此表中的不同用户重复。

userID  | permission   
--------|----------
     1  | read
     1  | write
     1  | delete
     2  | write <- repeating with different userid

在我的情况下,我将拥有至少 150 个用户和可能超过 100 个权限,这会使表格变得很大吗?

我想这是一个非常常见的情况。但我找不到更好的方法。

标签: mysql

解决方案


您可以创建一个包含所有可能权限列表的新表,并将这些 ID 与用户 ID 链接起来。

- Permissions      ( ID     | Description  )
- User Permissions ( UserId | PermissionID )

为单个用户选择所有权限

    SELECT Permissions.* 
    FROM UserPermissions 
    LEFT JOIN Permissions ON Permissions.id = UserPermissions.PermissionId
    WHERE UserPermissions.UserID = {userId}

推荐阅读