Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tracking von Facebook-ähnlichen Benachrichtigungen (DB Design)

Ich weiß nicht, ob dies der beste Weg ist, dies zu tun, aber da ich keine Ideen von jemand anderem habe, würde ich dies tun. Ich hoffe, dass diese Antwort auch anderen helfen kann.

Wir haben 2 Tische

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

Die Idee ist, Benachrichtigungen aus der Benachrichtigungstabelle auszuwählen und der Benachrichtigungstabelle beizutreten und die zuletzt gelesene Benachrichtigung und die Zeilen mit ID> Benachrichtigungs-ID zu überprüfen. Und jedes Mal, wenn die Benachrichtigungsseite geöffnet wird, aktualisieren Sie die Zeile aus der NotificationsRead-Tabelle.

Die Abfrage für ungelesene Benachrichtigungen würde wohl so aussehen...

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...
))

Die obige Abfrage wird nicht überprüft. Dank der Idee von db design von @espais