KTV点歌系统广工数据库课程设计

KTV点歌系统广工数据库课程设计
KTV点歌系统广工数据库课程设计

课程设计

课程名称数据库系统

题目名称___ 卡拉OK点歌系统___ 学生学院计算机学院

专业班级 2010级计算机科学与技术四班学号 3110006015 学生姓名张法光

指导教师路璐

2013年1 月12 日成绩

评价标准分数比例

(%)

成绩

论文论文结构包含:

1、相关技术介绍、需求分析、

2、概念结构设计(涉及的实体至少三个以上)、

3、逻辑结构设计(有完整性约束说明)、

4、数据库物理设计、

5、数据库完整性设计(违反实体、参照完整性时的解决办法,比

如触发器、存储过程等)

5、数据库安全性设计、

6、数据库实施、系统测试方案和测试报告、

7、系统的主要功能和使用说明、系统安装说明。

要求论文完整、内容详细,格式规范。

40

程序1、系统运行正确;

2、功能完善:有增、删、改、查功能,输入、输出功能;

3、有基本的统计、报表功能

4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、

分组查询等。

5、工作量饱满;

6、系统实现技术的难度。

30

数据库设计E-R图设计正确,至少3个实体;

数据库逻辑结构设计规范化;

数据库物理设计合理。

30

总评成绩优良中及格不及格总分

目录

1 引言 (7)

1.1课题来源 (7)

1.2课题研究主要内容 (7)

1.3主要工作 (8)

2 需求分析 (8)

2.1信息要求分析 (8)

2.2处理要求分析 (8)

2.3数据字典及安全性、完整性要求分析 (9)

3 概念结构设计 (10)

3.1数据实体描述及分ER图 (10)

3.2整体ER图 (13)

4 系统概要设计 (14)

4.1数据库逻辑结构设计 (14)

4.2数据库物理设计 (16)

4.3系统总体框架 (17)

5 系统详细设计 (17)

5.1数据库实施 (17)

5.2数据库的数据完整性设计 (29)

5.3数据的安全设计 (31)

5.4系统功能模块的设计与实现 (31)

5.5系统功能测试 (32)

5.6数据库性能检测与备份设计 (49)

5.7系统安装使用说明 (49)

6 回顾与展望 (50)

7 参考文献 (50)

1 引言

1.1课题来源

随着现如今经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。同时,随着生活节奏的加快,每个人都处于忙碌繁乱的社会的那个当中,不论是在家庭,工作场所,或是学校中,无时无刻充满着生活和学习上的压力。工作之余,找到一种能够换季压力,释放疲劳的娱乐方式,已成为大家共同的愿望。然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV厅唱K休闲娱乐。唱歌,自然免不了点歌的繁琐。传统的点歌设备主要是CD和固放设备组成,虽然基本满足了人们的需求,但是也带来了设备成本高,点歌过程繁琐,更新麻烦等不少问题。随着科学的发展和信息时代的到来,点歌系统应运而生,卡拉OK点歌系统已经成为了娱乐场所必不可少的一部分。卡拉OK点歌系统不仅简化了用户操作,而且极大化满足了人们的需求和使用习惯。

1.2课题研究主要内容

卡拉OK点歌系统是娱乐场所的一项管理措施,因此开发卡拉OK点歌系统具有较大的社会意义,同时点歌系统是一娱乐软件的开端,它具有简单的软件特征,系统结构与现实生活紧密结合,具体直观,具有典范的便捷软件特点。卡拉OK点歌系统主要用于对音乐的各项查找,操作简单,直观。用起来极为方便。减少了手工操对工作人员带来的不便和繁琐,使每个用户都能根据自己爱好选择自己喜欢的音乐。因此,卡拉OK点歌系统是企业化、智能化、科学化、正规化不可缺少的管理软件。该设计文档主要介绍点歌系统的数据库设计内容。建立数据库和相关表和SQL语言的使用和用例图的设计和设计综述。然而,设计出一个让用户满意的点歌系统并不是那么容易,本次课程设计将利用Eclipse和SQL SERVER2008等工具进行开发实践工作。

1.3主要工作

本次课程设计个人独立完成。包括界面模块,需求分析,概念设计,系统设计,数据库实现等设计。本次卡拉OK系统的开发主要前台点歌系统和后台管理系统模块的开发。前台点歌系统包含了拼音点歌、歌星点歌、分类点歌、语种点歌,全部歌曲,每个点歌模块都可以查询想要点的歌曲。用户点歌完毕之后,可进入歌曲管理,查看自己的歌曲和收藏自己喜欢的歌曲,也可以按照金曲排行来点播想要的歌曲。

管理员可登录后台管理系统对歌曲、歌星、用户进行管理和维护。进入后台管理系统后,显示的是歌曲管理、歌星管理、用户管理大三模块。

2 需求分析

2.1信息要求分析

经过对卡拉OK点歌系统的结构化分析,得出信息要求如下:

1.、歌星信息:包括了歌星编号、歌星姓名、歌星性别、国籍、歌星类型、地区、拼音缩写。

2、歌曲信息:包括了歌曲编号、歌曲名称、歌星编号、语种、歌曲类型、路径、歌曲拼音缩写、歌曲时长

3、金曲排行信息:包括了歌曲编号、歌曲名称、歌星姓名、周点击率、月点击率、总点击率

4、后台日志信息:包括了操作编号、操作内容、操作时间、操作人员、备注

5、管理员信息:包括了管理员用户名管理员密码

6、用户信息:包括了用户编号、用户登录名、用户密码、用户姓名、用户性别、出生日期注册日期

2.2处理要求分析

卡拉OK点歌系统主要分为歌曲的查询与管理,管理主要包括歌曲的查询,增添,修改,删除;查询可以按照歌星查询,歌曲类型查询,歌曲名称查询等方式查询。系统功能需求:

2.2.1 点播歌曲

点歌是最基本也是最重要的功能,重在快捷方便。比如拼音点歌、指定歌星点歌,只需输入相应的拼音简写然后点击,就能检索到想要点播的歌曲。

2.2.2 添加歌曲

音乐是滚动的时尚元素,明天都可能有新的创作,所以添加新歌也是必不可少的功能。当然,经典老歌也是不可或缺的元素,适当添加经典老歌,增添怀旧的气氛。

2.2.3 歌曲管理

歌曲库十分庞大,给歌曲管理带来一定的难度。对歌曲信息的增添和删改同样需要相应的子功能模块管理。

2.2.4 后台记录

系统在运行当中难免出现故障,对数据库的部分重要更新操作可记录入库,作为系统故障时恢复的依据。

2.3数据字典及安全性、完整性要求分析

名称描述定义位置

歌星信息主要用于存储歌星

歌手的基本信息包括:歌星编号、歌星姓名、

歌星性别、国籍、歌星类型、

地区、拼音缩写

数据库的歌星信息

歌曲信息记录歌曲的基本信

息包括:歌曲编号、歌曲名称、

歌星编号、语种、歌曲类型、

文件路径、歌曲拼音缩写、

歌曲时长

数据库的歌曲信息

金曲排行记录歌曲热度信息包括:歌曲编号、歌曲名称、

歌星姓名、周点击率、月点

击率,总点击率数据库的歌曲排行

榜信息表

后台日志记录后台操作日志

记录包括:操作编号、操作内容、

操作时间、操作人员、备注

数据库的后台操作

记录表

管理员信息记录管理员相关信

息包括:管理员编号、管理员

用户名、管理员密码

数据库的管理员信

息表

3 概念结构设计

3.1数据实体描述及分ER 图

3.1.1 歌星信息实体

3.1.2 歌曲信息实体 用户信息 记录用户资料和歌

曲收藏信息 包括:用户编号、用户登录名、用户密码、收藏歌曲编

号、用户姓名、用户性别、出生日期、注册日期 数据库的用户信息表

3.1.3 金曲排行实体

3.1.4 后台日志实体

3.1.5 管理员信息实体

3.1.6 用户信息实体

3.2整体ER图

分ER图向整体ER图合并,合并过程中出现的问题和解决方案。

(1)结构冲突。歌星在歌星信息这个分E—R图中作为主体,而在歌曲信息分E—R图中则作为属性。歌星包含自己的属性,不能放在歌曲信息表的属性里,此时把歌曲表里面的歌星字段用歌星编号取代,而歌星表和歌曲表为一对多关系。

(2)命名冲突。歌曲信息与歌星信息都包含编号及名称,起名时需要区分开。分别命名为歌曲编号和歌星编号。

4 系统概要设计

4.1数据库逻辑结构设计

为了完成需求分析中确定的基本功能和概念设计中模块的划分,通过基于3NF的数据库设计方法(通过分析,各数据表已达第三范式),构造了7张基本表。现在对这7张基本表划分基本关系,在已设计好的数据库中初步建立各表,用于存储歌曲信息和歌星信息等基本信息。此外,在基本表上定义了一些约束条件,包括基本表上数据类型和数据长度的限制以及是否允许为空或表内是否取值唯一的限定。

根据E-R图,可转化为如下关系模式:关系的主码用下划线标出,外码用波浪线标出。

实体:

歌星(歌星编号,歌星姓名,歌星性别,国籍,歌星类型,地区,拼音缩写)

歌曲(歌曲编号,歌曲名称,歌星编号,语种,歌曲类型,路径,歌曲拼音缩写,歌曲时长)金曲排行(歌曲编号,歌曲名称,歌星姓名,周点击率,月点击率,总点击率)

后台日志(操作编号,操作内容,操作时间,操作人员,备注)

管理员(管理员用户名,管理员密码)

用户(用户编号,用户登录名,用户密码,用户姓名,用户性别,出生日期,注册日期)联系:

收藏(用户编号,歌曲编号,日期)

歌星表

列名数据类型能否取空约束性歌星编号int Not null 主键

歌星姓名Char(10) Not null

歌星性别char(2) 男或女国籍Char(20)

歌星类型Char(10)

地区Char(20)

拼音缩写Char(20) Not null 字母

歌曲表

列名数据类型能否取空约束性歌曲编号int Not null 主键歌曲名称Char(20) Not null

歌星编号int Not null 外键语种Char(10)

歌曲类型Char(10)

路径Char(20)

歌曲拼音缩写Char(20) Not null 字母歌曲时长datetime

金曲排行表

列名数据类型能否取空约束性歌曲编号int Not null 主键歌曲名称Char(20) Not null

歌星姓名Char(10) Not null

周点击率int

月点击率int

总点击率int

后台日志表

列名数据类型能否取空约束性操作编号int Not null 主键操作内容Char(40) Not null

操作时间datetime Not null

操作人员Char(20) Not null 外键备注Char(20)

管理员表

列名数据类型能否取空约束性管理员用户名Char(20) Not null 主键管理员密码Char(20) Not null

用户表

列名数据类型能否取空约束性用户编号int Not null 主键用户登录名Char(20) Not null 唯一

用户密码Char(20) Not null

用户姓名Char(20) Not null

用户性别Char(2) Not null 男或女

出生日期datetime Not null

注册日期datetime Not null

收藏表

列名数据类型能否取空约束性用户编号int Not null 主属性、外键歌曲编号int Not null 主属性、外键日期datetime

4.2数据库物理设计

4.2.1 介绍

数据库的物理设计就是为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程。物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数。

数据库的物理设计通常分为两步:

一:确定数据库的物理结构,在关系数据库中主要指存取方法和存取结构;

二:对物理结构进行评价,评价的重点是时间和空间效率。

4.2.2 索引设计

(1)建立一个聚集索引,在热门歌手视图建立的索引。

create clustered index热门歌手索引

on VIEW_热门歌手(歌星姓名)

(2)建立四个唯一索引,分别由各表组成。

1.歌星表索引

create unique index歌星索引on歌星表(歌星姓名)

2.歌曲表索引

create unique index歌曲索引on歌曲表(歌曲名称)

3.金曲排行表索引

create unique index排行索引on金曲排行表(歌曲编号)

4.用户索引

create unique index用户索引on用户表(用户姓名)

4.3系统总体框架

根据系统功能的需求分析和卡拉OK点歌系统的特点,经过模块化的分析得出系统功能模块结构图。系统结构图:

5 系统详细设计

5.1数据库实施

完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。

5.1.1 数据库的实施

数据库的实施主要是根据逻辑结构设计和物理结构设计的结果,在计算机系统上建立实际的数据库结构、导入数据并进行程序的调试。它相当于软件工程中的代码编写和程序调试的阶段。

创建数据库主要通过T-SQL语句来实现,在查询分析器分别输入以下语句来执行:

create database点歌系统数据库

(1)

create table歌星表

(歌星编号int primary key,

歌星姓名char(10)not null,

歌星性别char(2)check (歌星性别in('男','女')),

国籍char(20),

歌星类型char(10),

拼音缩写char(20)not null,

地区char(20)

)

insert into歌星表values ('001','李伟','男','中国','流行','lw','大陆')

insert into歌星表values ('002','周杰伦','男','中国','流行','zjl','港台') insert into歌星表values ('003','许嵩','男','中国','摇滚','xs','港台')

insert into歌星表values ('004','陈音','女','中国','流行','cy','港台')

insert into歌星表values ('005','王力宏','男','中国','摇滚','wlh','大陆') insert into歌星表values ('006','paul','女','美国','流行','pau','外国')

insert into歌星表values ('007','李晓','男','中国','流行','lx','港台')

(2)

create table歌曲表

(歌曲编号int primary key,

歌曲名称Char(20)not null,

歌星编号int not null

foreign key (歌星编号)references歌星表(歌星编号),

语种Char(10),

歌曲类型Char(10),

路径Char(20),

歌曲拼音缩写Char(20)not null,

歌曲时长datetime

)

insert into歌曲表

values ('1','七里香','2','国语','爱情','D盘DB文件夹','qlx','06:35') insert into歌曲表

values ('2','千里之外','2','粤语','悲伤','D盘DB文件夹','qlzw','03:51') insert into歌曲表

values ('3','忐忑','7','英语','欢乐','D盘DB文件夹','tt','04:55')

insert into歌曲表

values ('4','千里之外','3','国语','悲伤','D盘DB文件夹','qlzw','04:12') insert into歌曲表

values ('5','月亮之光','5','粤语','悲伤','D盘DB文件夹','ylzg','06:53')

(3)

create table金曲排行表

(

歌曲编号int primary key,

歌曲名称Char(20)Not null,

歌星姓名Char(10)Not null,

周点击率float(10),

月点击率float(10),

总点击率float(10)

)

insert into金曲排行表values ('1','七里香','周杰伦','11','99','220') insert into金曲排行表values ('2','千里之外','周杰伦','31','199','550') insert into金曲排行表values ('3','忐忑','李晓','22','124','330')

insert into金曲排行表values ('4','千里之外','许嵩','38','77','220') insert into金曲排行表values ('5','月亮之光','王力宏','51','64','180')

(4)

create table后台日志表

(

操作编号int primary key,

操作内容Char(40)Not null,

操作时间datetime Not null,

操作人员char(20)Not null

foreign key (操作人员)references管理员表(管理员用户名),

备注Char(20)

)

(5)

create table管理员表

(

管理员用户名Char(20)primary key,

管理员密码Char(20)Not null

)

insert into管理员表

values('admin','admin')

(6)

create table用户表

(

用户编号int primary key,

用户登录名Char(20)Not null unique,

用户密码Char(20)Not null,

用户姓名Char(20)Not null,

用户性别Char(2)Not null check(用户性别in('男','女')),

出生日期datetime Not null,

注册日期datetime Not null

)

insert into用户表

values('801','chenfeng','chen92','陈峰','男','1992-02-12','2013-01-08')

insert into用户表

values('802','lm2013','linming20','林敏','女','1995-04-21','2013-01-01')

insert into用户表

values('803','tingting9527','2581521','谢婷婷','女','1990-06-18','2013-01-03') insert into用户表

values('804','wbqlinhao88','s2*******','王宝强','男','1993-02-09','2013-01-06')

(7)

create table收藏表

(

用户编号int,

歌曲编号int,

primary key (用户编号,歌曲编号),

foreign key (用户编号)references用户表(用户编号)

on delete cascade/*当删除用户表的元组时,级连删除收藏表中相应的元组*/

on update cascade,/*当更新用户表的用户编号时,级连更新收藏表中相应的元组*/ foreign key (歌曲编号)references歌曲表(歌曲编号)

on delete no action/*当删除歌曲表的元组时造成了与收藏表不一致时拒绝删除*/

on update cascade,/*当更新歌曲表的歌曲编号时,级连级连更新收藏表中相应的元组*/

日期datetime

)

insert into收藏表values ('801','1','2013-01-01') insert into收藏表values ('801','2','2013-01-01') insert into收藏表values ('801','3','2013-01-01') insert into收藏表values ('801','4','2013-01-03') insert into收藏表values ('801','5','2013-01-03')

insert into收藏表values ('802','1','2013-01-02') insert into收藏表values ('802','2','2013-01-02') insert into收藏表values ('802','5','2013-02-03')

insert into收藏表values ('803','2','2013-01-02') insert into收藏表values ('803','4','2013-01-02') insert into收藏表values ('803','5','2013-02-03') insert into收藏表values ('804','1','2013-01-02') insert into收藏表values ('804','2','2013-01-02') insert into收藏表values ('804','5','2013-02-03') insert into收藏表values ('804','4','2013-03-11') insert into收藏表values ('804','5','2013-03-11')

数据库关系图:

5.1.2 视图设计

为了便于浏览经常查询的信息,提高查询效率,可以考虑建立相关视图,因为它不仅可提供了数据库安全性,还可以节省系统资源开销。

(1)用户表、收藏表,歌星表,歌曲表之间,建立一个歌曲总点击率超过一百的视图

create view VIEW_用户喜爱歌曲

as

select用户表.用户编号,用户登录名,用户姓名,收藏表.歌曲编号,歌曲表.歌曲名称,金曲排行表.歌星姓名,总点击率

from用户表,收藏表,歌星表,歌曲表,金曲排行表

where用户表.用户编号=收藏表.用户编号--用户表连接收藏表

and收藏表.歌曲编号=歌曲表.歌曲编号--收藏表连接歌曲表

and歌曲表.歌星编号=歌星表.歌星编号--歌曲表连接歌星表

and歌曲表.歌曲编号=金曲排行表.歌曲编号--歌曲表连接金曲排行表

and总点击率>100

相关主题
相关文档
最新文档