码迷,mamicode.com
首页 > 数据库 > 详细

关于聊天记录数据库表结构设计

时间:2018-06-07 14:26:03      阅读:503      评论:0      收藏:0      [点我收藏+]

标签:lin   ica   null   一个   pre   格式   结构   tab   应该   

1、首先表结构设计针对单个用户,然后拓展到n个用用户记录的存储。

2、这里会用msql数据库给出数据库表脚本,但是实际生产环境应该是在APP端生成sqlite数据库文件,把sqlite文件上传到server端作为聊天记录存储。

有【联系人表】、【群组表】、【会话表】、【用户表】、【聊天记录表】

# 聊天记录表

CREATE TABLE `message` (
  `msg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 消息id,自增长,
  `msg_type` int(11) DEFAULT NULL COMMENT 类型 1:文字;47:emoji;43:音频;436207665:红包;49:文件;48:位置;3:图片,
  `is_send` int(11) DEFAULT NULL COMMENT 是否是自己发送 0:不是;1:是,
  `create_time` datetime DEFAULT NULL COMMENT 消息发送时间,
  `content` text COMMENT 消息格式【发信人id:内容】,
  `talker` varchar(55) DEFAULT NULL COMMENT ‘聊天对象。群聊,则是群id(xxx@chatroom);一对一,聊天对象的唯一标识。,
  PRIMARY KEY (`msg_id`),
  KEY `index_chat_id` (`talker`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

注意?? content:不是自己发送的消息,并且是群聊,才会带有发信人id标记。

msg_id在同一个账户切换了设备后产生的msg_id可能是重复的,所以在聊天记录存储在server端时需要注意到这一点。

 

#联系人表

CREATE TABLE `recontact` (
  `username` varchar(45) NOT NULL COMMENT 联系人唯一标识,
  `nickname` varchar(45) DEFAULT NULL COMMENT 联系人昵称,
  `remark` varchar(45) DEFAULT NULL COMMENT 备注名称,
  `avatar` varchar(200) DEFAULT NULL COMMENT 联系人头像地址,
  `is_friend` varchar(45) DEFAULT NULL COMMENT 是否是好友。1,3 好友 4;群里非好友,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=联系人,非好友;

联系人表存储了好友以及非好友。

#群组表

CREATE TABLE `chat_room` (
  `chat_room_name` varchar(30) CHARACTER SET utf8mb4 NOT NULL,
  `member_list` text CHARACTER SET utf8mb4 COMMENT 群组成员id列表,分号分割。a53255001;nan1242;jiabailo002,
  `display_name_list` text CHARACTER SET utf8mb4 COMMENT 群成员昵称列表【中文顿号分割】海、二、老僧、刘伟、齐彬、毛、Echo、曹,
  `room_owner` varchar(45) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 群主id,
  `self_display_name` varchar(45) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 自己在群里的自定义群昵称,
  `chat_room_nick` varchar(45) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT 群昵称,没有自定义群昵称则从display_name中截取20个字符作为群昵称。,
  PRIMARY KEY (`chat_room_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT=群组;
chat_room_name为群id,格式为xxx@chatroom

#用户表

CREATE TABLE `users` (
  `id` varchar(45) NOT NULL COMMENT 用户id,
  `nickname` varchar(45) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  `sign` varchar(200) DEFAULT NULL COMMENT 签名,
  `city` varchar(45) DEFAULT NULL,
  `provincial` varchar(45) DEFAULT NULL COMMENT 省份,
  `avatar_url` varchar(500) DEFAULT NULL COMMENT 头像,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  KEY `index_updated_at` (`updated_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=用户;

 

 

 

 

关于聊天记录数据库表结构设计

标签:lin   ica   null   一个   pre   格式   结构   tab   应该   

原文地址:https://www.cnblogs.com/xxoome/p/9149923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!