sql >> Database >  >> RDS >> Mysql

Facebook-achtige meldingen volgen (DB Design)

Ik weet niet of dit de beste manier is om dit te doen, maar aangezien ik van niemand anders ideeën heb, zou ik dit doen. Ik hoop dat dit antwoord ook anderen kan helpen.

We hebben 2 tafels

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

Het idee is om meldingen uit de meldingstabel te selecteren en deel te nemen aan de tabel met meldingenRead en de laatst gelezen melding en rijen te controleren met ID> meldingsid. En elke keer dat de meldingspagina wordt geopend, werkt u de rij bij uit de tabel met meldingenLees.

De vraag naar ongelezen meldingen zou volgens mij zo zijn..

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

De bovenstaande vraag is niet gecontroleerd. Dankzij het idee van db design van @espais



  1. Postgres:een standaardwaarde definiëren voor CAST-fouten?

  2. Prestaties afstemmen van het hele queryplan

  3. Beste benaderingen voor gegroepeerde lopende totalen

  4. SQL - Hoe te transponeren?