|
|
@@ -2,29 +2,29 @@
|
|
|
-- 1. 专辑表(已包含已添加的管理字段)
|
|
|
-- ------------------------------
|
|
|
CREATE TABLE `album` (
|
|
|
- `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- `album_name` VARCHAR(100) NOT NULL COMMENT '专辑名称',
|
|
|
- `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
|
|
|
- `artist_name` VARCHAR(16) COMMENT '关联artist服务的artist.name',
|
|
|
- `cover_url` VARCHAR(255) COMMENT '专辑封面URL',
|
|
|
- `release_time` DATE COMMENT '发行时间',
|
|
|
- `description` TEXT COMMENT '专辑描述(介绍专辑主题、曲目等)',
|
|
|
- `album_type` TINYINT DEFAULT 1 COMMENT '专辑类型:1-数字专辑,2-实体专辑,3-EP',
|
|
|
- `price` DECIMAL(10,2) COMMENT '专辑价格(实体专辑或付费数字专辑使用)',
|
|
|
- `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
- `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ `album_name` VARCHAR(100) NOT NULL COMMENT '专辑名称',
|
|
|
+ `artist_id` INT NOT NULL COMMENT '关联artist服务的artist.id',
|
|
|
+ `artist_name` VARCHAR(16) COMMENT '关联artist服务的artist.name',
|
|
|
+ `cover_url` VARCHAR(255) COMMENT '专辑封面URL',
|
|
|
+ `release_time` DATE COMMENT '发行时间',
|
|
|
+ `description` TEXT COMMENT '专辑描述(介绍专辑主题、曲目等)',
|
|
|
+ `album_type` TINYINT DEFAULT 1 COMMENT '专辑类型:1-数字专辑,2-实体专辑,3-EP',
|
|
|
+ `price` DECIMAL(10,2) COMMENT '专辑价格(实体专辑或付费数字专辑使用)',
|
|
|
+ `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
-- 已添加的管理字段
|
|
|
- `status` TINYINT DEFAULT 0 COMMENT '专辑状态:0--审核中,1-审核失败,2-发布中,3-已上架,4-已下架',
|
|
|
- `audit_reason` VARCHAR(500) COMMENT '审核失败原因',
|
|
|
- `audit_time` DATETIME COMMENT '审核时间',
|
|
|
- `publish_time` DATETIME COMMENT '发布时间',
|
|
|
- `shelf_time` DATETIME COMMENT '上架时间',
|
|
|
- `off_shelf_time` DATETIME COMMENT '下架时间',
|
|
|
- `delete_flag` TINYINT DEFAULT 0 COMMENT '删除标志:0-未删除,1-已删除',
|
|
|
- `delete_time` DATETIME COMMENT '删除时间',
|
|
|
- INDEX `idx_album_name` (`album_name`),
|
|
|
- INDEX `idx_artist_id` (`artist_id`),
|
|
|
- INDEX `idx_status` (`status`)
|
|
|
+ `status` TINYINT DEFAULT 0 COMMENT '专辑状态:0--审核中,1-审核失败,2-发布中,3-已上架,4-已下架',
|
|
|
+ `audit_reason` VARCHAR(500) COMMENT '审核失败原因',
|
|
|
+ `audit_time` DATETIME COMMENT '审核时间',
|
|
|
+ `publish_time` DATETIME COMMENT '发布时间',
|
|
|
+ `shelf_time` DATETIME COMMENT '上架时间',
|
|
|
+ `off_shelf_time` DATETIME COMMENT '下架时间',
|
|
|
+ `delete_flag` TINYINT DEFAULT 0 COMMENT '删除标志:0-未删除,1-已删除',
|
|
|
+ `delete_time` DATETIME COMMENT '删除时间',
|
|
|
+ INDEX `idx_album_name` (`album_name`),
|
|
|
+ INDEX `idx_artist_id` (`artist_id`),
|
|
|
+ INDEX `idx_status` (`status`)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专辑表';
|
|
|
|
|
|
-- ------------------------------
|
|
|
@@ -110,7 +110,7 @@ CREATE TABLE `playlist_song` (
|
|
|
-- ------------------------------
|
|
|
CREATE TABLE `lyric` (
|
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- `lyric_name` VARCHAR(32) NOT NULL COMMENT '歌词名',
|
|
|
+ `lyric_name` VARCHAR(32) NOT NULL COMMENT '歌词名',
|
|
|
`song_id` INT NOT NULL COMMENT '关联本服务的song.id',
|
|
|
`lyrics` TEXT NOT NULL COMMENT 'LRC格式歌词文本',
|
|
|
`language` VARCHAR(20) DEFAULT 'zh' COMMENT '歌词语言(zh-中文,en-英文等)',
|
|
|
@@ -296,4 +296,55 @@ CREATE TABLE `comment` (
|
|
|
INDEX `idx_create_time` (`create_time`), -- 快速按创建时间排序/筛选评论
|
|
|
-- 复合索引(优化联合查询,比单独索引更高效)
|
|
|
INDEX `idx_content_type_id` (`content_type`, `content_id`) -- 便于按内容类型+内容ID批量查询评论
|
|
|
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表(支持歌曲和MV评论)';
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表(支持歌曲和MV评论)';
|
|
|
+
|
|
|
+# // 用户等级表
|
|
|
+CREATE TABLE `user_level` (
|
|
|
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ `user_id` INT NOT NULL COMMENT '用户ID',
|
|
|
+ `level` INT DEFAULT 1 COMMENT '等级',
|
|
|
+ `exp` INT DEFAULT 0 COMMENT '经验值',
|
|
|
+ `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ UNIQUE KEY `uk_user_id` (`user_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户等级表';
|
|
|
+
|
|
|
+# // 用户签到表
|
|
|
+CREATE TABLE `user_sign_in` (
|
|
|
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ `user_id` INT NOT NULL COMMENT '用户ID',
|
|
|
+ `sign_date` DATE NOT NULL COMMENT '签到日期',
|
|
|
+ `experience` INT DEFAULT 0 COMMENT '获得经验',
|
|
|
+ `continuous_days` TINYINT DEFAULT 1 COMMENT '连续签到天数(首次签到为1,断签后重置为1)',
|
|
|
+ `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
+ UNIQUE KEY `uk_user_sign_date` (`user_id`, `sign_date`),
|
|
|
+ INDEX `idx_user_id` (`user_id`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户签到记录表';
|
|
|
+
|
|
|
+-- 通用播放记录表(支持歌曲、MV)
|
|
|
+CREATE TABLE `play_record` (
|
|
|
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ `resource_type` TINYINT NOT NULL COMMENT '资源类型:1-歌曲,2-MV',
|
|
|
+ `resource_id` INT NOT NULL COMMENT '资源ID,歌曲ID或MV ID',
|
|
|
+ `user_id` INT NOT NULL COMMENT '播放用户ID,关联user表',
|
|
|
+ `play_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '播放时间',
|
|
|
+ -- 联合索引:优化按类型+资源ID/用户ID/时间的查询
|
|
|
+ INDEX `idx_resource_type_id` (`resource_type`, `resource_id`),
|
|
|
+ INDEX `idx_user_id` (`user_id`),
|
|
|
+ INDEX `idx_play_time` (`play_time`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通用播放记录表(歌曲/MV)';
|
|
|
+
|
|
|
+
|
|
|
+-- 最近播放统计表(支持歌曲和MV)
|
|
|
+CREATE TABLE `recent_play_stats` (
|
|
|
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ `user_id` INT NOT NULL COMMENT '播放用户ID,关联user表',
|
|
|
+ `content_type` TINYINT NOT NULL COMMENT '资源类型:1-歌曲,2-MV',
|
|
|
+ `content_id` INT NOT NULL COMMENT '内容ID(歌曲ID或MV ID)',
|
|
|
+ `first_play_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '首次播放时间',
|
|
|
+ `last_play_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后播放时间',
|
|
|
+ UNIQUE KEY `uk_user_content_type_id` (`user_id`, `content_type`, `content_id`),
|
|
|
+ INDEX `idx_user_id` (`user_id`),
|
|
|
+ INDEX `idx_content_type` (`content_type`),
|
|
|
+ INDEX `idx_content_id` (`content_id`),
|
|
|
+ INDEX `idx_last_play_time` (`last_play_time`)
|
|
|
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='最近播放统计表(歌曲和MV通用)';
|