校运动会数据库设计Word下载.docx
- 文档编号:19915511
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:38
- 大小:97.12KB
校运动会数据库设计Word下载.docx
《校运动会数据库设计Word下载.docx》由会员分享,可在线阅读,更多相关《校运动会数据库设计Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
比赛时各种人员信息的查询、核对、更新、删除。
学校运动会管理系统SGS用户分为两类:
普通操作员:
只须具有初级的计算机操作能力,一般高中生以上经过稍稍培训都可胜任,只是负责比赛进行时一些简单数据的插入、更新、查询。
管理人员:
这些人员应具备一定的数据库知识,不过只要了解就行,这些人员负责对数据库中重要数据及基本数据的更新,如对静态表的重新定义,普通用户的权限分配。
1.5需求分析
1.5.1系统总体需求
(l)通过对运动会各个步骤、所需的各项信息等的分析,我们规定:
①项目有个人项目、集体项目之分.
②对于集体项目,我们并不关心具体参加比赛的运动员.在每一项集体项目中,每个学院的参赛人数不可超过限制的参赛人数,且必须是该学院的学生.
③一个项目可有多名运动员参加,但一名运动员最多只能参加两项个人项目(用一个触发器实现),且只能属于一个学院.
④一个项目可由多名裁判主持,每一个裁判在此项目中所担任的职务不同,且有主、副裁判之分.
⑤在同一时间内可同时举行多项比赛,但是只能进行一项径赛比赛(用一个触发器实现).
⑥在同一时间内,一名裁判只能主持一项比赛、担任一个职务(用一个触发器实现).但在不同的时间内,一名裁判可主持不同的项目、担任不同的职务.
⑦一名运动员在同一时间内只能参加一项比赛(用一个触发器实现).
⑧在同一时间内,一个学院只能参加一项集体项目比赛(通过用一个触发器限制在同一时间内只能举行一项集体项目).
⑨在某一项目中,只有一个主裁判,其余都为副裁判.
⑩一项个人项目可有多个同时破记录者,一名运动员同时破多项记录.一项集体项目可同时有多个破记录的学院,一个学院可同时破多项记录。
(2)通过对运动会各方面分析,运动会中包含的实体有学院、运动员(不包含集体项目中的运动员)、项目(集体项目和个人项目)、裁判、职务、奖励(集体项目奖励和个人项目奖励,名次为0表示破记录)、赛事类别(田赛、径赛、集体项目等).集体项目奖励和个人项目奖励不同。
包含的数据项分别如下:
①学院编号,学院名称,上届运动会名次,历史最高名次,本次运动会总分,本次运动会名次等.
②运动员编号,学号,姓名,性别,所属学院,班级等.
③项目编号,项目名称,参赛者性别(男或女或不限)、每个学院限参赛人次,比赛时间,结束时间等.
④裁判编号,姓名,性别等.
⑤职务编号,职务名称(如计时员、测量员、记录员等),职务级别(主裁判和副裁判)等.
⑥名次,奖励分数,奖励物品(如奖状等),奖励金额等.
⑦赛事类别编号,赛事类别名称等.
(3)实体之间的联系有:
①学院与运动员之间(1:
M).
②运动员、个人项目与个人项目奖励之间(1:
M,1:
1).
③学院、集体项目与集体项目奖励之间(1:
④赛事类别与项目之间.(1:
M)
⑤裁判、项目与职务之间.(M:
N)
(4)通过以上分析,运动会数据库包含的模块有:
①输入模块 主要是各种信息的输入,如学院信息、运动员信息、项目信息、比 赛信息、奖励信息等.
②输出模块 主要是各种查询结果的输出等.
1.5.2软硬件平台设计
(1)软件平台:
windowsXP操作系统、Sql-Server2000数据库
(2)硬件平台:
普通微机
2概念设计
2.1实体学院与运动员之间的联系
相关说明:
上述E-R图表示一个学院有多名运动员参加个人项目,一名运动员只能属于一个学院。
2.2运动员、个人项目和个人项目奖励之间的联系
上述E-R图表示一个项目可有多项不同的奖励(如第一名、第二名等的奖励不同)对于每一项奖励可在不同的项目中出现;
一名运动员最多只能有两项个人项目奖励(此时p=0…2),每一项奖励可有多名运动员获得;
一名运动员最多能参加两项个人项目(此时m=1…2),一项个人项目可有多名运动员参加。
2.3学院、集体项目和集体项目奖励之间的联系
上述E-R图表示一个学院可获得多项集体项目奖励、参加多项集体项目,一项集体项目可有多个学院参赛、有多项不同的奖励,一项集体项目奖励可被多个学院获得、可在多项集体项目中出现.
2.4赛事类别与项目之间的联系
2.5裁判、项目、职务之间的联系:
上述E-R图表示一名裁判在不同的时间内可主持多项比赛、担任多项职务,同一职务可被多名裁判担任、可出现在多项比赛中,一项项目可由多名裁判共同主持、可有多个职务(如计时员、测量员、记录员等).
2.6总E-R图
将上述分E-R全部合并,并化简的到如下的总E-R图(为简化画图工作,上述各实体中的属性未画出,并把集体项目和个人项目合并为项目、集体项目奖励和个人项目奖励合并):
上述E-R图中学院、项目和奖励之间的联系如上述3中的E-R图一样,运动员、项目和奖励之间表示的联系如上述2中的E-R图一样。
3逻辑设计
本次设计的数据库在SQLServer2000上实现,将概念结构设计中的E-R图转换成SQLSever2000支持的关系数据模型后,结合上述分析得到如下数据表:
(1)赛事类别表(match_sort):
主键为赛事类别号sort_no
sort_no
char(3)
notnull
primarykey
赛事类别号
sort_name
char(10)
notnull
类别名称
(2)比赛项目表(match_item):
主键为项目编号,其中对‘每个学院限参赛人数’设置了check约束,并且‘类别编号’也作为外键约束,受到赛事类别表中‘赛事类别号’的约束
item_no
char(4)
项目编号
item_name
char(20)
项目名称
Item_sex
char
(2)
Notnull
项目性别
类别编号
qty
smallint
每个学院限参赛人数
start_time
datetime
比赛开始时间
finish_time
Null
比赛结束时间
(3)裁判信息表(judge):
主键为裁判编号,并在‘性别’属性列上设置check约束(‘f’表示女性,‘m’代表男性)
judge_no
char(4)
Primarykey
裁判编号
judge_name
姓名
sex
性别
(4)职务表(duty):
职务编号是主码
duty_no
职务编号
duty_name
职务名称
ranking
职务级别
(5)裁判安排表(judge_scheme):
主码为(裁判编号,项目编号),设置了两个外键约束,外键‘项目编号item_no’受到match_item表中item_no的约束,‘职务号duty_no’受duty表中的duty_no约束
职务号
isattend
char
(1)
是否到场
(6)学院信息表(collage):
主键是‘学院编号’,并在其上设置check约束
collage_no
primary
学院编号
collage_name
学院名称
last_position
tinyint
上届运动会名次
max_position
历史最高名次
total_score
int
本届运动会总分
position
本届运动会名次
(7)运动员信息表(athlete):
‘运动员编号athlete_no’是主键,并在‘学院编号’属性列上设置外键约束
athlete_no
运动员编号
stu_no
char(6)
学号
athlete_name
(8)个人项目比赛表(sig_match):
‘运动员编号,项目编号’为主码,外键有‘项目编号’,‘运动员编号’,‘名次’分别受到表match_item,athlete及person_prize中相应属性的约束
result
Char(20)
null
成绩
名次
是否参赛
(
(9)个人项目奖励表(person_prize):
‘名次’为主码
score
分数
prize
char(40)
奖励物品
money
奖励金额
(10)个人项目破记录表(sig_record):
主码为‘项目编号+破记录者姓名’
stu_name
破记录者姓名
time
破记录时间
(11)集体项目比赛表(together_match):
主码为‘学院编号+项目编号’
numeric(9,2)
(12)个人项目奖励表(together_prize):
‘名次’做主键
奖励分数
(13)集体项目破记录表(together_record):
‘集体项目编号+破记录学院编号’做主键
集体项目编号
破记录学院编号
4物理设计
为了加速表的查询,根据所设计的表的特点,我们决定在对比赛项目表中的‘项目编号item_no’,运动员信息表中的‘运动员编号athlete_no’,裁判信息表中的‘裁判编号judge_no‘分别建立索引.CREATEINDEXIX_match_itemONdbo.match_item(item_no)GOCREATEINDEXIX_athleteONdbo.athlete(athlete_no)GOCREATEINDEXIX_judgeONdbo.judge(judge_no)GO
5触发器
(1)建立触发器T1(保证一名运动员最多只能报两项个人项目项目)
createtriggerT1onsig_match
forinsert,update
as
if@@rowcount=1
begin
declare@counttinyint
select@count=count(sig_match.item_no)
fromsig_match,inserted
wheresig_match.athlete_no=inserted.athlete_no
if@count>
2
begin
print'
一名运动员最多只能报两项个人项目'
rollback
end
end
(2)建立触发器T2(保证一名运动员在同一时间内只能参加一项项目):
createtriggerT2onsig_match
declare@time1datetime,@time2datetime,
@item_no1char(4),@item_no2char(4)
selecttop1@item_no1=sig_match.item_no/*取所插入或更新的运动员所参加的一项项目*/
selecttop1@item_no2=sig_match.item_no
wheresig_match.athlete_no=inserted.athlete_no
andsig_match.item_no!
=@item_no1/*取所插入的运动员所参加的另一项项目*/
select@time1=start_time/*取第一项项目的开始时间*/
frommatch_item
whereitem_no=@item_no1
select@time2=start_time/*取第二项项目的开始时间*/
whereitem_no=@item_no2
if@time1=@time2
一名运动员在同一时间内只能参加一项项目'
(3)建立触发器T3(保证在同一时间内只能举行一项集体项目):
createtriggerT3onmatch_item
declare@start_timedatetime,@counttinyint/*count记录在同一时间内进行比赛的集体项目的个数*/
select@start_time=inserted.start_time/*取所插入或更新的集体项目的开始比赛时间*/
frominserted
select@count=count(match_item.item_no)frommatch_item,match_sort/*取同一时间内进行比赛的集体项目的个数*/
wherematch_item.start_time=@start_time
andmatch_item.sort_no=match_sort.sort_no
andmatch_sort.sort_name='
集体项目'
if@count>
=2
同一时间内只能举行一项集体项目'
(4)建立触发器T4(保证更新个人项目里运动员的名次时,更新他所在的学院的总分:
ifexists(select*fromsysobjectswherename='
T5'
)
droptriggerdbo.T4
GO
print'
createtriggerT4'
go
createtriggerT4onsig_match
forupdate
declare@oldScoresmallint,@newScoresmallint
ifupdate(position)
select@oldScore=person_prize.score/*取更新前的得分*/
fromperson_prize,deleted
whereperson_prize.position=deleted.position
select@newScore=person_prize.score/*取更新后的得分*/
fromperson_prize,inserted
whereperson_prize.position=inserted.position
updatecollageset/*更新所在学院的得分*/
collage.total_score=collage.total_score-@oldScore+@newScore
fromathlete,inserted,deleted,collage
whereathlete.athlete_no=deleted.athlete_no
andathlete.athlete_no=inserted.athlete_no
andathlete.collage_no=collage.collage_no
droptriggerT4
(5)建立触发器T5(保证一名裁判在同一时间内只能负责一项项目的比赛):
createtriggerT5onjudge_scheme
declare@start_timedatetime,@counttinyint
select@start_time=match_item.start_time
frominserted,match_item
wherematch_item.item_no=inserted.item_no
select@count=count(judge_scheme.item_no)
frominserted,match_item,judge_scheme
wherematch_item.item_no=judge_scheme.item_no
andjudge_scheme.judge_no=inserted.judge_no
andmatch_item.start_time=@start_time
一名裁判在同一时间内只能负责一项比赛'
droptriggerT5
(6)建立触发器T6(保证在同一时间内只能进行一项径赛项目):
createtriggerT6onmatch_item
declare@counttinyint
select@count=count(*)
frommatch_item,inserted,match_sort
wherematch_item.start_time=inserted.start_time
andmatch_item.sort_no=match_sort.sort_noandsort_name='
径赛'
同一时间内只能进行一项径赛项目'
droptriggerT6
6存储过程
(1)建立存储过程P1,输入一个学院名称,即可查出其总分:
P1'
dropproceduredbo.P1
createprocedureP1@C_namechar(20),@S_totintoutputas
select@S_tot=total_score
fromcollage
wherecollage_name=@C_name
declare@S_totint
execP1信息管理学院,@s_totoutput
select@s_tot
(2)建立存储过程P2,利用存储过程查找姓“韩”裁判的编号,性别,负责赛事的时间,项目号等
P2'
dropproceduredbo.P2
createprocedureP2@namevarchar(4)as
/*定义一个变量接收查找的名字‘韩%’*/
selecta.judge_no,a.judge_name,sex,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动会 数据库 设计