sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear un sistema de Facebook como amigos en php con mysql

Lista de amigos del usuario 123:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.user_id = 123 AND status = 'accepted';

El usuario 123 es fan de estos usuarios:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';

No olvide agregar el índice en la columna de estado.

Además, no estoy seguro de que una mesa como esta sea ideal para esto.

EDITAR:

Probablemente elegiría un esquema como este:

friend_request
    request_from (foreign key to users.user_id)
    request_to (foreign key to users.user_id)
    resolved (boolean 1 or 0, default is 0)

friend_xref
    friend (foreign key to users.user_id)
    is_friend_with (foreign key to users_user_id)

fan_xref
    user (foreign key to users.user_id)
    is_fan_of (foreign key to users.user_id)

Cuando alguien hace una solicitud de amistad, agregue una nueva fila a la tabla friend_request. Cuando el destinatario de la solicitud elige:

  • para aceptar la solicitud:agregue una nueva fila a friend_xref y establezca resuelto en 1 en la tabla friend_request
  • para denegar la solicitud:agregue una nueva fila a fan_xref y establezca resuelto en 1 en la tabla friend_request

Pero sería mejor preguntar esto bajo mysql, diseño de base de datos o alguna etiqueta similar para obtener las mejores respuestas.