仿网易云,那么需求的话就照着网易云音乐来做了。
首先可以听歌,可以查看歌手,歌手又有对应的专辑,有用户,用户可以新建歌单,收藏歌单,歌单可以增删歌曲,用户还可以评论歌曲、专辑、歌单,还有粉丝功能,首页还有一个轮播图等…。
综合需求可以得出,共有以下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;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)