基于springBoot、Vue、websocket的聊天系统:数据库设计
一般来说,需求出来之后,经过需求评审后,就需要进行数据库的设计了,毕竟后续功能的开发,很大程度上依赖于表结构的设计,下面简单聊聊web聊天系统的数据库是如何设计的。如需更全面的了解该系统,可以阅读相关文章:(1)基于springBoot、Vue、websocket的聊天系统总体概述目前,该系统一共设计了7张表:1.系统用户表:sys_user2.聊天室:chat_room3.用户聊天室关联表:us
一般来说,需求出来之后,经过需求评审后,就需要进行数据库的设计了,毕竟后续功能的开发,很大程度上依赖于表结构的设计,下面简单聊聊web聊天系统的数据库是如何设计的。如需更全面的了解该系统,可以阅读相关文章:
(1)基于springBoot、Vue、websocket的聊天系统总体概述
目前,该系统一共设计了7张表:
1.系统用户表:sys_user
2.聊天室:chat_room
3.用户聊天室关联表:user_room
4.好友表:friendship
5.好友分组表(暂时没有用到):friend_group
6.消息接受表:chat_message
7.消息详情表:chat_message_detail
具体如下图所示:
1.系统用户表:sys_user
这个表设计得比较常规,除了is_online字段,这个字段主要是为了判断好友是否在线
2.聊天室:chat_room
这个表有两个字段需要说明一下(目前都没有用上):(1)master_id,群主的用户id (2)manager_ids,管理员的id集合,多个用英文逗号隔开
3.好友表:friendship
设计的时候,考虑的就是,怎样判断谁是谁的好友,目前是设计是:
(1)user_id,是自己的id,friend_id,是好友的id,所以,如果双方是好友,是有两条记录的,用来表明,你是我的好友,同时,我也是你的好友
(2)status字段为0,表示发送了添加好友的请求,等待对方验证通过,如果通过,则status修改为1,否则修改为2
4消息接受表及详情表:chat_message、chat_message_detail
你可能会问,一张表就可以完成的事,为什么要把一个消息表,拆分成两个表?主要是出于以下考虑:
(1)消息内容,是个大字段,拆开存储,有助于实现按需查询数据
(2)对于群聊消息,同一份数据,保留了多份,这样就浪费了空间
更多推荐
所有评论(0)