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

implementando una relación de amistad

Estas en el tema de implementando una relación de amistad en el foro de Mysql en Foros del Web. Hola a todos, A ver si me podéis echar una mano. Tengo la tabla "usuarios" ("id_usuario", "nombre", "direccion") y la tabla "amigos" ("id_usuario", "id_amigo". ambos ...
  #1 (permalink)  
Antiguo 30/10/2007, 04:07
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
implementando una relación de amistad

Hola a todos,

A ver si me podéis echar una mano.

Tengo la tabla "usuarios" ("id_usuario", "nombre", "direccion") y la tabla "amigos" ("id_usuario", "id_amigo". ambos campos son clave ajena de id_usuario en la tabla "usuarios") en dónde reflejo la relacion de amistad entre los miembros de la tabla "usuarios", por tanto, si hago "select * from amigos where id_usuario=3", obtendría la relacion de amigos del usuario 3. Dado que, en teoría, la amistad es recíproca, si el usuario 3 es amigo del usuario 2, el usuario 2 debería de ser amigo del usuario 3. Esto introduce cierta complejidad en mi base de datos:

Cuando realizo un "insert" en la tabla "amigos" tengo que duplicarlo: Si hago "insert into amigos values (2,3)" tambien tengo que hacer "insert into amigos values (3,2)", o de lo contrario, cuando hicise una select para sacar los amigos del usuario 3, no obtendría al usuario 2. Esto hace que tenga que duplicar mis "insert" y que la tabla amigos sea el doble de grande.

Lo que yo creo es que tengo un error de diseño al plantear las tablas y que seguramente, hay una manera más correcta de implementar esta relacion de "amistad"....pero a mí no se me ocurre...alguna sugerencia?

salduos a todos.
  #2 (permalink)  
Antiguo 01/11/2007, 07:39
Avatar de hectorejch  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 172
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: implementando una relación de amistad

Estuve pensando en el diseño pero no le encuentro la vuelta, por ahi lo que podrías probar también es en las consultas, por ejemplo los select, no solo traer por el campo id_usuario, sino tambien por el de id_amigos, pero según el diseño me parecería que está bien que lo vayas haciendo como lo haces.
La relación está bien establecida, es otra más de M:N, pero se presenta una situación particular porque es una relación sobre la misma entidad...
Si se me ocurre algo otro vuelvo a postear
__________________
"El Reino de Dios no consiste en palabras, sino en poder"
  #3 (permalink)  
Antiguo 01/11/2007, 09:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: implementando una relación de amistad

Muchas gracias Hectorejch

yo tampoco he dado con la solción todavía, si la encuentro, te la posteo.
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 07:59.