在单个数据库表中存储不同聊天的消息

时间:2016-10-01 18:27:28

标签: database chat messages

我正在聊天的网站上工作。如何存储2个不同聊天的消息。我是否必须为每个聊天创建一个新表,或者我可以有一个存储所有聊天的表吗?

从长远来看(即在搜索期间),后一种方法是否会受到影响,因为每次用户打开聊天时都会从该表中检索所有消息?

2 个答案:

答案 0 :(得分:3)

这是我建议的,只使用一个表来存储消息,您将需要更多的表来维护其他相关数据。 同时对待一对一聊天也作为群聊只有最终用户才会被视为仅为1-1。

以下是开始使用的基本结构,实际上您必须添加更多列或更改结构以支持数据同步,读取,传递的收件人,附件等

Table: User
Columns: userId, name, image and other user info columns

Table: Group
Columns: groupId, name

Table: Group_User_X
Columns: groupId, userId

Table: Message
Columns: messageId, senderUserId, groupId, content

现在,要为任何给定用户加载消息,您只需加入Group_User_X和Message表,并获取用户所属组的消息。

如果您需要任何进一步的帮助,可以通过contact@applozic.com与我联系

答案 1 :(得分:0)

聊天应用程序的服务器端数据库

使用单个令牌密钥处理客户端和服务器之间的数据传输。这里,服务器端脚本在服务器而不是客户端服务器上运行,以便响应于用户设备中执行的操作来传递内容(消息)。

Server side database architecture

聊天应用程序的客户端数据库

该图说明了消息传输流程,其中服务器通过访问令牌密钥来将数据传输到客户端设备。此外,客户端设备会将请求发送到多个服务器,以使用客户端令牌密钥访问消息。

Client side database architecture