数据库课程实习 - - 运动会管理系统

更新时间:2023-03-08 05:12:23 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

1、实习的目的和任务................................................. 2 2、实习要求......................................................... 2 3、实习地点......................................................... 2 4、主要仪器设备(实验用的软硬件环境)............................... 2 5、实习内容......................................................... 3

5.1需求分析........................................................................................................... 3 5.2概念结构设计................................................................................................... 5 5.3数据库逻辑结构设计....................................................................................... 7 5.3数据库关系图................................................................................................... 9 6、问题讨论与分析................................................... 9 7、结论............................................................ 10

参考文献........................................................................................................ 11 附录................................................................................................................ 11

1

运动会管理系统

1、实习的目的和任务

通过课程实习设计,让学生能够全面了解数据库应用系统的整个开发过程,验证课堂教学中的理论;掌握数据库系统的基本概念、基本原理及应用技术;掌握SQL语言的定义和各种操作能力,进一步掌握SQL语言的数据库编程技能;学会利用课堂上已学过的数据库知识进行数据库设计;使学生对开发信息管理系统有一个总体认识,可使学生得到很好锻炼,为以后学习、工作打下坚实基础。 2、实习要求

①系统需求分析与功能设计:阐明应用系统背景,组织结构情况以及需求分析的过程,并绘制出数据流程图,写出数据字典。

②概念结构设计:根据概念结构设计的基本原则,确定概念模型,并阐明分析步骤和理论依据完成数据库的概念设计,画出E-R图。

③逻辑结构设计:根据需求分析和概念模型,将实体及实体间的联系按一定的转换规则转换为关系模型,写出转换步骤及相应的理论依据,并确定主码、外码。按数据库设计方法和规范化理论得出符合3NF的逻辑模型。

④利用SQL Server2005建立相应的数据库对象。 ⑤利用SQL语句实现相应功能。

⑥认真完成本课程实习设计的全部过程。 3、实习地点

田家炳楼实验室404

4、主要仪器设备(实验用的软硬件环境)

硬件:计算机

软件:Windows 2000和SQL Server 2000

2

5、实习内容 5.1需求分析

本系统的主要功能是收集运动员和裁判信息便于管理人员的查询。主要包括运动员基本信息表、裁判信息表、运动项目信息表、运动员成绩表。

主要功能有:

运动员、队伍和裁判的基本信息输入 运动员、队伍和裁判信息查询 运动员成绩录入

运动员成绩及处罚情况查询和打印 1)数据字典

1.数据项:

运动员编号 = { 名称:编号,别名:运动员编号,数据类型:varchar,长度:6,取值范围:100000-199999,取值含义:第一位1表示是运动员,接着的两位表示运动员参加的运动项目编号,最后三位表示该运动员编号 }

姓名 = { 名称:姓名,数据类型:varchar,长度:20 } 性别 = { 名称:性别,数据类型:char,长度:2 } 年龄 = { 名称:年龄,数据类型:int }

隶属队 = { 名称:隶属队,别名:运动员隶属队,数据类型:varchar,长度:20 }

裁判编号 = { 名称:编号,别名:裁判编号,数据类型:varchar,长度:6,取值范围:200000-299999,取值含义:第一位2表示是裁判,接着的两位表示裁判所在运动项目编号,最后三位表示该裁判编号 }

职位 = { 名称:职位,别名:裁判职位,数据类型:varchar,长度:20 } 工作单位 = {名称:工作单位,含义:裁判来自哪里,数据类型:varchar,长度:50}

项目编号 = {名称:项目编号,数据类型:varchar,长度:2} 项目名称 = {名称:项目名称,数据类型:varchar,长度:20} 地点 = { 名称:地点,别名:赛场,数据类型:varchar,长度:20} 成绩 = {名称:成绩,数据类型:int}

3

队伍编号 = {名称:编号,数据类型:varchar,长度:6} 队伍名 = {名称:队伍名,数据类型:varchar,长度:20} 归属地 = {名称:归属地,数据类型:varchar,长度:20} 处罚情况 = {名称:处罚情况,数据类型:varchar,长度:50} 2.数据结构:

运 动 员 : 编号、姓名、性别、年龄、隶属队、项目编号

裁 判 : 编号、姓名、性别、年龄、项目编号、职位、工作单位 项 目 : 编号、名称、地点

成 绩 : 运动员编号、项目编号、成绩 队 伍 : 编号、队伍名、归属地 处罚记录 : 运动员编号、处罚情况 2)系统设计

运 动 员 裁判 运动项队伍 成绩录处罚记修改 查询成查询处打印 录入基本信息 信息管 理 查询 运动会管理系统

3)数据流程图

4

5.2概念结构设计

将需求分析得到的用户抽象为信息结构即概念模型的过程就是概念结构设计。它是整个数据库设计的关键。 1)局部E-R图

①运动员E-R图

运动员 查询 处罚信息 比赛信息输入 比赛成绩 基本信息运动员、裁判、运动项目、队伍基本信息

编号 姓名 性别 年龄 项目 隶属队 ②裁判E-R图

裁判 编号 姓名 性别 年龄 项目 职位 单位 5

③运动项目E-R图

运动项目

编号 名称 地点 ④成绩E-R图

编号 项目编号 成绩 ⑤处罚记录E-R图

运动员编号 处罚记录 成绩 处罚情况 ⑥队伍E-R图

队伍 编号 队伍名 归属地 6

2)总E-R图

1 归属

n 1 1 1 n n 参加 获得 运动员 运动项目 n n 1

处罚记录 评判 取得 n m 裁判 成绩 总E-R图

队伍 5.3数据库逻辑结构设计

概念结构是独立于任何一种数据模型的信息结构。逻辑结构的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型想符合的逻辑结构

运动员信息表 1 2 3 4 5 6 序号 编号 姓名 性别 年龄 项目 隶属队 数据类型 Varchar Varchar Char Int Varchar Varchar 长度 6 20 2 20 30 可否为空 否 否 否 否 否 否 取值范围 18-35 性质 主键 外键 外键

裁判信息表

序号 1 2 3 4 5 6

字段 编号 姓名 性别 年龄 项目 职位 数据类型 Varchar Varchar Char Int Varchar Varchar 长度 6 20 2 20 20 7

可否为空 否 否 否 是 否 否 取值范围 性质 主键 外键 7 单位 Varchar 30 否

项目信息表

序号 1 2 3 字段 编号 项目名称 地点 数据类型 Varchar Varchar Varchar 长度 2 20 30 可否为空 否 否 否 取值范围 00-99 性质 主键

成绩

序号 1 2 3 字段 运动员编号 项目编号 成绩 数据类型 Varchar Varchar Int 长度 6 2 可否为空 否 否 否 取值范围 性质 主键/外键 主键/外键

队伍信息

序号 1 2 3 字段 编号 队伍名 归属地 数据类型 Varchar Varchar Varchar 长度 6 20 20 处罚信息

序号 1 2 字段 编号 处罚情况 数据类型 Varchar Varchar 长度 6 50 可否为空 否 否 取值范围 性质 主键/外键 可否为空 否 否 否 取值范围 性质 主键

8

5.3数据库关系图

6、问题讨论与分析

通过本次实习,我发现要滤清事物之间的关系是一件挺难的事情,这就涉及到如果我们要做好这个系统,就得先完成两件事,首先,做好需求分析,完成数据字典,画出它的功能流程图,然后,根据需求分析阶段所收集到的用户需求,

9

设计数据库的概念数据模型,它是从用户角度看到的数据库。即根据这个功能流程图画出这个系统的E-R图,这是建立数据库的关键,也是这次数据库课程设计的关键。在画E-R图的时候,遇到了许多问题,在诸多的实体中主要理清他们之间的关系,需要将关系逐渐明确,最后顺利的完成E-R图的绘制。

需求分析对于数据库设计来说至关重要,小到自己的实习大到企业级数据库设计都必须认真做好需求分析,否则后续的设计和实施都会有想象不到的麻烦。针对课程设计,要求学生同时站在客户和供应商的角度思考问题。让一个人按部就班的一点一点写需求分析真的很需要耐性。从每个数据项的名称、含义、数据类型、长度和取值范围到表的结构以及表与表之间关系的设计,从外键、索引到各个约束条件和默认值的设计都要在需求分析阶段完成,这是很繁杂的工作。所以这种课程设计也是对学生做事严谨精神的锻炼。

在对需求分析进行概念结构设计之后,就应设计逻辑结构。设计逻辑结构应该选择最适于相应概念结构的数据模型,然后对支持这种数据模型的各种DBMS进行比较,从中选出最合适的DBMS。

同时,在本次的实习中,使用到了各种软件。如用到了MicrosoftVisio2003,用它来完成数据库功能流程图和E-R图的绘制。 7、结论

通过本次实习,我已掌握数据库的基本知识,并熟悉了SQL Server 2005的基本操作。

首先,数据库操作的实习是对基本功的考验。从基本的SQL语句、视图到自定义函数、存储过程、触发器再到数据库的备份与恢复及用户权限设置都要求对数据库充分熟悉对基本操作足够熟练。

同时,学到的很多理论知识,在这次课程设计实习中更具体的体现了出来,在实践过程中,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,将结论辅助与理论,才能真正学到知识并写出有用的程序,所以提高自己的实际动手能力和独立思考的能力是十分重要的。

10

总的来说,通过此次实习我得以将过去所学的知识综合融汇,进一步加深了对数据库的认识,更加熟练的掌握了数据库设计的一般过程及其具体环节。

参考文献

[1] 王珊 萨师煊.数据库系统概论(第四版).北京:高等教育出版社.2005

[2] 詹英.数据库技术与应用-SQL Server 2005 教程.北京.清华大学出版社.2008

[3] 刘大玮 马传宝 孙颖洁.SQL Server 数据库项目案例导航.北京.清华大学出版社.2005

[4] 夏邦贵 刘凡馨.SQL Server 数据库开发经典案例精解.北京.机械工业出版社.2006 附录

use SportManager --创建表

create table R ( )

create table S ( )

create table E (

11

re_no varchar(6) primary key, re_name varchar(20) not null,

re_sex char(2) check(re_sex in('男','女')), re_age int,

re_event varchar(2) not null, re_title varchar(20),

re_add varchar(30) not null,

constraint CK_RENO check(re_no like

constraint FK_R_E foreign key(re_event) references E(ev_no)

'2[0-9]0-9[0-9][0-9][0-9][0-9]'),

sp_no varchar(6) primary key, sp_name varchar(20) not null,

sp_sex char(2) not null check(re_sex in('男','女')), sp_age int check(sp_age between 18 and 35), sp_event varchar(2) not null, team varchar(2) not null,

constraint FK_S_S foreign key(sp_event) references E(ev_no), constraint FK_S_T foreign key(team) references T(t_no),

constraint CK_SPNO check(sp_no like '1[0-9][0-9][0-9][0-9][0-9]')

ev_no varchar(20) primary key check(ev_no like '[0-9][0-9]'), ev_name varchar(20) not null,

ev_place varchar(30) not null default '校本部' )

create table G ( )

create table P ( )

create table T ( ) --索引

create unique

create nonclustered

index sp_event_index

on S(sp_event) index ev_name_index

on E(ev_name)

t_no varchar(2) primary key, t_name varchar(20),

t_add varchar(20) not null, coach varchar(20) not null,

constraint CK_T_NO check(t_no like '[0-9][0-9]') sp_no varchar(6) primary key, punish varchar(50) not null,

constraint FK_P_S foreign key(sp_no) references S(sp_no) sp_no varchar(6), ev_no varchar(2), score int not null,

constraint PK_G primary key (sp_no,ev_no),

constraint FK_G_SP foreign key(sp_no) references S(sp_no), constraint FK_G_EV foreign key(ev_no) references E(ev_no)

--简单查询

--查询102001号运动员01项目的成绩 select @score=score from G

where sp_no=’01’ and ev_no=’102001’

12

-查询103002号运动员的姓名、教练和比赛项目

select sp_name,ev_name,coach from S,T,E

where sp_no=’103002’ and sp_event=ev_no and team=t_no

--自定义数据类型

CREATE TYPE NUM FROM char(6) NULL

--查询某位运动员的基本信息 内嵌表值函数

create function selectSporter(@num varchar(6)) returns table as return( )

select * from selectSporter('101001')

--查询某位裁判的基本信息 内嵌表值函数

create function selectReferee(@num varchar(6)) returns table as

return(

select * from R where re_no=@num )

select * from selectReferee('201001')

--查询某运动员在某项目取得的成绩 标量函数

create function selectSpGain(@num varchar(6),@evno varchar(2)) returns int as

begin

declare @score int

select @score=score from G

where sp_no=@num and ev_no=@evno return @score

select * from S where sp_no=@num

end

select dbo.selectSpGain('101001','01') --或者

declare @gain int

exec @gain = dbo.selectSpGain '101001','01' select @gain as 成绩

--查询某运动员的姓名、教练和比赛项目 多语句表值函数 create function selectSpInfor(@num varchar(6))

13

returns @infor table(姓名varchar(20),教练varchar(20),项目varchar(20)) as

begin

insert into @infor

select sp_name,ev_name,coach from S,T,E

where sp_no=@num and sp_event=ev_no and team=t_no return

end

select * from selectSpInfor('101001')

--查询某项赛事的地点 存储过程

create procedure selectEvent @evno varchar(2),@place varchar(30) output as

begin

select @place=ev_place from E where ev_no=@evno end

declare @where varchar(30)

exec selectEvent '01' ,@where output select @where as 地点

--查询所有处罚信息

create procedure selectPunish as

begin

select * from P end

exec selectPunish

--创建视图

--创建裁判与赛事的视图

create view referee_event as

select re_name,ev_name,ev_place from R join E on re_event=ev_no

select * from referee_event

--创建运动员和队伍的视图 create view sp_team as

14

select sp_no, sp_name,t_name from S,T where team=t_no

select * from sp_team --触发器

--不允许对处罚表进行修改或删除

create trigger trigger_punish on P

for update,delete as begin

rollback tran end

--如果修改运动员基本信息表中的编号将成绩表的编号也修改 create trigger tri_sporter on S

after update as

begin

update G

set sp_no=(select sp_no from inserted)

where sp_no in (select sp_no from deleted) end

--授权

exec sp_addlogin 'liusensen','111','SportManager'

exec sp_grantlogin 'zhangxiukun' go

exec sp_grantdbaccess 'zhangxiukun','zxk' go

exec sp_addrole '教师' go

exec sp_addrolemember '教师','zxk'

grant select,update,delete on S to 教师

with grant option

--备份

exec sp_addumpdevice 'disk','Spmdata','e:\\backup\\Spmdata.bak'

exec sp_addumpdevice 'disk','Spmlog','e:\\backup\\Spmlog.bak'

15

backup database SportManager to Spmdata

backup log SportManager to Spmlog

16

本文来源:https://www.bwwdw.com/article/sea.html

Top