sql >> Database >  >> RDS >> Mysql

Hoe een Facebook-achtig vriendensysteem in php te maken met mysql

Vriendenlijst van gebruiker 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';

Gebruiker 123 is fan van deze gebruikers:

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

Vergeet niet een index toe te voegen aan de statuskolom.

Ik weet ook niet zeker of een tafel als deze hier ideaal voor is.

BEWERKEN:

Ik zou waarschijnlijk een schema als dit kiezen:

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)

Wanneer iemand een vriendschapsverzoek doet, voeg dan een nieuwe rij toe aan de tabel vriend_verzoek. Wanneer de ontvanger van het verzoek ervoor kiest om:

  • om het verzoek te accepteren:voeg een nieuwe rij toe aan friend_xref en stel opgelost in op 1 in de friend_request-tabel
  • om het verzoek te weigeren:voeg een nieuwe rij toe aan fan_xref en stel opgelost in op 1 in de friend_request-tabel

Maar het is beter om dit te vragen onder mysql, database-design of een vergelijkbare tag om de beste antwoorden te krijgen.



  1. Transactie gebruiken in php/mysql

  2. Replicatiefailover voor MySQL en MariaDB beheren met pre- of post-failoverscripts

  3. MySQL Boolean tinyint(1) bevat waarden tot 127?

  4. Hoe goto-label te gebruiken in de MySQL-opgeslagen functie?