微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

消息应用程序数据库设计

如何解决消息应用程序数据库设计

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。