一般来说,需求出来之后,经过需求评审后,就需要进行数据库的设计了,毕竟后续功能的开发,很大程度上依赖于表结构的设计,下面简单聊聊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)对于群聊消息,同一份数据,保留了多份,这样就浪费了空间

Logo

前往低代码交流专区

更多推荐