我想知道线程消息传递系统的表结构。
我想会有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(虽然不是基于电子邮件)。
必需:
这是你设置它的方式吗?
答案 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,可以合并。