2013-07-25 54 views
1

我們需要在基於spring MVC的web應用程序中創建一個聊天功能。如何爲聊天功能創建數據庫設計?

會有兩種聊天一對一聊天和羣聊。

對於羣組聊天我已經提出了以下架構。

Table = group_chat 

User_id, message, message_on (datetime), group_id 

雖然我不確定一對一聊天。

一對一聊天可能發生在羣組之外或兩個羣組成員之間的羣組內。

請幫

回答

5

你的問題是有點開放式的,由於這樣的事實,我們不知道你的架構或要求任何東西。然而,對於本質上相同類型的數據而言,有兩個單獨的表看起來像是一種代碼味道。我可能會從這樣的結構開始,並根據它的表現來迭代它。

USERS 
user_id 
username 
password 

GROUP 
group_id 
name 

GROUP_MEMBERS 
group_id 
user_id 

MESSAGE 
message_id 
timestamp 
from_user_id 
destination_type (enum - group, user) 
destination_id 

您對您的聊天功能,任何添加,然後自動傳播到兩個對等網絡和羣聊。當然,這也要求你的代碼遵循將兩​​種類型的聊天結合到同一類中的原理。

+0

嗨!我發現你的答案很有趣。但是有一點我不清楚:我如何獲得特定用戶一直處於活動狀態的最近5個話題(私人或小組)的列表?你能寫一個示例查詢嗎? –

+0

另一個問題:字段「destination_id」是與哪個字段相關的外鍵? Group_id ....或者group_id和user_id? –