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

news2024/11/19 22:43:49

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 1
            from  sysindexes
           where  id    = object_id('创建')
            and   name  = '创建2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 创建.创建2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('创建')
            and   name  = '创建_FK'
            and   indid > 0
            and   indid < 255)
   drop index 创建.创建_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('创建')
            and   type = 'U')
   drop table 创建
go

if exists (select 1
            from  sysobjects
           where  id = object_id('收藏')
            and   type = 'U')
   drop table 收藏
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('收藏音乐')
            and   name  = '收藏音乐2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 收藏音乐.收藏音乐2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('收藏音乐')
            and   name  = '收藏音乐_FK'
            and   indid > 0
            and   indid < 255)
   drop index 收藏音乐.收藏音乐_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('收藏音乐')
            and   type = 'U')
   drop table 收藏音乐
go

if exists (select 1
            from  sysobjects
           where  id = object_id('歌单')
            and   type = 'U')
   drop table 歌单
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('添加')
            and   name  = '添加2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 添加.添加2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('添加')
            and   name  = '添加_FK'
            and   indid > 0
            and   indid < 255)
   drop index 添加.添加_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('添加')
            and   type = 'U')
   drop table 添加
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('添加歌单')
            and   name  = '添加歌单2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 添加歌单.添加歌单2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('添加歌单')
            and   name  = '添加歌单_FK'
            and   indid > 0
            and   indid < 255)
   drop index 添加歌单.添加歌单_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('添加歌单')
            and   type = 'U')
   drop table 添加歌单
go

if exists (select 1
            from  sysobjects
           where  id = object_id('用户')
            and   type = 'U')
   drop table 用户
go

if exists (select 1
            from  sysobjects
           where  id = object_id('评论')
            and   type = 'U')
   drop table 评论
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('评论歌单')
            and   name  = '评论歌单2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 评论歌单.评论歌单2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('评论歌单')
            and   name  = '评论歌单_FK'
            and   indid > 0
            and   indid < 255)
   drop index 评论歌单.评论歌单_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('评论歌单')
            and   type = 'U')
   drop table 评论歌单
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('评论音乐')
            and   name  = '评论音乐2_FK'
            and   indid > 0
            and   indid < 255)
   drop index 评论音乐.评论音乐2_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('评论音乐')
            and   name  = '评论音乐_FK'
            and   indid > 0
            and   indid < 255)
   drop index 评论音乐.评论音乐_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('评论音乐')
            and   type = 'U')
   drop table 评论音乐
go

if exists (select 1
            from  sysobjects
           where  id = object_id('音乐')
            and   type = 'U')
   drop table 音乐
go

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

 

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

页面设计展示

1.用户首页设计

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

2.登录页面设计

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

 

3.修改插入删除设计 

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

 总结与展望

总结

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

展望

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


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

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

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

相关文章

白酒:中国的酒文化的传承与发扬

中国&#xff0c;一个拥有五千年文明史的国度&#xff0c;其深厚的文化底蕴孕育出了丰富多彩的酒文化。在这片广袤的土地上&#xff0c;酒不仅仅是一种产品&#xff0c;更是一种情感的寄托&#xff0c;一种文化的传承。云仓酒庄的豪迈白酒&#xff0c;正是这一文化脉络中的一颗…

低代码专题 | 低代码开发平台怎么收费,价格多少?一文揭秘!

低代码开发平台近几年真的火得一塌糊涂&#xff0c;不少企业都开始关注并尝试这种新的开发方式。 然而&#xff0c;关于低代码开发平台的收费问题&#xff0c;却是众说纷纭、信息零散。为了帮助大家更清晰地了解低代码开发平台的收费情况&#xff0c;这篇文章将进行全面的解读…

leetcode498 对角线遍历

题目 给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 示例 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,4,7,5,3,6,8,9] 解析 本题目主要考察的就是模拟法&#xff0c;首…

【深度学习驱动流体力学】VTK创建、处理和可视化流体数据

Visualization Toolkit&#xff08;VTK&#xff09;是一个强大的开源软件系统&#xff0c;用于处理和可视化三维数据。它提供了丰富的工具和算法&#xff0c;可以处理从简单的网格数据到复杂的流体动力学模拟数据等各种类型的数据。本文将完整介绍如何使用 VTK 创建、处理和可视…

教育与学习助手:Kompas AI革新学习体验

一、引言 在个性化学习需求日益增长的今天&#xff0c;教育领域正经历着一场技术革命。Kompas AI&#xff0c;作为一款先进的人工智能助手&#xff0c;正以其独特的功能和应用&#xff0c;为学习者提供个性化的学习支持&#xff0c;满足不同背景和需求的学生。 二、功能介绍 Ko…

通过编辑器工具改变Inspector锁定状态

是在看一系列视频的时候&#xff0c;看到的&#xff0c;感觉挺有用&#xff0c;就记录下来。 就是这个小锁的按钮&#xff0c;后续可以通过快捷键&#xff0c;快速锁定和解锁。代码里没有加入快捷键控制&#xff0c;有需要用到的可以自己加一下&#xff0c;比较简单 using Uni…

大模型学习路线,存下吧很难找全的

随着人工智能技术的飞速发展&#xff0c;大模型在自然语言处理、计算机视觉、推荐系统等领域取得了显著成果。越来越多的学者和开发者开始关注并投身于大模型的研究与应用。本文将以大模型学习路线为核心&#xff0c;为您介绍从入门到精通所需掌握的知识和技能。 一、入门篇 …

简单好用的C++日志库spdlog使用示例

文章目录 前言一、spdlog的日志风格fmt风格printf风格 二、日志格式pattern三、sink&#xff0c;多端写入四、异步写入五、注意事项六、自己封装了的代码usespdlog.h封装代码解释使用示例 前言 C日志库有很多&#xff0c;glog&#xff0c;log4cpp&#xff0c;easylogging, eas…

[Java基础揉碎]QQ聊天项目

多用户系统演示 项目开发流程 多用户通讯需求 通讯系统整体分析 用户登录 新建项目 在建一个项目 user类 加上序列化, 加上UID增加兼容性 message类 消息类型 新建一个接口 客户端也拷贝过来 新建包和菜单界面类 工具类 新建一个类 新建一个类 回到这个类 写成这个名…

【论文精读】树环水印Tree-Ring Watermarks:隐形且稳健的扩散图像的指纹

文章目录 一、文章概览&#xff08;一&#xff09;主要工作&#xff08;二&#xff09;相关工作 二、具体方法&#xff08;一&#xff09;威胁模型&#xff08;二&#xff09;树轮水印概述&#xff08;三&#xff09;构造树轮水印键&#xff08;四&#xff09;提取用于水印检测…

【unity笔记】四、Enviro- Sky and Weather插件使用

一、 简介 Enviro内置 RP、URP、HDRP&#xff0c;开箱即用。 动态天空 随附的天空系统经过精心设计&#xff0c;以实现最佳性能和灵活性。使用多种颜色渐变&#xff0c;而不是调整人工数字。为您的项目创建独特且非常逼真的天空非常简单&#xff01; 灯光 由 Enviro 控制的逼…

APMCM亚太地区大学生数学建模竞赛奖励细则

APMCM亚太地区大学生数学建模竞赛&#xff08;以下简称竞赛&#xff09;是由北京图象图形学学会、亚太地区大学生数学建模竞赛组委会主办的面向全日制普通高等院校在校学生的学科竞赛活动。根据竞赛的宗旨&#xff0c;为了切实提供有价值的奖励政策&#xff0c;鼓励广大师生参与…

6.深度卷积神经网络

目录 1.深度卷积神经网络ALexNet 2012AlexNetAlexNet架构AlexNet与LeNet复杂度对比总结代码实现2.使用块的网络VGG 2014 image竞猜第二VGG架构进度总结代码实现3.网络中的网络NiN全连接层的问题NiN块NiN架构总结代码实现4.含并行连结的网络(GoogLeNet)2014 image竞猜第一最好…

制作ubuntu18.04 cuda10.2+ROS1+opencv 4.5.4的 docker镜像

如果搭建的版本高可以参考&#xff1a; https://gitlab.com/nvidia/container-images/l4t-jetpack.git 如果版本比较低&#xff0c;按照下面的步骤进行操作&#xff1a; 使用的硬件平台为Xavier NX&#xff0c;系统环境如下图&#xff1a; 搭建docker环境需求跟实际环境一致如下…

逻辑地址 线性地址 物理地址 Linux kernel 内存管理设计

linux kernel 2.6以后的MM&#xff0c;受到了兼容 risc arch cpu 的 MM 的启发&#xff0c;新的 MM 架构对 x86 上任务切换的效率上也有明显提高。 新的MM架构&#xff0c;GDT 不再随着进程的创建与结束而创建和删除 新的表项。 TSS段 也只有一个&#xff0c;进程切换时&…

手持风扇哪个品牌好?五大手持风扇品牌推荐!

随着炎热夏季的到来&#xff0c;手持风扇已成为人们出行的必备清凉神器。然而&#xff0c;面对市场上众多品牌的手持风扇&#xff0c;如何选择一款既时尚又高效的产品成为了许多消费者的难题。为了解决这个困扰&#xff0c;我们精心挑选了五大手持风扇品牌进行推荐。这些品牌不…

STM32 JTAG 模式和 SWD 模式的区别详解

在调试和编程 STM32 微控制器时&#xff0c;使用 JTAG&#xff08;Joint Test Action Group&#xff09;模式和 SWD&#xff08;Serial Wire Debug&#xff09;模式是两种常见的方法。它们在接口需求、调试能力、引脚数量、通信速度等方面各有特点。我们一般采用的的下载器如ST…

Window常用的脚本有哪些?快来看看有哪些是你正在用的!(欢迎评论补充~)

前言 在日常开发中&#xff0c;如果能熟练掌握以下这些使用频率很高的脚本&#xff0c;那工作起来真的是手拿把攥&#xff0c;事半功倍&#xff0c;接下来给大家介绍一些我们日常使用率很高的一些脚本&#xff01; 常用脚本(Batchfile & VBScript) 1.一键启动.bat 一次…

MySQL数据库笔记(二)

第一章 单行函数 1.1 什么是函数 函数的作用是把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中使用函数,极大地提高了用户对数据库的管理效率。 1.2 定义 操作数据对象。 接受参数返回一个结果。 只对一行进行…

性能工具之 JMeter 常用组件介绍(八)

文章目录 一、Jmeter命令行启动二、Jmeter脚本录制 本文主要介绍JMeter命令行启动和脚本录制功能 一、Jmeter命令行启动 Jmeter有两种运行&#xff1a; 一种是采用的界面模式(GUI&#xff09;启动&#xff0c;会占用不少系统资源&#xff1b;另一种是命令行模式&#xff08;n…