2

我有一个用户驱动的网站。我想添加消息传递功能。我的担忧围绕着我的数据库的可管理性和性能。

我正在考虑这样组织它:我有我的用户表,我的所有用户都有唯一的 id 两个用户之间的任何用户发起的对话都会在“对话”中记录,并且该对话中的所有消息都将使用引用的外键那个conversation_id。

谁能想到不采用这种方法的任何理由?我想知道如果我使用索引并将查询限制为每页约 20 个结果,它的长期性能会如何。

+--------+
| users  |
+--------+
|users_id|
|        |
+--------+

+-------------+
|conversations|
+-------------+
|id           |
|user_id1     |
|user_id2     |
+-------------+

+----------------------+
|conversations_messages|
+----------------------+
|id                    |
|conversations_id      | 
|message_body (varchar)|
|message_time (unix timestamp
+----------------------+

编辑:我意识到我无法追踪谁是发件人/收件人。我的第一直觉是简单地添加一个“发件人”列到 conversations_messages

4

1 回答 1

3

看看我对这个问题的回答。我在那里解决了一个类似的设计问题。它包括处理谁看到了哪些消息以及谁是每条消息的发送者。

于 2011-08-25T15:11:01.007 回答