Iba a hacer una pregunta aquí sobre si mi diseño para algunas tablas de bases de datos de usuarios/roles era aceptable, pero después de algunas investigaciones encontré esta pregunta:Múltiples tipos de permisos (roles) almacenados en la base de datos como decimal simple
What is the best way to handle multiple permission types?
suena como un enfoque innovador, así que en vez de una tabla de muchos-a-muchos relación users_to_roles, I tener varios permisos definidos como un solo decimal (tipo de datos int supongo). Eso significa que todos los permisos para un solo usuario están en una fila. Probablemente no tenga sentido hasta que lea la otra pregunta y responda
No puedo entender esto. ¿Alguien puede explicar el proceso de conversión? Suena "bien", pero simplemente no entiendo cómo convierto los roles a un decimal antes de que aparezca en el archivo db, y cómo se convierte de nuevo cuando sale del archivo db. Estoy usando Java, pero si lo apagaste, eso también sería genial.
Aquí está la respuesta original en la remota posibilidad de la otra pregunta se elimina:
"En lo personal, a veces uso una enumeración bandera de permisos de esta manera se puede usar AND, OR, NOT y operaciones bit a bit XOR sucesivamente. . artículos de la enumeración
[Flags]
public enum Permission
{
VIEWUSERS = 1, // 2^0 // 0000 0001
EDITUSERS = 2, // 2^1 // 0000 0010
VIEWPRODUCTS = 4, // 2^2 // 0000 0100
EDITPRODUCTS = 8, // 2^3 // 0000 1000
VIEWCLIENTS = 16, // 2^4 // 0001 0000
EDITCLIENTS = 32, // 2^5 // 0010 0000
DELETECLIENTS = 64, // 2^6 // 0100 0000
}
a continuación, se pueden combinar varios permisos usando el operador AND bit a bit.
Por ejemplo, si un usuario puede ver & editar usuarios, el resultado de la operación binaria es 0000 0011 que convertida a decimal es 3. Luego puede almacenar el permiso de un usuario en una sola columna de su Base de datos (en nuestro caso sería 3).
Dentro de su aplicación, sólo necesita otra operación en modo bit (OR) para verificar si un usuario tiene un permiso especial o no."
Pregunta muy útil ... y contestador ... –