-- 创建数据库
CREATE DATABASE IF NOT EXISTS text_classification_system DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE text_classification_system;

-- 创建用户表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(100) NOT NULL UNIQUE COMMENT '用户邮箱，作为登录用户名',
    password VARCHAR(255) NOT NULL COMMENT '加密后的密码',
    name VARCHAR(50) COMMENT '用户姓名',
    gender ENUM('男', '女', '其他') COMMENT '性别',
    birth_date DATE COMMENT '出生日期',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '账户创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '账户更新时间',
    INDEX idx_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

-- 创建分类类别表
CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL UNIQUE COMMENT '类别名称',
    description TEXT COMMENT '类别描述',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    INDEX idx_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文本分类类别表';

-- 创建文档表
CREATE TABLE documents (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL COMMENT '上传用户ID',
    original_filename VARCHAR(255) NOT NULL COMMENT '原始文件名',
    stored_filename VARCHAR(255) NOT NULL COMMENT '存储的文件名',
    file_path VARCHAR(255) NOT NULL COMMENT '文件存储路径',
    file_size INT COMMENT '文件大小(字节)',
    content_summary TEXT COMMENT '内容摘要',
    category_id INT COMMENT '分类类别ID',
    upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
    classified_time TIMESTAMP NULL COMMENT '分类完成时间',
    status ENUM('待处理', '处理中', '已分类', '处理失败') DEFAULT '待处理' COMMENT '处理状态',
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL,
    INDEX idx_user_id (user_id),
    INDEX idx_category_id (category_id),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户上传文档表';

-- 插入默认的分类类别数据
INSERT INTO categories (name, description) VALUES
('体育', '体育相关新闻和内容'),
('娱乐', '娱乐相关新闻和内容'),
('家居', '家居相关新闻和内容'),
('彩票', '彩票相关新闻和内容'),
('房产', '房产相关新闻和内容'),
('教育', '教育相关新闻和内容'),
('时尚', '时尚相关新闻和内容'),
('时政', '时政相关新闻和内容'),
('星座', '星座相关新闻和内容'),
('游戏', '游戏相关新闻和内容'),
('社会', '社会相关新闻和内容'),
('科技', '科技相关新闻和内容'),
('股票', '股票相关新闻和内容'),
('财经', '财经相关新闻和内容');

