SQL - 增强模式以计算未读消息

时间:2012-03-29 16:55:41

标签: sql schema messaging

我有一个简单的消息架构,其中“线程”将2个或更多用户绑定到消息流。每条消息都属于一个线程。它就像短信或Facebook消息一样工作。

我只需要计算给定用户有多少线程有新消息。当用户打开一个线程时,我需要更新db(仅限该用户),表明他们已查看该线程。鉴于这两个表,我应该如何增强我的架构来为每个线程中的每个用户存储这个“更新的线程”数据?

MessageThreads:
线程ID
lastUpdated

MessageThreadUsers:
threadFK
userFK

我正在考虑添加这个表格(但有更好的方法吗?)

UserThreads
userFK
threadFK
lastChecked

2 个答案:

答案 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

只是一个想法。