1

如何Message在 mySQL 中创建这样的表来存储消息及其响应?

在此处输入图像描述

4

2 回答 2

7

你可以试试这个:

create table messages (
    message_id int primary key,
    response_to int null references messages(message_id), -- self relationship
    user_from int not null references users(user_id),
    user_to int not null references users(user_id),
    content varchar(200) not null
);

第一条消息将有一个null值 unresponse_to字段。

附带说明一下,如果您打算存储“对话”而不是“消息”,请考虑使用带有 CLOB(字符大对象)的普通表来存储对话的 JSON 或 XML 表示。它将加快您的查询速度(如果您总是计划一次阅读整个对话而不是单个消息)。

于 2013-03-25T10:23:07.143 回答
1

您可以创建一个引用原始 messageId 的 foreign_key,但不要忘记允许 null 值,因为原始消息不会设置此键。

但是拥有一个线程表不是更好的方法,然后在消息表中保存 threadId 以便您可以匹配哪些消息属于哪个线程,发布时间可能是识别响应消息的一个很好的指标。

于 2013-03-25T10:23:35.680 回答