私信基本功能資料庫設計
私信基本功能資料庫表設計 CREATE TABLE `private_message` ( `id_` bigint(20) NOT NULL auto_increment COMMENT '主鍵id', `user_id` bigint(20) NOT NULL COMMENT '傳送者id', `friend_id` bigint(20) NOT NULL COMMENT '接受者id', `sender_id` bigint(20) NOT NULL COMMENT '傳送者id', `receiver_id` bigint(20) NOT NULL COMMENT '接受者id', `message_type` tinyint(4) NOT NULL COMMENT '訊息型別(1:普通訊息 2:系統訊息)', `message_content` varchar(500) NOT NULL COMMENT '訊息內容', `send_time` datetime NOT NULL COMMENT '訊息傳送時間', `read_time` datetime NOT NULL COMMENT '訊息閱讀時間', `delete_time` datetime NOT NULL COMMENT '訊息刪除時間', `if_read` tinyint(1) NOT NULL default '0' COMMENT '是否已讀 (0:未讀 1:已讀 )', `if_collect` tinyint(1) NOT NULL default '0' COMMENT '是否已收藏 (0:未收藏 1:已收藏 )', `del_flag` tinyint(1) NOT NULL default '0' COMMENT '是否刪除 (0:未刪除 1:已刪除 )' PRIMARY KEY (`id_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='私信訊息表'
建立private_message表,欄位說明: id_:主鍵,自增長 user_id: 傳送者id,非真實發送者id friend_id: 接受者id,非真實接受者id sender_id:傳送者id,真實的傳送者id receiver_id:接受者id,真實的接受者id message_type:訊息型別,1:普通訊息 2:系統訊息,區分訊息列表,可以傳送不同型別的訊息內容 message_content:訊息內容 send_time:訊息傳送時間 read_time:訊息閱讀時間 delete_time: 訊息刪除時間 if_read:訊息狀態 (0:未讀 1:已讀 ),標記不同訊息狀態,可以實現統計未讀訊息數 if_collect:訊息狀態(0: 未收藏 1: 已收藏),標記不同訊息狀態,可以實現統計收藏訊息數 del_flag:訊息狀態 (0:未刪除 1:已刪除 ),標記不同訊息狀態,邏輯刪除使用者恢復等
使用兩套傳送者id是考慮到單方刪除記錄,不會影響對方檢視的功能,所以在傳送私信時需要插入兩份一樣內容的資料;四個欄位並沒有重複,不然還需另外一個欄位標識是發出還是收到的,在做唯一性的篩選&&排序時可能就需要union,會影響效能.