ユーザー主導のウェブサイトがあります。メッセージング機能を追加したい。私の懸念は、データベースの管理性とパフォーマンスに関連しています。
私はそれを次のように整理することを考えています:ユーザーテーブルがあり、すべてのユーザーが一意のIDを持っています2人のユーザー間のユーザーが開始した会話には「会話」のレコードがあり、その会話のすべてのメッセージは参照する外部キーを使用しますその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に「sender」列を追加することです。