use school_news;
-- 课程表
DROP TABLE IF EXISTS `tb_course`;
CREATE TABLE `tb_course` (
  `id` VARCHAR(50) NOT NULL COMMENT '课程ID',
  `course_id` VARCHAR(50) NOT NULL COMMENT '课程唯一标识',
  `name` VARCHAR(255) NOT NULL COMMENT '课程名称',
  `cover_image` VARCHAR(255) DEFAULT NULL COMMENT '课程封面图片',
  `description` TEXT COMMENT '课程描述',
  `content` LONGTEXT COMMENT '课程内容',
  `duration` INT(11) DEFAULT 0 COMMENT '课程时长（分钟）',
  `teacher` VARCHAR(100) DEFAULT NULL COMMENT '授课老师',
  `status` INT(4) DEFAULT 0 COMMENT '状态（0未上线 1已上线 2已下架）',
  `view_count` INT(11) DEFAULT 0 COMMENT '浏览次数',
  `learn_count` INT(11) DEFAULT 0 COMMENT '学习人数',
  `order_num` INT(4) 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_course_id` (`course_id`),
  KEY `idx_status` (`status`),
  KEY `idx_view_count` (`view_count`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='课程表';

-- 课程章节表
DROP TABLE IF EXISTS `tb_course_chapter`;
CREATE TABLE `tb_course_chapter` (
  `id` VARCHAR(50) NOT NULL COMMENT 'ID',
  `chapter_id` VARCHAR(50) NOT NULL COMMENT '章节唯一标识',
  `course_id` VARCHAR(50) NOT NULL COMMENT '课程ID',
  `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父章节ID',
  `name` VARCHAR(255) NOT NULL COMMENT '章节名称',
  `content` LONGTEXT COMMENT '章节内容',
  `chapter_type` INT(4) DEFAULT 0 COMMENT '章节类型（1视频 2文档 3音频）',
  `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID',
  `video_url` VARCHAR(500) DEFAULT NULL COMMENT '视频URL',
  `duration` INT(11) DEFAULT 0 COMMENT '章节时长（分钟）',
  `order_num` INT(4) 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`),
  KEY `idx_course` (`course_id`),
  KEY `idx_parent` (`parent_id`),
  KEY `idx_order` (`order_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='课程章节表';

-- 课程标签关联表
DROP TABLE IF EXISTS `tb_course_tag`;
CREATE TABLE `tb_course_tag` (
  `id` VARCHAR(50) NOT NULL COMMENT '关联ID',
  `course_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 '创建时间',
  `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_course_tag` (`course_id`, `tag_id`),
  KEY `idx_course` (`course_id`),
  KEY `idx_tag` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='课程标签关联表';

-- 学习节点表
DROP TABLE IF EXISTS `tb_course_node`;
CREATE TABLE `tb_course_node` (
  `id` VARCHAR(50) NOT NULL COMMENT '节点ID',
  `chapter_id` VARCHAR(50) NOT NULL COMMENT '章节ID',
  `node_id` VARCHAR(50) NOT NULL COMMENT '节点唯一标识',
  `name` VARCHAR(255) NOT NULL COMMENT '节点名称',
  `content` LONGTEXT COMMENT '节点内容',
  `node_type` INT(4) DEFAULT 1 COMMENT '节点类型（0文章资源 1富文本 2其他上传文件）',
  `resource_id` VARCHAR(50) DEFAULT NULL COMMENT '资源ID',
  `video_url` VARCHAR(500) DEFAULT NULL COMMENT '视频URL',
  `duration` INT(11) DEFAULT 0 COMMENT '节点时长（分钟）',
  `order_num` INT(4) DEFAULT 0 COMMENT '排序号',
  `is_required` TINYINT(1) DEFAULT 1 COMMENT '是否必修（1必修 0选修）',
  `is_audited` TINYINT(1) NOT NULL 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`),
  KEY `idx_chapter` (`chapter_id`),
  KEY `idx_order` (`order_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学习节点表';

