(swjtu西南交大)数据库实验(数据库需求分析):音乐软件数据管理系统

news2024/11/15 17:25:58

实验内容:

数据库需求分析:各用户组需求描述,绘出数据流图(详细案例参见教材p333~p337,陶宏才,数据库原理及设计,第三版);

一、选题背景

        近年来,“听歌”逐渐成为大众高频刚性的需求,音乐软件数据急剧增加,用户和软件管理者需要在使用和管理音乐软件时对各种数据更高效便捷地管理。数据库系统充分保证了大量数据的存储和管理有非常强的重新组织数据的能力同时又能充分描述数据间的内在联系。因此设计并实现一个通用的音乐数据库系统,对音乐软件数据的统一存储、保护、管理和共享具有非常重要的现实意义。

二、需求描述

角色

要求

用户

管理歌单歌曲,查看和发布歌曲评论,对歌单进行增删查询操作,修改歌单信息,关注歌手,修改个人信息

歌手

发布歌曲

客服

审核、确认用户的修改信息,发送推送请求

 

三、系统数据流图

顶层数据流图

1层数据流图

 2层数据流图

四、系统数据字典

数据项:

数据项:歌曲编号
数据类型:字符型
数据长度:20位
​数据构成:发布年月+发布顺序号


​数据项:歌曲名称
数据类型:字符型
数据长度:20位

数据项:歌曲类型
数据类型:字符型
数据长度:10位

数据项:歌曲语言
数据类型:字符型
数据长度:8位

数据项:演唱歌手号
数据类型:字符型
数据长度:10位

数据项:发布时间
数据类型:日期型
数据长度:8位
数据构成:年+月+日
 


数据项:歌词
数据类型:字符型
数据长度:3000位

数据项:歌手编号
数据类型:字符型
数据长度:10位

数据项:歌手名称
数据类型:字符型
数据长度:10位

数据项:用户名
数据类型:字符型
数据长度:10位

数据项:用户账号
数据类型:字符型
数据长度:10位

数据项:密码
数据类型:字符型
数据长度:10位

数据项:性别
数据类型:字符型
数据长度:1位

数据项:生日
数据类型:日期型
数据长度:8位

数据构成:年+月+日

数据项:地区
数据类型:字符型
数据长度:20位

数据项:手机号码
数据类型:字符型
数据长度:11位

数据项:个性签名
数据类型:字符型
数据长度:50位

数据项:评论时间
数据类型:日期型
数据长度:20位

数据构成:年+月+日+时+分+秒

数据项:评论内容
数据类型:字符型
数据长度:20位

数据项:关注时间
数据类型:日期型
数据长度:20位

数据构成:年+月+日

数据项:歌单编号
数据类型:字符型
数据长度:10位

数据项:歌单标题
数据类型:字符型
数据长度:20位

数据项:歌曲数量
数据类型:整型
数据长度:100位

数据项:简介
数据类型:字符型
数据长度:1000位

数据项:歌单创建时间
数据类型:日期型
数据长度:8位

数据构成:年+月+日

数据项:歌单用户
数据类型:字符型
数据长度:10位

数据项:审核人
数据类型:字符型
数据长度:10位

加工处理:

加工处理:评论系统
编号:1
输入:(用户)评论信息+用户评论信息
输出:(该用户)评论信息
加工逻辑:满足用户评论歌曲操作

加工处理:歌单歌曲管理
编号:2
输入:(用户)管理歌单操作+管理的歌单
输出:(该用户)歌单信息
加工逻辑:根据需求对歌单进行管理操作

加工处理:查看歌单信息
编号:2.1
输入:(用户)查看命令+歌单信息
输出:(该用户)需要修改歌单的信息
加工逻辑:满足查询请求条件

加工处理:修改歌单
编号:2.2
输入:(用户)新增或修改命令+修改(歌单中歌曲)后的歌单信息
输出:新增或修改后的歌单信息
加工逻辑:满足修改歌单请求条件

加工处理:传送修改请求
编号:3
输入:(用户)修改信息请求
输出:用户修改请求
加工逻辑:将用户修改请求传送给客服

加工处理:歌曲发布
编号:4
输入:(歌手)发布歌曲信息(原始信息)
输出:歌曲信息(添加编号、歌手、发布时间后)
加工逻辑:满足歌曲发布条件

加工处理:关注歌手
编号:5
输入:(用户)关注请求
输出:(该用户)关注信息
加工逻辑:用户未曾关注该歌手

加工处理:修改用户信息
编号:6
输入:(客服)需要修改的信息
输出:修改后的信息
加工逻辑:根据用户的修改请求修改信息

加工处理:歌单歌曲管理系统
编号:7
输入:(用户)管理请求命令+歌曲信息+需要管理的歌单+管理的歌单
输出:管理后的歌单歌曲+管理的歌单
加工逻辑:根据用户对歌单的管理请求进行管理

加工处理:查看歌单歌曲
编号:7.1
输入:(用户)查看歌单歌曲命令+歌单歌曲信息
输出:(该用户)所查看歌单歌曲的信息
加工逻辑:满足查询请求条件

加工处理:修改歌单歌曲
编号:7.2
输入:(用户)修改命令+需要修改的歌单歌曲信息
输出:修改后的歌单歌曲
加工逻辑:满足修改歌单歌曲请求条件

加工处理:推送歌单
编号:8
输入:(客服)推送请求+需推送的歌单
输出:推送的歌单
加工逻辑:根据推送请求推送相关歌单

数据文件:

数据文件:评论表
文件组成:评论时间+评论内容

组成:按评论时间降序排列

数据文件:歌单表
文件组成:歌单编号+歌单标题+歌曲数量+简介+创建时间+歌单用户
组成:按歌单编号升序排列

数据文件:用户信息表
文件组成:用户名+账号+密码+性别+生日+地区+手机号码+个性签名
组成:按账号和地区升序排列

数据文件:歌曲表
文件组成:歌曲编号+歌曲名称+歌曲类型+歌曲语言+歌词+演唱歌手号+发布时间
组成:按编号升序排列

数据文件:关注表
文件组成:被关注的歌手编号+被关注的歌手名称+关注者账号+关注者用户名+关注时间
组织:按歌手编号和关注者账号升序排列

数据文件:歌单歌曲表
文件组成:歌单编号+歌曲编号

组成:按歌单和歌曲编号升序排列

数据流:

数据流名:发布歌曲的信息
来源:发布歌曲的歌手
流向:加工4
组成:歌曲名称+歌曲类型+歌曲语言+歌词

​数据流名:歌曲信息
来源:加工4
流向:歌曲表
组成:歌曲编号+歌曲名称+歌曲类型+歌曲语言+歌词+演唱歌手号+发布时间

 

数据流名:歌曲信息
来源:歌曲表
流向:加工7
组成:歌曲编号+歌曲名称+歌曲类型+歌曲语言+歌词+演唱歌手号+发布时间

数据流名:关注请求
来源:用户
流向:加工5
组成:要关注的歌手的编号+用户编号

数据流名:关注信息
来源:加工5
流向:关注表存储文件
组成:要关注的歌手的编号+歌手名+用户名+用户编号

数据流名:歌单信息
来源:文件2中的歌单表
流向:加工2.1
组成:歌单编号+歌单标题+歌单创建者编号+歌单歌曲数量+歌单简介+歌单创建时间

数据流名:查看歌单命令
来源:用户
流向:加工2.1
组成:需要查看的歌单编号

数据流名:需修改的歌单
来源:加工2.1
流向:加工2.2
组成:需修改的歌单编号
 

数据流名:修改的歌单
来源:加工2
流向:加工7
组成:修改的歌单编号


数据流名:新增歌单或修改命令
来源:用户
流向:加工2.2
组成:命令+修改歌单编号


数据流名:新增的歌单或修改后的歌单信息
来源:加工2.2
流向:歌单表文件
组成:修改后的歌单编号

数据流名:查看歌单歌曲命令
来源:用户
流向:加工7.1
组成:需要查看的歌单编号

数据流名:歌单歌曲信息
来源:文件6歌单歌曲表
流向:加工7.1
组成:歌单编号+歌单标题+歌单歌曲列表

数据流名:需修改的歌单歌曲
来源:加工7.1
流向:加工7.2
组成:歌单编号+歌单歌曲列表
 

数据流名:新增歌单中歌曲或修改歌单歌曲信息
来源:用户
流向:加工7.2
组成:需修改的歌单编号+需修改的歌单歌曲编号

数据流名:新增后的歌单歌曲或修改信息
来源:加工7.2
流向:文件6歌单歌曲表
组成:修改后的歌单歌曲编号

数据流名:(用户新增)评论信息
来源:用户
流向:加工1
组成:评论内容+评论者账号+评论时间+评论的歌曲编号


数据流名:(添加到文件中的)评论信息
来源:加工1
流向:评论表存储文件
组成:评论内容+评论者账号+评论时间

数据流名:修改信息请求
来源:用户
流向:加工3
组成:修改信息项+修改时间+修改前信息+修改后信息

数据流名:用户修改请求
来源:加工3
流向:客服
组成:修改信息项+修改时间+修改前信息+修改后信息

数据流名:需要修改的信息
来源:客服
流向:加工6
组成:修改信息项+审核人(哪一个客服)+修改时间+修改后信息

数据流名:修改后的信息
来源:加工6
流向:用户信息表
组成:修改信息项+修改后信息

数据流名:推送请求
来源:客服

流向:加工8
组成:要推送的歌单编号

数据流名:要推送的歌单
来源:歌单表
流向:加工8
组成:歌单编号+歌曲列表+歌单描述信息

数据流名:推送的歌单
来源:加工8
流向:用户
组成:歌单编号+歌曲列表+歌单描述信息

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

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

相关文章

Python-函数传参与数据类型

Python中,函数参数传递是通过对象的引用进行的,我们可以进行下面的验证。 def use_name(val):print("name id :%s" % (id(val)))val "hanshu1"print("name id modified :%s" % (id(val)))def test_ref():name "ha…

CyNix

CyNix 一、主机发现和端口扫描 主机发现,靶机地址192.168.80.146 arp-scan -l端口扫描,只开放了80和6688端口 nmap -A -p- -sV 192.168.80.146二、信息收集 访问80端口 路径扫描 gobuster dir -u http://192.168.80.146/ -w /usr/share/wordlists/dir…

吴恩达《机器学习》9-4-9-6:实现注意:展开参数、梯度检验、随机初始化

一、实现注意:展开参数 在上一个视频中,讨论了使用反向传播算法计算代价函数的导数。在本视频中,将简要介绍一个实现细节,即如何将参数从矩阵展开为向量。这样做是为了在高级最优化步骤中更方便地使用这些参数。 二、梯度检验 在神经网络中…

如何制作动态表情包?一个方法快学起来

在当代的通讯工具中,动态表情包已经是人们日常交流不可缺少的一部分了。但是,很多时候网络上常见的动态表情包不能够很好表达出我们的需求时应该怎么办呢?这时候,我们可以使用gif动图制作(https://www.gif.cn/&#xf…

深入理解强化学习——马尔可夫决策过程:马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别

分类目录:《深入理解强化学习》总目录 《深入理解强化学习——马尔可夫决策过程》系列前面的文章讨论到的马尔可夫过程和马尔可夫奖励过程都是自发改变的随机过程,而如果有一个外界的“刺激”来共同改变这个随机过程,就有了马尔可夫决策过程&…

板块概念相关(五)

5-板块概念相关 文章目录 5-板块概念相关一. 查询所有的版块列表二. 查询所有的概念列表三. 查询所有的地域列表四. 查询所有的版块资金支持的类型五. 查询某个版块历史记录列表,形成图表形式六. 查询某个版块历史记录列表七. 查询某个版块今日资金,形成图表形式八. 查询该板块…

接入keycloak实现单点登录

问题 1.如果跨域在keycloak管理中心Clients-Client details-Settings-Web origins添加浏览器访问地址就行 一、html引入cdn实现 页面引入 <!-- keycloak --> <script src"https://unpkg.com/keycloak-js22.0.5/dist/keycloak.js"></script> &l…

学习Rust适合写什么练手项目?【云驻共创】

Rust是一门备受关注的系统级编程语言&#xff0c;因其出色的内存安全性、高性能和并发性能而备受赞誉。对于那些希望学习和掌握Rust编程语言的人来说&#xff0c;练手项目是一个不可或缺的环节。通过实际动手完成项目&#xff0c;你可以加深对Rust语言特性和最佳实践的理解&…

ky10 server arm 在线编译安装openssl3.1.4

在线编译脚本 #!/bin/shOPENSSLVER3.1.4OPENSSL_Vopenssl versionecho "当前OpenSSL 版本 ${OPENSSL_V}" #------------------------------------------------ #wget https://www.openssl.org/source/openssl-3.1.4.tar.gzecho "安装OpenSSL${OPENSSLVER}...&q…

郎酒“掉队”,经销商们能等来春天吗?

文 | 螳螂观察&#xff08;TanglangFin&#xff09; 作者 | 渡过 有“六朵金花”之称的川酒品牌中&#xff0c;五粮液、泸州老窖、舍得、水井坊都已成功上市&#xff0c;只剩下郎酒和剑南春未上市。 与IPO的“掉队”相对应的&#xff0c;是郎酒在冲刺高端、内部管理、渠道管…

C语言进制转换(1112:进制转换(函数专题))

题目描述 输入一个十进制整数n&#xff0c;输出对应的二进制整数。常用的转换方法为“除2取余&#xff0c;倒序排列”。将一个十进制数除以2&#xff0c;得到余数和商&#xff0c;将得到的商再除以2&#xff0c;依次类推&#xff0c;直到商等于0为止&#xff0c;倒取除得的余数…

Python之staticmethod:让你的代码更简洁高效

概要 在Python中&#xff0c;staticmethod是一种非常有用的装饰器&#xff0c;它可以将一个方法转换为静态方法&#xff0c;使得该方法可以通过类名或实例名直接调用&#xff0c;而不需要传入self参数。staticmethod的使用可以让代码更加简洁、高效&#xff0c;同时也可以提高…

Fiddler抓包看这篇就够了:fiddler设置弱网测试

弱网测试 概念&#xff1a;弱网看字面意思就是网络比较弱&#xff0c;我们通称为信号差&#xff0c;网速慢。 意义&#xff1a;模拟在地铁、隧道、电梯和车库等场景下使用APP &#xff0c;网络会出现延时、中断和超时等情况。 自动化测试相关教程推荐&#xff1a; 2023最新自…

DeepMind 推出 OPRO 技术,可用于优化 ChatGPT 提示

本心、输入输出、结果 文章目录 DeepMind 推出 OPRO 技术&#xff0c;可用于优化 ChatGPT 提示前言消息摘要OPRO的工作原理DeepMind的研究相关链接花有重开日&#xff0c;人无再少年实践是检验真理的唯一标准 DeepMind 推出 OPRO 技术&#xff0c;可用于优化 ChatGPT 提示 编辑…

vue-quill-editor 使用

vue-quill-editor 安装 npm install vue-quill-editor -S 使用 .....<quill-editorstyle"padding-left: 0;padding-top: .0px;margin-top: 30px;"ref"editorRef" v-model"params.content" class"ql-editor" :options"editor…

PG数据中DBeaver上传csv文件作为数据表

DBeaver 是一个开源的数据库工具&#xff0c;还是蛮好用的&#xff0c;有时候需要我们上传数据做表&#xff0c;数据为CSV格式的&#xff0c;DBeaver本身自带有功能实现的。 可打开连着的数据库&#xff0c;找到模式&#xff0c;点到下面的表里&#xff0c;选择一个表直接导入…

【Java】乡镇卫生院、社区卫生服务中心云HIS源码

云HIS采用云端SaaS服务的方式提供&#xff0c;用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、配置化、智能化、扩展化等设计方法&#xff0c;覆盖了基层医院机构的主要工作流程&#xff0c;能够与监管系统有序对接…

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中&#xff0c;可以使用type 关键字来创建自定义类型&#xff0c;这对于提高代码的可读性和可维护…

安防监控视频云存储平台EasyCVR页面播放卡顿的优化方法

视频监控平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能支持视…