我有一个使用 PHP 和 mySQL 并带有通知的私有(private)消息系统。
数据库表有以下字段(未全部列出) --- message_tbl:
MessageID
senderUserID
RecUserID
Message
Subject
DateTime
Status - whether read or not i.e 0/1
所有回复都存储在第二个表中,因为每条消息都会创建一个线程。父消息中存在一个线程,因此每次加载父消息时,其所有回复也会随之加载。 第二个表看起来有点像这样:-replies_tbl
messageID - FK
senderUserID
rstatus - how should i use this?
Mesage
DateTime
我需要显示所有未读消息的计数。 目前,我运行一个 sql 计数函数来从 message_tbl 中获取未读消息总数,其中状态为 0,用户 ID 等于 RecUserID,这是最简单的部分。
但是我有一个小问题是如何获取回复表的计数?数据库设计可以改进吗?
谢谢大家。
最佳答案
据我所知,回复本身就是一条消息,那么为什么它要放入单独的表中。回复回复会发生什么?看起来你此时的 FK 为空。
我的第一个想法是:
- 将 ParentID 列添加到“消息”表格
- 将根消息的 ParentID 设置为 0
- 如果是回复,请将 ParentID 设置为 MessagesID
使用该结构,您可以轻松跟踪回复的回复,并且线程可以继续深入到您想要的深度...
只是我的想法......
关于mysql - 未读私信回复的通知计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841428/