我有一个简单的消息架构,其中“线程”将2个或更多用户绑定到消息流。每条消息都属于一个线程。它就像短信或Facebook消息一样工作。
我只需要计算给定用户有多少线程有新消息。当用户打开一个线程时,我需要更新db(仅限该用户),表明他们已查看该线程。鉴于这两个表,我应该如何增强我的架构来为每个线程中的每个用户存储这个“更新的线程”数据?
MessageThreads:
线程ID
lastUpdated
MessageThreadUsers:
threadFK
userFK
我正在考虑添加这个表格(但有更好的方法吗?)
UserThreads
userFK
threadFK
lastChecked
答案 0 :(得分:1)
您应该只需将lastChecked列添加到MessageThreadUsers表中即可。然后,您可以将该值与MessageThreads中的lastUpdated字段进行比较,以确定用户是否有新消息。或者下面的内容应该为您提供新邮件的总数。
SELECT COUNT(mtu.*) FROM MessageThreadUsers mtu JOIN MessageThreads mt ON mt.threadID = mtu.threadFK WHERE mtu.lastChecked < mt.lastUpdated GROUP BY mtu.userFK
答案 1 :(得分:0)
unread
中某种MessageThreads
布尔值怎么样?更新主题后,unread
将设置为true
。当用户检查线程时,将其设置为false
。
只是一个想法。