Tôi đang làm việc trên một ứng dụng mà người dùng có các quyền khác nhau để sử dụng các tính năng khác nhau (ví dụ: Đọc, Tạo, Tải xuống, In, Phê duyệt, v.v.). Danh sách các quyền sẽ không thay đổi thường xuyên. Tôi có một số tùy chọn về cách lưu trữ các quyền này trong cơ sở dữ liệu.
Trong những trường hợp nào thì Lựa chọn 2 sẽ tốt hơn?
lựa chọn 1
Sử dụng một bảng kết hợp.
Người dùng ---- UserId (PK) Tên Phòng ban
Sự cho phép ---- PermissionId (PK) Tên
User_Permission ---- UserId (FK) PermissionId (FK)
Lựa chọn 2
Lưu trữ một bitmask cho mỗi người dùng.
Người dùng ---- UserId (PK) Tên Phòng ban Quyền
[Flags]
enum Permissions {
Read = 1,
Create = 2,
Download = 4,
Print = 8,
Approve = 16
}