commit c207f1e15211729cdf95d6fec98a8a1de819958e Author: Hankin Date: Thu Jun 18 10:58:49 2026 +0800 first commit diff --git a/1781687373_create_category.up.sql b/1781687373_create_category.up.sql new file mode 100644 index 0000000..fb224d8 --- /dev/null +++ b/1781687373_create_category.up.sql @@ -0,0 +1,10 @@ +CREATE TABLE `category` ( + `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '分类ID', + `parent_id` INT DEFAULT 0 COMMENT '父分类ID,0表示顶级分类', + `name` VARCHAR(100) NOT NULL COMMENT '分类名称', + `description` VARCHAR(255) COMMENT '分类描述', + `sort_order` INT DEFAULT 0 COMMENT '排序权重(数字越小越靠前)', + `is_active` TINYINT DEFAULT 1 COMMENT '是否启用:1-禁用 2-启用', + `created_at` TIMESTAMP DEFAULT NULL COMMENT '创建时间', + `updated_at` TIMESTAMP DEFAULT NULL COMMENT '更新时间' +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '课程系列分类表'; \ No newline at end of file diff --git a/1781687840_create_course_series.up.sql b/1781687840_create_course_series.up.sql new file mode 100644 index 0000000..d57cb22 --- /dev/null +++ b/1781687840_create_course_series.up.sql @@ -0,0 +1,11 @@ +CREATE TABLE `course_series` ( + `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '系列ID', + `category_id` INT DEFAULT NULL COMMENT '所属分类ID(可空,表示未分类)', + `title` VARCHAR(255) NOT NULL COMMENT '系列名称(如:Python全栈开发)', + `description` TEXT COMMENT '系列简介', + `cover_image` VARCHAR(500) COMMENT '系列封面图URL', + `total_months` INT DEFAULT 10 COMMENT '总月数(固定10个月)', + `is_active` TINYINT DEFAULT 1 COMMENT '是否启用:1-禁用 2-启用', + `created_at` TIMESTAMP DEFAULT NULL COMMENT '创建时间', + `updated_at` TIMESTAMP DEFAULT NULL COMMENT '更新时间' +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '课程系列表'; \ No newline at end of file diff --git a/1781687994_create_course.up.sql b/1781687994_create_course.up.sql new file mode 100644 index 0000000..41f1912 --- /dev/null +++ b/1781687994_create_course.up.sql @@ -0,0 +1,29 @@ +CREATE TABLE `course` ( + `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '月度课程ID', + `series_id` INT NOT NULL COMMENT '所属系列ID', + +-- 时间标识 +`year` INT NOT NULL COMMENT '开课年份(如2026)', +`month` TINYINT NOT NULL COMMENT '几月(1~12,例如 3 表示3月份)', + +-- 课程信息 +`title` VARCHAR(255) NOT NULL COMMENT '月度课程名称', +`description` TEXT COMMENT '月度课程简介', +`cover_image` VARCHAR(500) COMMENT '月度课程封面', + +-- 价格与售卖 +`price` DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '售价(元)', +`original_price` DECIMAL(10, 2) COMMENT '原价/划线价', +`is_published` TINYINT DEFAULT 1 COMMENT '是否上架:1-下架 2-上架', + +-- 时间戳 +`created_at` TIMESTAMP DEFAULT NULL COMMENT '创建时间', +`updated_at` TIMESTAMP DEFAULT NULL COMMENT '更新时间', +FOREIGN KEY (`series_id`) REFERENCES `course_series` (`id`) ON DELETE CASCADE, + +-- 唯一约束:同一系列同一年同一月份只能有一条记录 + + +UNIQUE KEY `uk_series_year_month` (`series_id`, `year`, `month`) + +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='月度课程表'; \ No newline at end of file diff --git a/1781688012_create_video.up.sql b/1781688012_create_video.up.sql new file mode 100644 index 0000000..83643b3 --- /dev/null +++ b/1781688012_create_video.up.sql @@ -0,0 +1,23 @@ + +CREATE TABLE `video` ( + `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '视频ID', + `course_id` INT NOT NULL COMMENT '所属月度课程ID', + + `title` VARCHAR(255) NOT NULL COMMENT '视频标题', + `description` TEXT COMMENT '视频描述', + `video_url` VARCHAR(500) NOT NULL COMMENT '视频播放地址(云存储URL)', + `cover_image` VARCHAR(500) COMMENT '视频封面图', + `duration` INT COMMENT '视频时长(秒)', + + `video_order` INT NOT NULL COMMENT '视频在课程内的顺序(1~20)', + `release_date` DATE COMMENT '发布日期(具体某一天)', + `is_free` TINYINT DEFAULT 1 COMMENT '是否免费试看:1-付费 2-免费', + + `created_at` TIMESTAMP DEFAULT NULL COMMENT '创建时间', + `updated_at` TIMESTAMP DEFAULT NULL COMMENT '更新时间', + + FOREIGN KEY (`course_id`) REFERENCES `course`(`id`) ON DELETE CASCADE, + +-- 同一课程内顺序唯一 +UNIQUE KEY `uk_course_order` (`course_id`, `video_order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='视频表'; \ No newline at end of file