mysql - 未读私信回复的通知计数

标签 mysql database-design join count

我有一个使用 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/

相关文章:

docker-compose 中的 MySQL -- 访问被拒绝

php - 我们可以在 MODEL [CODIGNITER] 中检查查询是否返回 true 或 false,并根据它执行不同的操作,例如 if else 语句

java - 使用 play 框架连接到 mysql 数据库时出现异常

sql - 哪种数据类型应该用于货币?

SQL 查询 : Simulating an "AND" over several rows instead of sub-querying

mysql - 基于相关子查询、SQL 的连接表

c++ - MySQL C++ 连接器错误代码列表

mysql - 如何在数据库中存储多个项目。对数据库结构感到困惑

mysql - 数据库设计问题 - 多人游戏

ruby-on-rails - 在 ruby​​ on rails 中使用连接表