1. 程式人生 > >站內信的資料庫設計

站內信的資料庫設計

站內信總體可以分為兩種:點到點,點到面

點到點即使用者給使用者,管理員給使用者
點到面即管理員給使用者組

點到點的設計

若只存在點到點或使用者量很少的情況下用一張表既可以

列名 含義
sendId 傳送者Id
recId 接受者Id
createAt 傳送時間
status 閱讀等狀態
content 內容
title 標題

使用者比較固定,點到點較多的設計

若使用者比較固定,點到點的訊息較多可以用兩張表來實現

表一(message_text)主要用來記錄訊息的具體內容屬性
表二(message)主要用來記錄訊息的接收物件閱讀狀態等資訊

表一表二均在建立表時生成。好處:減少訊息內容的重複儲存

message_text:

列名 含義
sendId 傳送者Id
createAt 傳送時間
content 內容
title 標題

message:

列名 含義
recId 閱讀者Id
createAt 傳送時間
status 閱讀等狀態

使用者資料量大,存在一定的殭屍使用者。點到面較多的設計

若使用者的資料量很大,使用第二種方法很可能在生成訊息一瞬間就要生成很多張表可能會造成伺服器宕機。若殭屍使用者多,會造成資源浪費。

使用兩張表解決:

表一(message_text)主要用來記錄訊息的具體內容屬性
表二(message)主要用來記錄訊息的接收物件閱讀狀態等資訊

表一建立表時生成,表二在使用者登入/拉取訊息列表時生成,好處:建立訊息時只記錄一條資訊,避免集中創表導致宕機,根據使用者的行為生成第二張表,避免殭屍使用者傳送訊息造成浪費

message_text:

列名 含義
sendId 傳送者Id
createAt 傳送時間
content 內容
title 標題
type 接收者型別單使用者/使用者群組
recId 接受使用者/使用者群組Id

message:

列名 含義
recId 傳送者使用者Id
createAt 接收時間
status 閱讀等狀態
messageId 訊息內容Id