Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2007, 04:07
albertoshu
 
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.