Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/09/2009, 00:50
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como puedo hacer una base de datos de amigos

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

Última edición por quimfv; 18/09/2009 a las 01:13