专栏名称: 黎伟杰
Android开发工程师
目录
相关文章推荐
贵阳日报  ·  贵阳首金! ·  6 小时前  
阜阳新闻网  ·  逐梦姜尚故里!临泉马拉松报名从速啦! ·  昨天  
阜阳新闻网  ·  逐梦姜尚故里!临泉马拉松报名从速啦! ·  昨天  
话沈阳  ·  刚刚,辽宁队夺得季军! ·  2 天前  
话沈阳  ·  刚刚,辽宁队夺得季军! ·  2 天前  
广西新闻频道  ·  官宣:孙颖莎,断层世界第一! ·  2 天前  
广西新闻频道  ·  官宣:孙颖莎,断层世界第一! ·  2 天前  
51好读  ›  专栏  ›  黎伟杰

IM 的数据库设计

黎伟杰  · 掘金  ·  · 2018-10-23 15:28

正文

阅读 36

IM 的数据库设计

本文主要是给一些开始接触IM系统,做客户端本地数据库的人员介绍的。如有错误还请指出,thx.

自己目前做过两个IM系统,接触过一般常用的IM,都是自己开发没用第三方的,所以就总结一下IM系统中客户端的数据库的基本设计的字段。

这里只是一般需要字段,针对自己的需求(很多时候需要根据UI进行修改定制),需要自己看需求添加or删除。

主要表

一般主要需要建立的表包括:

  1. 会话表

  2. 聊天详情表

  3. 群组表

  4. 群组信息表

  5. 群成员

  6. 联系人表

表字段设计

a. 会话表

一般主要的字段如下:


id->auto increament primary key 自增长主键

uid->integer/varchar 该条消息所属消息,比如我登陆了,我发送/接收到消息入库的时候写入自己的uid,他的作用是多用户登陆的时候区分回话表

chatId->integet/varchar 服务器生产回话 id当前的回话id,它作用是标识一个回话,比如我跟你聊天or 你跟我聊天,我们的回话id应该是一致的,对于群聊也是,在群中发送消息,每个人的回话id是一致的。

c_id->varchar unique,他是标记一台设备上某个用户的唯一回话,用于更新避免插入多条数据的,可以用到sqlite的update or replace,他的值可以是hash(uid+chatid)或者其他,该字段可以只是客户端具有,客户端生成并且自己维护。

from->integer/varchar 发送人id(自己发送就是自己的uid,不然就是别人的uid)

to->integer/varchar 接收人id(uid/group_id)

last_msg->varchar 最后的一条消息内容

last_user_name->varchar 最后的发送者名称

last_time->integer 最后消息发送时间

chat_type->integer 回话类型(群组消息/个人聊天/系统消息)

msg_type->integer 消息类型(文字/图片/文件/音乐等)

unread_count->integer 改回话未读数目

复制代码

该表注意的问题:同一个回话不要插入多条数据,利用c_id来进行replace数据,比如收到一个新的回话消息存在就更新就好了。可以用触发器也可以用sql语句。

b. 聊天详情表

字段设计:


id->integer auto increament primary key 自增长主键

msg_id 消息唯一id,一般服务器生成,或者客户端本地使用UUID生成

uid->Interger/varchar 所属者uid

from->Interger/varchar  发送者uid

from_avatar->Interger/varchar 发送者头像

from_name-> varchar 发送者名称

to-> Interger/varchar 接受者(uid/group_id)

chat_type 会话类型

msg_type 消息类型

msg-> 消息内容

file_info->文件信息json格式

send_time->发送时间

send_status->发送状态 发送中,发送完成,发送失败

extra->把人插入 一般可以为null,预留的额外字段,使用JOSN字符串存储

复制代码

c. 群组表

字段设计


id->integer auto increament primary key 自增长主键

group_id Integer/varchar unique

group_name varchar 群组名称

group_name 群组头像

group_type 群组类型

group_num 群组数量

group_create_uid 群组创建者uid

复制代码

d. 群组信息表

群组信息的字段可以继承群列表的字段。字段设计


id->integer






请到「今天看啥」查看全文


推荐文章
贵阳日报  ·  贵阳首金!
6 小时前
话沈阳  ·  刚刚,辽宁队夺得季军!
2 天前
话沈阳  ·  刚刚,辽宁队夺得季军!
2 天前
广西新闻频道  ·  官宣:孙颖莎,断层世界第一!
2 天前
广西新闻频道  ·  官宣:孙颖莎,断层世界第一!
2 天前
奔波儿灞与灞波儿奔  ·  这是一场赌上尊严的战争
8 年前
Excel技巧精选  ·  提取不重复值 老司机来带路!
7 年前
时尚女装搭配  ·  内衣穿不对,再美的衣服都白费!
7 年前