Cita:
Iniciado por quimfv 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...
usuario
id::::::nombre....
1::::::::Tachi
2::::::::Pablo
3::::::::Taz
4::::::::Pedro
Si
esto se traduce en
amigos
id:::::::idamigo1:::::::::idamigo2
1:::::::::::1::::::::::::::::::::2
2:::::::::::1::::::::::::::::::::3
3:::::::::::2::::::::::::::::::::1
4:::::::::::2::::::::::::::::::::4
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
Hola, tu idea me parece muy buena pero tengo algunas dudas:
1. ¿Que pasa si 1 ya no quiere ser amigo de 4?
2. En mysql como evito que se ingrese por ejemplo la pareja 2 - 2
3. Es posible agregar 1-4 sin agregar 4-1???