运动会管理系统 1Word下载.docx
《运动会管理系统 1Word下载.docx》由会员分享,可在线阅读,更多相关《运动会管理系统 1Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
根据E-R图,设计运动会管理数据库的关系模式。
(1)、运动员(运动员号,姓名,年龄,性别);
(2)、代表队(代表队号,队名称,领队,总积分,总名次);
(3)、比赛项目(项目号,项目类别,项目名称,成绩单位);
(4)、参加(运动员号,项目号,成绩,积分,名次)。
4.数据库物理设计与实现
(1)建立“运动会管理系统”数据库
其初始大小为100MB,增长率为10%,数据文件和日志文件名分别为:
“运动会管理系统_data”和“运动会管理系统_log”,存储路径为“E:
\data”文件夹下。
创建运动会数据库SQL代码如下:
CREATEDATABASE运动会管理系统--创建数据库
ON(
NAME=运动会管理系统1_data,--主数据文件的逻辑名
FILENAME='
E:
\data\运动会管理系统.mdf'
--主数据文件的物理名
SIZE=100MB,--初始大小
MAXSIZE=200MB,
FILEGROWTH=10%--增长率
)
LOGON(
NAME=运动会管理系统1_log,--日志文件的逻辑名
\data\运动会管理系统.ldf'
--日志文件的物理名
SIZE=1MB,
MAXSIZE=20MB,
FILEGROWTH=10%
)
GO
(2)建立基本表
①创建代表队表
创建代表队表SQL代码:
CREATETABLE代表队
(
代表队号CHAR(10)NOTNULLPRIMARYKEY,
队名称CHAR(20)NOTNULL,
领队CHAR(10)NOTNULL,
总积分INTNOTNULLCHECK(总积分>
=0),
总名次INTNOTNULLCHECK(总名次>
②创建运动员表
创建运动员表SQL代码:
CREATETABLE运动员
运动员号CHAR(6)NOTNULLPRIMARYKEY,
姓名CHAR(10)NOTNULL,
性别CHAR(10)NOTNULLCHECK(性别='
男'
or性别='
女'
),
年龄TinyintNOTNULLCHECK(年龄>
1and年龄<
100),
代表队号CHAR(10)NOTNULL,
③创建比赛项目表
创建比赛项目表SQL代码:
CREATETABLE比赛项目
项目号CHAR(6)NOTNULLPRIMARYKEY,
项目类别CHAR(10)NOTNULL,
项目名称CHAR(20)NOTNULL,
成绩单位CHAR(20)NOTNULL,
④创建比赛详情表
创建比赛详情表SQL代码:
CREATETABLE比赛详情
运动员号CHAR(6)NOTNULL,
项目号CHAR(6)NOTNULL,
成绩Float,
积分TinyintCHECK(积分>
=0),
名次TinyintCHECK(名次>
CONSTRAINT运动会管理系统_比赛详情_运动员号FOREIGNKEY(运动员号)REFERENCES运动员(运动员号),
CONSTRAINT运动会管理系统_比赛详情_项目号FOREIGNKEY(项目号)REFERENCES比赛项目(项目号),
(3)管理基本表
(3-1)向运动员表中增加“身高”列,其数据类型为整型。
SQL代码:
altertable运动员add身高INTNULL
原运动员表:
增加了身高列:
(3-2)将运动员表中的“身高”的数据类型改为浮点型。
altertable运动员altercolumn身高float
(3-3)为运动员表中的“身高”属性增加取值必须大于0的约束条件。
altertable运动员addconstraint运动会管理系统_运动员_身高check(身高>
0)
(3-4)删除运动员表中的“身高”列。
altertable运动员dropconstraint运动会管理系统_运动员_身高
altertable运动员dropcolumn身高
身高列已删除:
(4)使用Insert语句插入数据,各表中的数据如下:
(4-1)代表队表数据
代表队
insertinto代表队values('
GLXY'
'
管理学院'
吴道福'
7'
2'
insertinto代表队values('
JSJXY'
计算机学院'
张鹏'
6'
3'
SXXY'
数学学院'
宋威'
4'
WYXY'
外语学院'
王光明'
8'
1'
打开代表队表:
(4-2)运动员表数据
insertinto运动员values('
G11001'
钱翔'
'
14'
G11002'
吴帆'
16'
G11003'
石乔乔'
G11004'
张桂芳'
19'
G11005'
洪雪'
18'
J11001'
张月'
J11002'
田楠'
J11003'
赵恒博'
J11004'
徐铜铃'
15'
J11005'
李明'
S11001'
崔天齐'
S11002'
王尹'
S11003'
刘冰洁'
S11004'
杨中华'
S11005'
李雪平'
W11001'
叶星'
W11002'
顾羽翔'
W11003'
袁建明'
W11004'
刘琼'
17'
W11005'
孟储强'
打开运动员表:
(4-3)比赛项目表数据
insertinto比赛项目values('
JS001M'
径赛'
男子米'
秒'
JS002W'
女子米'
分钟'
TS001M'
田赛'
男子三级跳远'
米'
TS002W'
女子铅球'
打开比赛项目表:
(4-4)比赛详情表数据
insertinto比赛详情values('
12.91'
13.15'
13.19'
13.55'
0'
1.24'
1.25'
1.32'
2.02'
5.47'
5.15'
5.11'
4.98'
5.72'
5.38'
5.21'
5.02'
打开比赛详情表:
(5)建立和管理视图
(5-1)生成一张“项目类别”为“田赛”的视图,并将该视图命名为“田赛项目”。
createview田赛项目asselect*from比赛项目where项目类别='
打开田赛项目视图:
(5-2)生成一张“项目类别”为“径赛”的视图,并将该视图命名为“径赛项目”。
createview径赛项目asselect*from比赛项目where项目类别='
打开径赛项目视图:
(6)建立和管理索引
(6-1)为运动员表中的“姓名”建立次索引。
createindexsportnameon运动员(姓名)
(6-2)为项目表中的“项目类别”建立次索引。
createindexclassificationon比赛项目(项目类别)
5.数据库访问
数据查询:
(1)查询姓名为“杨中华”的运动员的运动员号和所在的代表队号。
select运动员.运动员号,运动员.代表队号
from运动员
where姓名='
(2)查询代表队号为“JSJXY”的所有成员姓名。
select姓名from运动员where代表队号='
(3)统计项目名称为“男子100米”比赛的参赛运动员名称、年龄、项目号、项目名称、成绩,并按成绩由高到低排列。
select运动员.姓名,运动员.年龄,比赛详情.项目号,比赛项目.项目名称,比赛详情.成绩
from运动员,比赛详情,比赛项目
where比赛详情.项目号=比赛项目.项目号and运动员.运动员号=比赛详情.运动员号and项目名称='
orderby比赛详情.成绩desc
(4)查询“杨中华”参加的比赛项目的情况。
select运动员.姓名,比赛详情.运动员号,比赛详情.项目号,比赛项目.项目名称,比赛详情.成绩,比赛详情.积分,比赛详情.名次
from运动员,比赛项目,比赛详情
where比赛详情.项目号=比赛项目.项目号and运动员.运动员号=比赛详情.运动员号and姓名='
(5)列出运动员号为“G1104”的运动员的所有的个人信息及比赛信息。
select比赛详情.运动员号,运动员.姓名,运动员.性别,运动员.年龄,
运动员.代表队号,比赛详情.项目号,比赛项目.项目类别,
比赛项目.项目名称,比赛详情.成绩,比赛详情.积分,比赛详情.名次from运动员,比赛项目,比赛详情
where比赛详情.项目号=比赛项目.项目号and运动员.运动员号=比赛详情.运动员号and运动员.运动员号='
(6)统计代表队号为“JSJXY”的参加比赛的各个运动员的积分情况,并且按积分由大到小的顺序排序。
select比赛详情.运动员号,运动员.姓名,比赛详情.积分
from运动员,比赛详情
where运动员.运动员号=比赛详情.运动员号and运动员.代表队号='
orderby比赛详情.积分
desc
(7)统计所有比赛项目中,同一个运动员号的运动员的积分情况。
Select运动员.运动员号,运动员.姓名,比赛项目.项目号,比赛详情.积分
where比赛项目.项目号=比赛详情.项目号
and比赛详情.运动员号=运动员.运动员号
(8)查询个人总积分大于等于3的运动员的情况。
Select运动员.运动员号,运动员.姓名,运动员.性别,运动员.年龄,运动员.代表队号
where运动员.运动员号=比赛详情.运动员号
and比赛详情.积分>
=3
数据更新:
(1)增加一名新的运动员,要求运动员号:
S11006;
姓名:
王林;
性别:
男;
年龄:
17;
代表队号:
SXXY。
insertinto运动员(运动员号,姓名,性别,年龄,代表队号)
values('
S11006'
王林'
原来未增加运动员的运动员表:
增加了运动员的运动员表:
(2)将“王林”的年龄更新为16。
update运动员set年龄='
where姓名='
原来‘王林’的年龄为16,年龄家1后为17:
(3)将运动员号为“S11006”的运动员的代表队号更新为“GLXY”。
update运动员set代表队号='
where运动员号='
修改前运动员号为‘S11006’的运动员队号为:
SXXY,
修改后为‘GLXY’:
(4)将所有运动员的年龄加1。
update运动员set年龄=年龄+1
年龄增加前后运动员表年龄对比表:
(5)由于测算问题,需要将项目号为“TS001M”的比赛成绩全部减少0.5米。
update比赛详情set成绩=成绩-0.5where项目号='
项目号为‘TS001M’的成绩减少前后对比表:
(6)删除运动员号为“S1106”的运动员信息。
Deletefrom运动员where运动员号='
删除后的运动员表:
(运动员号为:
S1106的王林运动员已被删除)
6.数据库备份
(1)使用SQL语句备份数据库
(1-1)创建备份设备
EXECsp_addumpdevice'
DISK'
mybackup1'
'
D:
\sql\mybackup'
(1-2)备份数据库
BACKUPDATABASE运动会管理系统ToDISK='
\sql\运动会管理系统.BAK'
5、课程设计小结:
通过这学期对SQL
Server2005的实践设计,结合本学期对SQL
Server2005的学习,使我较为熟练的掌握了SQL
Server2005的使用。
这很大部分是老师的功劳。
这次我设计了一个“运动会管理系统”的数据库。
通过本次的试验,我基本掌握了设计一个数据库的方法。
在这次课程设计中,我体会了专注地工作的滋味。
翻书本,搜资源,请教老师和同学,循序渐进,一边做设计,一边学习到了设计之外的东西。
凡事要耐心专心,这样,事情就可以做好。
在做设计的时候,是一个学习认识的过程,在这个过程中,我受到了很多启发,获益菲浅。
由于我对编程和SQL语句的不熟悉,在这方面遇到了不少问题,不过老师将上次所设计的“图书管理系统”数据库的代码发给了我们,在代码上给了我很大的帮助。
由于自己知识的不足,在设计数据库时出现了不少大大小小的问题。
一个小小的、不经意的错误都可以让你百思不得其解。
这就要求我们在做课程设计时一定要小心又小心,千万不能有一丝的马虎。
一个极小的错误足让你所有的心血化为乌有。
另外,在这次的课程设计中,我得到了老师和同学的热心帮助,在此要感谢老师和同学。
很多时候,同学间的互助是较为直接和快捷的。
同学之间还可以互相讨论,研究。
许多的问题就是这样发现和得以解决的,也因此,我们同学间的合作更加紧密了。
六、主要参考文献:
1、《软件工程及实践》,电子工业出版社,窦万峰,郑阿奇。
2、《数据库技术与应用》,清华大学出版社,顾斌。
3、《数据库系统原理教程》,清华大学出版社,王珊、陈虹;