sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter du Facebook som venner-system i php med mysql

Venneliste over bruger 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';

Bruger 123 er fan af disse brugere:

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

Glem ikke at tilføje indeks i statuskolonnen.

Jeg er heller ikke sikker på, at et bord som dette er ideelt til dette.

EDIT:

Jeg ville nok vælge et skema som dette:

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)

Når nogen laver en venneanmodning, skal du tilføje en ny række til tabellen friend_request. Når anmodningsmodtageren vælger at:

  • for at acceptere anmodningen:tilføj ny række til friend_xref og sæt løst til 1 i friend_request-tabellen
  • for at afvise anmodningen:tilføj ny række til fan_xref og sæt løst til 1 i friend_request-tabellen

Men det ville være bedre at spørge om dette under mysql, database-design eller et lignende tag for at få de bedste svar.



  1. Opdater forespørgsel baseret på tilstand

  2. Hvordan REGEXP virker i MariaDB

  3. Hvordan bruger jeg Entity Framework 6 med MySQL i ASP.NET 5?

  4. Dvale:Opret indeks