Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Base de datos roles y grupos.

Estas en el tema de Base de datos roles y grupos. en el foro de Mysql en Foros del Web. Buenos días, Estoy creando una Intranet con html, css, php y mysql y me gustaría como tengo que hacer las tablas y las relaciones para ...
  #1 (permalink)  
Antiguo 25/02/2012, 07:14
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Base de datos roles y grupos.

Buenos días,

Estoy creando una Intranet con html, css, php y mysql y me gustaría como tengo que hacer las tablas y las relaciones para que haya dos tipos de roles: rol 1 (usuarios) y rol 2 (administrador) y que dentro del rol 1 de usuarios se diferencien dependiendo del grupo o departamento digamos: departamento A, departamento B...

Para luego implementar a base de codigo php que al hacer el loguin si es del rol 2 les redirija a admin.php y si son del rol 1, les redirija a usuario.php pero dependiendo del grupo al que pertenecen en un determinado contenido sea diferente para cada uno de los grupos.

Hasta ahora he conseguido en phpmyadmin hacer una tabla usuarios con campos como el nombre , dni... y el campo rol_id que es clave extranjera de la tabla roles.id en el cual tengo puestos 7 roles, los 6 departamentos y el septimo es el rol admin. Con php dependiendo del rol les redirige a una pagina u otra y les muestra el contenido, pero me parece un poco chapucero.

Me gustaría que estuviera diferenciado el rol admin y que en el rol usuarios estuviera los diferentes 6 grupos.

Espero haberme explicado bien
  #2 (permalink)  
Antiguo 25/02/2012, 11:28
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de datos roles y grupos.

¿Hay alguien ahí, por favor?
  #3 (permalink)  
Antiguo 25/02/2012, 20:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Base de datos roles y grupos.

En realidad no se entiende muy bien lo que estás preguntando, porque si es a nivel de base de datos, tal parece que ya lo tienes resuelto. O al menos eso es lo que se infiere de tu post.
Por allí pareciera que hay una confusión entre rol de usuario y categoría de usuario, pero eso es discutible.
Ahora bien, si tu pregunta es cómo usar la administración de roles que ya has definido en base, pero en la web, entonces estás preguntando el el foro equivocado, porque eso es programación, y no BBDD.
¿No sería mejor en ese caso que lo consultaras en el Foro de PHP?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 26/02/2012, 03:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de datos roles y grupos.

Gracias por la respuesta gnzsoloyo. La pregunta es sobre BBDD , pero la verdad es que ayer dándole vueltas creo que encontré la solución. ¿ Podría ser algo así?

Tabla usuarios

id | nombre | apellidos | email | rol_id | grupo
1 | juan | garcia | ...@... | 1 |departamentoA
2 | sara | lopez | ...@... | 2 |
3 | alberto | torres | ...@... | 1 | departamentoB
...
rol_id 1 para usuarios y rol_id 2 para administrador. Y para el rol_id 1 (usuarios) asignarles el grupo al que pertenecen (departamentoA, departamentoB...)
Mi duda sería que grupo asignarle al rol_id 2 (administrador) que pertenece a todos los grupos, con un null estaría bien?
  #5 (permalink)  
Antiguo 26/02/2012, 05:16
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 1 mes
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!
  #6 (permalink)  
Antiguo 26/02/2012, 05:33
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de datos roles y grupos.

Muchísimas Gracias rigobcastro, en parte es algo así lo que preguntaba, ya que lo que me interesa seria la cuarta tabla de permisos para cada rol.

Voy a hacer algunos cambios en mi base de datos tal y como lo has descrito y a ver si soluciono mi bloqueo :)
  #7 (permalink)  
Antiguo 26/02/2012, 05:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Base de datos roles y grupos.

Entiendo que para hacer la 4º tabla llamada permisos tendría que hacer una 5º de mapeo_permisos en la que que estén relacionadas las llaves foráneas id_rol e id_permiso. ¿Correcto?
  #8 (permalink)  
Antiguo 26/02/2012, 05:48
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 21
Respuesta: Base de datos roles y grupos.

Cita:
Iniciado por arratete Ver Mensaje
Entiendo que para hacer la 4º tabla llamada permisos tendría que hacer una 5º de mapeo_permisos en la que que estén relacionadas las llaves foráneas id_rol e id_permiso. ¿Correcto?
Es a gusto y dependiendo de cuán cantidad de recursos se tenga. En este caso no veo la necesidad

Tabla Roles

id_rol | nombre_rol | descripcion_rol | id_permiso

Tabla Permisos

id_permiso | nombre_permiso | variable_permiso ... etc

Así estaría bien ya que las dos tablas principales son las de Roles y Usuarios.

Eso tan bien depende del resto de tablas a usar.

Etiquetas: php, roles, sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:09.