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 '创建时间', 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选修)', `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='学习节点表';