sql >> Databasteknik >  >> RDS >> Mysql

Vän till en vän i PHP/MySQL?

Svaret är att de inte gör urval på ett vänbord, de använder med största sannolikhet en avnormaliserad nyhetshändelsetabell. Vi implementerade ett nyhetsflöde som liknar Facebooks på DoInk.com, så här gjorde vi det:

Det finns begreppet "NewsEvent" som har en typ, en initiator (ett användar-ID) och en målanvändare (även ett användar-ID). (Du kan också ha ytterligare kolumner för andra egenskaper som är relevanta för evenemanget, eller gå med i dem)

När en användare postar något på en annan användares vägg genererar vi en händelse som denna:

INSERT INTO events VALUES (wall_post_event, user1, user1)

När du visar användar1s profil, skulle du välja för alla händelser där användare1 antingen är initiativtagaren eller målet. Det är så du visar profilflödet. (Du kan bli snygga och filtrera bort händelser beroende på din integritetsmodell. Du kan överväga att göra detta i minnet av prestandaskäl)

Exempel:

SELECT * FROM events WHERE initiator = user1 or target = user1 //to see their profile feed

SELECT * FROM events WHERE initiator IN (your set of friend ids) //to see your newsfeed

När du vill se nyhetsflödet för alla händelser i förhållande till dina vänner kan du göra en fråga och välja för alla händelser där initiativtagaren är i din uppsättning vänner.

Undvik implementeringar med underval, beroende på komplexiteten kommer de inte att skalas.



  1. mysql:varför att jämföra en 'sträng' med 0 ger sant?

  2. MySQL - Hur ändrar man kolumns standardvärde?

  3. Summan av två frågor

  4. Eclipse/MySQL-integrationsplugins?