Como escribió krokodilko en su comentario, depende del nivel de flexibilidad que necesite.
He implementado permisos basados en roles para uno de mis clientes de la siguiente manera:
- Usuario (ID de usuario (PK), nombre de usuario (único), contraseña (salado y hash! ), nombre, apellido, teléfono, etc.')
- Rol (ID de rol (PK), nombre de rol (único), descripción de rol)
- Permiso (ID de permiso (PK), nombre de permiso (único)):las pestañas/pantallas/acciones van aquí
- Usuario a función (ID de usuario, ID de función):PK son ambas columnas combinadas
- De rol a permiso (ID de rol, ID de permiso) - PK es ambas columnas combinadas
Pero mi requisito era ser lo más flexible posible, y es un sistema que todavía está creciendo (6 años y contando).
Supongo que muchas aplicaciones pueden hacer que el usuario actúe como una relación de uno a muchos, en lugar de una relación de muchos a muchos como en mi caso, pero no me gustaría codificar permisos o roles para permisos en ninguna aplicación.
Explicación adicional:Diseño de base de datos de seguridad basado en roles en ¿Qué # sé?