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

Monitoraggio delle notifiche Mi piace di Facebook (DB Design)

Non so se questo sia il modo migliore per farlo, ma dal momento che non ho idee da nessun altro, questo è quello che farei. Spero che questa risposta possa aiutare anche altri.

Abbiamo 2 tavoli

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

L'idea è di selezionare le notifiche dalla tabella delle notifiche e unirti alla tabella NotificationsRead e controllare l'ultima notifica letta e le righe con ID> notificationid. E ogni volta che viene aperta la pagina delle notifiche aggiorna la riga dalla tabella delle notificheLeggi.

La query per le notifiche non lette immagino sarebbe così..

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

La query sopra non è verificata. Grazie all'idea di db design di @espais