如何解决具有一侧删除功能的聊天模式
我正在努力寻找一种允许在关系数据库(PostgreSQL)中从会话的一侧删除的聊天模式。
这是我最好的方法:my schema
我发现的所有架构都是关于双方的删除,这不是我所需要的。 我希望能够从对话的一侧删除,,如果对话重新开始,用户1仍然拥有所有消息,而用户2仅具有删除后发送的消息。 因此,我的想法是要有很多对很多关系表(deleted_messages),这些表将消息与用户相关联,并在用户删除会话中包含该会话中的那些消息时完全填充该表。
但是,我不确定这种方法是否是最佳方法,因为我的数据库将需要查看是否没有针对每条检索到的消息删除该消息。随着Deleted_messages表的增长,这将变得越来越混乱,我担心性能。
对于我的问题,有什么更好的解决方案,或者这种方法很好? 谢谢您的关注。
解决方法
正如您提到的“如果对话重新开始,用户1仍然拥有所有消息,而用户2只有删除后发送的消息”。这涉及两种情况:
-
如果用户删除特定消息,则应该使用已有的架构。
-
如果用户删除聊天记录作为时间参考,那么您应该创建单独的表,如下所示。在单个用户的已删除邮件中,每封邮件都有一条记录会随着数据的增长而导致严重的性能问题。 创建下表,并在获取数据时根据时间戳过滤数据。
创建表Deleted_chat_history ( userId int, chatRoomId int, [时间戳]时间戳, 外键(userId)引用用户, 外键(chatRoomId)引用chat_room )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。