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

Permisos, Relaciones, Todo en una misma tabla

Estas en el tema de Permisos, Relaciones, Todo en una misma tabla en el foro de Mysql en Foros del Web. Hola amig@s, les cuento la historia, hace tiempo empecé un proyecto, en el cual el cliente quería tener una tabla en la que existieran todos ...
  #1 (permalink)  
Antiguo 22/07/2015, 07:48
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Información Permisos, Relaciones, Todo en una misma tabla

Hola amig@s,

les cuento la historia, hace tiempo empecé un proyecto, en el cual el cliente quería tener una tabla en la que existieran todos los usuarios, los usuarios pueden ser de muchísimos tipos, les pongo a continuación por orden de permiso los roles que puede tener un usuario.

Marca, Agencia, encargado, agente, colaborador, seccretario, cliente.

Realmente hay más pero hay muchos que es el mismo por ejemplo la Agencia puede ser Agencia Online, Agencia Física, etc.. por lo tanto es el mismo.

Ahora explico un poco el funcionamiento de los permisos.

La marca puede tener varias agencias, y cada agencia puede dar de alta agentes, y todo lo que viene detrás de ella en el orden que lo he escrito, pero, la marca por ejemplo podrá verlo todo de sus agencias agentes etc, sin embargo las agencias solo pueden ver lo que ellas hayan dado de alta.

El problema es que yo lo que había hecho es añadir 2 campos en el usuario que son, el Id de quien lo ha dado de alta, y el Id de la marca, pero de esta manera las agencias pueden ver todo lo que sea de la marca incluso aunque no sea de ellas,

Lo que yo veo es que para restringir la visualización, como lo hago?, porque claro, había pensado en incluir el id de la agencia tambien, pero luego pasa lo mismo con los agentes, los agentes solo deben de poder ver lo que ellos dan de alta, y aunque sean de la misma agencia no deberían de ver lo que el compañero haya dado de alta,y así todos los permisos, al final para cualquier consulta tendría que hacer una megaconsulta enorme, tener una tabla gigante ya que lo quiere todo en la misma tabla, no se.. estoy perdido...

Yo en su dia le dije que deberíamos de hacer una tabla para cada permiso, si es marca es marca, si es Agencia pues agencia etc.. pero como tiene muchas webs quería que todos los registros que vinieran de las webs tenerlo también en la misma tabla, aunque el permiso que un usuario tiene desde la web es cliente que es el más bajo, o sea el ultimo.

El caso es que ya está muy avanzado y me gustaría saber que posibilidades tengo para hacer esto, que campos debería de añadir etc.. o si por el contrario no tiene que ver con Base de datos.. no se...

Si has llegado hasta aquí, muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 30/07/2015, 07:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Permisos, Relaciones, Todo en una misma tabla

Cita:
Lo que yo veo es que para restringir la visualización, como lo hago?, porque claro, había pensado en incluir el id de la agencia tambien, pero luego pasa lo mismo con los agentes, los agentes solo deben de poder ver lo que ellos dan de alta, y aunque sean de la misma agencia no deberían de ver lo que el compañero haya dado de alta,y así todos los permisos, al final para cualquier consulta tendría que hacer una megaconsulta enorme, tener una tabla gigante ya que lo quiere todo en la misma tabla, no se.. estoy perdido...
En realidad necesitas los datos de la agencia, pero debes relacionar a los agentes con su superior inmediato.
Esto requeriría que la tabla de usuarios sólo tenga dos campos críticos: El de su usuario superior, y el de la agencia.
Lo complejo es lo otro: Por un lado, necesitas consultas complejas para resolver las dependencias, y MySQL no tiene consultas recursivas como las de Oracle. No son difíciles de lograr esas validaciones, pero pueden ser para expertos.
el otro problema es más complejo: Toda tabla que contenga datos que sean dados de alta por cualquier agente, deben tener un campo al menos que indique qué agente generó el dato, y qué agente lo modificó por ultima vez.
Sin eso, no hay modo que puedas restringir los datos que un agente visualiza.

Posdata: Lee las PDU. No se permiten subidas de indice en los posts si no es agregando información relevante. Postear para que pase arriba en la lista se toma como inconducta y se elimina el posts, devolviéndolo a la posicion anterior.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/07/2015, 07:23
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Permisos, Relaciones, Todo en una misma tabla

Muchas gracias

Etiquetas: permisos, restricciones
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 14:31.