我发现了两种在MySql数据库中存储用户聊天消息的方法(用于1对1聊天):
1. 将每条消息作为一行存储在名为“聊天”的表中。这些列存储发送消息的用户 ID、消息接收者的 ID、消息正文、发送消息的日期和时间以及消息是否被看到。
2. 另一种方法是将 2 个用户之间的所有聊天消息存储在单个字段中作为单个 JSON 对象数组。在数组中,每个对象都是一条消息。
应该遵循哪种方法?请帮忙。预先感谢。
严格来说,您的问题没有单一的正确答案。这取决于您的应用程序如何查询数据。
如果应用程序始终查询聊天消息的完整线程,那么也许将它们以 JSON(或任何其他格式)存储在一起会更有效。
但是如果应用程序有时需要:
然后将它们存储在单独的行中可能会更好。
当您不尝试将 SQL 表达式或逻辑应用于单个行和列中的内容时,SQL 效果最佳。 IE。没有子串。将每个字符串视为单个原子值会更好。
如果您需要存储相似值的集合,并打算访问集合中的各个值,请将它们存储为行集。