Như krokodilko đã viết trong nhận xét của mình, điều đó phụ thuộc vào mức độ linh hoạt mà bạn cần.
Tôi đã triển khai các quyền dựa trên vai trò cho một trong những khách hàng của mình như sau:
- Người dùng (id người dùng (PK), tên người dùng (duy nhất), mật khẩu ( muối và băm! ), tên, họ, điện thoại, v.v. ')
- Vai trò (id vai trò (PK), tên vai trò (duy nhất), mô tả vai trò)
- Quyền (id quyền (PK), tên quyền (duy nhất)) - các tab / màn hình / hành động ở đây
- Người dùng đảm nhiệm vai trò (id người dùng, id vai trò) - PK là cả hai cột được kết hợp với nhau
- Vai trò đối với quyền (id vai trò, id quyền) - PK là cả hai cột được kết hợp với nhau
Nhưng yêu cầu của tôi là phải linh hoạt nhất có thể và đó là một hệ thống vẫn đang phát triển (6 năm và tiếp tục tăng).
Tôi đoán rằng rất nhiều ứng dụng có thể có người dùng đóng vai trò là mối quan hệ một với nhiều, thay vì nhiều với nhiều như trong trường hợp của tôi, nhưng tôi sẽ không khó mã hóa các quyền hoặc vai trò đối với các quyền trong bất kỳ ứng dụng nào.
Giải thích thêm: Thiết kế cơ sở dữ liệu bảo mật dựa trên vai trò về Điều gì # tôi biết?