sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar Facebook som vänner-system i php med mysql

Vänlista för användare 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';

Användare 123 är ett fan av dessa användare:

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

Glöm inte att lägga till index i statuskolumnen.

Dessutom är jag inte säker på att ett sådant här bord är idealiskt för detta.

EDIT:

Jag skulle förmodligen välja ett schema som detta:

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 någon gör en vänförfrågan, lägg till en ny rad i tabellen friend_request. När begärandemottagaren väljer att:

  • för att acceptera begäran:lägg till ny rad i friend_xref och ställ in löst till 1 i friend_request-tabellen
  • för att avslå begäran:lägg till ny rad i fan_xref och ställ in löst till 1 i tabellen friend_request

Men det skulle vara bättre att fråga detta under mysql, database-design eller någon liknande tagg för att få bästa svar.



  1. COMPOSE() Funktion i Oracle

  2. Hur profilerar man PostgreSQL Database?

  3. 12c IDENTITY kolumner

  4. hur använder man xmltable i oracle?