Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer un système Facebook comme des amis en php avec mysql

Liste d'amis de l'utilisateur 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';

L'utilisateur 123 est fan de ces utilisateurs :

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

N'oubliez pas d'ajouter un index sur la colonne d'état.

De plus, je ne suis pas sûr qu'une table comme celle-ci soit idéale pour cela.

MODIFIER :

Je choisirais probablement un schéma comme celui-ci :

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)

Lorsque quelqu'un fait une demande d'ami, ajoutez une nouvelle ligne à la table friend_request. Lorsque le destinataire de la demande choisit de :

  • pour accepter la demande :ajoutez une nouvelle ligne à friend_xref et définissez résolu sur 1 dans la table friend_request
  • pour refuser la demande :ajoutez une nouvelle ligne à fan_xref et définissez résolu sur 1 dans la table friend_request

Mais il serait préférable de demander cela sous mysql, database-design ou une balise similaire pour obtenir les meilleures réponses.