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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于聊天记录数据库表结构设计
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
--------------------------------------
声明:原创⽂章,未经允许,禁⽌转载!
--------------------------------------。

相关文档
最新文档