Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Rastreamento de notificações como o Facebook (DB Design)


Eu não sei se esta é a melhor maneira de fazer isso, mas como eu não tenho ideias de mais ninguém, isso é o que eu estaria fazendo. Espero que esta resposta possa ajudar outras pessoas também.

temos 2 mesas
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

A ideia é selecionar notificações da tabela de notificações e juntar-se à tabela notificationsRead e verificar a última notificação lida e as linhas com ID> notificationid. E cada vez que a página de notificações é aberta, atualize a linha da tabela notificationsRead.

A consulta de notificações não lidas, eu acho, seria assim ..
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...
))

A consulta acima não está marcada.Graças à ideia de db design do @espais