-- 创建数据库初始表结构 -- 版本: 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;