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

Facebook-like-notifikationssporing (DB Design)

Jeg ved ikke, om dette er den bedste måde at gøre dette på, men da jeg ikke fik nogen ideer fra nogen andre, er det, hvad jeg ville gøre. Jeg håber, at dette svar også kan hjælpe andre.

Vi har 2 borde

notification
-----------------
id (pk)
userid
notification_type (for complexity like notifications for pictures, videos, apps etc.)
notification
time


notificationsRead
--------------------
id (pk) (i dont think this field is required, anyways)
lasttime_read
userid

Ideen er at vælge notifikationer fra notifikationstabellen og tilslutte sig notificationsRead-tabellen og kontrollere den sidst læste notifikation og rækker med ID> notificationid. Og hver gang notifikationssiden åbnes, opdatere rækken fra notificationsRead-tabellen.

Forespørgslen efter ulæste notifikationer, tror jeg ville være sådan her..

SELECT `userid`, `notification`, `time` from `notifications` `notificationsRead`
WHERE 
`notifications`.`userid` IN ( ... query to get a list of friends ...) 
AND 
(`notifications`.`time` > (
    SELECT `notificationsRead`.`lasttime_read` FROM `notificationsRead` 
    WHERE `notificationsRead`.`userid` = ...$userid...
))

Forespørgslen ovenfor er ikke kontrolleret.Takket være ideen om db design fra @espais



  1. SQL CREATE TABLE … SOM SELECT-sætning

  2. Hvordan matcher jeg en hel dag med et dato-tidsfelt?

  3. Tabelnavn som en PostgreSQL-funktionsparameter

  4. Formater SQLite-forespørgselsresultater som kolonner med kolonneoverskrifter