当前位置: 首页 > article >正文

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

上一章文章 我们做了音乐播放器 这个项目一些公共封装的一些工具类。参考网址:
https://blog.csdn.net/Drug_/article/details/145093705

那么这篇文章 我们开始创建数据表。来存储我们项目中所需要存储的数据。
对于 我们这个项目 版本一 需要开发的核心功能 在 第一篇前期规划的文章中已经有过介绍了。
这篇文章 我就简单的再整理一下。
实现需求:
管理后台:
账号管理、专辑管理、歌手管理、歌曲管理

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

数据库版本: mysql8.0

针对以上版本,我们开始创建数据表。
这里 我不是采用的 Navicat 建表工具直接创建表

而是使用 一个 叫 flyway 的依赖工具 来创建表。 这样方便我们 后续开发完整后,迁移数据库部署。
对于这个 flyway 这个依赖 如果有小伙伴 不太会使用 可以参考 我这篇博客。
https://blog.csdn.net/Drug_/article/details/137600327

这篇博客 有详细 介绍 怎么 在springboot项目中使用 flyway 。
我们所有的数据表 都创建在 这个文件夹下 。 前期 我们先简单的创建 6个数据表。后续如果有 新的需求 我们在慢慢 扩展数据表。
在这里插入图片描述
下面我直接分享 表结构

表1:账号表

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:作者表

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:专辑表

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:歌曲表

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:我喜欢的歌曲表

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 依赖 再前面分享的几篇文章也有提到过。

具体用法 可以参考 下面这个博客。
https://blog.csdn.net/Drug_/article/details/143402973

-- 这里使用的是 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 自动创建的 数据表。

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

说明:
因核心分享 的是java编程。后续文章中 基本分享的都是java语言的代码。
对于前端的代码,在文章中就不分享了。只会分享一下页面效果。
当然项目完结后,我会把前后端项目源码打包好放到最后一篇文章中。

如果有小伙伴有兴趣可以订阅此专栏,后续会持续更新直到音乐播放器这个软件完成。
我会尽可能详细的以文字的形式分享出来 从0到1 写出来一个音乐播放器项目。


http://www.kler.cn/a/506780.html

相关文章:

  • 鸿蒙-点击Notification通知并打开App的具体页面
  • Java中的依赖注入是什么?它如何工作?
  • Redis 3.2.1在Win10系统上的安装教程
  • 图论的起点——七桥问题
  • Android面试题
  • [Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现后台批量生成PDF文档
  • Math Reference Notes: 矩阵性质
  • python管理工具:conda部署+使用
  • 《黄金像凶杀案-再起》V1.2.0+Dlcs官方中文学习版
  • VIVADO FIFO (同步和异步) IP 核详细使用配置步骤
  • GO语言实现KMP算法
  • 代码随想录算法训练营第 9 天(字符串2)| 151.翻转字符串里的单词 卡码网55.右旋转字符串 KMP(跳过) 总结
  • 【Python基础篇】——第3篇:从入门到精通:掌握Python数据类型与数据结构
  • kubernetes第九天
  • 如何解决Outlook无法连接到服务器的问题
  • CentOS 9 Stream 上安装 Node.js 18.20.5
  • 《零基础Go语言算法实战》【题目 5-1】按照给定条件构建二叉树
  • Android SystemUI——车载CarSystemUI加载(八)
  • Gateway怎么实现限流的
  • HTML中最基本的东西
  • .NET概述
  • [Do374]Ansible一键搭建sftp实现用户批量增删
  • 如何设置请求头模拟浏览器访问?
  • HTML标签笔记
  • 【Golang 面试题】每日 3 题(三十三)