一、需求分析

仿网易云,那么需求的话就照着网易云音乐来做了。
首先可以听歌,可以查看歌手,歌手又有对应的专辑,有用户,用户可以新建歌单,收藏歌单,歌单可以增删歌曲,用户还可以评论歌曲、专辑、歌单,还有粉丝功能,首页还有一个轮播图等…。

二、数据库设计详解

综合需求可以得出,共有以下11张表。
1). 歌曲表
2). 歌手表
3). 专辑表
4). 歌单表
5). 歌单歌曲表
6). 用户表
7). 用户收藏歌曲表
8). 用户收藏歌单表
9). 粉丝表
10). 评论表
11). 轮播图表

下面对每一张表做详细介绍

1. 歌曲表

DROP TABLE IF EXISTS `song`;
CREATE TABLE `song` (`song_id` int(11) NOT NULL auto_increment COMMENT '主键id',`song_name` varchar(255) NOT NULL COMMENT '歌曲名称',`song_singer` int(11) default NULL COMMENT '歌手Id',`song_filepath` varchar(100) default NULL COMMENT '歌曲路径',`song_album` int(11) default NULL COMMENT '专辑Id',`song_lyc` varchar(3000) default NULL, '歌词'PRIMARY KEY  (`song_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 歌手表

DROP TABLE IF EXISTS `singer`;
CREATE TABLE `singer` (`singer_id` int(11) NOT NULL auto_increment,`singer_name` varchar(20) default NULL, '歌手名'`singer_details` varchar(255) default NULL, '歌手简介'`singer_photo` varchar(255) default NULL, '歌手头像'`singer_type` varchar(255) default NULL, '歌手类型'PRIMARY KEY  (`singer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

歌手类型是为了实现歌手页的分类的,华语男歌手、华语女歌手…等功能的。

3. 专辑表

DROP TABLE IF EXISTS `album`;
CREATE TABLE `album` (`album_id` int(11) NOT NULL auto_increment, `album_name` varchar(255) default NULL, '专辑名字'`album_singer` int(11) default NULL, '歌手Id'`album_details` varchar(255) default NULL, '专辑介绍'`album_time` datetime default NULL, '专辑发行时间'`album_img` varchar(255) default NULL, '专辑封面'PRIMARY KEY  (`album_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

歌手、歌曲、专辑都是一对一,或者一对多的关系,就不需要建第三张表来关联了。

4. 歌单表

DROP TABLE IF EXISTS `lists`;
CREATE TABLE `lists` (`list_id` int(11) NOT NULL auto_increment,`list_title` varchar(255) default NULL, '歌单标题'`list_img` varchar(255) default NULL, '歌单封面'`list_userid` int(11) default NULL, '歌单创建者Id'`list_time` datetime default NULL, '歌单创建时间'`list_details` varchar(255) default NULL, '歌单简介'`list_type` int(11) default NULL, '歌单类型'`list_playnum` int(11) default NULL, '歌单点击量'PRIMARY KEY  (`list_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5. 歌单歌曲表

因为一首歌曲可以在多个歌单里,同时一个歌单可以包含多首歌曲,所以歌曲、歌单是多对多的关系,需要建第三张表来关联。

DROP TABLE IF EXISTS `songlist`;
CREATE TABLE `songlist` (`songlist_id` int(11) NOT NULL auto_increment,`songlist_listid` int(11) default NULL, '歌单Id'`songlist_songid` int(11) default NULL, '歌曲Id'PRIMARY KEY  (`songlist_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

6. 用户表

手机号是因为我实现了手机号绑定,以及手机号登录。

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`user_id` int(11) NOT NULL auto_increment,`user_name` varchar(255) default NULL, '用户名'`account` varchar(255) default NULL, '用户账号'`password` varchar(255) default NULL, '用户密码'`user_phone` varchar(255) default NULL, '电话'`user_area` varchar(255) default NULL, '地区'`user_details` varchar(255) default NULL, '简介'`user_gender` int(11) default NULL, '性别'`user_birth` date default NULL, '生日'`user_photo` varchar(255) default NULL, '用户头像'PRIMARY KEY  (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

7. 用户收藏歌曲表

同样用户可以收藏多首歌曲,歌曲也可以被多个用户收藏,所以是多对多的关系,需要建第三张表关联。

DROP TABLE IF EXISTS `usersong`;
CREATE TABLE `usersong` (`usersong_id` int(11) NOT NULL auto_increment,`usersong_userid` int(11) default NULL, '用户id'`usersong_songid` int(11) default NULL, '歌曲id'PRIMARY KEY  (`usersong_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

8. 用户收藏歌单表

同样用户可以收藏多个歌单,歌单也可以被多个用户收藏,所以是多对多的关系,需要建第三张表关联。

DROP TABLE IF EXISTS `userlist`;
CREATE TABLE `userlist` (`userlist_id` int(11) NOT NULL auto_increment COMMENT '用户收藏歌单表',`userlist_userid` int(11) default NULL, '用户id'`userlist_listid` int(11) default NULL, '歌单id'PRIMARY KEY  (`userlist_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

9. 粉丝关注表

用户的关注可能有歌手,可能有用户,粉丝只可能有用户。

CREATE TABLE `fans` (`fans_id` int(11) NOT NULL auto_increment,`fans_type` int(11) default NULL, '类型,区分关注的是歌手还是用户'`fans_focusid` int(11) default NULL, '被关注者id,可能是歌手,也可能是用户'`fans_fansid` int(11) default NULL, '关注者id'PRIMARY KEY  (`fans_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

10. 评论表

用一个类型字段来区分是歌单、专辑,还是歌曲。

CREATE TABLE `comments` (`comm_id` int(11) NOT NULL auto_increment,`comm_details` varchar(255) default NULL, '评论内容'`comm_time` datetime default NULL, '评论时间'`comm_userid` int(11) default NULL, '用户Id'`comm_type` int(11) default NULL, '评论类型 1歌单2专辑3歌曲'`comm_targetid` int(11) default NULL, '目标id,可能是歌单id、专辑id、歌曲id'PRIMARY KEY  (`comm_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

11. 轮播图表

首页一般会轮流播放三四张,一般过期的可以失效掉,而不是直接删除。

CREATE TABLE `slide` (`slide_id` int(11) NOT NULL auto_increment,`slide_img` varchar(255) default NULL, '轮播图路径'`slide_albumid` int(11) default NULL, '专辑id'`slide_valid` int(11) default NULL, '是否有效'PRIMARY KEY  (`slide_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SpringBoot+vue仿网易云音乐网站(二)-数据库设计相关推荐

  1. 毕业设计:基于Springboot + Vue仿网易云音乐网站(一)开源

    项目背景 最近自学了springboot.vue.redis等技术,为了巩固,决定自己做个小网站玩玩,把学到的东西都使用一下,因为自己比较喜欢听音乐,去年一年网易云就听了1800个小时,然后也喜欢周杰 ...

  2. SpringBoot+vue仿网易云音乐网站(三)- Springboot项目以及前端vue基础搭建

    一.基础项目搭建 1. 新建springboot项目 在搭建Springboot项目之前,需要的基础环境:JDK(8).Maven,工具Idea.项目就新建一个简单的springboot项目就行了,具 ...

  3. 【HTML+CSS】仿网易云音乐网站

    [HTML+CSS]仿网易云音乐网站

  4. 基于vue的高仿网易云音乐网站,实现大多数功能

    文章目录 前言 项目演示地址 线上地址 项目仓库 总结 前言 基于Vue + Vue-Router + Vuex + axios + elementui,ui参考网易云音乐,后端接口使用网易云音乐接口 ...

  5. 用HTML+CSS仿网易云音乐网站(6个页面)_实训素材

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 音乐网页设计 | 仿网易云音乐 | 各大音乐官网网页 | 明星 ...

  6. Vue仿网易云音乐播放器(一)

    项目简介 写了很多关于Vue的项目,都是一部分一部分的小模块,这次想把全部学过的关于Vue知识和模块写成一个完整的项目.都是组件化进行mvvm模式开发,实现了view和data的同步更新.仿网易云播放 ...

  7. [Vue仿网易云音乐实战]炎炎夏日——放首自己喜欢的歌

    前言 基于 Vue + vuex + vue-router + vue-axios +better-scroll + Stylus + px2rem 等开发的移动端音乐App,UI 界面是看着自己手机 ...

  8. 2019 Electron+Vue+Ant Design Vue仿网易云音乐windows客户端实战分享

    特点 拖拽播放 桌面歌词 mini模式 自定义托盘右键菜单 任务栏缩略图,歌曲操作 音频可视化 自动/手动检查更新 Nedb数据库持久化 自定义安装路径,安装界面美化 浏览器中启动客户端 Travis ...

  9. 仿网易云音乐网站(加入个人社区)

    演示地址 github代码 小白代码,大佬们如果喜欢请star一下吧 技术栈 前端: Vue,elementUI 后端 : Springboot,mybatis,nginx,node(网易云api) ...

最新文章

  1. html文本框自动赋值,js给文本框赋值 value与innerHTML
  2. 01-H5语义化标签
  3. html5/css3响应式布局介绍
  4. [SpringBoot2]Thymeleaf
  5. sql intersect mysql_SQL INTERSECT子句
  6. 通俗解释主要编程语言及其用途
  7. 【SQL】查询数据库中某个字段有重复值出现的信息
  8. Software - ASCII码表
  9. 多张eps合并成一张
  10. 画图软件origin-柱状图断点设置
  11. 多商户商城系统功能拆解23讲-平台端分销等级
  12. 硬件加速 setlayertype
  13. 网上申请办理杭州市民卡
  14. SATA2 硬盘 系统盘 显卡黑屏_不重装系统加装固态硬盘
  15. 穿越派·派盘 + 思源笔记 = 私人笔记本
  16. MATLAB libsvm 安装和使用
  17. 微信公众号私信回复内容怎么设置
  18. linux下arm架构中,触摸屏下没有鼠标事件,采用qtouchevent事件来代替,左右滑动显示完文本
  19. pytorch中torch.mul、torch.mm/torch.bmm、torch.matmul的区别
  20. 第十三届蓝桥杯大赛JavaB个人赛题题解

热门文章

  1. 心形曲线(java)
  2. 网页源代码拿到后怎么使用(手机怎么看网页源代码)
  3. STM32CubeMX--STM32L0系列外置DAC芯片(LTC2600)电压输出
  4. 镭速传输 “0元百日计划”提前大曝光!Raysync传输协议要开放?
  5. 库卡机器人示教器截屏_KUKA库卡机器人配件示教器修理基础知识和操作关键
  6. FANUC机器人如何将示教器的语言切换成中文?
  7. 周鸿祎:恭喜腾讯穿铁裤衩 现在又养条狗
  8. 探测输入字符串是否为UTF8编码
  9. centos 7 安装 apache,php,并支持mongodb扩展
  10. 'nvida-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。