9
我想製作一個像facebook一樣的Web消息系統。我已經想到了很多數據庫結構的替代方案,但不確定哪個是最佳實踐。我在這裏有兩個選擇,第一個使用兩個表格,第二個使用三個表格,但在ERD中創建一個循環。Web消息系統的數據庫結構
第一:兩個表,在該消息表是指本身
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
二:三個表,但要一個週期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
就個人而言,我喜歡這樣的結構,因爲它是隻使用一個消息頭和許多消息(內容)。 author_id本身不能被刪除,因爲我需要它來知道消息是在左側(作爲發送者)還是右側(作爲接收者)。這個系統只適用於兩人消息系統。
基本上這兩張表是一樣的,但是這是實現這個消息系統的最佳實踐嗎?謝謝你。
如果該消息通過答覆的順序來鏈接到某個消息,或者它們應該被列爲每個時間戳 – aeonsleo
使用應答順序(較高IDS第一)可以是小更便宜,但你可能會考慮時間戳順序(當然,有一個合適的索引),比如說,有人在沒有互聯網的情況下應答,並且需要一些時間纔能有效地將消息發送到數據庫。也就是說,你決定:> –
「is_from_sender」屬性有什麼用處? –