zoukankan      html  css  js  c++  java
  • 关于聊天记录数据库表结构设计

    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='用户';

     

    QQ技术交流群:282575808

    --------------------------------------

    声明: 原创文章,未经允许,禁止转载!

    --------------------------------------

     

     

  • 相关阅读:
    [开源项目]蓝点无限TWR算法-多基站多标签固件
    [开源项目] 蓝点无限 UWB Python版本上位机
    记一次RabbitMQ的脑裂(网络分区)问题
    使用Docker持久化部署SQL Server
    .NET---Exceptionless 轻量级的分布式日志管理平台
    python性能测试工具locust
    Javascript —— 线转树 or 树转线
    记录一个生僻知识点 —— JS字符模板替换
    车证识别工具|行驶证识别工具|行驶证识别OCR工具免费版V3.0.0.0
    C# CAD 凹凸点识别最大轮廓
  • 原文地址:https://www.cnblogs.com/xxoome/p/9149923.html
Copyright © 2011-2022 走看看