mysql - 对于有权限的用户来说,最好的 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 个权限,这会使表格变得很大吗?
我想这是一个非常常见的情况。但我找不到更好的方法。
解决方案
您可以创建一个包含所有可能权限列表的新表,并将这些 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}
推荐阅读
- elasticsearch - 我的 MATCH 查询没有返回所有匹配的文档 Elastic
- angular - Angular 7:一个组件的测试失败与另一个组件有关
- swift - 如何处理 mouseEntered:带有圆角的 NSView 上的事件
- ruby - 如何让 Nokogiri 显示节点而不仅仅是 HTML
- string - 将字符串转换为布尔值
- azure - 从私有 dockerhub 注册表中提取 docker 映像时,Kubernetes 中出现 ImagePullBackOff 错误
- google-cloud-platform - 在 GCP IAM 中授予基于对象的权限
- python - 如何从 Bitbucket Webhooks 触发 Python 脚本?
- c# - c#控制word文件表
- sql - SQL 游标运行财务计算的效率