Estoy trabajando en una aplicación en la que los usuarios tienen diferentes permisos para usar diferentes funciones (por ejemplo, leer, crear, descargar, imprimir, aprobar, etc.). No se espera que la lista de permisos cambie con frecuencia. Tengo un par de opciones sobre cómo almacenar estos permisos en la base de datos.
¿En qué casos sería mejor la opción 2?
Opción 1
Utilice una tabla asociativa.
Usuario ---- UserId (PK) Nombre Departamento
Permiso ---- PermissionId (PK) Nombre
User_Permission ---- UserId (FK) PermissionId (FK)
opcion 2
Almacene una máscara de bits para cada usuario.
Usuario ---- UserId (PK) Nombre Departamento Permisos
[Flags]
enum Permissions {
Read = 1,
Create = 2,
Download = 4,
Print = 8,
Approve = 16
}