Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/02/2012, 05:16
Avatar de rigobcastro
rigobcastro
 
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Base de datos roles y grupos.

Siempre que necesito hacer sistemas de usuarios y roles, uso 3 tablas. Voy a crear un caso hipotetico y muy sencillo.

Tabla Usuarios

id_usuario | nombre_usuario | (otros campos)

Tabla Roles

id_rol | nombre_rol | descripcion_rol

Tabla Mapeo de roles

id_mapeo | id_rol | id_usuario

---

En la tabla Mapeo de roles creo las llaves foráneas de los id a sus tablas correspondientes y con atributos "On delete y On update" en "cascade" asi cada vez que se elimine o actualice un usuario o un dato de la tabla de mapeo o en las tablas referenciadas, todas se actualizan según la acción. Esto tiene dependencia de gusto, organización y lógica de estructuración.

Se ve costoso en cuestión de recursos pero una BBDD con diagramación de mapeo arroja resultados más manipulables y menos riesgosos.

Para hacer las consultas tan solo se hacen JOIN a las tres tablas también ahorrando consultas y condicionales a la hora de obtener datos.

Como opcional yo creo una cuarta tabla con los permisos para cada rol, así también la ejecución de todo un sitio se puede ver involucrado a la BBDD y será totalmente dinámica, ya que cambia un permiso, cambia el rol y obviamente cambia el usuario.

Como nota final te puedo decir que la mayoría de sitios usan la referencia directa entre las dos tablas, en nuestro ejemplo Usuarios y Roles. Esto ya es a gusto personal y de como vayas a estructurar el proyecto.

De todo esto también dependen los recursos que se usen para la organización de la lógica de negocios.

Eso es todo, saludos!