我有一个简单的消息模式,其中一个"线程"将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
。
只是一个想法。