use school_news; -- 学习计划/任务表 DROP TABLE IF EXISTS `tb_learning_task`; CREATE TABLE `tb_learning_task` ( `id` VARCHAR(50) NOT NULL COMMENT '任务ID', `task_id` VARCHAR(50) NOT NULL COMMENT '任务唯一标识', `name` VARCHAR(255) NOT NULL COMMENT '任务名称', `description` TEXT COMMENT '任务描述', `start_time` TIMESTAMP NULL DEFAULT NULL COMMENT '开始时间', `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束时间', `status` INT(4) DEFAULT 1 COMMENT '状态(0草稿 1进行中 2已结束)', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_id` (`task_id`), KEY `idx_status` (`status`), KEY `idx_time` (`start_time`, `end_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习任务表'; DROP TABLE IF EXISTS `tb_learning_task_tag`; CREATE TABLE `tb_learning_task_tag` ( `id` VARCHAR(50) NOT NULL COMMENT '关联ID', `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID', `tag_id` VARCHAR(50) NOT NULL COMMENT '标签ID', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_tag` (`task_id`, `tag_id`), KEY `idx_task_id` (`task_id`), KEY `idx_tag_id` (`tag_id`), CONSTRAINT `fk_task_tag_task` FOREIGN KEY (`task_id`) REFERENCES `tb_learning_task` (`task_id`) ON DELETE CASCADE, CONSTRAINT `fk_task_tag_tag` FOREIGN KEY (`tag_id`) REFERENCES `tb_tag` (`tag_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习任务标签关联表'; -- 任务项关联表(统一管理资源和课程) DROP TABLE IF EXISTS `tb_task_item`; CREATE TABLE `tb_task_item` ( `id` VARCHAR(50) NOT NULL COMMENT '关联ID', `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID', `item_type` INT(4) NOT NULL COMMENT '项类型(1资源 2课程)', `item_id` VARCHAR(50) NOT NULL COMMENT '项ID(资源ID或课程ID)', `required` TINYINT(1) DEFAULT 1 COMMENT '是否必须完成', `order_num` INT(4) DEFAULT 0 COMMENT '排序号', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_item` (`task_id`, `item_type`, `item_id`), KEY `idx_task` (`task_id`), KEY `idx_item` (`item_type`, `item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='任务项关联表'; -- 任务接收人员表 DROP TABLE IF EXISTS `tb_task_user`; CREATE TABLE `tb_task_user` ( `id` VARCHAR(50) NOT NULL COMMENT '关联ID', `task_id` VARCHAR(50) NOT NULL COMMENT '任务ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `dept_id` VARCHAR(50) DEFAULT NULL COMMENT '部门ID', `status` INT(4) DEFAULT 0 COMMENT '完成状态(0未完成 1已完成)', `progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成进度(0-100)', `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_user` (`task_id`, `user_id`), KEY `idx_task` (`task_id`), KEY `idx_user` (`user_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='任务用户表'; -- 学习记录表 DROP TABLE IF EXISTS `tb_learning_record`; CREATE TABLE `tb_learning_record` ( `id` VARCHAR(50) NOT NULL COMMENT '记录ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `task_id` VARCHAR(50) DEFAULT NULL COMMENT '任务ID', `resource_type` INT(4) NOT NULL COMMENT '资源类型(1资源 2课程 3章节)', `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID', `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID', `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID', `node_id` VARCHAR(50) DEFAULT NULL COMMENT '节点ID', `duration` INT(11) DEFAULT 0 COMMENT '学习时长(秒)', `progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '学习进度(0-100)', `is_complete` TINYINT(1) DEFAULT 0 COMMENT '是否完成', `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间', `last_learn_time` TIMESTAMP NULL DEFAULT NULL COMMENT '最后学习时间', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_resource` (`resource_type`, `resource_id`), KEY `idx_task` (`task_id`), KEY `idx_learn_time` (`last_learn_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习记录表'; -- 学习统计表(按天统计) DROP TABLE IF EXISTS `tb_learning_statistics`; CREATE TABLE `tb_learning_statistics` ( `id` VARCHAR(50) NOT NULL COMMENT '统计ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `stat_date` DATE NOT NULL COMMENT '统计日期', `total_duration` INT(11) DEFAULT 0 COMMENT '总学习时长(秒)', `resource_count` INT(11) DEFAULT 0 COMMENT '学习资源数量', `course_count` INT(11) DEFAULT 0 COMMENT '学习课程数量', `complete_count` INT(11) DEFAULT 0 COMMENT '完成数量', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_date` (`user_id`, `stat_date`), KEY `idx_user` (`user_id`), KEY `idx_date` (`stat_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习统计表'; -- 学习观看历史表(记录每次学习行为) DROP TABLE IF EXISTS `tb_learning_history`; CREATE TABLE `tb_learning_history` ( `id` VARCHAR(50) NOT NULL COMMENT 'ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `history_id` VARCHAR(50) DEFAULT NULL COMMENT '学习历史ID', -- 学习对象 `resource_type` INT(4) NOT NULL COMMENT '资源类型(1资源/新闻 2课程 3章节 4节点)', `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID', `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID', `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID', `node_id` VARCHAR(50) DEFAULT NULL COMMENT '节点ID', `task_id` VARCHAR(50) DEFAULT NULL COMMENT '关联任务ID', -- 学习时间 `start_time` TIMESTAMP NOT NULL COMMENT '开始学习时间', `end_time` TIMESTAMP NULL DEFAULT NULL COMMENT '结束学习时间', `duration` INT(11) DEFAULT 0 COMMENT '本次学习时长(秒)', -- 学习进度 `start_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '开始进度(0-100)', `end_progress` DECIMAL(5,2) DEFAULT 0.00 COMMENT '结束进度(0-100)', -- 设备信息(可选) `device_type` VARCHAR(20) DEFAULT NULL COMMENT '设备类型(web/mobile/app)', `ip_address` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_user_time` (`user_id`, `start_time`), KEY `idx_user_resource` (`user_id`, `resource_type`, `resource_id`), KEY `idx_course` (`course_id`), KEY `idx_task` (`task_id`), KEY `idx_history` (`history_id`), KEY `idx_start_time` (`start_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习观看历史表'; -- 学习统计明细表(按天按资源统计) DROP TABLE IF EXISTS `tb_learning_statistics_detail`; CREATE TABLE `tb_learning_statistics_detail` ( `id` VARCHAR(50) NOT NULL COMMENT '统计ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `stat_date` DATE NOT NULL COMMENT '统计日期', -- 学习对象 `resource_type` INT(4) NOT NULL COMMENT '资源类型(1资源/新闻 2课程 3章节)', `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID', `course_id` VARCHAR(50) DEFAULT NULL COMMENT '课程ID', `chapter_id` VARCHAR(50) DEFAULT NULL COMMENT '章节ID', -- 统计数据 `total_duration` INT(11) DEFAULT 0 COMMENT '学习时长(秒)', `learn_count` INT(11) DEFAULT 0 COMMENT '学习次数', `is_complete` TINYINT(1) DEFAULT 0 COMMENT '是否完成', `complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_date_resource` (`user_id`, `stat_date`, `resource_type`, `resource_id`, `course_id`, `chapter_id`), KEY `idx_user_date` (`user_id`, `stat_date`), KEY `idx_date` (`stat_date`), KEY `idx_resource` (`resource_type`, `resource_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习统计明细表';