Im работает над приложением, в котором пользователи имеют разные разрешения для использования разных функций (например, Чтение, создание, загрузка, печать, утверждение и т.д.). Список разрешений не должен часто меняться. У меня есть несколько вариантов сохранения этих разрешений в базе данных.
В каких случаях вариант 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
}