消息应用程序数据库设计

时间:2021-02-09 00:25:35

标签: sql sql-server data-structures

该应用应允许私人(直接 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

这是一个糟糕的设计吗?任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为为私人消息创建一个聊天室不是一个好主意,因为 - 在你写的时候 - 在这种情况下,你会偶尔有很多只有两个成员的聊天室。存储此聊天室,包括。会员将没有任何好处。您必须将这两种类型(私人对话和聊天室消息)分开。

因此,您可以为这样的私人对话创建新表,而不是这样:

Table Conversations
-----------------
Id
User1
User2
Started

Table ConvMessages
-----------------
Id
ConversationId
Sender
Content
Date

其他表(ChatRoomMembersMessages)仅用于真正的聊天室对话。

相关问题