• 项目:数据库表的梳理


    总共4张表---发私信功能未实现,所以只有用户表、登录凭证表、帖子表、评论表四张。

     1.user用户表

    1. CREATE TABLE `user` (
    2.   `id` int(11) NOT NULL AUTO_INCREMENT,
    3.   `username` varchar(50) DEFAULT NULL,
    4.   `password` varchar(50) DEFAULT NULL,
    5.   `salt` varchar(50) DEFAULT NULL,
    6.   `email` varchar(100) DEFAULT NULL,
    7.   `type` int(11) DEFAULT NULL COMMENT '0-普通用户; 1-超级管理员; 2-版主;',
    8.   `status` int(11) DEFAULT NULL COMMENT '0-未激活; 1-已激活;',
    9.   `activation_code` varchar(100) DEFAULT NULL,
    10.   `header_url` varchar(200) DEFAULT NULL,
    11.   `create_time` timestamp NULL DEFAULT NULL,
    12.   PRIMARY KEY (`id`),
    13.   KEY `index_username` (`username`(20)),
    14.   KEY `index_email` (`email`(20))
    15. ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8;
    • username用户名称
    • password用户密码
    • salt盐用来加密
    • email用户的邮箱
    • type用户的类型 0表示普通用户 1表示超级管理员 2表示版主
    • status 0表示未激活 1表示激活
    • activation_code激活码
    • header_url头像地址
    • create_time用户注册时间

    2.discuss_post帖子表

    1. CREATE TABLE `discuss_post` (
    2.   `id` int(11) NOT NULL AUTO_INCREMENT,
    3.   `user_id` varchar(45) DEFAULT NULL,
    4.   `title` varchar(100) DEFAULT NULL,
    5.   `content` text,
    6.   `type` int(11) DEFAULT NULL COMMENT '0-普通; 1-置顶;',
    7.   `status` int(11) DEFAULT NULL COMMENT '0-正常; 1-精华; 2-拉黑;',
    8.   `create_time` timestamp NULL DEFAULT NULL,
    9.   `comment_count` int(11) DEFAULT NULL,
    10.   `score` double DEFAULT NULL,
    11.   PRIMARY KEY (`id`),
    12.   KEY `index_user_id` (`user_id`)
    13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • user_id表示发帖人的id
    • title表示标题
    • content表示帖子内容
    • type表示帖子类型 0表示普通帖子 1表示置顶帖子
    • status表示帖子的状态 0表示正常帖子 1表示精华帖 2表示拉黑帖
    • create_time表示发帖日期
    • comment_count表示帖子的评论数,是一个冗余参数,目的是为了提供查询效率

    3.login_ticket登录凭证表

    1. CREATE TABLE `login_ticket` (
    2.   `id` int(11) NOT NULL AUTO_INCREMENT,
    3.   `user_id` int(11) NOT NULL,
    4.   `ticket` varchar(45) NOT NULL,
    5.   `status` int(11) DEFAULT '0' COMMENT '0-有效; 1-无效;',
    6.   `expired` timestamp NOT NULL,
    7.   PRIMARY KEY (`id`),
    8.   KEY `index_ticket` (`ticket`(20))
    9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    登录凭证表,目的是为了保护用户数据的安全,用于检测用户是否处于登录状态,然后在启动服务器时通过拦截器获取登录凭证创建User对象

    • user_id用户id
    • ticket凭证编号
    • status凭证状态 0表示有效凭证 1表示无效凭证
    • expired用于检测这个凭证是否已经过期

    4.comment评论表

    1. CREATE TABLE `comment` (
    2.   `id` int(11) NOT NULL AUTO_INCREMENT,
    3.   `user_id` int(11) DEFAULT NULL,
    4.   `entity_type` int(11) DEFAULT NULL,
    5.   `entity_id` int(11) DEFAULT NULL,
    6.   `target_id` int(11) DEFAULT NULL,
    7.   `content` text,
    8.   `status` int(11) DEFAULT NULL,
    9.   `create_time` timestamp NULL DEFAULT NULL,
    10.   PRIMARY KEY (`id`),
    11.   KEY `index_user_id` (`user_id`) /*!80000 INVISIBLE */,
    12.   KEY `index_entity_id` (`entity_id`)
    13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • user_id用于表示发这条评论的用户id
    • entity_type表示评论的类型 :1表示回复帖子的评论 2表示回复评论的评论
    • entity_id表示该评论的帖子id
    • target_id表示回复时回复对象的id,如果id=0说明这是一条回复帖子的评论,如果id!=0说明这是回复target_id用户的评论
    • content评论内容
    • status评论的状态0表示有用的评论 1表示以删除的评论
    • create_time评论的发表时间

    5.message消息表

    1. CREATE TABLE `message` (
    2.   `id` int(11) NOT NULL AUTO_INCREMENT,
    3.   `from_id` int(11) DEFAULT NULL,
    4.   `to_id` int(11) DEFAULT NULL,
    5.   `conversation_id` varchar(45) NOT NULL,
    6.   `content` text,
    7.   `status` int(11) DEFAULT NULL COMMENT '0-未读;1-已读;2-删除;',
    8.   `create_time` timestamp NULL DEFAULT NULL,
    9.   PRIMARY KEY (`id`),
    10.   KEY `index_from_id` (`from_id`),
    11.   KEY `index_to_id` (`to_id`),
    12.   KEY `index_conversation_id` (`conversation_id`)
    13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    • from_id是发消息的人的id
    • to_id是发送目标的人的id
    • conversation_id也是一个冗余的字段目的是便于查询,规则以from_id和to_id用_拼接且小的在前大的在后
    • content消息内容
    • status消息的状态 0表示未读 1表示已读 2表示删除
    • create_time消息的发送时间
  • 相关阅读:
    源码学习之MyBatis的底层查询原理
    和对手‘打’成一片
    让数据流动起来,RocketMQ Connect 技术架构解析
    css第十课:列表属性及背景属性
    高效并发:Synchornized的锁优化详解
    Java 复习笔记 - 常见算法:API Arrays
    学习记忆——数学篇——案例——代数——方程——一元二次方程
    来看看你是不是真的了解 RSA 加密算法,查漏补缺!
    clip studio paint插件开发之服务套件(四)
    SpringBoot集成WebSocket实现在线聊天
  • 原文地址:https://blog.csdn.net/weixin_45780538/article/details/125990940