-- 教师表
CREATE TABLE IF NOT EXISTS `t_biz_teacher` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `user_id` BIGINT NOT NULL COMMENT '用户 ID（一对一）',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `department_id` BIGINT NOT NULL COMMENT '部门 ID',
    `employee_no` VARCHAR(50) DEFAULT NULL COMMENT '工号（在租户内唯一）',
    `phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
    `id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
    `gender` TINYINT DEFAULT NULL COMMENT '性别：1-男，2-女',
    `birth_date` DATE DEFAULT NULL COMMENT '出生日期',
    `hire_date` DATE DEFAULT NULL COMMENT '入职日期',
    `subject` VARCHAR(50) DEFAULT NULL COMMENT '任教科目（可选，如：语文、数学）',
    `title` VARCHAR(50) DEFAULT NULL COMMENT '职称（可选，如：高级教师、一级教师）',
    `description` VARCHAR(1000) DEFAULT NULL COMMENT '教师描述',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_user_id` (`user_id`),
    UNIQUE KEY `uk_tenant_employee_no` (`tenant_id`, `employee_no`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_department_id` (`department_id`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教师表';

-- 学生表
CREATE TABLE IF NOT EXISTS `t_biz_student` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `user_id` BIGINT NOT NULL COMMENT '用户 ID（一对一）',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `class_id` BIGINT NOT NULL COMMENT '行政班级 ID',
    `student_no` VARCHAR(50) DEFAULT NULL COMMENT '学号（在租户内唯一）',
    `phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
    `id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
    `gender` TINYINT DEFAULT NULL COMMENT '性别：1-男，2-女',
    `birth_date` DATE DEFAULT NULL COMMENT '出生日期',
    `enrollment_date` DATE DEFAULT NULL COMMENT '入学日期',
    `parent_name` VARCHAR(50) DEFAULT NULL COMMENT '家长姓名',
    `parent_phone` VARCHAR(50) DEFAULT NULL COMMENT '家长电话',
    `address` VARCHAR(500) DEFAULT NULL COMMENT '家庭地址',
    `description` VARCHAR(1000) DEFAULT NULL COMMENT '学生描述',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_user_id` (`user_id`),
    UNIQUE KEY `uk_tenant_student_no` (`tenant_id`, `student_no`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_class_id` (`class_id`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生表';

-- 学生兴趣班关联表
CREATE TABLE IF NOT EXISTS `t_biz_student_interest_class` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `student_id` BIGINT NOT NULL COMMENT '学生 ID',
    `class_id` BIGINT NOT NULL COMMENT '兴趣班 ID',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_student_class` (`student_id`, `class_id`),
    KEY `idx_student_id` (`student_id`),
    KEY `idx_class_id` (`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生兴趣班关联表';
