1

我想知道线程消息传递系统的表结构。

我想会有3张桌子:

- message_thread
    - id
    - subject
- message_user
    - thread_id
    - user_id
    - thread_status (unread, read, trash, deleted)
- message
    - date (date sent)
    - sent_user_id
    - message

每个message_thread人在 message_thread 中都有 1 条记录。每个用户都会有一个将message_user他们与该线程相关联的记录,以及他们对该线程的读取/删除状态。(message_user可能还包含一些关于不同状态何时发生的日期时间字段。)消息表将包含消息、发送它们的用户和时间。

该系统最终会像 Facebook 一样工作,或者看起来像 Gmail 的(尽管不是基于电子邮件)。

必需的:

  • 超过 2 个用户参与该线程
  • 每个用户必须有自己的线程读取/删除状态

这是你设置的方式吗?

4

2 回答 2

2

尝试一张表:

messages
  id (INT)
  user_id (INT, ref to users table)
  subject (CHAR)
  parent_id (INT, ref to messages table, NULL if head of thread)
  content (TEXT),
  (other per-message attributes)

允许线程化,以及每条消息都有自己的主题。

要添加阅读状态,请添加一个将用户链接到消息的多对多表,其中表中的条目表示用户已阅读该消息。

于 2009-02-09T00:33:27.450 回答
0

我会添加一个状态记录表,其中包含 user_id、thread_id、status_id 和状态更改的日期。

我还将组合 message 和 message_thread 表,因为它们看起来将是 1 对 1 并且可以组合。

于 2009-02-09T00:35:38.397 回答