【问题标题】:Messaging system database schema消息系统数据库架构
【发布时间】:2014-10-23 23:05:41
【问题描述】:

我正在尝试在 PHP 和 MySQL 中实现一个消息传递系统,但在决定如何处理表和查询时遇到了一些麻烦。

对于允许多个参与者的系统来说,最好的方法是什么?我想我可能需要 3 个表(除了用户表)。

类似

Conversation
------------
id

Messages
--------
id
conversation_id
from_id
subject
message
from_timestamp

Participants
------------
conversation_id
user_id
last_read_timestamp

它的设置方式我必须通过时间戳检查已读消息,而不是勾选每条消息。我也可以随时添加参与者。

你们觉得呢?

提前致谢。

【问题讨论】:

  • @ChrisWalton - 'from_id' 将是消息发件人的 user_id。许多参与者可能属于一个对话,但一条消息可能只属于一个参与者(或前参与者 - 仍在考虑如何做到这一点)。对话的所有参与者都可以看到与其相关的消息。干杯
  • 我认为from_id是作者的user_id。如果我理解正确,“参与者”表会将对话链接到用户表(此处未显示)并存储用户上次阅读此对话的时间。
  • 很想看看你是如何处理一个参与者的问题的!这是我见过的更好的表模式之一。

标签: mysql database schema messaging message


【解决方案1】:

我看不出有什么可抱怨的 :) 我可能会将上次修改日期缓存在对话表中,以便可以快速显示“未读”对话列表。每次在对话中发布消息时,都会更新此日期。

【讨论】:

    【解决方案2】:

    我会把主题字段放在对话表上。把它放在每条消息上看起来是多余的。 此外,我会将对话的创建时间和作者用户 ID 保存在其表中。

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2013-06-24
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2012-09-22
      • 2011-01-28
      相关资源
      最近更新 更多