课程名称:数据库系统原理与应用实验项目名称:校运动会数据库设计数据库总体设计 目 录1需求分析 31.1 编写目的 31.2 背景 31.3 定义 31.4 目标 31.5 需求分析 41.5.1 系统总体需求 41.5.2 软硬件平台设计 52 概念设计 52.1 实体学院与运动员之间的联系 52.2 运动员、个人项目和个人项目奖励之间的联系 62.3 学院、集体项目和集体项目奖励之间的联系 62.4 赛事类别与项目之间的联系 72.5 裁判、项目、职务之间的联系: 72.6 总E-R图 73 逻辑设计 84 物理设计 105 触发器 11(1) 建立触发器T1(保证一名运动员最多只能报两项个人项目项目) 11(2) 建立触发器T2(保证一名运动员在同一时间内只能参加一项项目): 11(3) 建立触发器T3(保证在同一时间内只能举行一项集体项目): 12(4) 建立触发器T4(保证更新个人项目里运动员的名次时,更新他所在的学院的总分: 12(5) 建立触发器T5(保证一名裁判在同一时间内只能负责一项项目的比赛): 13(6) 建立触发器T6(保证在同一时间内只能进行一项径赛项目): 146 存储过程 14(1) 建立存储过程P1, 输入一个学院名称,即可查出其总分: 14(2) 建立存储过程P2,利用存储过程查找姓“韩”裁判的编号,性别,负责赛事的时间,项目号等 15(3) 建立存储过程CountsCollageScore,输入一个学院名称, 统计该学院的总分,并自动更新: 15(4) 建立存储过程Sorts,根据每一个学院的得分自动进行排名,并自动更新: 167 数据库脚本 171需求分析1.1 编写目的使用该文档的使用成员为实现SGS系统的开发人员以及学校的运动会具体组织管理人员。
小组各成员所做的工作: *** 分析设计,概念设计,逻辑设计*** 逻辑设计,物理设计,表项设计*** E-R图设计,逻辑设计,数据处理*** E-R图绘制,逻辑设计,数据处理*** 表项分析,数据处理1.2 背景项目名称:学校运动会管理系统(School Gymkhana System简称SGS)项目提出者:*************项目开发者:SGS 项目开发小组项目鉴定者:暂无项目开始时间:****-**-**1.3 定义系统数据流程图的一些定义1.4 目标 当学校运动会管理人员使用了《学校运动会管理系统SGS》软件后,可以由计算机完成:运动员报名的自动核对;比赛时各种人员信息的查询、核对、更新、删除学校运动会管理系统SGS用户分为两类:普通操作员:只须具有初级的计算机操作能力,一般高中生以上经过稍稍培训都可胜任,只是负责比赛进行时一些简单数据的插入、更新、查询管理人员:这些人员应具备一定的数据库知识,不过只要了解就行,这些人员负责对数据库中重要数据及基本数据的更新,如对静态表的重新定义,普通用户的权限分配。
1.5 需求分析1.5.1 系统总体需求(l) 通过对运动会各个步骤、所需的各项信息等的分析,我们规定:①项目有个人项目、集体项目之分.②对于集体项目,我们并不关心具体参加比赛的运动员.在每一项集体项目中,每个学院的参赛人数不可超过限制的参赛人数,且必须是该学院的学生.③一个项目可有多名运动员参加,但一名运动员最多只能参加两项个人项目(用一个触发器实现),且只能属于一个学院.④一个项目可由多名裁判主持,每一个裁判在此项目中所担任的职务不同,且有主、副裁判之分.⑤在同一时间内可同时举行多项比赛,但是只能进行一项径赛比赛(用一个触发器实现).⑥在同一时间内,一名裁判只能主持一项比赛、担任一个职务(用一个触发器实现).但在不同的时间内,一名裁判可主持不同的项目、担任不同的职务.⑦一名运动员在同一时间内只能参加一项比赛(用一个触发器实现).⑧在同一时间内,一个学院只能参加一项集体项目比赛(通过用一个触发器限制在同一时间内只能举行一项集体项目).⑨在某一项目中,只有一个主裁判,其余都为副裁判.⑩一项个人项目可有多个同时破记录者,一名运动员同时破多项记录.一项集体项目可同时有多个破记录的学院,一个学院可同时破多项记录。
2) 通过对运动会各方面分析,运动会中包含的实体有学院、运动员(不包含集体项目中的运动员)、项目(集体项目和个人项目)、裁判、职务、奖励(集体项目奖励和个人项目奖励,名次为0表示破记录)、赛事类别(田赛、径赛、集体项目等).集体项目奖励和个人项目奖励不同包含的数据项分别如下:①学院编号,学院名称,上届运动会名次,历史最高名次,本次运动会总分,本次运动会名次等.②运动员编号,学号,姓名,性别,所属学院,班级等.③项目编号,项目名称,参赛者性别(男或女或不限)、每个学院限参赛人次,比赛时间,结束时间等.④裁判编号,姓名,性别等.⑤职务编号,职务名称(如计时员、测量员、记录员等),职务级别(主裁判和副裁判)等.⑥名次,奖励分数,奖励物品(如奖状等),奖励金额等.⑦赛事类别编号,赛事类别名称等.(3) 实体之间的联系有:①学院与运动员之间(1:M).②运动员、个人项目与个人项目奖励之间(1:M,1:1).③学院、集体项目与集体项目奖励之间(1:M,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 逻辑设计 本次设计的数据库在SQL Server 2000上实现,将概念结构设计中的E-R图转换成SQL Sever 2000支持的关系数据模型后,结合上述分析得到如下数据表: (1)赛事类别表(match_sort):主键为赛事类别号sort_no sort_nochar(3)not null primary key赛事类别号sort_namechar(10)not null类别名称(2) 比赛项目表(match_item):主键为项目编号,其中对‘每个学院限参赛人数’设置了check约束,并且‘类别编号’也作为外键约束,受到赛事类别表中‘赛事类别号’的约束item_nochar(4)not nullprimary key项目编号item_namechar(20)not null项目名称Item_sexchar(2)Not null项目性别sort_nochar(3)not null类别编号qtysmallintnot null每个学院限参赛人数start_timedatetimeNot null比赛开始时间finish_timedatetimeNull比赛结束时间(3) 裁判信息表(judge):主键为裁判编号,并在‘性别’属性列上设置check约束(‘f’表示女性,‘m’代表男性) judge_nochar(4)Not nullPrimary key裁判编号judge_namechar(10)Not null姓名sexchar(2)Not null性别(4) 职务表(duty):职务编号是主码 duty_nochar(4)Not nullPrimary key职务编号duty_namechar(20)Not null职务名称rankingchar(10)Null职务级别(5) 裁判安排表(judge_scheme):主码为(裁判编号,项目编号),设置了两个外键约束,外键‘项目编号item_no’受到match_item表中item_no的约束,‘职务号duty_no’受duty表中的duty_no约束judge_nochar(4)Not nullPrimary key裁判编号item_nochar(4)Not null项目编号duty_nochar(4)Null职务号isattendchar(1)Null是否到场(6) 学院信息表(collage):主键是‘学院编号’,并在其上设置check约束collage_nochar(4)Not nullprimary学院编号collage_namechar(20)Not null学院名称last_positiontinyintNull上届运动会名次max_positiontinyintNull历史最高名次total_scoreintNull本届运动会总分positiontinyintNull本届运动会名次(7) 运动员信息表(athlete):‘运动员编号athlete_no’是主键,并在‘学院编号’属性列上设置外键约束athlete_nochar(4)Not nullprimary运动员编号stu_nochar(6)Not null学号athlete_namechar(10)Not null姓名sexchar(2)Not null性别collage_no。