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

Tablas y consulta para relaciones de amistad

Estas en el tema de Tablas y consulta para relaciones de amistad en el foro de Mysql en Foros del Web. Estimados, tengo una consulta, relacionada con la logica para crear una tabla y hacer consultas. La cuestión es la siguiente: tengo una base de datos ...
  #1 (permalink)  
Antiguo 22/03/2012, 18:43
 
Fecha de Ingreso: junio-2011
Ubicación: Argentina
Mensajes: 32
Antigüedad: 8 años, 6 meses
Puntos: 2
Tablas y consulta para relaciones de amistad

Estimados, tengo una consulta, relacionada con la logica para crear una tabla y hacer consultas.
La cuestión es la siguiente: tengo una base de datos con una tabla de usuarios y quiero crear otra tabla para que me guarde las relaciones de amistad entre usuarios.
Lo que deseo con esa tabla es obtener el id de todos los amigos de un solo usuario, para mostrar toda la información de todos los usuarios amigos. Por lo que pienso que habrían que hacer una serie de consultas, la primera para obtener los id de los usuarios amigos y la segunda consulta para obtener la información de cada uno de los usuarios amigos de los que obtuve el id.
Desde mi punto de vista serían una serie de consultas que podrían hacer lento el funcionamiento o sobrecargar con consultas.
Se me ocurrieron dos formas de guardar esas relaciones de amistad entre usuarios:
-1- crear una tabla (amigos) que guarde en un campo la id del usuario (u_id) y en otro campo la id del usuario amigo(id_amigo), por relación de amistad habría una fila en la tabla, de esa manera si el usuario tiene 4 amigos habría 4 filas que indicasen la relacion de amistad con otros cuatro usuarios:
u_id-id_amigo
3-1
3-2
3-5
suponiendo que quiero ver los amigos del usuario con id=3.
Siguiendo esta estructura de tabla para obtener la id de los usuarios amigos la consulta sería la siguiente:
SELECT id_amigo FROM amigos WHERE u_id=3;
Pero esta forma de guardar la relacion de amistad en la tabla, guarda la relación en un solo sentido, porque si quiero ver los amigos de otro usuario, habría que hacer otra consulta pero viendo la relación al reves, donde id_amigo sería la id del usuario del que quiero ver sus amigos. De esa manera habría dos consultas para obtener los id.
Otra alternativa que se me ocurre es que una relación de amistad se registre en 2 filas de la tabla amigos. Asi queda guardada la relación en dos sentidos y obtengo la id de los usuarios amigos con una sola consulta.
-2- la otra alternativa que se me ocurre es hacer una tabla que guarde la id del usuario y en otro campo guarde como texto las id de los usuarios amigos separados por coma. De manera tal que cuando un usuario agregue a un amigo, la id del usuario amigo se agrega al campo texto a los ya existentes separados por coma. Así tengo todas las id de los amigos juntos, y puedo obtenerlas rapidamente, solo que habría que hacer una consulta para que me agrege el valor al final del campo y otra consulta para obtenes los valores del campo y usar la coma como separador.

Que me sugieren que haga?
Lo que busco en sí es guardar las relaciones de amistad y obtener el id de los amigos de un usuario haciendo menos consultas, porque con la id de los amigos que obtengo tengo que realizar otras consultas para obtener información de cada uno de los amigos, la cual se debe mostrar simultáneamente via php.
Desde ya muchas gracias

Última edición por srnetworks; 22/03/2012 a las 18:44 Razón: falto saludo

Etiquetas: consultasamistad, php, tabla
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 22:43.