分享一下学期做的数据库课程设计,记录和交流~
附代码资源:
数据库课程设计-KTV点歌系统(VB.net 窗体,MySQL5.5)
《数据库系统课程设计》是计算机学院的实践课程。在较为系统地学完《数据库系统》后,通过此课程设计,一方面可以增强对数据库的理解;另一方面可以培养查找资料、分析问题和解决问题的能力。关系数据库设计过程分为以下5个阶段:需求分析、概念模式设计、逻辑模式设计、数据库实施、数据库运行维护。也就是说,数据库的设计过程是先进行认真细致的需求分析,在清楚用户的要求后抽象出实体和实体之间的关系,用建模方法E-R 图表示出来,然后根据具体实施的 DBMS 平台将其转换为相应平台所支持的数据库逻辑模式并进行规范化处理,最后进行建库建标等物理模式的设计,从而完成整个数据库模式的设计过程。本次课程设计是对KTV点歌系统的设计,设计过程也严格遵循以上5个阶段。在设计完成的数据库中,应具备以下功能:对会员用户而言,登录到前台点歌系统后可以根据歌曲编号、歌手姓名、歌曲拼音缩写或歌曲名称检索歌曲,用户点击歌曲即可将歌曲加入到我的歌单中。进入播放列表后可以实现播放我的歌单中的歌曲,同时可以移除所选歌曲、清空我的歌单、暂停播放和重新播放等功能。在开始点歌窗口,用户还可以进入歌曲排行榜对歌曲的点播热度进行查询,同时也可以在歌曲排行榜中将歌曲添加到我的歌单中。每当一首歌被添加进我的歌单中时,歌曲的总点击率便会加1;对于系统管理员而言,登录到KTV后台管理系统后可以对用户信息、歌曲信息和歌手信息进行添加、删除、查询、更新等操作。同时设置超级管理员,若管理员拥有超级管理员权限则可以对系统所有的管理员信息进行管理。也就是,数据库的设计应该具备基本的增删改查功能。在第一部分,我们将介绍KTV点歌系统的设计背景、设计意义和设计内容。第二部分是本报告的重点,基于KTV点歌系统,对数据库设计的5个阶段,即需求分析、概念模式设计、逻辑模式设计、数据库实施、数据库运行与维护。
**
**
由于经济文化的高速发展,人们对生活质量及工作环境的要求也越来越高,追求也越来越高。同时,随着生活节奏的加快,每个人都处于忙碌的社会当中,不论是在家庭,工作场所,或是学校,无时无刻充满着生活和学习上的压力。工作之余,找到一种释放压力,释放疲劳的娱乐方式,已成为大家共同的愿望。
然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV厅唱K休闲娱乐。唱歌,自然免不了点歌的繁琐。传统的点歌设备主要是CD 和固放设备组成,虽然基本满足了人们的需求,但是也带来了设备成本高,点歌过程繁琐,更新麻烦等不少问题。随着科学的发展和信息时代的到来,点歌系统应运而生,KTV点歌系统已经成为了娱乐场所必不可少的一部分。KTV点歌系统不仅简化了用户操作,而且极大化满足了人们的需求和使用习惯。
KTV点歌系统是娱乐场所的一项管理措施,因此开发KTV点歌系统具有较大的社会意义,同时点歌系统是一娱乐软件的开端,它具有简单的软件特征,系统结构与现实生活紧密结合,具体直观,具有典范的便捷软件特点。KTV点歌系统主要用于对音乐的各项查找,操作简单,直观。用起来极为方便。减少了手工操对工作人员带来的不便和繁琐,使每个用户都能根据自己爱好选择自己喜欢的音乐。因此,KTV点歌系统是企业化、智能化、科学化、正规化不可缺少的管理软件。
运用所学的数据库技术理论知识,对KTV点歌系统进行数据库设计。设计应包含需求分析、概念模式设计、逻辑模式设计、数据库实施、数据库运行和维护五个阶段。本次KTV点歌系统的开发主要包含前台点歌系统和后台管理系统模块的开发。
前台点歌系统包含以下功能:
l 歌曲点播(包含歌星点歌、数字点歌、拼音点歌、歌名点歌、全部歌曲)
l 歌曲排行榜。
l 将选中的歌曲添加至播放列表并进行播放。
l 用户使用用户名和密码登录。
l 用户积分查询和密码修改。
后台管理系统包含以下功能:
l 用户信息管理(增加、删除、更新、修改用户信息)。
l 歌曲信息管理(增加、删除、更新、修改歌曲信息)。
l 歌手信息管理(增加、删除、更新、修改歌手信息)。
l 超级管理员可以对管理员信息进行管理。
l 管理员密码修改。
下面对使用的RDBMS、应用程序开发环境、系统运行环境、开发工具及版本作简单的介绍。
关系数据库管理系统(Relational Database Management System:RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。
常用的关系数据库管理系统产品是Oracle、IBM的DB2和微软的SQL Server。而本次课程设计采用的是MySQL 5.5。
SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。
操作系统:Windows10
Visual Studio 2019正式版是在4月2日发布的微软神级开发工具。默认安装Live Share代码协作服务,帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进;Visual Studio IntelliCode AI帮助;更好的Python虚拟和Conda支持;以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等 。
本次对于KTV点歌系统的设计,应该包含以下5个阶段:需求分析、概念模式设计、逻辑模式设计、数据库实施、数据库运行和维护,如图2-1所示。
KTV点歌系统是娱乐场所的一项管理措施,因此开发KTV点歌系统具有较大的社会意义,同时点歌系统是一娱乐软件的开端,它具有简单的软件特征,系统结构与现实生活紧密结合,具体直观,具有典范的便捷软件特点。KTV点歌系统主要用于对音乐的各项查找,操作简单,直观。用起来极为方便。减少了手工操对工作人员带来的不便和繁琐,使每个用户都能根据自己爱好选择自己喜欢的音乐。因此,KTV点歌系统是企业化、智能化、科学化、正规化不可缺少的管理软件。
1、歌手信息:歌手编号、姓名、姓名拼音缩写、性别、出生日期、国籍。
2、歌曲信息:歌曲编号、名称、歌曲拼音缩写、歌手编号、语种、歌曲类型、歌曲时长、歌曲存储路径。
3、歌曲排行版:歌曲编号、歌曲名称、总点击率。
4、我的歌单:歌曲编号、歌曲名称。
5、会员信息:会员编号、会员姓名、会员性别、出生日期、身份证号、注册时间、会员密码、积分。
6、管理员信息:管理员编号、管理员用户名、管理员密码。
7、超级管理员:超级管理员编号、超级管理员用户名、超级管理员密码。
8、后台操作记录:操作编号、操作内容、操作时间、操作人员、备注。
根据以上8个表的属性,可以总结出,设计出来的数据库应该面向用户和管理员。对于用户,需要会员账号和密码登入前台点歌系统,进入后可以查询个人账户的积分以及修改账户密码。还可通过多种方式进行歌曲点播,如根据演唱歌星的名字、歌曲名称编号、歌曲名称拼音缩写以及歌曲名称等检索歌曲。同时,可以查看歌曲排行榜信息。对于管理员,可使用管理员编号和密码进行登入后台操作系统,其进入后可对歌曲、歌手以及会员用户信息进行各类操作,如增加、删除、更新、修改等,也可以修改管理员账号的密码。同时,设置超级管理员,其可使用超级管理员的账号密码进入管理员信息管理系统对管理员信息进行各类操作。
上面表的结构关系较为混乱,如果没有进行必要的修改,将导致数据余、修改异常、插入异常、删除异常等情况,所以接下来将根据需求分析所需要的功能做后续的分析与设计,图2-1为KTV点歌系统结构图:
1、数据库应该面向用户和管理员。
2、用户需要会员账号和密码才能登入前台点歌系统,进入后可以查询个人账户的积分以及修改账户密码。还可通过多种方式进行歌曲点播,如根据演唱歌星的名字、歌曲名称编号、歌曲名称拼音缩写以及歌曲名称等检索歌曲。
3、管理员需要使用管理员编号和密码进行登入后台操作系统,其进入后可对歌曲、歌手以及会员用户信息进行各类操作,如增加、删除、更新、修改等,也可以修改管理员账号的密码。
4、每个用户由会员编号唯一标识,用户编号由系统按顺序生成;用户名不能与其他用户相同且只能由数字和字母组成;用户的密码不允许为空;出生日期、注册时间必须是在合理范围;会员性别非男即女;系统自动记录注册日期;
4、每个用户由会员编号和会员姓名唯一标识;系统自动记录操作记录;添加歌曲使用默认的歌曲路径。
5、每首歌曲由歌曲编号、名称、歌手编号唯一标识;系统自动记录歌曲上传时间;系统自动设置歌曲相对路径。
6、设置超级管理员,其可使用超级管理员的账号密码进入管理员信息管理系统对管理员信息进行各类操作。
图2-3 0层数据流图
图2-4 1层数据流图
图2-5 1层数据流
图2-6 1层数据流图
*数据项名* | *数据类型* | *数据长度* | *取值范围* | *简述* |
---|---|---|---|---|
会员编号 | 整型 | 4位 | 0~ 2^31-1 | 惟一标识用户身份 |
会员姓名 | 字符型 | 10位 | 只能由数字和字母组成 | 用户名唯一,用户登录时的用户名 |
会员性别 | 字符型 | 1位 | 男|女 | |
出生日期 | 日期 | 8位 | 1900.1至今 | |
身份证号 | 字符型 | 20位 | 合法身份证 | |
注册时间 | 日期 | 8位 | 1900.1至今 | 用户注册的时间 |
积分 | 字符型 | 30位 | 合法邮箱地址 | |
会员密码 | 字符型 | 20位 | ||
歌曲编号 | 整型 | 10位 | ||
歌曲名称 | 字符型 | 20位 | ||
歌曲编号 | 整型 | 10位 | ||
歌手姓名 | 字符型 | 10位 | ||
语种 | 字符型 | 10位 | ||
歌曲类型 | 字符型 | 10位 | ||
歌曲时长 | 字符型 | 10位 | ||
歌曲储存路径 | 字符型 | 30位 | ||
歌手编号 | 整型 | 10位 | 0~ 2^31-1 | |
姓名拼音缩写 | 字符型 | 10位 | 歌手姓名的拼音缩写 | |
歌手性别 | 字符型 | 10位 | 男|女 | |
歌手出生日期 | 字符型 | 10位 | 1900.1至今 | |
国籍 | 字符型 | 10位 | ||
管理员编号 | 整型 | 10位 | 0~ 2^31-1 | |
管理员用户名 | 字符型 | 10位 | ||
管理员密码 | 字符型 | 10位 | ||
超级管理员编号 | 整型 | 10位 | ||
超级管理员用户名 | 字符型 | 10位 | ||
超级管理员密码 | 字符型 | 10位 | ||
操作编号 | 整型 | 10位 | 0~ 2^31-1 | |
操作内容 | 字符型 | 30位 | ||
操作时间 | 日期 | 8位 | ||
操作人员 | 字符型 | 10位 | 操作用户身份 | |
备注 | 字符型 | 50位 |
*名称* | *含义* | *组成* |
---|---|---|
用户信息 | 用户的基本信息 | 会员编号、会员姓名、会员性别、出生日期、身份证号、注册时间、会员密码、积分 |
歌手信息 | 歌手的基本信息 | 歌手编号、姓名、姓名拼音缩写、性别、出生日期、国籍 |
歌曲信息 | 歌曲的基本信息 | 歌曲编号、名称、歌曲拼音缩写、歌手编号、语种、歌曲类型、歌曲时长、歌曲存储路径 |
歌曲排行榜 | 歌曲点击率排行 | 歌曲编号、歌曲名称、总点击率 |
我的歌单 | 已点的歌曲 | 歌曲编号、歌曲名称 |
会员信息 | 用户的基本信息 | 会员编号、会员姓名、会员性别、出生日期、身份证号、注册时间、会员密码、积分 |
管理员信息 | 管理员的基本信息 | 管理员编号、管理员用户名、管理员密码 |
超级管理员 | 超级管理员的基本信息 | 超级管理员编号、超级管理员用户名、超级管理员密码 |
后台操作记录 | 后台操作记录 | 操作编号、操作内容、操作时间、操作人员、备注 |
部分 数据流
名称 | 点歌 |
---|---|
含义 | 用户点歌 |
来源 | 歌曲信息表 |
去向 | 我的歌单、歌曲排行榜 |
组成 | 歌曲编号、名称、歌曲拼音缩写、歌手编号、语种、歌曲类型、歌曲时长、歌曲存储路径 |
部分
直接把现实世界事务及其联系抽象为数据世界的数据模型过于复杂,因此一般是先将现实世界的事务及其联系抽象为信息世界实体及其联系,然后再将其转化为计算机世界的数据模型,如关系数据模型。
概念模式设计主要任务是完成对需求分析报告中描述现实世界的建模,即用一种数据模型来实现对现实世界的抽象表达。这种建模与具体的机器、DBMS 无关,是现实世界到信息世界的第一层抽象,所用的数据模型是用户与数据库设计人员之间进行交流的最重要的某种语言或表示方法。因此,用于表达概念模式的数据模型一方面应该具有较强的语义表达能力,能够方便、直接地表达实际应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。常用的数据模型就是实体‐联系模型(E‐R模型)。
KTV点歌系统涉及以下几个实体:
1、歌手:歌手编号、姓名、姓名拼音缩写、性别、出生日期、国籍。
2、歌曲:歌曲编号、名称、歌曲拼音缩写、歌手编号、语种、歌曲类型、歌曲时长、歌曲存储路径。
3、歌曲排行榜:歌曲编号、歌曲名称、总点击率。
4、我的歌单:歌曲编号、歌曲名称。
5、会员(用户):会员编号、会员姓名、会员性别、出生日期、身份证号、注册时间、会员密码、积分。
6、管理员:管理员编号、管理员用户名、管理员密码。
7、超级管理员:超级管理员编号、超级管理员用户名、超级管理员密码。
8、后台操作:操作编号、操作内容、操作时间、操作人员、备注。
具体联系结合局部E-R图在下面分析。
实体‐联系模型(E‐R 模型)是一个面向问题的概念性数据模型。该模型将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种基本联接关系,并且可以实体联系图非常直观地表示出来。
E-R模型的基本元素如下:
(1) 实体:客观存在并可相互区别的事物称为实体。
(2) 属性:实体所具有的某一特征称为实体的属性。
(3) 键:也称关键字或码,唯一标识实体的最小的属性集称为实体的键。
(4) 联系:现实世界的事物彼此是有联系的,反映在信息世界就是实体之间的联系。
分析:图3-1为歌曲和歌手的局部E-R图。从图中可以看出:一首歌曲可以由多位不同的歌手演唱,一位歌手可以演唱多首歌曲。所以二者是多对多的关系,即m:n的关系。其中歌曲的主键:歌曲编号;歌手的主键:歌手编号。
分析:图3-2为歌曲和用户的局部E-R图。从图中可以看出:一首歌曲可以被多位用户点播,一位用户可以点播多首歌曲。所以二者是多对多的关系,即m:n的关系。其中歌曲的主键:歌曲编号;用户的主键:会员编号。
图3-2 歌曲和用户的局部E-R图
分析:图3-3为歌曲和管理员的局部E-R图。从图中可以看出:一首歌曲可由多位管理员管理,一名管理员可以管理数据库中所有的歌曲。所以二者是多对多的关系,即m.n的关系。其中歌曲的主键:歌曲编号:管理员的主键:管理员编号。
分析:图3-4为用户和管理员的局部E-R图。从图中可以看出:一名用户可由多位管理员管理,一名管理员可以管理数据库中所有的用。所以二者是多对多的关系,即m:n的关系。其中用户的主键.会员编号:管理员的主键:管理员编号。
图3-4 用户和管理员的局部E-R图
分析:图3-5为用户和歌手的局部E-R图。从图中可以看出:一名用户可检索多位歌手,一名歌手可被多名用户检索。所以二者是多对多的关系,即m:n的关系。其中用户的主键:会员编号;歌手的主键:歌手编号。
分析:图3-6为歌手和管理员的局部E-R图。从图中可以看出:一名歌手可由多位管理员管理,一名管理员可管理数据库中所有歌手。所以二者是多对多的关系,即m:n的关系。其中歌手的主键:歌手编号:管理员的主键:管理员编号。
分析:图3-7为超级管理员和管理员的局部E-R图。从图中可以看出:一名管理员可由多位超级管理员管理,一名超级管理员可管理所有的管理员。所以二者是多对多的关系,即m:n的关系。其中超级管理员的主键:超级管理员编号:管理员的主键:管理员编号。
分析:图3-8为歌曲排行榜实体E-R图。实体歌曲排行榜中一共有三个属性,分别是歌曲编号、歌曲名称和总点击率,每首歌都具有唯一的歌曲编号,因此将歌曲编号作为歌曲排行榜的主键。
分析:图3-9为我的歌单实体 E-R 图。实体我的歌单中一共两个属性,分别是歌曲编号和名称,每首歌都具有唯一的歌曲编号,因此将歌曲编号作为歌曲排行榜的主键。
图3-9 我的歌单实体E-R图
图3-10 后台操作记录实体E-R图
在设计完所有实体之间的联系后,即局部E-R图设计,需将局部E-R图合并,在这个过程需要去掉多个实体和属性之间的命名冲突和联系冲突等,从而生成一个完整的、满足应用需求的全局 E-R 图。图3-11 即为 KTV 点歌系统的全局 E-R图。通过图3-11可以清晰的看出各个实体之间的关系。
图3-11 全局E-R图
数据库概念模式设计完成后,数据库的设计进入到逻辑模式设计阶段。这时的数据库设计与具体的机器世界是相关联的。逻辑模式设计阶段有两大任务:
1、按一定的规则将E-R图转换成关系模式。
2、关系模式的规范化处理。所谓关系模式的规范化处理,就是对关系式进行某种处理,使它满足一定的规范化要求。规范化的主要目的就是要尽可能地消除关系操作过程中的异常情况。
根据以上E一R模型向关系模型转换规则,对上述的E一R图进行转换,转换结果如下(主键用下划线标出,外键用波浪线标出):
1) *歌手(********歌手编号********、姓名、姓名拼音缩写、性别、出生日期、国籍)*
每位歌手的编号都是唯一的,通过属性歌手编号即可对应唯一的一位歌手,所以选择歌手编号作为主键。
2)*歌曲(*****歌曲编号********、名称、歌曲拼音缩写、语种、歌曲类型、歌曲时长、********歌手编号********)****
每首歌曲的编号都是唯一的,通过属性歌曲编号即可对应唯一的一首歌曲,所以选择歌曲编号作为主键,歌手编号是歌手信息表中的属性,所以在歌曲信息表中是外键。
3)*用户(*****会员编号********、会员姓名、会员性别、出生日期、身份证号、注册时间、会员密码、积分)****
每位用户的会员编号都是唯一的,通过属性会员编号即可对应唯一的一位用户,所以选择会员编号作为主键。
4)*管理员(*****管理员编号********、管理员用户名、管理员密码)****
每位管理员的管理员编号都是唯一的,通过属性管理员编号即可对应唯一的一位管理员,所以选择管理员编号作为主键。
5)*超级管理员(*****超级管理员编号********、超级管理员用户名、超级管理员密码)****
每位超级管理员的编号都是唯一的,通过属性超级管理员编号即可对应唯一的一位超级管理员,所以选择超级管理员编号作为主键。
6)*演唱(*****歌手编号、歌曲编号********)****
演唱是歌曲和歌手这两个实体之间的联系,联系关系模式的属性是由两端实体集的键码和联系自身的属性构成,所以其属性为歌手编号和歌曲编号。同时,联系关系模式的键码为复合键码,由两端实体集键码以及相关属性组合而成,所以其主键为歌手编号和歌曲编号。以下六个联系关系模式集合的分析与此同理。
*7)点播(********歌曲编号、会员编号********)*
*8)检索(********歌手编号、会员编号********)*
*9)管理(********歌曲编号、管理员编号********)*
在数据库逻辑模式设计阶段,完成E-R图到关系模式的转换后,就要进入关系模式的规范化处理阶段。这一过程主要研宄关系模式内各属性之间的依赖关系,保持属性间好的数据依赖关系,消除导致异常的依赖关系,使得关系模式由低一级的规范模式上升到高一级的规范模式。我们设计的最终目的是使关系模式规范化,所以最低应该达到第三范式。
首先,上述的关系中每一个属性都是不可冉分的数据,所以均符合第一范式。其次,第二范式要求关系模式必须属于第一范式,且每个非主属性都是完全函数依赖于主誕。在上述关系中,“歌手”、“歌曲”、“用户”、“管理员”和“超级管理员”都只有一个主誕,所以不存在部分依赖关系,属于第二范式。“演唱”、“点播”、“检索”和“管理”等七个关系中,均有两个主誕,但是这七个关系均不存在非主属性,所以不存在部分函数依赖,也属于第二范式。最后,第三范式要求关系模式必须属于第一范式,且每个非主属性都不传递函数依赖于主誕。在上述关系中,“歌手”、“歌曲”、“用户”、“管理员”和“超级管理员”都不存在传递函数依赖关系,属于第三范式。“演唱”、“点播”、“检索”和“管理”等七个关系中,均有两个主誕,但是这七个关系均不存在非主属性,所以不存在传递函数依赖,也属于第三范式。
*1、用户权限*
用户需要会员账号和密码才能登入前台点歌系统,进入后可以查询个人账户的积分以及修改账户密码。还可通过多种方式进行歌曲点播,如根据演唱歌星的名字、歌曲名称编号、歌曲名称拼音缩写以及歌曲名称等检索歌曲。
2、*管理员权限*
管理员需要使用管理员编号和密码进行登入后台操作系统,其进入后可对歌曲、歌手以及会员用户信息进行各类操作,如增加、删除、更新、修改等,也可以修改管理员账号的密码。
3、*超*****级管理员****
其可进入管理员信息管理系统对管理员信息进行各类操作。
1、数据库应该面向用户和管理员。
2、用户需要会员账号和密码才能登入前台点歌系统,进入后可以查询个人账户的积分以及修改账户密码。还可通过多种方式进行歌曲点播,如根据演唱歌星的名字、歌曲名称编号、歌曲名称拼音缩写以及歌曲名称等检索歌曲。
3、管理员需要使用管理员编号和密码进行登入后台操作系统,其进入后可对歌曲、歌手以及会员用户信息进行各类操作,如增加、删除、更新、修改等,也可以修改管理员账号的密码。
4、每个用户由会员编号唯一标识,用户编号由系统按顺序生成;用户名不能与其他用户相同且只能由数字和字母组成;用户的密码不允许为空;出生日期、注册时间必须是在合理范围;会员性别非男即女;系统自动记录注册日期;
4、每个用户由会员编号和会员姓名唯一标识;系统自动记录操作记录;添加歌曲使用默认的歌曲路径。
5、每首歌曲由歌曲编号、名称、歌手编号唯一标识;系统自动记录歌曲上传时间;系统自动设置歌曲相对路径。
6、设置超级管理员,其可使用超级管理员的账号密码进入管理员信息管理系统对管理员信息进行各类操作。
存取方法是快速有取数据库中数据的技术。数据库管理系统一般提供多种存取方法。
常用的存取方法为索引方法和聚簇(clustering)方法。其中B+树索引和hash索引是数据库中经典的存取方法,使用最普遍。
所谓选择索引存取方法,实际上就是根据应用要求确定对关系的哪些属性列建立索引、哪些属性列建立组合索引、哪些索引要设计为唯一索引等。一般来说:
(1)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。
(2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。
(3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。
关系上定义的索引数并不是越多越好,系统为维护索引要付出代价,查找索引也要付出代价。例如,若一个关系的更新频率很高,这个关系上定义的索引数不能太多。因为更新一个关系时,必须对这个关系上有关的索引做相应的修改。
选择hash存取方法的规则如下:如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一,则此关系可以选择hash存取方法。
(1)一个关系的大小可预知,而且不变。
(2)关系的大小动态改变,但数据库管理系统提供了动态hash存取方法。
MySQL数据库存储的方式:一台数据库服务器中会创建很多数据库(一个项目,会创建一个数据库)。在数据库中会创建很多张表(一个实体会创建一个表)。在表中会有很多记录(一个对象的实例会添加一条新的记录)。
选择使用innodb 存储引擎
位置:D:\mysql-8.0.21-winx64\mysql-5.6.26-winx64\data\Data\
Mysql中系统配置命令
总体查看当前数据库的状态:status
D:\mysql-8.0.21-winx64\mysql-5.6.26-winx64\bin\mysql.exe
Ver 14.14 Distrib 5.5.27, for Win64 (x86)
Connection id: 7
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.5.27 MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 1 hour 28 min 1 sec
Threads: 3 Questions: 182 Slow queries: 0 Opens: 93 Flush tables: 1 Open tables: 2 Queries per second avg: 0.034
数据库实施部分首先运用My SQL建立KTV系统管理数据,再将各关系模型转化为实际的 SQL 数据表。VB.NET 界面开发部分主要是利用 VB.NET 进行KTV前台点歌系统和后台管理系统人机交互界面的设计与制作。
3.1 数据库基本表设计
3.1.1 用户信息表
3.1.2 我的歌单
3.1.3 后台操作记录
3.1.4 管理员信息表
3.1.5 歌手信息表
3.1.6 歌曲信息表
3.1.7 歌曲排行榜
3.1.8 超级管理员信息表
登录模块由登录页面、用户登录页面和管理员登录页面三个窗口组成。登录页面在KTV点歌系统中起到了欢迎界面的作用,以构建一个美观舒适的人机交互环境,如图3-1所示。在该窗口有三个功能按钮,分别是用户登录、管理员登录和退出系统。其中点击用户登录按钮可以进入用户登录界面,即进入前台点歌系统,如图3-2所示;点击管理员登录按钮可以进入管理员登录界面,即进入后台管理系统,如图3-3所示;点击退出,则系统会关闭。
图3-1 登录页面
图3-2 用户登录页面 图 3-3 管理员登录页面
在用户登录页面和管理员登录页面,用户和管理员必须输入正确用户名和密 码才能成功登录前台点歌系统,如图 3-4 和图 3-5 所示。若点击取消则会返回登录页面。
图 3-4 用户登录成功 图 3-5 管理员登录成功
为了提高系统的安全性,当用户或者管理员输入错误的用户名或密码的次数 超过两次时,我们认为正在进行登录操作的人员不是我们的会员用户和系统管理 员,系统执行退出指令,禁止该人员登录。如图 3-6 和图 3-7 所示,管理员登录 页面的设计在这点上与用户登录页面设计一致。
图3-6 错误输入用户名或密码 图 3-7 错误输入管理员名或密码
Dim n As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myconnection As New MySqlConnection("Server=localhost;User Id=root;Password=123456;Database=jm_database;Port=3306;")
Dim mysql As String = "select * from 用户信息表 where 会员编号='" + TextBox用户名.Text + "' and 会员密码='" + TextBox密码.Text + "'"
Dim myadapter As New MySqlDataAdapter(mysql, myConnection)
'定义DataSet对象,用mysql命令串执行的结果填充数据集mydataset
Dim mydataset As New DataSet
myadapter.Fill(mydataset, "用户信息表")
If mydataset.Tables("用户信息表").Rows.Count = 0 Then
n += 1
If n < 2 Then
MsgBox("用户名或密码错误!", MsgBoxStyle.OkOnly +
MsgBoxStyle.Exclamation, "信息提示")
TextBox用户名.Text = ""
TextBox密码.Text = ""
TextBox用户名.Focus() '设置输入焦点
Else
MsgBox("已登入失败2次!退出系统", MsgBoxStyle.OkOnly +
MsgBoxStyle.Exclamation, "信息提示")
Me.Close()
登录界面.Close()
End If
Else
MsgBox("欢迎光临!")
用户操作界面.Show()
Me.Close()
End If
End Sub
会员用户在用户登录界面登录成功之后便可进入前台点歌模块的用户操作界面,在用户操作界面用户可以进行开始点歌、积分查询、密码修改和退出账号 四项操作,如图 3-8 所示。
图 3-8 用户操作界面
在前台点歌系统模块中进行操作时将会涉及到歌曲信息表、歌手信息表、歌曲排行榜和我的歌单这四个 SQL 数据库关系表。
用户点击开始点歌便会进入开始点歌窗口,该窗口是 KTV 点歌系统前台点歌 模块的主要用户操作界面,如图 3-9 所示。
图3-9 开始点歌窗口
(1) 歌曲搜索
在开始点歌窗口,用户可以通过输入关键字实现数字点歌(通过检索歌曲编号进行歌曲搜索)、歌星点歌(通过检索歌手姓名进行歌曲搜索)、拼音点歌(通过检索歌曲拼音缩写进行歌曲搜索)和歌名点歌(通过检索歌曲名称进行歌曲搜索)。同时,这四种歌曲搜索方式均可以实现模糊搜索。
'数字点歌
If 关键字.Text = "" Then
MsgBox("请输入关键字进行搜索!", MsgBoxStyle.OkOnly, "信息提示")
Else
Dim mysql2 As String = "SELECT * FROM 歌曲信息表 WHERE 歌曲编号='" + 关键字.Text + "'"
mycmd.Connection = myconnection '指定mycmd对象的数据连接
'定义mycmd对象要执行的SQL语句
mycmd.CommandText = mysql2
'定义myadapter2对象,用于满足一定条件的数据填充
Dim myadapter2 As New MySqlDataAdapter(mycmd)
'定义数据集mydataset
Dim mydataset2 As New DataSet
'填充数据
myadapter2.Fill(mydataset2, "歌曲信息表")
Me.DataGridView1.DataSource = mydataset2.Tables("歌曲信息表")
End If
图 3-10 数字搜索
图3-11 歌星搜索
图 3-12 拼音搜索
图3-13 歌名搜索
点击开始点歌窗口中的所有歌曲,在信息显示窗口将会显示所有歌曲的信息,执行效果如图 3-9 所示
图3-14 所有歌曲
(2) 歌曲排行榜
点击歌曲排行榜,则用户可以进入歌曲排行榜界面查看歌曲总点击率信息,点击返回按钮则会返回开始点歌界面。 当用户将选中的歌曲添加进我的歌单中时,歌曲排行榜中的总点击率便会加 1,同时将会更新到 SQL 数据库关系表中的歌曲排行榜表。SQL 数据库关系表的 歌曲排行榜表的排序是按照总点击率的降序排列,所以总点击率越大则在开始点 歌窗口中的歌曲排行榜中的位置越靠前,继而实现歌曲热度排名功能。
点击刷新按钮后歌曲排行榜的信息将会刷新,用户便可查看到最新的总点击率。将所选歌曲添加进我的歌单。
(3) 我的歌单
点击查看我的歌单会在歌曲信息显示窗口显示出我的歌单表的所有信息,如图 3-17 所示。
图3-15 查看我的歌单
在开始点歌窗口完成歌曲搜索之后可以直接在歌曲信息显示窗口点击想点播的歌曲,此操作可以直接将被点击的歌曲添加进我的歌单。在该操作过程中, 系统会询问用户是否要添加所选歌曲到我的歌单,若用户选择否则歌曲不会被添 加。当某一首歌曲被用户添加进我的歌单中时,该歌曲在歌曲排行榜中的总点击 率将会加 1。图 3-15 是未添加选定歌曲至我的歌单时的歌曲排行榜界面,图 3- 16 是添加了选定歌曲至我的歌单后的歌曲排行榜界面。
在用户操作界面,用户可以很便捷的查询个人账号的积分以及对账号密码进 行修改,如图 3-23 和图 3-24 所示。
Dim myconnion As New MySqlConnection("Server=localhost;User Id=root;Password=123456;Database=jm_database;Port=3306;")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'积分查询
If 用户名.Text = "" And 密码.Text = "" Then
MsgBox("请填入用户名和密码!", MsgBoxStyle.OkOnly, "信息提示")
Else
Dim integral As Integer = 0
Dim myconn As String = "SELECT 积分 FROM 会员信息表 "
Dim mysql As String = "SELECT 积分 FROM 会员信息表 WHERE 会员姓名 ='" + 用户名.Text + "' and 会员密码 ='" + 密码.Text + "'"
Dim mycon As New SqlClient.SqlConnection(myconn)
Dim mycomm As New SqlClient.SqlCommand(mysql, mycon)
mycon.Open()
integral = mycomm.ExecuteScalar()
mycon.Close()
MsgBox("您的账号积分 :" & integral, MsgBoxStyle.DefaultButton1, "账号积分")
End If
End Sub
图 3-16 用户积分查询 图 3-17 用户密码修改
图3-18 修改密码
在登录页面选择管理员登录,并使用正确的管理员用户名和密码登录后便可 进入 KTV 后台管理系统。在后台管理系统中,管理员可以对用户信息、歌曲信息 和歌手信息进行管理,也可以修改管理员账号的密码。若管理员具有超级管理员 的权限,则可以使用超级管理员账号和密码获取超级管理员权限,之后便可对系 统的普通管理员信息和超级管理员信息进行管理。KTV 后台管理系统操作界面如 图 3-25 所示。
图3-19 KTV 后台管理系统操作界面
用户信息管理操作界面如图 3-26 所示。在不输入任何用户信息时,管理员 可以通过点击查询用户信息查询所有用户的信息。填入会员编号或者会员姓名, 可以查询指定用户的信息,同时还可以实现模糊搜索;填入完整的用户信息后,可以点击添加用户将新的用户添加进会员信息表,若填入的信息不完整则系统会提示填入完整的用户信息,如图 3-27 所示;若要删除某用户的信息时可以只填入会员编号或者会员姓名,如图 3-28 所示;更新某用户时必须完整的填入用户 信息,然后再对用户信息进行更改。
图3-20 用户信息管理操作界面
'查询用户信息
If 会员编号.Text = "" And 会员姓名.Text = "" Then
'定义SqlDataAdapter对象
Dim mysql1 As String = "SELECT * FROM 用户信息表"
Dim myadapter1 As New MySqlDataAdapter(mysql1, myconnection)
'定义DataSet对象,用mysql命令串执行的结果填充数据集mydataset
Dim mydataset1 As New DataSet
myadapter1.Fill(mydataset1, "用户信息表")
Me.DataGridView1.DataSource = mydataset1.Tables("用户信息表")
Else
'定义SqlCommand对象
Dim mycmd As New MySqlCommand
If 会员编号.Text <> "" Then
Dim mysql2 As String = "SELECT * FROM 用户信息表 WHERE 会员编号='" & 会员编号.Text & "'"
mycmd.Connection = myconnection '指定mycmd对象的数据连接
'定义mycmd对象要执行的SQL语句
mycmd.CommandText = mysql2
'定义myadapter2对象,用于满足一定条件的数据填充
Dim myadapter2 As New MySqlDataAdapter(mycmd)
'定义数据集mydataset
Dim mydataset2 As New DataSet
'填充数据
myadapter2.Fill(mydataset2, "用户信息表")
Me.DataGridView1.DataSource = mydataset2.Tables("用户信息表")
Else
Dim mysql2 As String = "SELECT * FROM 用户信息表 WHERE 会员姓名='" & 会员姓名.Text & "'"
mycmd.Connection = myconnection
mycmd.CommandText = mysql2
Dim myadapter2 As New MySqlDataAdapter(mycmd)
Dim mydataset2 As New DataSet
myadapter2.Fill(mydataset2, "用户信息表")
Me.DataGridView1.DataSource = mydataset2.Tables("用户信息表")
End If
End If
图3-21 添加用户时的系统提醒
图3-22 删除会员用户
图3-23 更新会员信息
歌曲信息管理和歌手信息管理在实现上与用户信息管理大致相同。这两个模 块所要实现的功能是对歌曲信息和歌手信息进行增删改查。
图 3-24 歌曲信息管理操作界面
显示部分代码(歌曲查询)
Private Sub 查询歌曲信息_Click(sender As Object, e As EventArgs) Handles 查询歌曲信息.Click
'查询歌曲信息
If 歌曲编号.Text = "" And 名称.Text = "" Then
Dim mysql1 As String = "SELECT * FROM 歌曲信息表"
Dim myadapter1 As New MySqlDataAdapter(mysql1, myConnection)
Dim mydataset1 As New DataSet
myadapter1.Fill(mydataset1, "歌曲信息表")
Me.DataGridView1.DataSource = mydataset1.Tables("歌曲信息表")
Else
'定义SqlCommand对象
Dim mycmd As New MySqlCommand
If 歌曲编号.Text <> "" Then
Dim mysql2 As String = "SELECT * FROM 歌曲信息表 WHERE 歌曲编号 LIKE '%" & 歌曲编号.Text & "%'"
mycmd.Connection = myConnection '指定mycmd对象的数据连接
'定义mycmd对象要执行的SQL语句
mycmd.CommandText = mysql2
'定义myadapter2对象,用于满足一定条件的数据填充
Dim myadapter2 As New MySqlDataAdapter(mycmd)
'定义数据集mydataset
Dim mydataset2 As New DataSet
'填充数据
myadapter2.Fill(mydataset2, "歌曲信息表")
Me.DataGridView1.DataSource = mydataset2.Tables("歌曲信息表")
Else
Dim mysql2 As String = "SELECT * FROM 歌曲信息表 WHERE 名称 Like '%" & 名称.Text & "%'"
mycmd.Connection = myConnection
mycmd.CommandText = mysql2
Dim myadapter2 As New MySqlDataAdapter(mycmd)
Dim mydataset2 As New DataSet
myadapter2.Fill(mydataset2, "歌曲信息表")
Me.DataGridView1.DataSource = mydataset2.Tables("歌曲信息表")
End If
End If
End Sub
图 3-25 歌手信息管理操作界面
图3-26 管理员密码修改
图3-27 超级管理员登录页面
图3-34 管理员信息管理操作界面
数据库试运行合格后,数据库开发工作就基本完成,可以投入正式运行了。但是由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高。在数据库运行阶段,对数据库经常性的维护工作主要是由数据库管理员完成的。数据库的维护工作主要包括以下几方面:
1、定期进行数据转储,制作后备副本。但是转储又是十分耗费时间和资源的,不能频繁进行。
2、DBA应该根据数据库使用情况确定适当的转储周期和方法
例如:每天晚上或每周进行一次动态增量转储;每月进行一次静态海量转储。
数据库的转储和恢复是系统正式运行后最重要的维护工作之一。数据库管理员要针对
不同的应用要求制定不同的转储计划,以保证一旦发生故障能尽快将数据库恢复到某种一
致的状态,并尽可能减少对数据库的破坏。
*服务器列表*
*服务器名称* | *服务器IP* | *服务器IP* |
---|---|---|
DB_Server1 | 172.31.204.81 | D:\Wind\bak\SQLServer\ |
DB_Server2 | 172.31.204.85 | D:\Wind\bak\SQLServer\ |
File_Server | 192.1.1.235 | E:\wind\Bak\ |
DB Server1的主数据库,通过SQL JOB定期备份,形成Bak文件文件存放本地硬盘。
定期任务计划执行DB Server1的Bat脚本1,将Bak备份文件传输到File Server的FTP服务器。
定期任务计划执行DB Server2的Bat脚本1,将Bak备份文件从File Server的FTP服务器下载到DB Server2本地。
通过DB Server2的SQL JOB,定期恢复备份数据库。
****DB Server1备份文件清理****:通过任务计划定期执行Bat脚本2,每天定期清理DB Server1的备份文件,只保留一天前的Bak文件。
****File Server备份文件清理****:通过任务计划定期执行Bat脚本2,每天定期清理File Server的备份文件,只保留最近七天的Bak文件。
****DB Server2备份文件清理****:通过任务计划定期执行Bat脚本2,每天定期清理DB Server2的备份文件,只保留一天前的Bak文件。
在数据库运行过程中,由于应用环境的变化,对安全性的要求也会发生变化,比如有的数据原来是机密的,现在则可以公开查询,而新加入的数据又可能是机密的。系统中用户的密级也会改变。这些都需要数据库管理员根据实际情况修改原有的安全性控制。同样,数据库的完整性约束条件也会变化,也需要数据库管理员不断修正,以满足用户要求。
在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的方法是数据库管理员的又一重要任务。目前有些关系数据库管理系统提供了监测系统性能参数的工具,数据库管理员可以利用这些工具方便地得到系统运行过程中一系列性能参数的值。数据库管理员应仔细分析这些数据,判断当前系统运行状况是否为最佳,应当做哪些改进,例如调整系统物理参数或对数据库进行重组织或重构造等。
数据库运行一段时间后,由于记录不断增、删、改,将会使数据库的物理存储情况变坏,降低数据的存取效率,使数据库性能下降,这时数据库管理员就要对数据库进行重组织或部分重组织(只对频繁增、删的表进行重组织)。关系数据库管理系统一般都提供数据重组织用的实用程序。在重组织的过程中,按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系统性能。数据库的重组织并不修改原设计的逻辑和物理结构,而数据库的重构造则不同,它是指部分修改数据库的模式和内模式。
由于数据库应用环境发生变化,增加了新的应用或新的实体,取消了某些应用,有的实体实体间的联系也发生了变化等,使原有的数据库设计不能满足新的需求,品要调整数据库的模式和内模式。例如,在表中增加或删除某些数据项,改变数据项为类型,增加或删除某个表,改变数据库的容量,增加或删除某些索引等。
通过一个月的课程设计,基本完成了 KTV 点歌系统的设计。前台点歌可以实现 按数字点歌、拼音点歌、歌星点歌和歌名点歌,可以实现歌曲的媒体播放功能, 同时也可以查看歌曲排行榜。后台信息管理可以实现用户、歌曲、歌手和管理员 的信息管理。但与此同时,此次的设计仍存在许多的不足,比如无法顺序播放歌 单中的歌曲,需要将所有的歌曲信息导入歌曲排行榜才能完整实现该功能。 同时,通过这次课程设计我巩固了MySQL数据库和 VB.NET 界面开发的知识,通过实践学习到很多课本上学不到的知识,学习到了很多解决实际问题的经验。也让我深刻的意识到在做数据库设计时,必须包含需求分析、概念模式设计、逻辑模式设计、数据库实施、数据库运行和维护 5个阶段。此次设计的系统很简洁也很微小,在设计过程中简化了非常多的步骤,在调试过程中,总会想到更多符合实际需求的条件去充实完善系统,也知道自己当初设计的时候考虑略欠周全,也明白了实际应用的系统是需要不断更新、维护,是需要许多人的智慧和努力。
*1、系统优缺点*
基本实现增删改查基本操作,前台点歌可以实现 按数字点歌、拼音点歌、歌星点歌和歌名点歌,可以实现歌曲的媒体播放功能, 同时也可以查看歌曲排行榜。后台信息管理可以实现用户、歌曲、歌手和管理员的信息管理。但与此同时,此次的设计仍存在许多的不足,比如无法顺序播放歌 单中的歌曲,需要将所有的歌曲信息导入歌曲排行榜才能完整实现该功能。
2、*系统完善设想*
除了展示中未提及或具体展示的部分,系统还可以增加注册功能以及用户密码加密,数据库中密码的储存形式可以通过MD5 或者SHA1形式存在,进一步增强加密性。
[1]龚沛曾,袁科萍等编著. 数据库原理及应用[M]. 北京:高等教育出版社
[2]盛莉.基于MySQL的数据管理平台设计[J].信息与电脑(理论版),2020,32(22):152-153.
[3]马晓阳,薛钢,何磊.基于VB和MySQL的焊接工艺数据系统的设计与实现[J].材料开发与应用,2020,35(04):98-102.
[4]臧玉琴,腾跃编著. Visual Basic 界面、多媒体操作系统程序设计[M]. 北京:人民邮电出版社
[5]蔡宏编著. Visual Basic.NET 案例开发集锦[M]. 北京:电子工业出版社
[6]冯小燕,刘斌等编著. Visual Basic 项目开发案例精粹[M]. 北京:电子工业出版社
[7]李丹,赵占坤,丁宏伟,史彦芳. MySQL 数据库管理与开发实用教程[M]. 北京:机械工业出版社,2009.11
[8]姚永一,MySQL 数据库技术实用教程,北京:电子工业出版社,2010
[9]壮志剑,数据库原理与MySQL,北京:高等教育出版社,2008
[10]何玉洁,梁琦,数据库原理与应用(第二版),北京:机械工业出版社,2011
[11]张志强,孙福兆,余健.MySQL课程设计案例精编. 北京:清华大学出版社,2005
[12]张丽萍,汤涌涛. Visual Basic 2010 从入门到精通[M]. 北京:清华大学出版社
[13]王珊,萨师煊. 数据库系统概论(第四版)[M]. 北京:高等教育出版社
[14]郑阿奇. Visual Basic 教程[M]. 北京:清华大学出版社,2010
[15]段兴.Visual Basic 数据库实用程序设计 100 例[M]. 北京:人民邮电出版社
[16]王运坚. Visual Basic 6.0 应用指南[M]. 北京:人民邮电出版社
[17]曹军生. My SQL 5.5 实用教程[M]. 北京:北京理工大学出版社
答辩过程所听到的几个坑
附代码资源:
数据库课程设计-KTV点歌系统(VB.net 窗体,MySQL5.5)
是我,Zack
2021年1月13日
希望对大家有所帮助
[4]臧玉琴,腾跃编著. Visual Basic 界面、多媒体操作系统程序设计[M]. 北京:人民邮电出版社
[5]蔡宏编著. Visual Basic.NET 案例开发集锦[M]. 北京:电子工业出版社
[6]冯小燕,刘斌等编著. Visual Basic 项目开发案例精粹[M]. 北京:电子工业出版社
[7]李丹,赵占坤,丁宏伟,史彦芳. MySQL 数据库管理与开发实用教程[M]. 北京:机械工业出版社,2009.11
[8]姚永一,MySQL 数据库技术实用教程,北京:电子工业出版社,2010
[9]壮志剑,数据库原理与MySQL,北京:高等教育出版社,2008
[10]何玉洁,梁琦,数据库原理与应用(第二版),北京:机械工业出版社,2011
[11]张志强,孙福兆,余健.MySQL课程设计案例精编. 北京:清华大学出版社,2005
[12]张丽萍,汤涌涛. Visual Basic 2010 从入门到精通[M]. 北京:清华大学出版社
[13]王珊,萨师煊. 数据库系统概论(第四版)[M]. 北京:高等教育出版社
[14]郑阿奇. Visual Basic 教程[M]. 北京:清华大学出版社,2010
[15]段兴.Visual Basic 数据库实用程序设计 100 例[M]. 北京:人民邮电出版社
[16]王运坚. Visual Basic 6.0 应用指南[M]. 北京:人民邮电出版社
[17]曹军生. My SQL 5.5 实用教程[M]. 北京:北京理工大学出版社
答辩过程所听到的几个坑
附代码资源:
数据库课程设计-KTV点歌系统(VB.net 窗体,MySQL5.5)
是我,Zack
2021年1月13日
希望对大家有所帮助