【问题标题】:Notification count on unread private message replies未读私信回复的通知计数
【发布时间】:2012-02-09 02:48:11
【问题描述】:

我有一个使用 PHP 和 mySQL 并带有通知的私人消息传递系统。

数据库表有以下字段(未全部列出)--- 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,这很简单。

但我有一个小问题是如何获取回复表的计数?数据库设计可以改进吗?

谢谢大家。

【问题讨论】:

    标签: mysql database-design join count


    【解决方案1】:

    在我看来,回复本身就是一条消息,那么为什么它会进入单独的表格。回复回复会发生什么?那时你似乎会有一个空 FK。

    我的第一个想法是:

    • 将 ParentID 列添加到 Messages 表
    • 将根消息的 ParentID 设置为 0
    • 如果是回复,请将 ParentID 设置为 MessagesID

    使用这种结构,您可以轻松跟踪对回复的回复,并且线程可以继续深入到您想要的深度......

    只是我的想法……

    【讨论】:

    • 是的,您确实是正确的,但是在这种情况下,我将如何获得所选消息的所有回复?
    • 如果你有消息ID(比如存储在变量$message_id中):SELECT * WHERE parentID = '$message_id'
    • 哦,这很有道理。另一个问题是,如果想在收件箱中显示消息而不是回复,你会select subject from messagetbl where RecUserID = $userid AND parentID =0 我正确吗?
    猜你喜欢
    • 2012-02-04
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2015-12-10
    相关资源
    最近更新 更多