数据库设计文档
MySQL 数据库名称:edu
数据库表:
- activity_course 活动课程表
- course 课程表
- course_comment 留言表
- course_comment_favorite_record 点赞表
- course_lesson 课时表
- course_media 课程媒体表
- course_play_history 历史播放节点表
- course_section 章节表
- pay_order 支付订单信息表
- pay_order_record 支付订单状态日志表
- promotion_ad 广告表
- promotion_space 广告位表
- teacher 老师表
- user 用户表
- user_course_order 用户课程订单表
用户模块
用户表
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`name` VARCHAR(255) NOT NULL COMMENT '用户昵称',
`portrait` VARCHAR(255) DEFAULT NULL COMMENT '用户头像地址',
`phone` VARCHAR(255) NOT NULL COMMENT '注册手机',
`password` VARCHAR(255) DEFAULT NULL COMMENT '用户密码(可以为空,支持只用验证码注册、登录)',
`reg_ip` VARCHAR(255) DEFAULT NULL COMMENT '注册ip',
`account_non_expired` BIT(1) DEFAULT b'1' COMMENT '是否有效用户',
`credentials_non_expired` BIT(1) DEFAULT b'1' COMMENT '账号是否未过期',
`account_non_locked` BIT(1) DEFAULT b'1' COMMENT '是否未锁定',
`status` VARCHAR(20) NOT NULL DEFAULT 'ENABLE' COMMENT '用户状态:ENABLE能登录,DISABLE不能登录',
`is_del` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`create_time` DATETIME NOT NULL COMMENT '注册时间',
`update_time` DATETIME NOT NULL COMMENT '记录更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_phone_is_del` (`phone`,`is_del`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=100030024 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户表';
课程模块
课程表
CREATE TABLE `course` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`course_name` VARCHAR(255) DEFAULT NULL COMMENT '课程名',
`brief` VARCHAR(255) DEFAULT '' COMMENT '课程一句话简介',
`price` DOUBLE(10,2) DEFAULT NULL COMMENT '原价',
`price_tag` VARCHAR(255) DEFAULT '' COMMENT '原价标签',
`discounts` DOUBLE(10,2) DEFAULT NULL COMMENT '优惠价',
`discounts_tag` VARCHAR(255) DEFAULT NULL COMMENT '优惠标签',
`course_description_mark_down` LONGTEXT COMMENT '描述markdown',
`course_description` LONGTEXT COMMENT '课程描述',
`course_img_url` VARCHAR(255) DEFAULT NULL COMMENT '课程分享图片url',
`is_new` TINYINT(1) DEFAULT NULL COMMENT '是否新品',
`is_new_des` VARCHAR(255) DEFAULT NULL COMMENT '广告语',
`last_operator_id` INT(11) DEFAULT NULL COMMENT '最后操作者',
`auto_online_time` DATETIME DEFAULT NULL COMMENT '自动上架时间',
`create_time` DATETIME NOT NULL COMMENT '记录创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '是否删除',
`total_duration` INT(11) DEFAULT NULL COMMENT '总时长(分钟)',
`course_list_img` VARCHAR(255) DEFAULT NULL COMMENT '课程列表展示图片',
`status` INT(2) DEFAULT '0' COMMENT '课程状态,0-草稿,1-上架',
`sort_num` INT(11) DEFAULT NULL COMMENT '课程排序,用于后台保存草稿时用到',
`preview_first_field` VARCHAR(255) DEFAULT NULL COMMENT '课程预览第一个字段',
`preview_second_field` VARCHAR(255) DEFAULT NULL COMMENT '课程预览第二个字段',
`sales` INT(11) DEFAULT '0' COMMENT '销量',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='课程';
章节表
CREATE TABLE `course_section` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`course_id` INT(11) DEFAULT NULL COMMENT '课程id',
`section_name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '章节名',
`description` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '章节描述',
`create_time` DATETIME NOT NULL COMMENT '记录创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_de` TINYINT(1) DEFAULT '0' COMMENT '是否删除',
`order_num` INT(11) DEFAULT NULL COMMENT '排序字段',
`status` INT(1) NOT NULL DEFAULT '0' COMMENT '状态,0:隐藏;1:待更新;2:已发布',
PRIMARY KEY (`id`) USING BTREE,
KEY `course_id_index` (`course_id`) USING BTREE,
KEY `idx_course_id` (`course_id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='课程章节表';
课时表
每节课
CREATE TABLE `course_lesson` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`course_id` INT(11) NOT NULL COMMENT '课程id',
`section_id` INT(11) NOT NULL DEFAULT '0' COMMENT '章节id',
`theme` VARCHAR(255) NOT NULL COMMENT '课时主题',
`duration` INT(11) NOT NULL DEFAULT '0' COMMENT '课时时长(分钟)',
`is_free` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否免费',
`create_time` DATETIME NOT NULL COMMENT '记录创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '是否删除',
`order_num` INT(11) DEFAULT NULL COMMENT '排序字段',
`status` INT(2) DEFAULT '0' COMMENT '课时状态,0-隐藏,1-未发布,2-已发布',
PRIMARY KEY (`id`) USING BTREE,
KEY `course_id_index` (`course_id`,`section_id`) USING BTREE,
KEY `idx_sectionId_orderNum` (`section_id`,`order_num`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COMMENT='课程节内容';
课程媒体表
CREATE TABLE `course_media` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '课程媒体主键ID',
`course_id` INT(11) DEFAULT NULL COMMENT '课程Id',
`section_id` INT(11) DEFAULT NULL COMMENT '章ID',
`lesson_id` INT(11) DEFAULT NULL COMMENT '课时ID',
`cover_image_url` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图URL',
`duration` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '时长(06:02)',
`file_edk` VARCHAR(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '媒体资源文件对应的EDK',
`file_size` DOUBLE(10,2) DEFAULT NULL COMMENT '文件大小MB',
`file_name` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件名称',
`file_dk` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '媒体资源文件对应的DK',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '是否删除,0未删除,1删除',
`duration_num` INT(11) DEFAULT NULL COMMENT '时长,秒数(主要用于音频在H5控件中使用)',
`file_id` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '媒体资源文件ID',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uniq_lessonid_channel_mediatype_idx` (`lesson_id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课节视频表';
历史播放节点表
CREATE TABLE `course_play_history` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL COMMENT '用户id',
`course_id` INT(11) NOT NULL COMMENT '课程id',
`section_id` INT(11) NOT NULL COMMENT '章节id',
`lesson_id` INT(11) NOT NULL COMMENT '课时id',
`history_node` INT(11) NOT NULL COMMENT '历史播放节点(s)',
`history_highest_node` INT(11) DEFAULT '0' COMMENT '最高历史播放节点',
`create_time` DATETIME NOT NULL COMMENT '记录创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_userid_lessonid_type_idx` (`user_id`,`lesson_id`)
) ENGINE=INNODB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
活动课程表
CREATE TABLE `activity_course` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`course_id` INT(11) NOT NULL COMMENT '课程ID',
`begin_time` TIMESTAMP NULL DEFAULT NULL COMMENT '活动开始时间',
`end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '活动结束时间',
`amount` DOUBLE(10,2) DEFAULT NULL COMMENT '活动价格',
`stock` INT(10) DEFAULT NULL COMMENT '库存值',
`status` TINYINT(2) DEFAULT '0' COMMENT '状态 0未上架 10已上架',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '逻辑删除 0未删除 1删除',
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
`create_time` TIMESTAMP NULL DEFAULT NULL COMMENT '创建时间',
`create_user` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`update_time` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
`update_user` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_course_id` (`course_id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COMMENT='活动课程表';
老师表
CREATE TABLE `teacher` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`course_id` INT(11) DEFAULT '0' COMMENT '课程ID',
`teacher_name` VARCHAR(255) DEFAULT NULL COMMENT '讲师姓名',
`position` VARCHAR(100) DEFAULT '' COMMENT '职务',
`description` TEXT COMMENT '讲师介绍',
`create_time` DATETIME NOT NULL COMMENT '记录创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_courseId` (`course_id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=166 DEFAULT CHARSET=utf8 COMMENT='讲师表';
留言模块
留言表
CREATE TABLE `course_comment` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`course_id` INT(11) NOT NULL COMMENT '课程id',
`section_id` INT(11) NOT NULL COMMENT '章节id',
`lesson_id` INT(11) NOT NULL COMMENT '课时id',
`user_id` INT(11) DEFAULT NULL COMMENT '用户id',
`user_name` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运营设置用户昵称',
`parent_id` INT(11) DEFAULT NULL COMMENT '父级评论id',
`is_top` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否置顶:0不置顶,1置顶',
`comment` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评论',
`like_count` INT(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`is_reply` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否回复留言:0普通留言,1回复留言',
`type` INT(1) NOT NULL COMMENT '留言类型:0用户留言,1讲师留言,2运营马甲 3讲师回复 4小编回复 5官方客服回复',
`status` INT(1) NOT NULL COMMENT '留言状态:0待审核,1审核通过,2审核不通过,3已删除',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
`is_del` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否删除',
`last_operator` INT(11) NOT NULL COMMENT '最后操作者id',
`is_notify` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否发送了通知,1表示未发出,0表示已发出',
`mark_belong` TINYINT(1) DEFAULT '0' COMMENT '标记归属',
`replied` TINYINT(1) DEFAULT '0' COMMENT '回复状态 0 未回复 1 已回复',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_1` (`course_id`,`lesson_id`,`status`) USING BTREE,
KEY `idx_3` (`parent_id`,`status`,`is_top`,`like_count`) USING BTREE,
KEY `idx_course_id_create_time_status_replied_mark_belong` (`course_id`,`status`,`create_time`,`mark_belong`,`replied`) USING BTREE,
KEY `idx_courseId_status_parentId` (`course_id`,`parent_id`,`status`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=444 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程留言表';
点赞表
CREATE TABLE `course_comment_favorite_record` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户评论点赞j记录ID',
`user_id` INT(11) NOT NULL COMMENT '用户ID',
`comment_id` INT(11) NOT NULL COMMENT '用户评论ID',
`is_del` TINYINT(1) NOT NULL COMMENT '是否删除,0:未删除(已赞),1:已删除(取消赞状态)',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`update_time` DATETIME NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_userId_commentId` (`user_id`,`comment_id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=285 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程留言点赞表';
订单模块
用户课程订单表
CREATE TABLE `user_course_order` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`order_no` VARCHAR(64) DEFAULT NULL COMMENT '订单号',
`user_id` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '用户id',
`course_id` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '课程id,根据订单中的课程类型来选择',
`activity_course_id` INT(11) DEFAULT '0' COMMENT '活动课程id',
`source_type` TINYINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT '订单来源类型: 1 用户下单购买 2 后台添加专栏',
`status` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' COMMENT '当前状态: 0已创建 10未支付 20已支付 30已取消 40已过期 ',
`create_time` DATETIME NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '更新时间',
`is_del` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uniq_userId_sourceType_refDataId_courseId` (`user_id`,`source_type`,`course_id`) USING BTREE
) ENGINE=INNODB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户课程订单表';
支付订单信息表
CREATE TABLE `pay_order` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`order_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '订单号(唯一)',
`user_id` INT(11) NOT NULL COMMENT '用户ID',
`product_id` INT(11) DEFAULT NULL COMMENT '商品唯一标识(ID)',
`product_name` VARCHAR(128) DEFAULT NULL COMMENT '产品名称',
`amount` DECIMAL(12,2) DEFAULT NULL COMMENT '金额,单位元',
`count` INT(11) DEFAULT '1' COMMENT '商品数量',
`currency` VARCHAR(6) NOT NULL DEFAULT 'cny' COMMENT '货币类型,cny-人民币 gbeans-勾豆',
`channel` VARCHAR(16) NOT NULL COMMENT '支付渠道:weChat-微信支付,aliPay-支付宝支付,applePay-苹果支付',
`status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '订单状态:1-未支付 2-支付成功 3-支付失败 -1-订单失效',
`channel_status` TINYINT(8) DEFAULT NULL COMMENT '渠道中的状态码值',
`order_type` TINYINT(4) DEFAULT NULL COMMENT '类型 1-购买课程 2-充值',
`source` TINYINT(4) DEFAULT NULL COMMENT '支付来源 1-app 2-h5 3-pc',
`client_ip` VARCHAR(16) NOT NULL DEFAULT '127.0.0.1' COMMENT '用户支付IP',
`buy_id` VARCHAR(128) DEFAULT NULL COMMENT '购买账号id',
`out_trade_no` VARCHAR(128) DEFAULT NULL COMMENT '外部支付渠道交易号',
`created_time` DATETIME NOT NULL COMMENT '创建时间',
`updated_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`pay_time` DATETIME DEFAULT NULL COMMENT '支付时间',
`extra` TEXT COMMENT '附加字段,KV json,例如:{"mobile":13020202,"success_url":123}',
`goods_order_no` VARCHAR(64) DEFAULT NULL COMMENT '商品订单编号',
`platform` INT(11) DEFAULT '1' COMMENT '支付所使用的平台:1 拉勾 2 拉勾教育',
`wx_type` INT(11) DEFAULT '0' COMMENT '微信类型, 参考自lg-wechat-boot项目中的wxinfo',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uniq_order_no` (`order_no`) USING BTREE,
KEY `idx_user_id_order_no` (`user_id`,`order_no`) USING BTREE,
KEY `idx_created_time` (`created_time`) USING BTREE,
KEY `idx_user_id_product_id_status` (`user_id`,`product_id`,`status`) USING BTREE COMMENT '查询用户购买信息',
KEY `idx_goods_order_no` (`goods_order_no`) USING BTREE COMMENT '根据商品订单编号来查询'
) ENGINE=INNODB AUTO_INCREMENT=1288321749779595267 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='支付订单信息表';
支付订单状态日志表
CREATE TABLE `pay_order_record` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`order_no` VARCHAR(32) NOT NULL COMMENT '订单号',
`type` VARCHAR(16) NOT NULL COMMENT '操作类型:CREATE|PAY|REFUND...',
`from_status` VARCHAR(16) DEFAULT NULL COMMENT '原订单状态',
`to_status` VARCHAR(16) NOT NULL COMMENT '新订单状态',
`paid_amount` INT(11) DEFAULT '0' COMMENT '实付金额,单位为分',
`remark` VARCHAR(128) DEFAULT NULL COMMENT '备注',
`created_by` VARCHAR(64) NOT NULL COMMENT '操作人',
`created_at` DATETIME NOT NULL COMMENT '操作时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=178 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='支付订单状态日志表';
广告模块
广告位表
CREATE TABLE `promotion_space` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL COMMENT '名称',
`spaceKey` VARCHAR(255) DEFAULT NULL COMMENT '广告位key',
`createTime` DATETIME DEFAULT NULL,
`updateTime` DATETIME DEFAULT NULL,
`isDel` INT(2) DEFAULT '0',
PRIMARY KEY (`id`) USING BTREE,
KEY `promotion_space_key_isDel` (`spaceKey`,`isDel`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=177 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='广告区域表';
广告表
CREATE TABLE `promotion_ad` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL COMMENT '广告名',
`spaceId` INT(11) DEFAULT NULL COMMENT '广告位id',
`keyword` VARCHAR(255) DEFAULT NULL COMMENT '精确搜索关键词',
`htmlContent` TEXT COMMENT '静态广告的内容',
`text` VARCHAR(255) DEFAULT NULL COMMENT '文字一',
`link` VARCHAR(255) DEFAULT NULL COMMENT '链接一',
`startTime` DATETIME DEFAULT NULL COMMENT '开始时间',
`endTime` DATETIME DEFAULT NULL COMMENT '结束时间',
`createTime` DATETIME DEFAULT NULL,
`updateTime` DATETIME DEFAULT NULL,
`status` INT(2) NOT NULL DEFAULT '0',
`priority` INT(4) DEFAULT '0' COMMENT '优先级',
`img` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `promotion_ad_SEG` (`spaceId`,`startTime`,`endTime`,`status`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=1093 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='广告表';
想了解更多,欢迎关注我的微信公众号:Renda_Zhang