我只是想弄清楚Facebook的数据库如何构造用于跟踪通知。
我不会像Facebook这样深入研究复杂性。如果我们想象一个简单的通知表结构:
notifications (id, userid, update, time);
我们可以使用以下方式获取朋友的通知:
SELECT userid
, update
, time
FROM notifications
WHERE userid
IN (... query for getting friends...) 但是,应该使用什么表结构来检查已读取和未读取哪些通知?
我不知道这是否是执行此操作的最佳方法,但是由于我没有别人的想法,所以我会这样做。我希望这个答案也能对其他人有所帮助。
我们有2张桌子
id (pk) userid notification_type (for complexity like notifications for pictures, videos, apps etc.) notification time
id (pk) (i dont think this field is required, anyways) lasttime_read userid 这个想法是从通知表中选择通知,并加入notificationsRead表,并检查最后读取的通知和ID> Notificationid的行。并且每次打开通知页面时,都会更新notificationsRead表中的行。
我想查询未读通知的查询将是这样。
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... ))来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。