跳到主要内容

数据库表关系

plus 版本专属

此章节是黑马点评 Plus 版本中专有的内容,而在整套文档中将普通版本和 Plus 版本都融合在了一起,让大家更方便的学习。

本文将介绍黑马点评 plus 中的数据库表的设计,包括表结构、表之间的关联关系

博客相关功能

博客表(tb_blog)

CREATE TABLE `tb_blog` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`shop_id` bigint NOT NULL COMMENT '商户id',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
`images` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '探店的照片,最多9张,多张以","隔开',
`content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '探店的文字描述',
`liked` int unsigned DEFAULT '0' COMMENT '点赞数量',
`comments` int unsigned DEFAULT NULL COMMENT '评论数量',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

博客评论表(tb_blog_comments)

CREATE TABLE `tb_blog_comments` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`blog_id` bigint unsigned NOT NULL COMMENT '探店id',
`parent_id` bigint unsigned NOT NULL COMMENT '关联的1级评论id,如果是一级评论,则值为0',
`answer_id` bigint unsigned NOT NULL COMMENT '回复的评论id',
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回复的内容',
`liked` int unsigned DEFAULT NULL COMMENT '点赞数',
`status` tinyint unsigned DEFAULT NULL COMMENT '状态,0:正常,1:被举报,2:禁止查看',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

用户相关功能

用户表(tb_user)

CREATE TABLE `tb_user` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号码',
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码,加密存储',
`nick_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '昵称,默认是用户id',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '人物头像',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uniqe_key_phone` (`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

用户手机表(tb_user_phone)

CREATE TABLE `tb_user_phone` (
`id` bigint NOT NULL COMMENT '主键id',
`user_id` bigint NOT NULL COMMENT '用户id',
`phone` varchar(512) NOT NULL COMMENT '手机号',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `phone_idx` (`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户手机表';

用户信息表(tb_user_info)

CREATE TABLE `tb_user_info` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`user_id` bigint unsigned NOT NULL COMMENT '主键,用户id',
`city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '城市名称',
`introduce` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '个人介绍,不要超过128个字符',
`fans` int unsigned DEFAULT '0' COMMENT '粉丝数量',
`followee` int unsigned DEFAULT '0' COMMENT '关注的人的数量',
`gender` tinyint unsigned DEFAULT '0' COMMENT '性别,0:男,1:女',
`birthday` date DEFAULT NULL COMMENT '生日',
`credits` int unsigned DEFAULT '0' COMMENT '积分',
`level` tinyint unsigned DEFAULT '0' COMMENT '会员级别,0~9级,0代表未开通会员',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

关注相关功能

关注表(tb_follow)

CREATE TABLE `tb_follow` (
`id` bigint NOT NULL COMMENT '主键',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`follow_user_id` bigint unsigned NOT NULL COMMENT '关联的用户id',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

签到相关功能

签到表(tb_sign)

CREATE TABLE `tb_sign` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`year` year NOT NULL COMMENT '签到的年',
`month` tinyint NOT NULL COMMENT '签到的月',
`date` date NOT NULL COMMENT '签到的日期',
`is_backup` tinyint unsigned DEFAULT NULL COMMENT '是否补签',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

优惠券相关功能

优惠券表(tb_voucher)

CREATE TABLE `tb_voucher` (
`id` bigint unsigned NOT NULL COMMENT '主键',
`shop_id` bigint unsigned DEFAULT NULL COMMENT '商铺id',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '代金券标题',
`sub_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '副标题',
`rules` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '使用规则',
`pay_value` bigint unsigned NOT NULL COMMENT '支付金额,单位是分。例如200代表2元',
`actual_value` bigint NOT NULL COMMENT '抵扣金额,单位是分。例如200代表2元',
`type` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '0,普通券;1,秒杀券',
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '1,上架; 2,下架; 3,过期',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

秒杀优惠券表(tb_seckill_voucher)

CREATE TABLE `tb_seckill_voucher` (
`id` bigint NOT NULL,
`voucher_id` bigint unsigned NOT NULL COMMENT '关联的优惠券的id',
`init_stock` int NOT NULL COMMENT '初始化的库存',
`stock` int NOT NULL COMMENT '库存',
`allowed_levels` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '允许参与的会员等级,逗号分隔,如:"1,2,3"',
`min_level` int DEFAULT NULL COMMENT '最低会员等级',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`begin_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生效时间',
`end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '失效时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='秒杀优惠券表,与优惠券是一对一关系';

优惠券订单相关功能

优惠券订单表(tb_voucher_order)

CREATE TABLE `tb_voucher_order` (
`id` bigint NOT NULL COMMENT '主键',
`user_id` bigint unsigned NOT NULL COMMENT '下单的用户id',
`voucher_id` bigint unsigned NOT NULL COMMENT '购买的代金券id',
`pay_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '支付方式 1:余额支付;2:支付宝;3:微信',
`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '订单状态,1:正常;2:已取消;',
`reconciliation_status` int NOT NULL DEFAULT '1' COMMENT '对账状态:1待处理;2异常;3不一致;4一致',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间',
`pay_time` timestamp NULL DEFAULT NULL COMMENT '支付时间',
`use_time` timestamp NULL DEFAULT NULL COMMENT '核销时间',
`refund_time` timestamp NULL DEFAULT NULL COMMENT '退款时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

优惠券订单路由表(tb_voucher_order_router)

CREATE TABLE `tb_voucher_order_router` (
`id` bigint NOT NULL COMMENT '主键',
`order_id` bigint NOT NULL COMMENT '订单id',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`voucher_id` bigint unsigned NOT NULL COMMENT '代金券id',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

优惠券订单记录表(tb_voucher_reconcile_log)

CREATE TABLE `tb_voucher_reconcile_log` (
`id` bigint NOT NULL COMMENT '主键',
`order_id` bigint NOT NULL COMMENT '订单id',
`user_id` bigint unsigned NOT NULL COMMENT '下单的用户id',
`voucher_id` bigint unsigned NOT NULL COMMENT '购买的代金券id',
`message_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Kafka消息uuid',
`detail` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '差异说明',
`before_qty` int DEFAULT NULL COMMENT '改变之前库存数量',
`change_qty` int DEFAULT NULL COMMENT '本次改变数量',
`after_qty` int DEFAULT NULL COMMENT '改变之后库存数量',
`trace_id` bigint DEFAULT NULL COMMENT '追踪唯一标识',
`log_type` int DEFAULT '-1' COMMENT '记录类型 -1:扣减 1:恢复',
`business_type` int DEFAULT '1' COMMENT '业务类型:1创建订单成功;2创建订单超时;3创建订单失败',
`reconciliation_status` int NOT NULL DEFAULT '1' COMMENT '对账状态:1待处理;2异常;3不一致;4一致',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_order_id` (`order_id`) USING BTREE,
KEY `idx_message_id` (`message_id`) USING BTREE,
KEY `idx_trace_id` (`trace_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

回滚失败日志表(tb_rollback_failure_log)

CREATE TABLE `tb_rollback_failure_log` (
`id` bigint NOT NULL COMMENT '主键',
`voucher_id` bigint unsigned NOT NULL COMMENT '优惠券id',
`user_id` bigint unsigned NOT NULL COMMENT '用户id',
`order_id` bigint DEFAULT NULL COMMENT '订单id',
`trace_id` bigint DEFAULT NULL COMMENT '追踪唯一标识',
`detail` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '失败详情',
`result_code` int DEFAULT NULL COMMENT 'Lua返回码(BaseCode)',
`retry_attempts` int DEFAULT NULL COMMENT '已尝试的重试次数',
`source` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '来源组件',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_voucher_user` (`voucher_id`,`user_id`) USING BTREE,
KEY `idx_trace_id` (`trace_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='Redis回滚失败日志表';

表关系

表关系