4. 使用springboot做一个音乐播放器软件项目【数据库表的创建】

上一章文章 我们做了音乐播放器 这个项目一些公共封装的一些工具类。参考网址: juejin.cn/post/747369...

那么这篇文章 我们开始创建数据表。来存储我们项目中所需要存储的数据。

对于 我们这个项目 版本一 需要开发的核心功能 在 第一篇前期规划的文章中已经有过介绍了。

这篇文章 就简单的再整理一下

实现需求:

管理后台:

账号管理、专辑管理、歌手管理、歌曲管理

客户端:

首页、歌曲搜索、专辑列表、歌手列表、音乐播放、我喜欢的、个人中心、基础设置。

数据库版本: mysql8.0

针对以上版本,我们开始创建数据表。

这里 我不是采用的 Navicat 建表工具直接创建表

而是使用 一个 叫 flyway 的依赖工具 来创建表。 这样方便我们 后续开发完整后,迁移数据库部署。

对于这个 flyway 这个依赖 如果有小伙伴 不太会使用 可以参考 我这篇博客。 juejin.cn/post/744770...

这篇博客 有详细 介绍 怎么 在springboot项目中使用 flyway 。

我们所有的数据表 都创建在 这个文件夹下 。 前期 我们先简单的创建 6个数据表。后续如果有 新的需求 我们在慢慢 扩展数据表。

下面我直接分享 表结构

表1:账号表

less 复制代码
CREATE TABLE `mu_user`
(
    `id`           int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
    `is_deleted`   tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`   int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`   int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `username`     varchar(100) NULL COMMENT '用户名',
    `password`     varchar(50) NULL COMMENT '密码',
    `nickname`     varchar(100) NULL COMMENT '昵称',
    `avatar_url`   varchar(255) NULL COMMENT '用户头像',
    `is_super`     tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否是内置管理员',
    PRIMARY KEY (`id`)
) COMMENT = '账号表';


INSERT INTO `mu_user` (`is_deleted`, `created_time`, `updated_time`, `created_id`, `updated_id`, `username`, `password`,
                       `nickname`, `avatar_url`, `is_super`)
VALUES (0, '2024-12-29 17:59:59', '2024-12-29 18:00:03', 0, 0, 'nwadmin', 'cf8d3876353ddf5d7459f56558042f4e', '小可爱',
        NULL, 1);

表2:作者表

sql 复制代码
CREATE TABLE `mu_author`
(
    `id`           int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
    `is_deleted`   tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`   int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`   int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `author_name`  varchar(100) NULL COMMENT '作者',
    `cover_url`    varchar(255) NULL COMMENT '作者封面',
    PRIMARY KEY (`id`)
) COMMENT = '作者表';

表3:专辑表

sql 复制代码
CREATE TABLE `mu_album`
(
    `id`              int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
    `is_deleted`      tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time`    datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time`    datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`      int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`      int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `album_name`      varchar(100) NULL COMMENT '专辑名称',
    `album_cover_url` varchar(255) NULL COMMENT '专辑封面',
    PRIMARY KEY (`id`)
) COMMENT = '专辑表';

表4:歌曲表

less 复制代码
CREATE TABLE `mu_song`
(
    `id`             int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
    `is_deleted`     tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time`   datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time`   datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`     int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`     int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `song_name`      varchar(100) NULL COMMENT '歌曲名称',
    `author_name`    varchar(100) NULL COMMENT '作者名称',
    `album_name`     varchar(100) NULL COMMENT '专辑名称',
    `author_id`      int(11) NOT NULL DEFAULT 0 COMMENT '作者名称',
    `album_id`       int(11) NOT NULL DEFAULT 0 COMMENT '专辑名称',
    `song_cover_url` varchar(255) NULL COMMENT '歌曲封面',
    `song_url`       varchar(255) NULL COMMENT '歌曲的存储地址',
    PRIMARY KEY (`id`)
) COMMENT = '歌曲表';

表5:我喜欢的歌曲表

sql 复制代码
CREATE TABLE `mu_user_liked_songs`
(
    `id`           int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
    `is_deleted`   tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`   int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`   int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `user_id`      int NULL COMMENT '用户id',
    `song_id`      int NULL COMMENT '歌曲id',
    PRIMARY KEY (`id`)
) COMMENT = '我喜欢的歌曲表';

表6: 文件存储表

对于表6 是 x-file-storage 这个 文件上传的依赖 带的表,使用这个依赖做文件上传会使用到下面的这个表结构 这个表结构是我从 x-file-storage 这个依赖的文档里复制过来的,这个x-file-storage 依赖 再前面分享的几篇文章也有提到过。

具体用法 可以参考 下面这个博客。 juejin.cn/post/745705...

less 复制代码
-- 这里使用的是 mysql
CREATE TABLE `file_detail`
(
    `id`                varchar(32)  NOT NULL COMMENT '文件id',
    `is_deleted`        tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time`      datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time`      datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`        int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`        int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `url`               varchar(512) NOT NULL COMMENT '文件访问地址',
    `size`              bigint(20)   DEFAULT NULL COMMENT '文件大小,单位字节',
    `filename`          varchar(256) DEFAULT NULL COMMENT '文件名称',
    `original_filename` varchar(256) DEFAULT NULL COMMENT '原始文件名',
    `base_path`         varchar(256) DEFAULT NULL COMMENT '基础存储路径',
    `path`              varchar(256) DEFAULT NULL COMMENT '存储路径',
    `ext`               varchar(32)  DEFAULT NULL COMMENT '文件扩展名',
    `content_type`      varchar(128) DEFAULT NULL COMMENT 'MIME类型',
    `platform`          varchar(32)  DEFAULT NULL COMMENT '存储平台',
    `th_url`            varchar(512) DEFAULT NULL COMMENT '缩略图访问路径',
    `th_filename`       varchar(256) DEFAULT NULL COMMENT '缩略图名称',
    `th_size`           bigint(20)   DEFAULT NULL COMMENT '缩略图大小,单位字节',
    `th_content_type`   varchar(128) DEFAULT NULL COMMENT '缩略图MIME类型',
    `object_id`         varchar(32)  DEFAULT NULL COMMENT '文件所属对象id',
    `object_type`       varchar(32)  DEFAULT NULL COMMENT '文件所属对象类型,例如用户头像,评价图片',
    `metadata`          text COMMENT '文件元数据',
    `user_metadata`     text COMMENT '文件用户元数据',
    `th_metadata`       text COMMENT '缩略图元数据',
    `th_user_metadata`  text COMMENT '缩略图用户元数据',
    `attr`              text COMMENT '附加属性',
    `file_acl`          varchar(32)  DEFAULT NULL COMMENT '文件ACL',
    `th_file_acl`       varchar(32)  DEFAULT NULL COMMENT '缩略图文件ACL',
    `hash_info`         text COMMENT '哈希信息',
    `upload_id`         varchar(128) DEFAULT NULL COMMENT '上传ID,仅在手动分片上传时使用',
    `upload_status`     int(11)      DEFAULT NULL COMMENT '上传状态,仅在手动分片上传时使用,1:初始化完成,2:上传完成',
    `create_time`       datetime     DEFAULT NULL COMMENT '创建时间',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB DEFAULT CHARSET = utf8 ROW_FORMAT = DYNAMIC COMMENT ='文件记录表';

CREATE TABLE `file_part_detail`
(
    `id`           varchar(32) NOT NULL COMMENT '分片id',
    `is_deleted`   tinyint(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
    `created_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
    `updated_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
    `created_id`   int(11) NOT NULL DEFAULT 0 COMMENT '创建用户id',
    `updated_id`   int(11) NOT NULL DEFAULT 0 COMMENT '更新用户id',
    `platform`     varchar(32)  DEFAULT NULL COMMENT '存储平台',
    `upload_id`    varchar(128) DEFAULT NULL COMMENT '上传ID,仅在手动分片上传时使用',
    `e_tag`        varchar(255) DEFAULT NULL COMMENT '分片 ETag',
    `part_number`  int(11)      DEFAULT NULL COMMENT '分片号。每一个上传的分片都有一个分片号,一般情况下取值范围是1~10000',
    `part_size`    bigint(20)   DEFAULT NULL COMMENT '文件大小,单位字节',
    `hash_info`    text CHARACTER SET utf8 COMMENT '哈希信息',
    `create_time`  datetime     DEFAULT NULL COMMENT '创建时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='文件分片信息表,仅在手动分片上传时使用';

我们把这些 创建好的sql文件 放到 这个文件夹下后,当我们使用 idea 启动 springboot 项目时,这些sql文件会被自动执行。帮我们创建好我们需要的表 。 这样后续我们如果 开发完整 需要部署到某个电脑上,我们就不用 迁移数据库了。直接把jar 放到电脑上启动后 会自动帮我们创建表 。这样就非常的方便了。

当然 后续我们加字段 加索引 都是通过这种方式来加。

每次重启服务 flyway 都会检测 有没有哪些sql文件没有执行过。

如果我们没有用这个工具:比如后续我们扩展了一个字段 我们通过 Navicat 直接 扩展字段,那么 我们本地数据库扩展一个。到了别的电脑上的数据库 还需要再扩展一下非常的不方便。但是有了这个 flyway 依赖 我们就不需要手动扩展了。每次重启服务,都会自动检测 这些sql 文件。

上面这些 就是我们通过 flyway 自动创建的 数据表。

好了 。对于这个 项目 今天 就分享到这里~ 下一章,我们就开始针对这些数据库 开始编写相对应的业务逻辑。接下来 对于业务逻辑 写起来就非常的快了~

完整版源代码👉www.wwwoop.com/home/Index/...

相关推荐
vipbic1 分钟前
Strapi 5 怎么用才够爽?这款插件带你实现“建站自由”
后端·node.js
待╮續9 分钟前
JVMS (JDK Version Manager) 使用教程
java·开发语言
hgz071016 分钟前
企业级Nginx反向代理与负载均衡实战
java·jmeter
苏三的开发日记38 分钟前
linux搭建hadoop服务
后端
diudiu962844 分钟前
Maven配置阿里云镜像
java·spring·阿里云·servlet·eclipse·tomcat·maven
sir7611 小时前
Redisson分布式锁实现原理
后端
魔芋红茶1 小时前
Netty 简易指南
java·开发语言·netty
大学生资源网1 小时前
基于springboot的万亩助农网站的设计与实现源代码(源码+文档)
java·spring boot·后端·mysql·毕业设计·源码
小严家1 小时前
Java基础教程大全完整学习路径
java·开发语言·学习
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 基于Java的电影推荐系统为例,包含答辩的问题和答案
java·开发语言