开发者社区> 问答> 正文

Facebook之类的通知跟踪(数据库设计)?mysql

我只是想弄清楚Facebook的数据库如何构造用于跟踪通知。

我不会像Facebook这样深入研究复杂性。如果我们想象一个简单的通知表结构:

notifications (id, userid, update, time);

我们可以使用以下方式获取朋友的通知:

SELECT userid, update, time FROM notifications WHERE userid IN (... query for getting friends...) 但是,应该使用什么表结构来检查已读取和未读取哪些通知?

展开
收起
保持可爱mmm 2020-05-17 20:56:26 1030 0
1 条回答
写回答
取消 提交回答
  • 我不知道这是否是执行此操作的最佳方法,但是由于我没有别人的想法,所以我会这样做。我希望这个答案也能对其他人有所帮助。

    我们有2张桌子

    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 这个想法是从通知表中选择通知,并加入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

    2020-05-17 20:58:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
Facebook iOS App技术演化十年之路 立即下载
Facebook Online Schema Change原理和大规模表结构变更最佳实践 立即下载

相关镜像