Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/11/2009, 20:34
hucht
 
Fecha de Ingreso: octubre-2008
Mensajes: 140
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como puedo hacer una base de datos de amigos

Cita:
Iniciado por quimfv Ver Mensaje
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???