web开发之即时通讯数据库设计 - Go语言中文社区

web开发之即时通讯数据库设计


很多web应用带有站内信的功能,或者类似于新浪微博一样的聊天功能,这篇文章针对即时通讯的数据库设计发表一下自己的看法。


首先说一下需求:设计一个IM系统,实现私信聊天群聊功能并可以发送图片或者其他附件


设计思路:把开始一个聊天会话想象成开一个聊天室,如果是私信聊天,那么这个聊天室里面就只有两个人,如果是群聊,那么这个聊天室就有多个人。这个过程中涉及到的三个实体,聊天室参与者聊天内容


聊天室:房间号,创建人(聊天发起者),房间名(第一条信息),房间人数,参与者编号,创建时间

参与者:房间号,参与者编号,发送消息总数,未读消息总数,该用户最后的会话时间,该房间最后会话时间,是否删除

聊天内容:内容编号,房间编号,内容发起者编号,内容,发起时间,是否删除,附件


分析:聊天室实体中,参与者编号用的是字符串类型的数据类型,如果编号为1的用户跟编号为2的用户私信聊天,则记录这两个用户的编号,记录成1-2;假如编号为1,编号为2和编号为3的用户群聊,则记录成1-2-3;

参与者实体中,主键是(房间号,参与者编号);

聊天内容中,附件可以另外设计一张附件表,存储整个系统的附件信息,这里存储附件在附件表的唯一编号。


物理模型如下:

聊天室:im_room




参与者:im_member



聊天内容:im_content


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Jahnng/article/details/43818179
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 22:30:03
  • 阅读 ( 1555 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢