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