我正在开发一个应用程序,用户拥有使用不同功能的不同权限(例如读取、创建、下载、打印、批准等)。 权限列表不会经常更改。 我有几个选项可以将这些权限存储在数据库中。
在什么情况下选项2会更好?
选项1
使用关联表。
User ---- UserId (PK) Name Department
Permission ---- PermissionId (PK) Name
User_Permission ---- UserId (FK) PermissionId (FK)
选项2
为每个用户存储位掩码。
User ---- UserId (PK) Name Department Permissions
[Flags]
enum Permissions {
Read = 1,
Create = 2,
Download = 4,
Print = 8,
Approve = 16
}