Files
timeline-sql/V1.1.0__core_feature_optimization.sql
jianghao c0f89a933e feat(数据库): 添加数据库迁移脚本支持时间线功能
添加V1.1.0至V1.3.0版本的数据库迁移脚本,包含核心功能优化、搜索评论通知系统以及智能功能
2026-02-24 10:49:14 +08:00

195 lines
8.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================
-- Timeline 数据库迁移脚本
-- 版本: V1.1.0
-- 日期: 2024
-- 描述: 第一阶段核心功能优化 - 数据库结构变更
-- =====================================================
-- -----------------------------------------------------
-- 1. 时间线节点排序字段
-- 功能: 支持拖拽排序功能
-- -----------------------------------------------------
-- 为 story_item 表添加排序字段
ALTER TABLE story_item
ADD COLUMN sort_order INT DEFAULT 0 COMMENT '排序值,数值越小越靠前,用于拖拽排序';
-- 为排序字段添加索引,优化查询性能
CREATE INDEX idx_story_item_sort_order
ON story_item(story_instance_id, sort_order, story_item_time DESC);
-- -----------------------------------------------------
-- 2. 标签系统表结构
-- 功能: 支持为时间线节点添加标签
-- -----------------------------------------------------
-- 标签表
CREATE TABLE IF NOT EXISTS tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '标签唯一标识',
name VARCHAR(50) NOT NULL COMMENT '标签名称',
color VARCHAR(20) DEFAULT '#1890ff' COMMENT '标签颜色',
owner_id VARCHAR(64) NOT NULL COMMENT '创建者ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
is_delete TINYINT DEFAULT 0 COMMENT '是否删除 0-否 1-是',
INDEX idx_tag_owner (owner_id),
INDEX idx_tag_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签表';
-- 时间线节点与标签关联表
CREATE TABLE IF NOT EXISTS story_item_tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
tag_id VARCHAR(64) NOT NULL COMMENT '标签ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_id VARCHAR(64) COMMENT '创建者ID',
UNIQUE KEY uk_item_tag (story_item_id, tag_id),
INDEX idx_tag_story_item (tag_id, story_item_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='时间线节点标签关联表';
-- -----------------------------------------------------
-- 3. 评论系统表结构
-- 功能: 支持对时间线节点进行评论
-- -----------------------------------------------------
-- 评论表
CREATE TABLE IF NOT EXISTS story_comment (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '评论唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '评论用户ID',
parent_id VARCHAR(64) DEFAULT NULL COMMENT '父评论ID用于回复功能',
reply_to_user_id VARCHAR(64) DEFAULT NULL COMMENT '回复的用户ID',
content TEXT NOT NULL COMMENT '评论内容',
like_count INT DEFAULT 0 COMMENT '点赞数',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
is_delete TINYINT DEFAULT 0 COMMENT '是否删除 0-否 1-是',
INDEX idx_comment_story_item (story_item_id, create_time DESC),
INDEX idx_comment_user (user_id),
INDEX idx_comment_parent (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表';
-- -----------------------------------------------------
-- 4. 点赞系统表结构
-- 功能: 支持对时间线节点进行点赞
-- -----------------------------------------------------
-- 点赞表
CREATE TABLE IF NOT EXISTS story_like (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '点赞用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_like_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='点赞表';
-- -----------------------------------------------------
-- 5. 收藏系统表结构
-- 功能: 支持收藏时间线节点
-- -----------------------------------------------------
-- 收藏表
CREATE TABLE IF NOT EXISTS story_favorite (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '收藏记录唯一标识',
story_item_id VARCHAR(64) NOT NULL COMMENT '时间线节点ID',
user_id VARCHAR(64) NOT NULL COMMENT '收藏用户ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
UNIQUE KEY uk_item_user (story_item_id, user_id),
INDEX idx_favorite_user (user_id, create_time DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';
-- -----------------------------------------------------
-- 6. 消息通知表结构
-- 功能: 支持系统消息推送
-- -----------------------------------------------------
-- 消息通知表
CREATE TABLE IF NOT EXISTS notification (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '消息唯一标识',
user_id VARCHAR(64) NOT NULL COMMENT '接收用户ID',
type VARCHAR(20) NOT NULL COMMENT '消息类型: COMMENT/LIKE/MENTION/INVITE/SYSTEM',
title VARCHAR(200) NOT NULL COMMENT '消息标题',
content TEXT COMMENT '消息内容',
related_id VARCHAR(64) COMMENT '关联ID(评论ID/节点ID等)',
related_type VARCHAR(20) COMMENT '关联类型',
sender_id VARCHAR(64) COMMENT '发送者ID',
sender_name VARCHAR(100) COMMENT '发送者名称',
sender_avatar VARCHAR(500) COMMENT '发送者头像',
is_read TINYINT DEFAULT 0 COMMENT '是否已读 0-未读 1-已读',
read_time DATETIME COMMENT '阅读时间',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_notification_user (user_id, is_read, create_time DESC),
INDEX idx_notification_type (type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';
-- -----------------------------------------------------
-- 7. 操作历史记录表
-- 功能: 支持撤销/重做功能
-- -----------------------------------------------------
-- 操作历史表
CREATE TABLE IF NOT EXISTS operation_history (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
instance_id VARCHAR(64) UNIQUE NOT NULL COMMENT '记录唯一标识',
user_id VARCHAR(64) NOT NULL COMMENT '操作用户ID',
story_id VARCHAR(64) COMMENT '故事ID',
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型: CREATE/UPDATE/DELETE/REORDER',
target_type VARCHAR(20) NOT NULL COMMENT '目标类型: STORY/STORY_ITEM',
target_id VARCHAR(64) NOT NULL COMMENT '目标ID',
before_data JSON COMMENT '操作前数据快照',
after_data JSON COMMENT '操作后数据快照',
description VARCHAR(200) COMMENT '操作描述',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_history_user_story (user_id, story_id, create_time DESC),
INDEX idx_history_target (target_type, target_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作历史记录表';
-- -----------------------------------------------------
-- 8. 优化现有表索引
-- 功能: 提升查询性能
-- -----------------------------------------------------
-- 为 story_item 表添加复合索引,优化时间线查询
CREATE INDEX idx_story_item_time_query
ON story_item(story_instance_id, is_delete, story_item_time DESC);
-- 为 story_permission 表添加索引
CREATE INDEX idx_story_permission_user
ON story_permission(user_id, permission_type);
-- -----------------------------------------------------
-- 数据迁移说明
-- -----------------------------------------------------
-- 1. sort_order 字段默认值为 0现有数据无需迁移
-- 2. 新表均为空表,无需数据迁移
-- 3. 建议在低峰期执行此脚本
-- -----------------------------------------------------
-- 回滚脚本 (如需回滚,请执行以下语句)
-- -----------------------------------------------------
/*
-- 删除新增字段
ALTER TABLE story_item DROP COLUMN sort_order;
-- 删除新增索引
DROP INDEX idx_story_item_sort_order ON story_item;
DROP INDEX idx_story_item_time_query ON story_item;
DROP INDEX idx_story_permission_user ON story_permission;
-- 删除新增表
DROP TABLE IF EXISTS operation_history;
DROP TABLE IF EXISTS notification;
DROP TABLE IF EXISTS story_favorite;
DROP TABLE IF EXISTS story_like;
DROP TABLE IF EXISTS story_comment;
DROP TABLE IF EXISTS story_item_tag;
DROP TABLE IF EXISTS tag;
*/