我需要开发一个具有“高级”功能的网络聊天:群组聊天 - 就像 Skype 的聊天系统。
理论很简单,实践起来却很困难。从上周五开始我就在考虑这个问题,但我不知道如何应用这个架构。基本上我需要一个结构良好且没有存储冗余的数据库设计。
好的.......到目前为止看起来很简单,但现在我将介绍我们的主要功能:用户历史记录。
我可以与 2 个用户创建一个聊天。好的,两天过去了,我想添加第三个用户加入对话。他的聊天记录将有所不同:他将无法查看该聊天中的旧消息。
很棒吧?记住, friend 们:我不能使用 XML 在本地存储历史记录。我需要使用 SQL 数据库。就我而言,我使用的是 Microsoft 的 SQL-Server。
你们都能理解我的问题吗?如果是,那不是微不足道的,是吧?好的。有人能想到我该如何解决这个问题吗?我要疯了!
最佳答案
实际上这个问题是微不足道的。将其存储在 XML 中才是真正的问题。
- 用户(用户 ID、姓名)
- 聊天(ChatId、ChatName)
- ChatParticipation(ChatParticipationId、UserId、JoinChatMessageId、LeaveMessageId)
- ChatMessages(ChatMessageId、ChatId、UserId、消息)
通过添加 ChatParticipation
表,您将确切知道用户加入聊天时使用的 ChatMessageId
(JoinChatMessageId
),并且不要不要向他显示之前的消息。 LeaveMessageId
可以跟踪他离开聊天室的时间。多个加入/离开可以建模为单独的参与。
关于sql-server - 集体网络聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143654/