我的基本想法是建立一個基於Web的聊天應用程序。爲了滿足我的要求,我在互聯網上查了很多數據庫結構,結論是有很多解決方案。需要數據庫結構的私人,組和公共聊天 - MySQL
因此,這裏的數據庫結構我認爲(但我敢肯定,這是不是100%正確,或至少可以改善)
表用戶:
id |用戶名|電子郵件| created_at |的updated_at
表chat_rooms
ID | room_type | created_at |的updated_at
表:room_members
ID | room_id | user_ids(在序列化形式)
表:消息
ID | room_id | sender_id |消息| created_at |的updated_at
表:接收機
ID | message_id | receiver_id | read_at
有3種類型的聊天記錄:
我)私人聊天 - 兩個用戶
- 之間聊天的用戶會選擇另一個用戶開始跟他聊天/她
II)集團聊天 - 用戶
的組之間的聊天- 的用戶將其他用戶添加到房間裏開始羣聊
三)公共聊天 - 所有用戶之間的聊天
- 一個開放的聊天室任何人都可以加入和發送消息
因此,這裏是它如何工作的:
我登錄到網站,重定向到儀表板頁面。在該頁面上,我有3個選項來開始上述聊天。
注:
1)如果有就應該儘快開始聊天(非常類似於Facebook)的顯示的用戶之間的先前聊天 - 這適用於所有三種類型的聊天記錄
2)我想有一個功能,說當一個特定的用戶閱讀一條消息。
3)我想保留它可擴展性,儘可能爲未來增強
感謝
我覺得room_members和接收者不需要他們自己的唯一ID,它可以只是一個複合鍵 – Kristian
私人聊天和羣聊實際上是一回事。這是關於誰有權將其他人添加到對話中 – Strawberry