15

FacebookのようなWebメッセージングシステムを作りたいです。私はすでにデータベース構造の多くの代替案を考えていますが、どれがベスト プラクティスであるかはわかりません。ここには 2 つの選択肢があります。1 つ目は 2 つのテーブルを使用し、2 つ目は 3 つのテーブルを使用していますが、ERD でサイクルを作成します。

1 つ目: メッセージ テーブルがそれ自体を参照する 2 つのテーブル

user
----------
id
name

message
--------------
id
from_id
to_id
message_id --> refer to this table itself, to make me know which message is the topic
subject
content
time
status --> inbox, outbox, archive
read --> read, unread

2 番目: 3 つのテーブルですが、erd でサイクルを作成します

user
----------
id
name

message_header
--------------
id
from_id
to_id
subject
status --> inbox, outbox, archive
time

message
--------
id
message_header_id
content
time
read --> read, unread
author_id

個人的には、1 つのメッセージ ヘッダーと多くのメッセージ (コンテンツ) を使用するため、この構造が気に入っています。メッセージが左側 (送信側) にあるか右側 (受信側) にあるかを知る必要があるため、author_id 自体を削除することはできません。このシステムは、2 人用のメッセージング システムです。

基本的にこの 2 つのテーブルは同じですが、このメッセージング システムを実装するベスト プラクティスはどれですか? 前にありがとう。

4

1 に答える 1