Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erstellen Sie ein Facebook-Like-Friends-System in PHP mit MySQL

Freundesliste von Benutzer 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';

Benutzer 123 ist Fan dieser Benutzer:

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

Vergessen Sie nicht, der Statusspalte einen Index hinzuzufügen.

Außerdem bin ich mir nicht sicher, ob eine Tabelle wie diese dafür ideal ist.

BEARBEITEN:

Ich würde wahrscheinlich ein Schema wie dieses wählen:

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)

Wenn jemand eine Freundschaftsanfrage stellt, füge eine neue Zeile zur Tabelle „friend_request“ hinzu. Wenn der Anforderungsempfänger sich für Folgendes entscheidet:

  • um die Anfrage anzunehmen:füge eine neue Zeile zu friend_xref hinzu und setze aufgelöst auf 1 in der Tabelle friend_request
  • um die Anfrage abzulehnen:füge eine neue Zeile zu fan_xref hinzu und setze aufgelöst auf 1 in der Tabelle friend_request

Aber es wäre besser, dies unter mysql, database-design oder einem ähnlichen Tag zu fragen, um die besten Antworten zu erhalten.