SQL-增强了统计未读邮件的架构



我有一个简单的消息模式,其中一个"线程"将2个或多个用户连接到一个消息流。每条消息都属于一个线程。它的工作原理就像短信或Facebook消息一样。

我只需要计算有多少线程具有给定用户的新消息。当用户打开一个线程时,我需要更新数据库(仅针对该用户),表明他们已经查看了该线程。给定这两个表,我应该如何增强我的模式,以便在每个线程中存储每个用户的"更新的线程"数据?

消息线程:
threadID
最近更新的

MessageThreadUsers:
threadFK
userFK

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

UserThreads
userFK
threadFK
上次检查

您应该能够将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

MessageThreads中的某种unread布尔值怎么样?当线程被更新时,unread被设置为true。当用户检查线程时,将其设置为false

只是一个想法。

最新更新