diff --git a/sql/music.sql b/sql/music.sql deleted file mode 100644 index 1f7ed82..0000000 --- a/sql/music.sql +++ /dev/null @@ -1,237 +0,0 @@ --- 用户表 -CREATE TABLE `user` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', - `username` varchar(50) NOT NULL COMMENT '用户名', - `password` varchar(100) NOT NULL COMMENT '密码', - `nickname` varchar(50) DEFAULT NULL COMMENT '昵称', - `avatar` varchar(255) DEFAULT NULL COMMENT '头像URL', - `gender` tinyint DEFAULT '0' COMMENT '性别:0-未知,1-男,2-女', - `email` varchar(100) DEFAULT NULL COMMENT '邮箱', - `phone` varchar(20) DEFAULT NULL COMMENT '手机号', - `birth_date` date DEFAULT NULL COMMENT '出生日期', - `introduction` varchar(500) DEFAULT NULL COMMENT '个人简介', - `role` tinyint DEFAULT '0' COMMENT '角色:0-普通用户,1-管理员', - `status` tinyint DEFAULT '1' COMMENT '状态:0-禁用,1-正常', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_username` (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; - --- 音乐类型表 -CREATE TABLE `music_type` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', - `name` varchar(50) NOT NULL COMMENT '类型名称', - `description` varchar(255) DEFAULT NULL COMMENT '类型描述', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐类型表'; - --- 歌手类型表 -CREATE TABLE `singer_type` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', - `name` varchar(50) NOT NULL COMMENT '类型名称', - `description` varchar(255) DEFAULT NULL COMMENT '类型描述', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌手类型表'; - --- 歌单类型表 -CREATE TABLE `playlist_type` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', - `name` varchar(50) NOT NULL COMMENT '类型名称', - `description` varchar(255) DEFAULT NULL COMMENT '类型描述', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌单类型表'; - --- 歌手表 -CREATE TABLE `singer` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '歌手ID', - `name` varchar(100) NOT NULL COMMENT '歌手名称', - `avatar` varchar(255) DEFAULT NULL COMMENT '歌手头像URL', - `introduction` text COMMENT '歌手简介', - `type_id` bigint DEFAULT NULL COMMENT '歌手类型ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - KEY `idx_type_id` (`type_id`), - CONSTRAINT `fk_singer_type` FOREIGN KEY (`type_id`) REFERENCES `singer_type` (`id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌手表'; - --- 音乐表 -CREATE TABLE `music` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '音乐ID', - `name` varchar(100) NOT NULL COMMENT '音乐名称', - `cover` varchar(255) DEFAULT NULL COMMENT '封面URL', - `url` varchar(255) NOT NULL COMMENT '音乐文件URL', - `lyric` text COMMENT '歌词', - `duration` int DEFAULT '0' COMMENT '时长(秒)', - `play_count` bigint DEFAULT '0' COMMENT '播放次数', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐表'; - --- 音乐-歌手关联表 -CREATE TABLE `music_singer` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `music_id` bigint NOT NULL COMMENT '音乐ID', - `singer_id` bigint NOT NULL COMMENT '歌手ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_music_singer` (`music_id`,`singer_id`), - KEY `idx_singer_id` (`singer_id`), - CONSTRAINT `fk_ms_music_id` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_ms_singer_id` FOREIGN KEY (`singer_id`) REFERENCES `singer` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐-歌手关联表'; - --- 音乐-类型关联表 -CREATE TABLE `music_type_relation` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `music_id` bigint NOT NULL COMMENT '音乐ID', - `type_id` bigint NOT NULL COMMENT '类型ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_music_type` (`music_id`,`type_id`), - KEY `idx_type_id` (`type_id`), - CONSTRAINT `fk_mtr_music_id` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_mtr_type_id` FOREIGN KEY (`type_id`) REFERENCES `music_type` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐-类型关联表'; - --- 歌单表 -CREATE TABLE `playlist` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '歌单ID', - `name` varchar(100) NOT NULL COMMENT '歌单名称', - `cover` varchar(255) DEFAULT NULL COMMENT '封面URL', - `description` varchar(500) DEFAULT NULL COMMENT '歌单描述', - `creator_id` bigint DEFAULT NULL COMMENT '创建者ID', - `type_id` bigint DEFAULT NULL COMMENT '歌单类型ID', - `is_official` tinyint DEFAULT '0' COMMENT '是否官方歌单:0-否,1-是', - `play_count` bigint DEFAULT '0' COMMENT '播放次数', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - KEY `idx_creator_id` (`creator_id`), - KEY `idx_type_id` (`type_id`), - CONSTRAINT `fk_playlist_creator` FOREIGN KEY (`creator_id`) REFERENCES `user` (`id`) ON DELETE SET NULL, - CONSTRAINT `fk_playlist_type` FOREIGN KEY (`type_id`) REFERENCES `playlist_type` (`id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌单表'; - --- 歌单-音乐关联表 -CREATE TABLE `playlist_music` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `playlist_id` bigint NOT NULL COMMENT '歌单ID', - `music_id` bigint NOT NULL COMMENT '音乐ID', - `order_num` int DEFAULT '0' COMMENT '排序号', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_playlist_music` (`playlist_id`,`music_id`), - KEY `idx_music_id` (`music_id`), - CONSTRAINT `fk_pm_music_id` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_pm_playlist_id` FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='歌单-音乐关联表'; - --- 用户收藏音乐表 -CREATE TABLE `user_collect_music` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `music_id` bigint NOT NULL COMMENT '音乐ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_user_music` (`user_id`,`music_id`), - KEY `idx_music_id` (`music_id`), - CONSTRAINT `fk_ucm_music_id` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_ucm_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户收藏音乐表'; - --- 用户收藏歌单表 -CREATE TABLE `user_collect_playlist` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `playlist_id` bigint NOT NULL COMMENT '歌单ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_user_playlist` (`user_id`,`playlist_id`), - KEY `idx_playlist_id` (`playlist_id`), - CONSTRAINT `fk_ucp_playlist_id` FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_ucp_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户收藏歌单表'; - --- 用户收藏歌手表 -CREATE TABLE `user_collect_singer` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `singer_id` bigint NOT NULL COMMENT '歌手ID', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_user_singer` (`user_id`,`singer_id`), - KEY `idx_singer_id` (`singer_id`), - CONSTRAINT `fk_ucs_singer_id` FOREIGN KEY (`singer_id`) REFERENCES `singer` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_ucs_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户收藏歌手表'; - --- 评论表 -CREATE TABLE `comment` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论ID', - `content` varchar(500) NOT NULL COMMENT '评论内容', - `user_id` bigint NOT NULL COMMENT '评论用户ID', - `target_id` bigint NOT NULL COMMENT '评论目标ID', - `target_type` tinyint NOT NULL COMMENT '评论目标类型:1-音乐,2-歌单,3-歌手', - `parent_id` bigint DEFAULT NULL COMMENT '父评论ID', - `status` tinyint DEFAULT '1' COMMENT '状态:0-禁用,1-正常', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`), - KEY `idx_user_id` (`user_id`), - KEY `idx_target` (`target_id`,`target_type`), - KEY `idx_parent_id` (`parent_id`), - CONSTRAINT `fk_comment_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评论表'; - --- 轮播图表 -CREATE TABLE `banner` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '轮播图ID', - `title` varchar(100) DEFAULT NULL COMMENT '标题', - `image_url` varchar(255) NOT NULL COMMENT '图片URL', - `link_url` varchar(255) DEFAULT NULL COMMENT '链接URL', - `target_id` bigint DEFAULT NULL COMMENT '目标ID', - `target_type` tinyint DEFAULT NULL COMMENT '目标类型:1-音乐,2-歌单,3-歌手', - `order_num` int DEFAULT '0' COMMENT '排序号', - `status` tinyint DEFAULT '1' COMMENT '状态:0-禁用,1-正常', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='轮播图表'; - --- 播放历史表 -CREATE TABLE `play_history` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', - `user_id` bigint NOT NULL COMMENT '用户ID', - `music_id` bigint NOT NULL COMMENT '音乐ID', - `play_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '播放时间', - PRIMARY KEY (`id`), - KEY `idx_user_id` (`user_id`), - KEY `idx_music_id` (`music_id`), - CONSTRAINT `fk_ph_music_id` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE CASCADE, - CONSTRAINT `fk_ph_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='播放历史表'; - --- 系统日志表 -CREATE TABLE `system_log` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID', - `user_id` bigint DEFAULT NULL COMMENT '用户ID', - `operation` varchar(50) DEFAULT NULL COMMENT '操作类型', - `method` varchar(100) DEFAULT NULL COMMENT '请求方法', - `params` varchar(2000) DEFAULT NULL COMMENT '请求参数', - `ip` varchar(50) DEFAULT NULL COMMENT 'IP地址', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - PRIMARY KEY (`id`), - KEY `idx_user_id` (`user_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表'; \ No newline at end of file diff --git a/sql/music_db.sql b/sql/music_db.sql new file mode 100644 index 0000000..00aa587 --- /dev/null +++ b/sql/music_db.sql @@ -0,0 +1,367 @@ +/* + Navicat Premium Dump SQL + + Source Server : docker-mysql + Source Server Type : MySQL + Source Server Version : 80041 (8.0.41) + Source Host : localhost:3306 + Source Schema : music_db + + Target Server Type : MySQL + Target Server Version : 80041 (8.0.41) + File Encoding : 65001 + + Date: 23/07/2025 22:59:43 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for banner +-- ---------------------------- +DROP TABLE IF EXISTS `banner`; +CREATE TABLE `banner` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '轮播图ID', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标题', + `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '图片URL', + `link_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '链接URL', + `target_id` bigint NULL DEFAULT NULL COMMENT '目标ID', + `target_type` int NULL DEFAULT NULL, + `order_num` int NULL DEFAULT 0 COMMENT '排序号', + `status` int NULL DEFAULT NULL, + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '轮播图表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for comment +-- ---------------------------- +DROP TABLE IF EXISTS `comment`; +CREATE TABLE `comment` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论ID', + `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '评论内容', + `user_id` bigint NOT NULL COMMENT '评论用户ID', + `target_id` bigint NOT NULL COMMENT '评论目标ID', + `target_type` int NOT NULL, + `parent_id` bigint NULL DEFAULT NULL COMMENT '父评论ID', + `status` int NULL DEFAULT NULL, + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_user_id`(`user_id` ASC) USING BTREE, + INDEX `idx_target`(`target_id` ASC, `target_type` ASC) USING BTREE, + INDEX `idx_parent_id`(`parent_id` ASC) USING BTREE, + CONSTRAINT `FK8kcum44fvpupyw6f5baccx25c` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '评论表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for music +-- ---------------------------- +DROP TABLE IF EXISTS `music`; +CREATE TABLE `music` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '音乐ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐名称', + `cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面URL', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '音乐文件URL', + `lyric` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌词', + `duration` int NULL DEFAULT 0 COMMENT '时长(秒)', + `play_count` bigint NULL DEFAULT 0 COMMENT '播放次数', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `album` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '音乐表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for music_singer +-- ---------------------------- +DROP TABLE IF EXISTS `music_singer`; +CREATE TABLE `music_singer` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `music_id` bigint NOT NULL COMMENT '音乐ID', + `singer_id` bigint NOT NULL COMMENT '歌手ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_music_singer`(`music_id` ASC, `singer_id` ASC) USING BTREE, + INDEX `idx_singer_id`(`singer_id` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '音乐-歌手关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for music_type +-- ---------------------------- +DROP TABLE IF EXISTS `music_type`; +CREATE TABLE `music_type` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型名称', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型描述', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_name`(`name` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '音乐类型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for music_type_relation +-- ---------------------------- +DROP TABLE IF EXISTS `music_type_relation`; +CREATE TABLE `music_type_relation` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `music_id` bigint NOT NULL COMMENT '音乐ID', + `type_id` bigint NOT NULL COMMENT '类型ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_music_type`(`music_id` ASC, `type_id` ASC) USING BTREE, + INDEX `idx_type_id`(`type_id` ASC) USING BTREE, + CONSTRAINT `FK2i7xdrmrh0l6thp9u2r16fdcm` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKjtxip1yvwn66p4cbpycekychq` FOREIGN KEY (`type_id`) REFERENCES `music_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '音乐-类型关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for play_history +-- ---------------------------- +DROP TABLE IF EXISTS `play_history`; +CREATE TABLE `play_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `music_id` bigint NOT NULL COMMENT '音乐ID', + `play_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '播放时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_user_id`(`user_id` ASC) USING BTREE, + INDEX `idx_music_id`(`music_id` ASC) USING BTREE, + CONSTRAINT `FKm05jb66wc5epn38vuwm55o933` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKt6cp1qv95qi4abyn69soyvibk` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '播放历史表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for playlist +-- ---------------------------- +DROP TABLE IF EXISTS `playlist`; +CREATE TABLE `playlist` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '歌单ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '歌单名称', + `cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '封面URL', + `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌单描述', + `creator_id` bigint NULL DEFAULT NULL COMMENT '创建者ID', + `type_id` bigint NULL DEFAULT NULL COMMENT '歌单类型ID', + `is_official` int NULL DEFAULT NULL, + `play_count` bigint NULL DEFAULT 0 COMMENT '播放次数', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_creator_id`(`creator_id` ASC) USING BTREE, + INDEX `idx_type_id`(`type_id` ASC) USING BTREE, + CONSTRAINT `FKi45kpenvb301c9yb1labp8b4j` FOREIGN KEY (`creator_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKttnmgs0esm9njqa0g52mbp48` FOREIGN KEY (`type_id`) REFERENCES `playlist_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '歌单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for playlist_music +-- ---------------------------- +DROP TABLE IF EXISTS `playlist_music`; +CREATE TABLE `playlist_music` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `playlist_id` bigint NOT NULL COMMENT '歌单ID', + `music_id` bigint NOT NULL COMMENT '音乐ID', + `order_num` int NULL DEFAULT 0 COMMENT '排序号', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_playlist_music`(`playlist_id` ASC, `music_id` ASC) USING BTREE, + INDEX `idx_music_id`(`music_id` ASC) USING BTREE, + CONSTRAINT `FK5g0xtl5e89uycye0jo1ll65sq` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKq9o07ljjk03aeeqt0q9lwhndk` FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '歌单-音乐关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for playlist_type +-- ---------------------------- +DROP TABLE IF EXISTS `playlist_type`; +CREATE TABLE `playlist_type` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型名称', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型描述', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_name`(`name` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '歌单类型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for singer +-- ---------------------------- +DROP TABLE IF EXISTS `singer`; +CREATE TABLE `singer` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '歌手ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '歌手名称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '歌手头像URL', + `introduction` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '歌手简介', + `type_id` bigint NULL DEFAULT NULL COMMENT '歌手类型ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_type_id`(`type_id` ASC) USING BTREE, + CONSTRAINT `FKdwhlvo45iuspxcjg0gax5exwm` FOREIGN KEY (`type_id`) REFERENCES `singer_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '歌手表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for singer_music +-- ---------------------------- +DROP TABLE IF EXISTS `singer_music`; +CREATE TABLE `singer_music` ( + `singer_id` bigint NOT NULL, + `music_id` bigint NOT NULL, + PRIMARY KEY (`singer_id`, `music_id`) USING BTREE, + INDEX `FKk0fdv208e2ulhcxd9gge63h6j`(`music_id` ASC) USING BTREE, + CONSTRAINT `FKf33uki3h3ftg9ne16xr4n1srp` FOREIGN KEY (`singer_id`) REFERENCES `singer` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKk0fdv208e2ulhcxd9gge63h6j` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for singer_type +-- ---------------------------- +DROP TABLE IF EXISTS `singer_type`; +CREATE TABLE `singer_type` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '类型ID', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型名称', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类型描述', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_name`(`name` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '歌手类型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for system_log +-- ---------------------------- +DROP TABLE IF EXISTS `system_log`; +CREATE TABLE `system_log` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `user_id` bigint NULL DEFAULT NULL COMMENT '用户ID', + `operation` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作类型', + `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求方法', + `params` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求参数', + `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'IP地址', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_user_id`(`user_id` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '系统日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user +-- ---------------------------- +DROP TABLE IF EXISTS `user`; +CREATE TABLE `user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名', + `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码', + `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像URL', + `gender` int NULL DEFAULT NULL, + `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', + `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', + `birth_date` date NULL DEFAULT NULL COMMENT '出生日期', + `introduction` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '个人简介', + `role` int NULL DEFAULT NULL, + `status` int NULL DEFAULT NULL, + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_username`(`username` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_collect_music +-- ---------------------------- +DROP TABLE IF EXISTS `user_collect_music`; +CREATE TABLE `user_collect_music` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `music_id` bigint NOT NULL COMMENT '音乐ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_user_music`(`user_id` ASC, `music_id` ASC) USING BTREE, + INDEX `idx_music_id`(`music_id` ASC) USING BTREE, + CONSTRAINT `FK1bm2wy4dgmhdfvp6k9fhqpf73` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKt8w479d40yle3jxmqiovm6quo` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户收藏音乐表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_collect_playlist +-- ---------------------------- +DROP TABLE IF EXISTS `user_collect_playlist`; +CREATE TABLE `user_collect_playlist` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `playlist_id` bigint NOT NULL COMMENT '歌单ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_user_playlist`(`user_id` ASC, `playlist_id` ASC) USING BTREE, + INDEX `idx_playlist_id`(`playlist_id` ASC) USING BTREE, + CONSTRAINT `FKe4f1odrrb8yq287v9gwsbq5px` FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKqxg6amofxpxuxf6uwjebb5jak` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户收藏歌单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_collect_singer +-- ---------------------------- +DROP TABLE IF EXISTS `user_collect_singer`; +CREATE TABLE `user_collect_singer` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `singer_id` bigint NOT NULL COMMENT '歌手ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uk_user_singer`(`user_id` ASC, `singer_id` ASC) USING BTREE, + INDEX `idx_singer_id`(`singer_id` ASC) USING BTREE, + CONSTRAINT `FKlvx6pnysffce263knm6iivjjj` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKn8hu81ynti2nku5p7nsh6mk1k` FOREIGN KEY (`singer_id`) REFERENCES `singer` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户收藏歌手表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_music +-- ---------------------------- +DROP TABLE IF EXISTS `user_music`; +CREATE TABLE `user_music` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `collect_time` datetime(6) NULL DEFAULT NULL, + `music_id` bigint NULL DEFAULT NULL, + `user_id` bigint NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `FKb53nc2rlyaotl1socy90u0v8`(`music_id` ASC) USING BTREE, + INDEX `FKq3jkqxxm4lxvoaauy93dq1hjl`(`user_id` ASC) USING BTREE, + CONSTRAINT `FKb53nc2rlyaotl1socy90u0v8` FOREIGN KEY (`music_id`) REFERENCES `music` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKq3jkqxxm4lxvoaauy93dq1hjl` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_playlist +-- ---------------------------- +DROP TABLE IF EXISTS `user_playlist`; +CREATE TABLE `user_playlist` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `collect_time` datetime(6) NULL DEFAULT NULL, + `playlist_id` bigint NULL DEFAULT NULL, + `user_id` bigint NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK7k6xercebs1wg014xb49hw3h0`(`playlist_id` ASC) USING BTREE, + INDEX `FKmofufj03yw1wqauec6vrdnfw1`(`user_id` ASC) USING BTREE, + CONSTRAINT `FKmofufj03yw1wqauec6vrdnfw1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user_singer +-- ---------------------------- +DROP TABLE IF EXISTS `user_singer`; +CREATE TABLE `user_singer` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `collect_time` datetime(6) NULL DEFAULT NULL, + `singer_id` bigint NULL DEFAULT NULL, + `user_id` bigint NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `FKacl5uu14x3io8qygn0cp27nvb`(`singer_id` ASC) USING BTREE, + INDEX `FKnogaivkt6y4jy5vbt85tu8qj0`(`user_id` ASC) USING BTREE, + CONSTRAINT `FKnogaivkt6y4jy5vbt85tu8qj0` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1;