【发布时间】:2011-11-03 07:03:02
【问题描述】:
我有一个用户驱动的网站。我想添加消息传递功能。我关心的是我的数据库的可管理性和性能。
我正在考虑这样组织它:我有我的用户表,我的所有用户都有唯一的 id 两个用户之间的任何用户发起的对话都会在“对话”中记录,并且该对话中的所有消息都将使用引用该对话 ID 的外键。
谁能想到不采用这种方法的任何理由?如果我使用索引并将查询限制为每页约 20 个结果,我想知道它的长期性能如何。
+--------+
| users |
+--------+
|users_id|
| |
+--------+
+-------------+
|conversations|
+-------------+
|id |
|user_id1 |
|user_id2 |
+-------------+
+----------------------+
|conversations_messages|
+----------------------+
|id |
|conversations_id |
|message_body (varchar)|
|message_time (unix timestamp
+----------------------+
编辑: 我意识到我无法追踪谁是发件人/收件人。我的第一直觉是简单地在对话消息中添加一个“发件人”列
【问题讨论】:
-
我担心“user_id1”/“user_id2”列。如果您希望对话中有两个以上的人,则必须对其进行更改,并且要查找单个用户所在的所有对话,您必须检查这两列。
-
@Doug Kress,这是一个有趣的观点。您有任何建议的替代方案吗?
标签: mysql database database-design database-schema database-performance