您将如何创建线程消息传递系统?

时间:2009-02-09 00:29:51

标签: messaging

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

我想会有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个用户
  • 每个用户必须拥有自己的线程读/删状态

这是你设置它的方式吗?

2 个答案:

答案 0 :(得分: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)

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

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

答案 1 :(得分:0)

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

我还会将消息和message_thread表结合起来,因为它们看起来是1比1,可以合并。