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.