Tôi không biết đây có phải là cách tốt nhất để làm điều này hay không, nhưng vì tôi không có ý tưởng từ bất kỳ ai khác, đây là những gì tôi sẽ làm. Tôi hy vọng câu trả lời này cũng có thể giúp ích cho những người khác.
Chúng tôi có 2 bảng
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
Ý tưởng là chọn các thông báo từ bảng thông báo và tham gia bảng Thông báoĐọc và kiểm tra thông báo đã đọc gần đây nhất và các hàng có ID> thông báo. Và mỗi khi trang thông báo được mở, hãy cập nhật hàng từ bảng thông báo Đọc.
Truy vấn cho các thông báo chưa đọc mà tôi đoán sẽ như thế này ..
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...
))
Truy vấn ở trên không được chọn. Cảm ơn ý tưởng thiết kế db từ @espais