我正在开发一个应用程序,其中用户有不同的权限来使用不同的功能(例如读取、创建、下载、打印、批准等)。权限列表预计不会经常更改。对于如何将这些权限存储在数据库中,我有几个选择。
在什么情况下选项 2 会更好?
选项1
使用关联表。
用户 ---- 用户 ID (PK) 姓名 部门
允许 ---- 权限 ID (PK) 姓名
用户权限 ---- 用户 ID (FK) 权限 ID (FK)
选项 2
为每个用户存储一个位掩码。
用户 ---- 用户 ID (PK) 姓名 部门 权限
[Flags]
enum Permissions {
Read = 1,
Create = 2,
Download = 4,
Print = 8,
Approve = 16
}