2009-02-09 82 views
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个用户参与了螺纹
  • 每个用户都必须有自己的读取/删除线程

状态这是你设置的方式它呢?

回答

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) 

允许线程,以及每个消息有它自己的主题。

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

0

我会添加一个状态记录表user_id,thread_id,status_id和状态改变的日期。

我也将消息和message_thread表组合起来,因为它们看起来是1对1,可以组合。

+0

我不认为message和message_thread是1到1,因为超过1条消息链接到1个message_thread。 – idevelop 2009-02-09 01:12:38

相关问题