2010-08-08 70 views
-4

我目前已经设计了一个使用这样简单的表格简单发送消息接收消息的系统。 现在我需要一个额外的信息,即哪个消息属于哪个对话。 关于实现这种系统的任何想法提示或指导?实现会话风格的私人消息系统

 
CREATE TABLE messages (
    ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    FromID INT NOT NULL, 
    ToID INT NOT NULL, 
    Deleted BOOLEAN DEFAULT FALSE, 
    SentDeleted BOOLEAN DEFAULT FALSE, 
    Subject varchar(255), 
    Message varchar(255), 
    DateTime DATETIME          
    ) ENGINE=InnoDB; 
+0

“SentDeleted BOOLEAN DEFAULT FALSE”是什么意思? – Alexandre 2012-01-16 09:49:05

回答

2

更常见的方法是拥有一个线程表和消息表。当一个会话开始时,创建一个线程记录并将消息记录的thread_id列设置为它。将所有回复的thread_id也设置为该线程。这样,你可以选择* FROM消息,其中thread_id = x

+0

我喜欢这个,实际上,让我试试看,谢谢。 我应该在对话表中保存什么样的额外信息? 唯一ID WhoInitiatedConversation WhenWasItInitiated 或者我真的只需要一个列ID? – user391986 2010-08-08 19:31:31

+0

这可能是最直接的方式。如果你在这里额外的信息,这将是你可以轻松搜索。例如,如果你想列出一个收件箱的所有对话,你可以只是 选择*从线程在哪里user_id = x 所以我会存储date_created,user_id,主题 – 2010-08-08 21:18:47

+0

当然还有一个自动增量id – 2010-08-08 21:19:14

3

只需添加一个名为parent_message_id的int列并将其设置为您要回复的消息的ID。

+1

我喜欢它。您可以使用一些递归进行数据库查询。这将是史诗般的。 – mattbasta 2010-08-08 04:53:28

+0

哈哈,我以前做过。 – 2010-08-08 05:46:28

+0

如果我为特定对话的每个连续消息使用这个额外的parent_id,那么父母会成为第一个初始消息还是在对话之前的第一个初始消息? – user391986 2010-08-08 19:29:48