问题描述
该应用应允许私人(直接 1 对 1 消息传递)和公共(群组)聊天室。
这就是我的想法
Table User
---------
UserID
Name
.
Table ChatRoom
--------------
ChattRoomID
Type //Either public or Private
.
Table Members
----------
MemberID //This is a foreign key from 'User'
ChatRoom //This is a foriegn key to 'ChatRoomId'
.
Table Messages
---------
ID
Sender //foreign key to MemberID or UserID
ChatRoom //foreign key from 'Chatroom'
content
即使是私人对话,它也会创建一个聊天室,但该 Member
中只有 2 个 Chatroom
。在群聊的情况下,Chatroom
将有多个 Members
这是一个糟糕的设计吗?任何想法都将不胜感激。
解决方法
我认为为私人消息创建一个聊天室不是一个好主意,因为 - 在你写的时候 - 在这种情况下,你会偶尔有很多只有两个成员的聊天室。存储此聊天室,包括。会员将没有任何好处。您必须将这两种类型(私人对话和聊天室消息)分开。
因此,您可以为这样的私人对话创建新表,而不是这样:
Table Conversations
-----------------
Id
User1
User2
Started
和
Table ConvMessages
-----------------
Id
ConversationId
Sender
Content
Date
其他表(ChatRoom
、Members
、Messages
)仅用于真正的聊天室对话。