sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit Facebook jako systém přátel v php s mysql

Seznam přátel uživatele 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';

Uživatel 123 je fanouškem těchto uživatelů:

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

Nezapomeňte do sloupce stavu přidat index.

Také si nejsem jistý, zda je stůl jako tento pro to ideální.

EDIT:

Asi bych zvolil takovéto schéma:

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)

Když někdo požádá o přátelství, přidejte nový řádek do tabulky friend_request. Když se příjemce požadavku rozhodne:

  • akceptování požadavku:přidejte nový řádek do friend_xref a nastavte vyřešeno na 1 v tabulce friend_request
  • Chcete-li požadavek odmítnout:přidejte nový řádek do fan_xref a nastavte vyřešeno na 1 v tabulce friend_request

Ale bylo by lepší se na to zeptat pod mysql, database-design nebo nějakou podobnou značkou, abyste získali nejlepší odpovědi.



  1. Váš dokonalý průvodce SQL Join:INNER JOIN – Část 1

  2. Jak používat ALL Logical Operator v SQL Server - SQL Server / TSQL výukový program, část 126

  3. O mysql kurzoru a iterátoru

  4. IDENTIFIKOVANÝ PODLE 'hesla' v MySQL