数据库大作业——音乐平台数据库管理系统

W...Y的主页😊

代码仓库分享💕 


《数据库系统》课程设计 :流行音乐管理平台数据库系统(本数据库大作业使用软件sql server、dreamweaver、power designer)

目录

系统需求设计

数据库概念结构设计

实体分析

属性分析

联系分析

概念模型分析(CDM图)

数据库逻辑结构设计

 逻辑模型设计(LDM图)

 数据库物理结构设计

表设计

创建表和完整性约束代码设计

创建物理模型设计图(PDM)

​编辑 

数据库功能实现及界面展示

页面设计展示

 总结与展望

总结

展望


 系统需求设计

1.需求概念:

音乐管理系统是一个为用户提供方便、快捷、高效的音乐平台,可以让用户可

以随时随地享受音乐,发现新的音乐,分享自己的音乐喜好,增强音乐的社交

属性。

用户管理:用户可以注册、登录、修改个人信息、注销账号等;

歌单管理:用户可以创建、编辑、删除自己的歌单,可以将音乐添加到歌单中,

可以查看、收藏其他用户的歌单,可以分享自己的歌单到社交媒体等;

收藏管理:用户可以收藏自己喜欢的音乐、歌单、歌手等,可以查看、取消收

藏、管理自己的收藏夹;

音乐管理:系统可以存储音乐的各种信息,包括歌曲、专辑、歌手、流派,歌

词等。可以查询音乐的歌词,播放地址等;

评论管理:用户可以评论别人的歌曲,歌单,可以查看自己的评论,删除自己

的评论。

业务流程图:

1.系统功能结构图 :

2.业务流程图:

业务分为注册登录、用户收藏、评论、歌单和歌曲。

用户规则:用户必须注册并登录才能使用系统的功能,用户可以修改自己的个人信息,可以注销自己的账号,但不能恢复已注销的账号,用户可以给系统提供反馈信息,系统会根据用户的反馈信息改进服务质量;

 

收藏规则:收藏必须有一个唯一的 id,系统不会存储或展示重复的收藏,收藏必须有一个对象,系统会记录收藏的对象和收藏的时间,收藏除了 id 与收藏名其他都可以为空;

评论规则:每个评论都会有 1 个唯一的 id,系统不会存储 id 重复的评论,评论只限于歌曲与歌单。

 

3.数据流分析

顶层数据流程图:

 

第一层数据流程图: 

第二层数据流图:

 

4.数据字典

数据文件名称:用户信息
说明:系统中的注册用户,可以进行登录、浏览、评论、收藏等操作
数据文件组成:用户姓名、ID、年龄、邮箱、性别、密码、电话
数据处理:
用户登录:用户通过输入用户名和密码进行系统登录。
浏览音乐:用户浏览系统中的音乐库。
添加评论:用户对音乐或歌单发表评论。
收藏音乐/歌单:用户将喜欢的音乐或歌单添加到个人收藏。
创建歌单:用户创建一个新的歌单并可以添加音乐。

 数据文件名称:音乐
说明:系统中的音频文件,是用户互动的核心对象
数据文件组成:名称、ID、演奏者、风格、收藏量、播放量
数据处理:
音乐上传与审核:音乐文件被上传并审核。
音乐分类与存储:审核通过的音乐被分类并存储。
音乐检索与播放:用户检索并播放音乐。
音乐评论:用户对音乐发表评论。
音乐收藏:用户将音乐添加到个人收藏。

数据库概念结构设计

实体分析

本系统拥有5个实体,分别为1个使用者和4个被操作者

用户

负责选择音乐、歌单、收藏、评论操作。

歌单

音乐的存放位置

音乐

该平台的主体属性

评论

评论由用户产生或删除,对歌单或音乐进行操作

收藏

收藏由用户进行操作,具体是对歌单与音乐的操作实现

属性分析

1.用户属性
用户实体有七个属性:用户姓名、ID、年龄、邮箱、性别、密码、电话。ID为主码,确定是哪一位用户,邮箱、ID和密码用于管理员登录操作,姓名、性别、电话、年龄为管理员基本信息。

 

2.歌单属性
歌单实体有五个属性:创建者、创建时间、歌单ID、描述、名称。ID作为主码不可重复,用于确定歌单的唯一性、创建时间、创建者、描述和歌单名称都作为歌单的基本信息。

3.评论属性
评论拥有4个属性:ID、被评论用户、评论用户、评论内容。ID作为主码,作为评论唯一性信息,被评论用户与评论用户和内容作为评论的内容属性。 

 

4.收藏实体属性
收藏实体拥有4个属性:收藏ID、收藏名字、收藏用户、收藏时间。ID为主码,收藏时间作为用户收藏的依据。收藏名字与用户作为收藏的基本信息。 

5.音乐实体属性
音乐实体拥有6个属性:名称、ID、演奏者、风格、收藏量、播放量。ID为音乐的主码,名称演奏者、风格、收藏量和播放量为音乐的基本信息。

 

联系分析

用户_歌单:用户和歌单之间的联系集,表示用户可以创建、编辑、删除自己的歌单;

歌单_音乐:歌单和音乐之间的联系集,表示歌单可以包含一个或多个音乐,音乐可以属于一个或多个歌单,歌单的创建者可以将音乐添加到歌单中,也可以从歌单中移除音乐,歌单的内容和音乐的顺序可以被编辑;

用户_收藏:用户和收藏之间的联系集,表示用户可以收藏自己喜欢的音乐、歌单、歌手等,也可以查看、取消收藏、管理自己的收藏夹 ;

收藏_音乐:收藏和音乐的联系集,表示一首歌可以被一个或多收藏夹收藏,一个收藏夹可以收藏一个或多个音乐,用户可以向收藏夹中增添、删除音乐;

收藏_歌单:收藏和歌单的联系集,表示一个歌单可以被一个或多收藏夹收藏,一个收藏夹可以收藏一个或多个歌单,用户可以向收藏夹中增添、删除歌单;

评论_音乐:评论音乐的联系集,表示一首歌可以拥有多个评论,但同一个评论只能属于一首歌,用户可以自己添加、删除评论;

评论_歌单:评论歌单的联系集,表示一个歌单可以拥有多个评论,但同一个评论只能属于一歌单,用户可以自己添加、删除评论。

E-R图:

根据前面的实体属性图和联系分析画出整个系统的E-R图,具体的E-R图如图13。各实体的属性分别如下:

用户:{用户姓名、ID、年龄、邮箱、性别、密码、电话}

歌单:{创建者、创建时间、歌单ID、描述、名称}

评论:{ 评论ID、被评论用户、评论用户、评论内容}

收藏:{收藏ID、收藏名字、收藏用户、收藏时间}

音乐:{名称、ID、演奏者、风格、收藏量、播放量}

 关系模型:

将E-R图中12个实体和联系转换为以下关系模型,该关系模型由5个关系模式组成:

用户:{用户姓名、ID、年龄、邮箱、性别、密码、电话}

歌单:{创建者、创建时间、歌单ID、描述、名称}

评论:{ 评论ID、被评论用户、评论用户、评论内容}

收藏:{收藏ID、收藏名字、收藏用户、收藏时间、歌单ID 音乐ID }

音乐:{音乐ID、演奏者、风格、收藏量、播放量}

概念模型分析(CDM图)

根据E-R 图画出CDM图:

 

数据库逻辑结构设计

概念模型转化为逻辑模型

一对一关系的转化

一对多关系的转化

一个用户可以创建多个歌单

一个歌单可以拥有多个评论

一首音乐可以拥有多个评论

一个用户可以对多个收藏进行管理

多对多关系的转化

一个收藏中可以存在多个歌单,一个歌单可以被多个收藏添加

一个收藏可以收藏多个音乐,多个音乐可以被一个收藏所收藏

一个歌单中可以有多个音乐,一个音乐可以再多个收藏中

 逻辑模型设计(LDM图)

 数据库物理结构设计

表设计

用户表:

 收藏表:

评论表

 

 歌单表

音乐表

 

创建表和完整性约束代码设计

 创建用户表

create table 用户 (user_id              int                  not null,user_name            char(50)             null,user_password        char(20)             null,user_email           char(50)             null,user_phone           char(20)             null,user_nickname        char(20)             null,user_sex             char(30)             null,user_age             char(25)             null,constraint PK_用户 primary key nonclustered (user_id)
)
Go

创建评论表

create table 评论 (con_id               char(10)             not null,con_user             char(10)             null,con_content          char(10)             null,con_it_id            char(10)             null,constraint PK_评论 primary key nonclustered (con_id)
)
go

创建收藏表

create table 收藏 (collect_id           char(30)             not null,collect_user_id      char(30)             null,collect_time         char(30)             null,collect_name         char(30)             null,constraint PK_收藏 primary key nonclustered (collect_id)
)
go

创建歌单表

create table 歌单 (playlist_id          int                  not null,playlist_name        char(20)             null,playlist_time        char(20)             null,playlist_user_id     char(20)             null,playlist_description char(20)             null,constraint PK_歌单 primary key nonclustered (playlist_id)
)
Go

创建音乐表

create table 音乐 (music_id             int                  not null,music_name           char(20)             null,music_singer         char(20)             null,music_type           char(20)             null,music_count          char(20)             null,music_collect        char(20)             null,constraint PK_音乐 primary key nonclustered (music_id)
)
go

 添加外键

if exists (select 1from  sysindexeswhere  id    = object_id('创建')and   name  = '创建2_FK'and   indid > 0and   indid < 255)drop index 创建.创建2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('创建')and   name  = '创建_FK'and   indid > 0and   indid < 255)drop index 创建.创建_FK
goif exists (select 1from  sysobjectswhere  id = object_id('创建')and   type = 'U')drop table 创建
goif exists (select 1from  sysobjectswhere  id = object_id('收藏')and   type = 'U')drop table 收藏
goif exists (select 1from  sysindexeswhere  id    = object_id('收藏音乐')and   name  = '收藏音乐2_FK'and   indid > 0and   indid < 255)drop index 收藏音乐.收藏音乐2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('收藏音乐')and   name  = '收藏音乐_FK'and   indid > 0and   indid < 255)drop index 收藏音乐.收藏音乐_FK
goif exists (select 1from  sysobjectswhere  id = object_id('收藏音乐')and   type = 'U')drop table 收藏音乐
goif exists (select 1from  sysobjectswhere  id = object_id('歌单')and   type = 'U')drop table 歌单
goif exists (select 1from  sysindexeswhere  id    = object_id('添加')and   name  = '添加2_FK'and   indid > 0and   indid < 255)drop index 添加.添加2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('添加')and   name  = '添加_FK'and   indid > 0and   indid < 255)drop index 添加.添加_FK
goif exists (select 1from  sysobjectswhere  id = object_id('添加')and   type = 'U')drop table 添加
goif exists (select 1from  sysindexeswhere  id    = object_id('添加歌单')and   name  = '添加歌单2_FK'and   indid > 0and   indid < 255)drop index 添加歌单.添加歌单2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('添加歌单')and   name  = '添加歌单_FK'and   indid > 0and   indid < 255)drop index 添加歌单.添加歌单_FK
goif exists (select 1from  sysobjectswhere  id = object_id('添加歌单')and   type = 'U')drop table 添加歌单
goif exists (select 1from  sysobjectswhere  id = object_id('用户')and   type = 'U')drop table 用户
goif exists (select 1from  sysobjectswhere  id = object_id('评论')and   type = 'U')drop table 评论
goif exists (select 1from  sysindexeswhere  id    = object_id('评论歌单')and   name  = '评论歌单2_FK'and   indid > 0and   indid < 255)drop index 评论歌单.评论歌单2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('评论歌单')and   name  = '评论歌单_FK'and   indid > 0and   indid < 255)drop index 评论歌单.评论歌单_FK
goif exists (select 1from  sysobjectswhere  id = object_id('评论歌单')and   type = 'U')drop table 评论歌单
goif exists (select 1from  sysindexeswhere  id    = object_id('评论音乐')and   name  = '评论音乐2_FK'and   indid > 0and   indid < 255)drop index 评论音乐.评论音乐2_FK
goif exists (select 1from  sysindexeswhere  id    = object_id('评论音乐')and   name  = '评论音乐_FK'and   indid > 0and   indid < 255)drop index 评论音乐.评论音乐_FK
goif exists (select 1from  sysobjectswhere  id = object_id('评论音乐')and   type = 'U')drop table 评论音乐
goif exists (select 1from  sysobjectswhere  id = object_id('音乐')and   type = 'U')drop table 音乐
go

创建物理模型设计图(PDM)

 

数据库功能实现及界面展示

页面设计展示

1.用户首页设计

用户首页包含五个功能按钮,分别是用户信息、歌单、歌曲、收藏、评论这五个功能。分别用于这五个实体的增删查改 

2.登录页面设计

 登录界面是我们想要登录流行音乐管理系统平台,其中需要用户的ID和其设定的密码进行,如果不能登录就不能进入用户首页,更不能修改自己的任何内容。 

 

3.修改插入删除设计 

我们以用户的修改插入删除作为示例,剩下都一样。

 总结与展望

总结

在项目的完成阶段,我们首先回顾了我们设定的目标,并确认我们已经成功实现了流行音乐管理平台的核心功能,包括艺人资料管理、音乐作品上传和管理、专辑与歌曲检索、音乐风格分类等。我们选择了适当的技术栈,确保系统具有高效性、稳定性和可扩展性,并通过充分的测试和调试来验证系统的稳定性和功能完整性。同时,我们也注重了用户体验和安全性,确保用户能够安全、便捷地使用平台,并保护用户的隐私数据。

展望

在展望方面,我们计划进一步扩展平台的功能,例如增加音乐推荐系统、社交功能、直播演出等,以提升用户体验和吸引更多用户。我们也将努力实现平台的跨平台支持,使用户可以在不同的设备和操作系统上使用平台,并利用数据分析和挖掘技术深入了解用户的偏好和行为,为用户提供个性化的服务和推荐。此外,我们还计划与其他音乐平台、唱片公司、艺人及其经纪人建立合作伙伴关系,共同推广和发展平台,扩大用户基础和音乐资源。最后,我们将定期更新和维护系统,跟踪最新的技术发展,确保系统始终保持高效、安全和稳定。


以上就是本次博客的全部内容,内容仅供参考,不要全部模仿!!!感谢大家观看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

升级必备!Win11专业版镜像下载地址:一键直达!

许多用户想要体验Win11专业版系统的新功能&#xff0c;但不知道Win11专业版在哪下载&#xff1f;接下来小编给大家分享最新的Win11专业版镜像&#xff0c;大家喜欢的话&#xff0c;一键点击下载即可&#xff0c;还可以打开【系统之家官网】寻找自己更喜欢的操作系统。 推荐下载…

大学物理(动量定理)

目录 冲量与动量 质点动量定理 质点系动量定理:​编辑 例题 ​编辑 例题 ​编辑 动量守恒定律:。 例题 ​编辑 例题 ​编辑 角动量 ​编辑 例题 ​编辑 力矩与角动量定理​编辑 角动量守恒定律: ​编辑 例题 冲量与动量 质点动量定理 质点系动量定理: 例题 例…

大型网站优化指南:打造流畅的在线体验

大型网站 大型网站是指具有高并发、大流量、高可用性、海量数据处理能力&#xff0c;并能提供7*24小时不间断服务的网站。 这些网站通常面临用户分布广泛、网络情况复杂、安全环境恶劣等挑战。 同时需要快速适应市场变化和用户需求&#xff0c;通过渐进式的发展策略运营成大型…

深入探索Stable Diffusion:从原理到应用的全面解析

目录 一 Stable Diffusion的基本概念 什么是Stable Diffusion? Stable Diffusion与传统生成模型的区别 二 Stable Diffusion的理论基础 扩散过程的数学描述 马尔可夫链蒙特卡罗方法(MCMC) 三 Stable Diffusion的算法实现 基本步骤 代码实现 四 Stable Diffusion的…

图形化编程:解锁数字创意的新钥匙

在这个日新月异的数字时代&#xff0c;编程已不再局限于专业人士的小圈子&#xff0c;它正逐渐成为一项基础技能&#xff0c;融入我们的日常生活与工作中。而对于那些对传统代码望而生畏的人来说&#xff0c;6547网认为图形化编程犹如一股清流&#xff0c;以其直观、易学的特点…

基础算法--双指针算法

文章目录 什么是双指针算法例题1.移动零2.复写零3.快乐数4.盛最多水的容器5.有效三角形的个数6.三数之和7.四数之和 什么是双指针算法 通常我们讲的双指针就是用两个指针&#xff0c;两个指针可以是快慢指针&#xff0c;解决成环的问题&#xff0c;也可以是指向收尾的两个指针…

window端口占用情况及state解析

背景&#xff1a; 在电脑使用过程中&#xff0c;经常会开许多项目&#xff0c;慢慢地发现电脑越来越卡&#xff0c;都不知道到底是在跑什么项目导致&#xff0c;于是就想查看一下电脑到底在跑什么软件和项目&#xff0c;以作记录。 常用命令 netstat -tuln &#xff1a; 使用…

Python3发送邮件如何添加附件?怎么配置?

Python3发送邮件的注意事项&#xff1f;如何配置Python3发邮件&#xff1f; Python3发送邮件时添加附件是一项常见的需求。无论是发送报告、图片&#xff0c;还是其他文件&#xff0c;掌握如何在邮件中添加附件至关重要。AokSend将详细介绍Python3发送邮件时如何添加附件&…

前端网站(二)-- 菜单页面【附源码直接可用】

菜单页面 开篇&#xff08;请大家看完&#xff09;&#xff1a;此网站写给挚爱&#xff0c;后续页面还会慢慢更新&#xff0c;大家敬请期待~ ~ ~ 轻舟所编写这个前端框架的设计初衷&#xff0c;纯粹是为了哄对象开心。除此之外&#xff0c;并无其它任何用途或目的。 此前端框…

JavaScript运行原理和执行过程

参考&#xff1a; https://www.cnblogs.com/hexrui/p/15939592.html 1、执行上下文栈&#xff08;调用栈&#xff09; GECGlobal Execution Context&#xff08;GEC&#xff09;被放入到ECS&#xff08;Execution Context Stack&#xff0c;简称ECS&#xff09;中 GEC开始执…

护眼灯哪些牌子好?一文刨析护眼灯怎么选择!

护眼灯哪些牌子好&#xff1f;护眼台灯作为对抗视力挑战的一种方法&#xff0c;逐渐赢得了众多家长的青睐。这些台灯利用尖端光学技术&#xff0c;发出柔和且无刺激的照明&#xff0c;有助于保护眼睛不受伤害。它们不但可以调节亮度和色温&#xff0c;打造一个舒适且自然的阅读…

upload-labs第十三关教程

upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1&#xff09;0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前&#xff1a;修改之后&#xff1a;进入hex模块&#xff1a; c.放包上传成功&#xff1a; d.使用中国蚁剑进行连接 2&#xff09;%00绕…

【分布预测】DistPred:回归与预测的无分布概率推理方法

论文题目&#xff1a;DistPred: A Distribution-Free Probabilistic Inference Method for Regression and Forecasting 论文作者&#xff1a;Daojun Liang, Haixia Zhang&#xff0c;Dongfeng Yuan 论文地址&#xff1a;https://arxiv.org/abs/2406.11397 代码地址&#xff1a…

小白学RAG:大模型 RAG 技术实践总结

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

C++之模板(三)

1、缺省模板参数 可以将数据结构类型传递进来&#xff0c;比如vectop<T>&#xff08;如果没传就是默认&#xff09; 把vector当作类型参数来传递&#xff0c;从而使用它的接口然后适配出新的接口。实际上这个Stack称为适配器。有时候可能需要vector&#xff0c;但是又需…

【Python】AJAX

AJAX基础 一、AJAX1.1 概述1.2 XMLHttpRequest对象1.3 AJAX请求六部曲1.4 图解AJAX请求步骤 二、jQuery与AJAX2.1 jQuery.get()2.2 jQuery.getJSON()2.3 jQuery.post()2.4 jQuery.ajax() 三、Django使用AJAX3.1 请求类型3.2 PUT与PATCH的区别3.3 接收及响应JSON3.3.1 接收JSON3…

ui自动化selenium,清新脱俗代码,框架升级讲解

一&#xff1a;简化 1. 新建common 包 新建diver.py 封装浏览器驱动类 from selenium import webdriverclass Driver():"""浏览器驱动类定义 一个【获取浏览器驱动对象driver的方法】。支持多种类型浏览器"""def get_driver(self,browser_typ…

JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

Python构造TCP三次握手、传输数据、四次挥手pcap数据包并打乱顺序

Python构造数据包&#xff0c;包含&#xff1a; TCP三次握手、 传输数据、 四次挥手 实现 随机乱序TCP数据包 from scapy.all import * from scapy.all import Ether, IP, TCP, UDP, wrpcap from abc import ABC, abstractmethod import random import dpkt from scapy.all…

6月18日(周二)美股行情总结:纳指七日连创新高,英伟达市值全球第一,苹果微软回落,油价七周最高

美国5月零售销售意外走软&#xff0c;尽管一众美联储官员均鹰派发声支持多等待通胀数据再做决策&#xff0c;市场仍抬升对年内降息两次的押注。标普500指数在七天里第六天上涨并再创新高&#xff0c;标普科技板块连续七天创新高、期间累涨8.6%&#xff0c;道指一周高位&#xf…