文件生成补充
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
-- V1__init_schema.sql
|
||||
-- 博客系统数据库初始化脚本
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS blog_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE blog_db;
|
||||
|
||||
-- 用户表
|
||||
CREATE TABLE IF NOT EXISTS sys_user (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) DEFAULT NULL COMMENT '用户名',
|
||||
email VARCHAR(100) NOT NULL COMMENT '邮箱',
|
||||
phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',
|
||||
password VARCHAR(255) NOT NULL COMMENT '密码',
|
||||
nickname VARCHAR(50) DEFAULT NULL COMMENT '昵称',
|
||||
avatar VARCHAR(500) DEFAULT NULL COMMENT '头像URL',
|
||||
user_type TINYINT NOT NULL DEFAULT 1 COMMENT '用户类型:0管理员 1普通用户',
|
||||
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0正常 1锁定',
|
||||
locked_until DATETIME DEFAULT NULL COMMENT '锁定截止时间',
|
||||
login_fail_count INT NOT NULL DEFAULT 0 COMMENT '登录失败次数',
|
||||
email_verified TINYINT(1) NOT NULL DEFAULT 0 COMMENT '邮箱是否验证',
|
||||
last_login_ip VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP',
|
||||
last_login_time DATETIME DEFAULT NULL COMMENT '最后登录时间',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
UNIQUE KEY uk_email (email),
|
||||
UNIQUE KEY uk_username (username),
|
||||
KEY idx_phone (phone)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
||||
|
||||
-- 用户会话表
|
||||
CREATE TABLE IF NOT EXISTS sys_user_session (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
token VARCHAR(500) NOT NULL COMMENT '访问令牌',
|
||||
device_fingerprint VARCHAR(100) DEFAULT NULL COMMENT '设备指纹',
|
||||
ip_address VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
user_agent VARCHAR(500) DEFAULT NULL COMMENT 'User-Agent',
|
||||
expire_time DATETIME NOT NULL COMMENT '过期时间',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_user_id (user_id),
|
||||
KEY idx_token (token(255))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会话表';
|
||||
|
||||
-- 登录日志表
|
||||
CREATE TABLE IF NOT EXISTS sys_login_log (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT DEFAULT NULL COMMENT '用户ID',
|
||||
username VARCHAR(100) DEFAULT NULL COMMENT '登录账号',
|
||||
login_type TINYINT NOT NULL COMMENT '登录类型:0管理员 1用户',
|
||||
result TINYINT NOT NULL COMMENT '结果:0失败 1成功',
|
||||
fail_reason VARCHAR(200) DEFAULT NULL COMMENT '失败原因',
|
||||
ip_address VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
|
||||
device_fingerprint VARCHAR(100) DEFAULT NULL COMMENT '设备指纹',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_user_id (user_id),
|
||||
KEY idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登录日志表';
|
||||
|
||||
-- 用户关注表
|
||||
CREATE TABLE IF NOT EXISTS sys_user_follow (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
follower_id BIGINT NOT NULL COMMENT '关注者ID',
|
||||
followee_id BIGINT NOT NULL COMMENT '被关注者ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_follow (follower_id, followee_id),
|
||||
KEY idx_followee (followee_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户关注表';
|
||||
|
||||
-- 通知表
|
||||
CREATE TABLE IF NOT EXISTS sys_notification (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
receiver_id BIGINT NOT NULL COMMENT '接收者ID',
|
||||
sender_id BIGINT DEFAULT NULL COMMENT '发送者ID',
|
||||
type TINYINT NOT NULL COMMENT '类型:0回复 1点赞 2系统',
|
||||
content VARCHAR(500) NOT NULL COMMENT '内容',
|
||||
related_id BIGINT DEFAULT NULL COMMENT '关联ID',
|
||||
is_read TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已读',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_receiver (receiver_id),
|
||||
KEY idx_created_at (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知表';
|
||||
|
||||
-- 系统配置表
|
||||
CREATE TABLE IF NOT EXISTS sys_config (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
config_key VARCHAR(100) NOT NULL COMMENT '配置键',
|
||||
config_value VARCHAR(500) NOT NULL COMMENT '配置值',
|
||||
description VARCHAR(200) DEFAULT NULL COMMENT '描述',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_config_key (config_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
|
||||
|
||||
-- 敏感词表
|
||||
CREATE TABLE IF NOT EXISTS sys_sensitive_word (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
word VARCHAR(50) NOT NULL COMMENT '敏感词',
|
||||
replacement VARCHAR(50) DEFAULT '*' COMMENT '替换词',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_word (word)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='敏感词表';
|
||||
|
||||
-- 分类表
|
||||
CREATE TABLE IF NOT EXISTS blog_category (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL COMMENT '分类名称',
|
||||
description VARCHAR(200) DEFAULT NULL COMMENT '描述',
|
||||
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
|
||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_name (name)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分类表';
|
||||
|
||||
-- 标签表
|
||||
CREATE TABLE IF NOT EXISTS blog_tag (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL COMMENT '标签名称',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_name (name)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='标签表';
|
||||
|
||||
-- 文章表
|
||||
CREATE TABLE IF NOT EXISTS blog_article (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL COMMENT '作者ID',
|
||||
category_id BIGINT DEFAULT NULL COMMENT '分类ID',
|
||||
title VARCHAR(200) NOT NULL COMMENT '标题',
|
||||
summary VARCHAR(500) DEFAULT NULL COMMENT '摘要',
|
||||
content LONGTEXT NOT NULL COMMENT '内容',
|
||||
cover_image VARCHAR(500) DEFAULT NULL COMMENT '封面图URL',
|
||||
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0草稿 1已发布 2回收站',
|
||||
visibility TINYINT NOT NULL DEFAULT 0 COMMENT '可见性:0公开 1私密 2仅粉丝',
|
||||
view_count INT NOT NULL DEFAULT 0 COMMENT '浏览量',
|
||||
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞数',
|
||||
comment_count INT NOT NULL DEFAULT 0 COMMENT '评论数',
|
||||
allow_comment TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否允许评论',
|
||||
published_at DATETIME DEFAULT NULL COMMENT '发布时间',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
KEY idx_user_id (user_id),
|
||||
KEY idx_category_id (category_id),
|
||||
KEY idx_status (status),
|
||||
KEY idx_published_at (published_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章表';
|
||||
|
||||
-- 文章标签关联表
|
||||
CREATE TABLE IF NOT EXISTS blog_article_tag (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
article_id BIGINT NOT NULL COMMENT '文章ID',
|
||||
tag_id BIGINT NOT NULL COMMENT '标签ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_article_tag (article_id, tag_id),
|
||||
KEY idx_tag_id (tag_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章标签关联表';
|
||||
|
||||
-- 文章点赞表
|
||||
CREATE TABLE IF NOT EXISTS blog_article_like (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
article_id BIGINT NOT NULL COMMENT '文章ID',
|
||||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_article_user (article_id, user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章点赞表';
|
||||
|
||||
-- 评论表
|
||||
CREATE TABLE IF NOT EXISTS blog_comment (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
article_id BIGINT NOT NULL COMMENT '文章ID',
|
||||
user_id BIGINT NOT NULL COMMENT '评论者ID',
|
||||
parent_id BIGINT DEFAULT NULL COMMENT '父评论ID',
|
||||
reply_to_user_id BIGINT DEFAULT NULL COMMENT '回复目标用户ID',
|
||||
content VARCHAR(1000) NOT NULL COMMENT '评论内容',
|
||||
level TINYINT NOT NULL DEFAULT 1 COMMENT '评论层级',
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0待审核 1已通过 2已屏蔽 3已删除',
|
||||
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞数',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
KEY idx_article_id (article_id),
|
||||
KEY idx_user_id (user_id),
|
||||
KEY idx_parent_id (parent_id),
|
||||
KEY idx_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论表';
|
||||
|
||||
-- 评论点赞表
|
||||
CREATE TABLE IF NOT EXISTS blog_comment_like (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
comment_id BIGINT NOT NULL COMMENT '评论ID',
|
||||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_comment_user (comment_id, user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论点赞表';
|
||||
|
||||
-- 图片表
|
||||
CREATE TABLE IF NOT EXISTS blog_image (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL COMMENT '上传者ID',
|
||||
original_name VARCHAR(200) NOT NULL COMMENT '原始文件名',
|
||||
stored_name VARCHAR(200) NOT NULL COMMENT '存储文件名',
|
||||
file_path VARCHAR(500) NOT NULL COMMENT '文件路径',
|
||||
url VARCHAR(500) NOT NULL COMMENT '访问URL',
|
||||
file_size BIGINT NOT NULL COMMENT '文件大小(字节)',
|
||||
mime_type VARCHAR(50) NOT NULL COMMENT 'MIME类型',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_user_id (user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='图片表';
|
||||
Reference in New Issue
Block a user