sql-server - 集体网络聊天

标签 sql-server database schema

我需要开发一个具有“高级”功能的网络聊天:群组聊天 - 就像 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/

相关文章:

xml - XML 文档可以同时遵循 DTD 和 XML Schema 吗?

mysql - 修复表还是创建并移动到新表?

sql-server - SQL Server 2000、ADO 2.8、VB6

sql - 工作日SQL查询

c++ - ODB C++ - 未知的数据库架构错误

asp.net - 哪个最快?数据检索

php - 如何使用外键将值保存到数据库

python - 使用 Python 将 Pandas Dataframe 插入到 SQL-Server - Jupyter Notebook

sql-server - 如何在 SQL Server 中使用前导通配符全文搜索?

c# - 在 C# 中执行 sql 更新命令后没有任何反应。我的错误在哪里?