Files
hs-end/src/main/resources/db/migration/V1__Create_initial_tables.sql
lxy 5a671c4233 first
demo
2025-08-25 16:01:26 +08:00

166 lines
7.8 KiB
SQL
Raw 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.

-- 创建数据库初始表结构
-- 版本: V1
-- 描述: 创建用户、会话、消息、收藏、文件等核心业务表
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 用户表
-- ----------------------------
CREATE TABLE `users` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`email` VARCHAR(100) NOT NULL COMMENT '用户邮箱',
`password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希',
`nickname` VARCHAR(50) NOT NULL COMMENT '用户昵称',
`avatar_url` VARCHAR(500) DEFAULT NULL COMMENT '头像URL',
`status` TINYINT DEFAULT 1 COMMENT '用户状态1-正常2-锁定3-删除',
`last_login_time` BIGINT DEFAULT NULL COMMENT '最后登录时间戳',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
`deleted_at` BIGINT DEFAULT NULL COMMENT '删除时间戳(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_email` (`email`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- ----------------------------
-- 会话表
-- ----------------------------
CREATE TABLE `sessions` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '会话自增ID',
`session_id` VARCHAR(36) NOT NULL COMMENT '会话UUID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`title` VARCHAR(200) NOT NULL COMMENT '会话标题',
`message_count` INT DEFAULT 0 COMMENT '消息数量',
`last_message_time` BIGINT DEFAULT NULL COMMENT '最后消息时间戳',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
`deleted_at` BIGINT DEFAULT NULL COMMENT '删除时间戳(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_session_id` (`session_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_last_message_time` (`last_message_time`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `fk_sessions_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='聊天会话表';
-- ----------------------------
-- 消息表
-- ----------------------------
CREATE TABLE `messages` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息自增ID',
`message_id` VARCHAR(36) NOT NULL COMMENT '消息UUID',
`session_id` VARCHAR(36) NOT NULL COMMENT '会话ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`role` VARCHAR(20) NOT NULL COMMENT '角色user/assistant',
`content` LONGTEXT NOT NULL COMMENT '消息内容',
`model_used` VARCHAR(50) DEFAULT NULL COMMENT '使用的AI模型',
`deep_thinking` BOOLEAN DEFAULT FALSE COMMENT '是否启用深度思考',
`web_search` BOOLEAN DEFAULT FALSE COMMENT '是否启用联网搜索',
`is_favorited` BOOLEAN DEFAULT FALSE COMMENT '是否已收藏',
`timestamp` BIGINT NOT NULL COMMENT '消息时间戳',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
`deleted_at` BIGINT DEFAULT NULL COMMENT '删除时间戳(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_message_id` (`message_id`),
KEY `idx_session_id` (`session_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_role` (`role`),
KEY `idx_timestamp` (`timestamp`),
KEY `idx_is_favorited` (`is_favorited`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `fk_messages_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息表';
-- ----------------------------
-- 收藏表
-- ----------------------------
CREATE TABLE `favorites` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '收藏自增ID',
`favorite_id` VARCHAR(36) NOT NULL COMMENT '收藏UUID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`message_id` VARCHAR(36) NOT NULL COMMENT '消息ID',
`session_id` VARCHAR(36) NOT NULL COMMENT '会话ID',
`created_at` BIGINT NOT NULL COMMENT '收藏时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
`deleted_at` BIGINT DEFAULT NULL COMMENT '删除时间戳(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_favorite_id` (`favorite_id`),
UNIQUE KEY `uk_user_message` (`user_id`, `message_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_message_id` (`message_id`),
KEY `idx_session_id` (`session_id`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `fk_favorites_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收藏表';
-- ----------------------------
-- 文件表
-- ----------------------------
CREATE TABLE `files` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '文件自增ID',
`file_id` VARCHAR(36) NOT NULL COMMENT '文件UUID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`session_id` VARCHAR(36) DEFAULT NULL COMMENT '关联会话ID',
`filename` VARCHAR(255) NOT NULL COMMENT '原始文件名',
`stored_filename` VARCHAR(255) NOT NULL COMMENT '存储文件名',
`file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径',
`file_size` BIGINT NOT NULL COMMENT '文件大小(字节)',
`file_type` VARCHAR(100) NOT NULL COMMENT '文件类型',
`mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型',
`upload_time` BIGINT NOT NULL COMMENT '上传时间戳',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
`deleted_at` BIGINT DEFAULT NULL COMMENT '删除时间戳(软删除)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_file_id` (`file_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_session_id` (`session_id`),
KEY `idx_file_type` (`file_type`),
KEY `idx_upload_time` (`upload_time`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `fk_files_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表';
-- ----------------------------
-- 操作日志表
-- ----------------------------
CREATE TABLE `operation_logs` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '日志ID',
`user_id` BIGINT DEFAULT NULL COMMENT '操作用户ID',
`operation_type` VARCHAR(50) NOT NULL COMMENT '操作类型',
`operation_desc` VARCHAR(500) DEFAULT NULL COMMENT '操作描述',
`ip_address` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址',
`user_agent` VARCHAR(500) DEFAULT NULL COMMENT '用户代理',
`request_params` TEXT DEFAULT NULL COMMENT '请求参数',
`response_result` TEXT DEFAULT NULL COMMENT '响应结果',
`execution_time` INT DEFAULT NULL COMMENT '执行时长(毫秒)',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_operation_type` (`operation_type`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
-- ----------------------------
-- 系统配置表
-- ----------------------------
CREATE TABLE `system_configs` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '配置ID',
`config_key` VARCHAR(100) NOT NULL COMMENT '配置键',
`config_value` TEXT DEFAULT NULL COMMENT '配置值',
`config_desc` VARCHAR(500) DEFAULT NULL COMMENT '配置描述',
`config_type` VARCHAR(20) DEFAULT 'STRING' COMMENT '配置类型STRING/NUMBER/BOOLEAN/JSON',
`is_encrypted` BOOLEAN DEFAULT FALSE COMMENT '是否加密存储',
`created_at` BIGINT NOT NULL COMMENT '创建时间戳',
`updated_at` BIGINT NOT NULL COMMENT '更新时间戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_config_key` (`config_key`),
KEY `idx_config_type` (`config_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';
SET FOREIGN_KEY_CHECKS = 1;