
20/12/2013, 06:25
|
| | Fecha de Ingreso: mayo-2009 Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años, 10 meses Puntos: 12 | |
Respuesta: Problema, Sistemas de amigos suponiendo que tienes una tabla "común" de usuarios, la cual tenga un campo primario id único, has una tabla en la cual se generen las conexión mediante este id
has una tabla con los campos [ id , p1, p2, status ], has un index único con "p1", "p2" y "status" para ganar velocidad en las cargas/busquedas
id = numero del registro
p1 = usuario que propuso la amistado
p2 = usuario invitado a tener amistad
status = estado de la petición
En status usa un tinyint(1) con valores [ -1, 0 ,1, 2 ]
-1 = bloqueado
0 = no visto/ chequeado por el invitado
1 = rechazado
2 = aceptado
amigos = SELECT count(*) FROM tabla WHERE (p1 = user_id OR p2 = user_id) AND status = 2
peticiones = SELECT count(*) FROM tabla WHERE (p1 = user_id OR p2 = user_id) AND status = 0
el resto ya puedes imaginártelo...
de esta forma no tienes que crear un record para cada parte, evitas duplicados y nodos sueltos |