Lo siento pero o no me he explicado o no me habeis entendido
CREATE TABLE amigos(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
idamigo1 INT NOT NULL
idamigo2 INT NOT NULL
);
Esto permite que cada usuario tenga tantos amigos como quiera ya que habrá
una doble relacion 1 a n con la tabla usuarios...
Cita: Donde idamigo1 y idamigo2 son claves foraneas las dos referenciadas a usuario.id
usuario id::::::nombre....
1::::::::Tachi
2::::::::Pablo
3::::::::Taz
4::::::::Pedro
Si
Cita: Tachi tiene como amigo a Pablo y Taz
Pablo tiene como amigo a Tachi y Pedro
esto se traduce en
amigos id:::::::idamigo1:::::::::idamigo2
1:::::::::::1::::::::::::::::::::2
2:::::::::::1::::::::::::::::::::3
3:::::::::::2::::::::::::::::::::1
4:::::::::::2::::::::::::::::::::4
Cita: Si tachi quiere ser amigo de pedro sería necesario crear otro campo y no se trata de eso.
Noooo!!! Simplemente se agrega un
registro y listos
5:::::::::::1::::::::::::::::::::4
Tendras que controlar varios temas
1. no tiene ningun sentido que alguien sea amigo de si mismo
ejemplo
6:::::::::::1::::::::::::::::::::1
2. que hacer con las relaciones inversas, es decir, si 1 es amigo de 2 automaticamente 2 es amigo de 1?
ejemplo
1:::::::::::1::::::::::::::::::::2
7:::::::::::2::::::::::::::::::::1
3. Las repeticiones, que se solucionan con un indice sobre los dos campos....
ejemplo
1:::::::::::1::::::::::::::::::::2
7:::::::::::1::::::::::::::::::::2
si idamigo1 y idamigo2 forman un
indice unico compuesto será imposible que el registro 7 llegue a guardarse
y otros...
En aplicaciones como Hi5 o Facebook no hay dos categorias usuarios y amigos, sino que se trata de usuarios que son amigos entre ellos, no puedes ser amigo de alguien que no es usuario sencillamente por que no lo encuentras en el sistema.... puedes invitar a alguien a entrar y en el momento que se registra como usuario luego puede pasar a ser amigo tuyo pero no antes...
Espero haberme explicado mejor. Quizas el nombre adecuado para la tabla sea
amistades no
amigos....
Quim