资源描述
数据库设计实例运动会管理系统
———————————————————————————————— 作者:
———————————————————————————————— 日期:
13
个人收集整理 勿做商业用途
本科学生设计性实验报告
课程名称:现代数据库技术
实验项目名称:运动会管理系统
数 据 库 设 计
姓名:何东灵 学号:0041400
班级:C03 班 第M小组
2006至2007学年 第2学期
2007年6月15日
目 录
目 录 2
引言 3
编写目的 3
背景 3
定义 3
1。 数据字典 3
字典1:运动员数据字典 3
字典2:班级数据字典 3
字典3:项目数据字典 4
字典4:记录数据字典 4
字典5:规则数据字典 4
字典6:工作人员数据字典 5
字典7:场地数据字典 5
字典8:器材数据字典 5
字典9:项目人员数据字典 5
字典10:项目器材数据字典 5
字典11:运动员成绩数据字典 6
字典12:团体赛成绩数据字典 6
字典13:班级总分数据字典 6
2。 数据库设计 6
3。 数据库设计中的一个编号过程 10
引言
编写目的
本数据库设计说明书专门为SGS系统的项目开发人员编写.
背景
项目 名称:学校运动会管理系统(SchoolGymkhanaSystem简称SGS)
项目提出者:江财SGS项目组织人员
项目开发者:需求分析阶段有SGS项目开发小组人员共同完成,其它各阶段由小组成员各自负责完成
项目鉴定者:吴京慧教授
项目开始时间:2007-6—15
定义
列出本文件中用到的专门术语的定义和缩写词的源词组。
1. 所有的表名的命名规则:所有表名都根据表意用相关的英文全称命名.
2. 所有的主键命名规则:由表名+_PK[用编号区分]
3. 所有外键的命名规则:由表名+_FK[用编号区分]
4. 所有规则的命名规则:由列名+_CK[用编号区分]
5. 所有索引的命名规则:表名+_INDEX+列名
6. 所有字段的命名规则:类型+具体含义
1. 数据字典
字典1:运动员数据字典
记录运动员相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
AthleteNo
Char(8)
NOT NULL
主键、届数+流水号
运动员编号
AthleteName
Varchar2(20)
NOT NULL
运动员姓名
Sex
Varchar2(2)
NOT NULL
“男”
只取“男”、“女”
性别
Telephone
Varchar2(20)
NULL
联系方法
ClassNo
Char(8)
NOT NULL
外键、届数+流水号
班级编号
字典2:班级数据字典
记录班级相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ClassNo
Char(8)
NOT NULL
主键、届数+流水号
班级编号
InstituteName
Varchar2(30)
NOT NULL
学院名称
ClassName
Varchar2(30)
NOT NULL
班级全称
字典3:项目数据字典
记录项目相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键
项目编号
ItemName
Varchar2(50)
NOT NULL
项目名称
SexLimit
char(2)
NOT NULL
只取“男”“女”
性别限制
ComityRequire
Number(2)
NOT NULL
集体项目人数
StartTime
Date
NULL
开始时间
EndTime
Date
NULL
结束时间
TrackFieldJudge
Number(1)
NOT NULL
田径赛区分
ClassNoLimit
Number(2)
NOT NULL
每班最大人数
TotalAthlete
Number(3)
NOT NULL
0
已选人数
RuleNo
Char(3)
NOT NULL
外键
规则编号
FieldNo
Char(3)
NOT NULL
外键
场地编号
字典4:记录数据字典
记录记录相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键、外键
项目编号
ItemName
Varchar2(50)
NOT NULL
项目名称
AthleteNo
Char(8)
NULL
外键
运动员编号
AthleteName
Varchar2(20)
NOT NULL
运动员姓名
ClassNo
Char(8)
NULL
外键、届数+流水号
班级编号
ClassDiscribe
Varchar2(50)
NULL
班级描述
GymkhanaName
Varchar2(50)
NULL
运动会名
TrackFieldJudge
Number(1)
NOT NULL
田径赛区分
Score
Number(3)
NULL
成绩
字典5:规则数据字典
记录规则相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
RuleNo
Char(3)
NOT NULL
主键
规则编号
RuleName
Varchar2(30)
NULL
规则名称
TextPath
Varchar2(200)
NULL
文本路径
字典6:工作人员数据字典
记录工作人员相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
OperatorNo
Char(3)
NOT NULL
主键、职位+游水号
工作人员编号
OperatorName
Varchar2(20)
NOT NULL
工作人员姓名
Post
Varchar2(30)
NULL
单位
Duty
Varchar2(100)
NULL
运动会职务
字典7:场地数据字典
记录场地相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
FieldNo
Char(3)
NOT NULL
主键
场地编号
FieldName
Varchar2(20)
NULL
场地名称
Address
Varchar2(50)
NULL
具体地址
字典8:器材数据字典
记录器材相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
EquipmentNo
Char(3)
NOT NULL
主键
器材编号
EquipmentName
Varchar2(20)
NOT NULL
器材名称
Deposit
Varchar2(100)
NULL
存放简介
字典9:项目人员数据字典
记录项目人员相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键、外键
项目编号
OperatorNo
Char(8)
NOT NULL
外键、外键、职位+游水号
工作人员编号
字典10:项目器材数据字典
记录项目器材相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键、外键
项目编号
EquipmentNo
Char(3)
NOT NULL
主键、外键
器材编号
字典11:运动员成绩数据字典
记录运动员成绩相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键、外键
项目编号
AthleteNo
Char(8)
NOT NULL
0
主键、外键
运动员编号
TrackFieldJudge
Number(1)
NOT NULL
田径赛区分
Property
Number(1)
NOT NULL
0:决赛;1:预赛
比赛性质
GroupNo
Number(2)
NULL
小组号
CourseNo
Number(1)
NULL
1—8
跑道号
Score
VarChar(20)
NULL
成绩
Place
Number(3)
NULL
名次
字典12:团体赛成绩数据字典
记录团体赛成绩相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ItemNo
Char(3)
NOT NULL
主键、外键
项目编号
ClassNo
Char(8)
NOT NULL
0
主键、外键、届数+流水号
班级编号
TrackFieldJudge
Number(1)
NOT NULL
田径赛区分
GroupNo
Number(2)
NULL
小组号
CourseNo
Number(1)
NULL
1-8
跑道号
Property
Number(1)
NOT NULL
0:决赛;1:预赛
比赛性质
Score
Number(3)
NULL
成绩
Place
Number(3)
NULL
名次
字典13:班级总分数据字典
记录班级总分相关信息
字典结构
属性名称
属性类型
是否允许为空
默认值
约束
含义
ClassNo
Char(8)
NOT NULL
0
主键、外键、届数+流水号
班级编号
TotalScore
Number(3)
NULL
总分
Place
Number(3)
NULL
总分排名
2. 数据库设计
3.1班级表设计
3.1。1结构设计
/*******************************Class*************************************/
CREATE TABLE Class(
ClassNo Char(8) NOT NULL, /*班级编号*/
InstituteName Varchar2(30) NOT NULL, /*学院名称*/
FullName Varchar2(30) NOT NULL, /*班级全称*/
constraint Class_PK primary key(ClassNo)
);
3.2运动员表设计
3。2.1结构设计
/*******************************Athlete***********************************/
CREATE TABLE Athlete(
AthleteNo Char(8) NOT NULL, /*运动员编号*/
AthleteName Varchar2(20) NOT NULL, /*运动员姓名*/
Sex Varchar2(2) NOT NULL, /*性别*/
check(Sex in(’男','女')) ,
Telephone Varchar2(20) NULL, /*联系方法*/
ClassNo Char(8) NOT NULL, /*班级编号*/
constraint Athlete_PK primary key(AthleteNo),
constraint Athlete_FK1 foreign key(ClassNo) references Class(ClassNo)
);
3.3规则表设计
3.3.1结构设计
/*******************************RuleList************************************/
CREATE TABLE RuleList(
RuleNo Char(3) NOT NULL, /*规则编号*/
RuleName Varchar2(30) NULL, /*规则名称*/
TextPath Varchar2(200) NULL, /*文本路径*/
constraint RuleList_PK primary key(RuleNo));
3.4场地表设计
3.4.1结构设计
/*******************************FieldList***********************************/
CREATE TABLE FieldList(
FieldNo Char(3) NOT NULL, /*场地编号*/
FieldName Varchar2(20) NULL, /*场地名称*/
Address Varchar2(50) NULL, /*具体地址*/
constraint FieldList_PK primary key(FieldNo));
3.5项目表设计
3。5.1结构设计
/*******************************Item****************************************/
CREATE TABLE Item(
ItemNo Char(3) NOT NULL, /*项目编号*/
ItemName Varchar2(50) NOT NULL, /*项目名称*/
SexLimit char(2) NOT NULL, /*性别限制*/
ComityRequire Number(2) NOT NULL, /*集体项目人数*/
StartTime Date NULL, /*开始时间*/
EndTime Date NULL, /*结束时间*/
TrackFieldJudge Number(1) NOT NULL, /*田径赛区分*/
ClassNoLimit Number(2) NOT NULL, /*每班最大人数*/
TotalAthlete Number(3) default 0, /*已选人数*/
RuleNo Char(3) NOT NULL, /*规则编号*/
FieldNo Char(3) NOT NULL, /*场地编号*/
constraint Item_PK primary key(ItemNo),
constraint Item_FK1 foreign key(RuleNo) references RuleList(RuleNo),
constraint Item_FK2 foreign key(FieldNo) references FieldList(FieldNo));
3.6记录表设计
3.6.1结构设计
/*******************************RecordList**********************************/
CREATE TABLE RecordList(
ItemNo Char(3) NOT NULL, /*项目编号*/
ItemName Varchar2(50) NOT NULL, /*项目名称*/
AthleteNo Char(8) NULL, /*运动员编号*/
AthleteName Varchar2(20) NOT NULL, /*运动员姓名*/
ClassNo Char(8) NULL, /*班级编号*/
ClassDiscribe Varchar2(50) NULL, /*班级描述*/
GymkhanaName Varchar2(50) NULL, /*运动会名*/
TrackFieldJudge Number(1) NOT NULL, /*田径赛区分*/
Score Number(3) NULL, /*成绩*/
constraint RecordList_PK primary key(ItemNo),
constraint RecordList_FK1 foreign key(ItemNo) references Item(ItemNo),
constraint RecordList_FK2 foreign key(AthleteNo) references Athlete(AthleteNo),
constraint RecordList_FK3 foreign key(ClassNo) references Class(ClassNo));
3.7工作人员表设计
3。7.1结构设计
/*******************************OperatorList*********************************/
CREATE TABLE OperatorList(
OperatorNo Char(3) NOT NULL, /*工作人员编号*/
OperatorName Varchar2(20) NOT NULL, /*工作人员姓名*/
Post Varchar2(30) NULL, /*单位*/
Duty Varchar2(100) NULL, /*运动会职务*/
constraint OperatorList_PK primary key(OperatorNo));
3.8器材表设计
3。8。1结构设计
/*******************************EquipmentList*******************************/
CREATE TABLE EquipmentList(
EquipmentNo Char(3) NOT NULL, /*器材编号*/
EquipmentName Varchar2(20) NOT NULL, /*器材名称*/
Deposit Varchar2(100) NULL, /*存放简介*/
constraint EquipmentList_PK primary key(EquipmentNo));
3。9项目人员表设计
3.9。1结构设计
/*******************************ItemOperator********************************/
CREATE TABLE ItemOperator(
ItemNo Char(3) NOT NULL, /*项目编号*/
OperatorNo Char(3) NOT NULL, /*工作人员编号*/
constraint ItemOperator_PK primary key(ItemNo,OperatorNo),
constraint ItemOperator_FK1 foreign key(OperatorNo) references OperatorList(OperatorNo));
3.10项目器材表设计
3.10.1结构设计
/*******************************ItemEquipment*******************************/
CREATE TABLE ItemEquipment(
ItemNo Char(3) NOT NULL, /*项目编号*/
EquipmentNo Char(3) NOT NULL, /*器材编号*/
constraint ItemEquipment_PK primary key(ItemNo,EquipmentNo),
constraint ItemEquipment_FK1 foreign key(ItemNo) references Item(ItemNo),
constraint ItemEquipment_FK2 foreign key(EquipmentNo) references EquipmentList(EquipmentNo));
3.11运动员得分表设计
3。11.1结构设计
/*******************************AthleteScore********************************/
CREATE TABLE AthleteScore(
ItemNo Char(3) NOT NULL, /*项目编号*/
AthleteNo Char(8) default 0, /*运动员编号*/
TrackFieldJudge Number(1) NOT NULL, /*田径赛区分*/
Property Number(1) NOT NULL /*比赛性质*/
check(Property in('0’,’1’)),
GroupNo Number(2) NULL, /*小组号*/
CourseNo Number(1) NULL /*跑道号*/
check(CourseNo between 1 and 8),
Score VarChar(20) NULL, /*成绩*/
Place Number(3) NULL, /*名次*/
constraint AthleteScore_PK primary key(ItemNo,AthleteNo),
constraint AthleteScore_FK1 foreign key(ItemNo) references Item(ItemNo));
3。12集体项目得分表设计
3.12。1结构设计
/*******************************ComityScore*********************************/
CREATE TABLE ComityScore(
ItemNo Char(3) NOT NULL, /*项目编号*/
ClassNo Char(8) default 0, /*班级编号*/
TrackFieldJudge Number(1) NOT NULL, /*田径赛区分*/
GroupNo Number(2) NULL, /*小组号*/
CourseNo Number(1) NULL /*跑道号*/
check(CourseNo between 1 and 8),
Score VarChar(20) NULL, /*成绩*/
Property Number(1) NOT NULL /*比赛性质*/
check(Property in(’0’,'1’)),
Place Number(3) NULL, /*名次*/
constraint ComityScore_PK primary key(ItemNo,ClassNo),
constraint ComityScore_FK1 foreign key(ItemNo) references Item(ItemNo),
constraint ComityScore_FK2 foreign key(ClassNo) references Class(ClassNo));
3。13班级总得分表设计
3.13.1结构设计
/*******************************ClassTotalScore*****************************/
CREATE TABLE ClassTotalScore(
ClassNo Char(8) default 0, /*班级编号*/
TotalScore Number(3) NULL, /*总分*/
Place Number(3) NULL, /*总分排名*/
constraint ClassTotalScore_PK primary key(ClassNo),
constraint ClassTotalScore_FK1 foreign key(ClassNo) references Class(ClassNo));
3. 数据库设计中的一个编号过程
rem *****************************************************
rem ** 产生员工编号过程
rem ** 功能:根据输入的届数,自动产生运动员编号
rem ** 输入参数:sYear 届数
rem ** 输出参数:returnAthleteNo 运动员编号
rem ******************************************************
CREATE or REPLACE PROCEDURE proAthleteNo(sYear varchar2,returnAthleteNo OUT varchar2)
is
x number; /*得到员工编号后三位的流水号*/
varEmployeeNo1 char(8); /*某年份的最大员工编号*/
varEmployeeNo2 char(8); /*新的员工编号*/
begin
varEmployeeNo1 :=’’;
select NVL(max(AthleteNo),’0') into varEmployeeNo1
from Athlete
where AthleteNo like sYear || '%’;
if varEmployeeNo1 = ’0' then /*无该年份的运动员,编号从001开始*/
varEmployeeNo2 := sYear || ’-001';
else
x := to_number(SUBSTR(varEmployeeNo1,5,3))+1;
if x <10 then varEmployeeNo2 := sYear || '—00' || ltrim(to_char(x));
elsif x<100 then varEmployeeNo2 := sYear || ’-0' || ltrim(to_char(x));
else
varEmployeeNo2 := sYear || '—’ || ltrim(to_char(x));
end if;
end if;
returnAthleteNo := varEmployeeNo2;
end proAthleteNo;
展开阅读全文