1、本科学生设计性实验报告课程名称:现代数据库技术实验项目名称:运动会管理系统数 据 库 设 计姓名:何东灵 学号:0041400班级:C03 班 第小组2006 至 2007 学年 第 2 学期2007 年 6 月 15 日目 录目 录 2引言 3编写目的 3背景 3定义 31. 数据字典 3字典 1:运动员数据字典 .3字典 2:班级数据字典 .3字典 3:项目数据字典 .4字典 4:记录数据字典 .4字典 5:规则数据字典 .4字典 6:工作人员数据字典 .5字典 7:场地数据字典 .5字典 8:器材数据字典 .5字典 9:项目人员数据字典 .5字典 10:项目器材数据字典 .5字典 11:
2、运动员成绩数据字典 .6字典 12:团体赛成绩数据字典 .6字典 13:班级总分数据字典 .62. 数据库设计 63. 数据库设计中的一个编号过程 10引言编写目的本数据库设计说明书专门为 SGS 系统的项目开发人员编写。背景项目 名称:学校运动会管理系统(SchoolGymkhanaSystem 简称 SGS)项目提出者:江财 SGS 项目组织人员项目开发者:需求分析阶段有 SGS 项目开发小组人员共同完成,其它各阶段由小组成员各自负责完成项目鉴定者:吴京慧教授项目开始时间:2007-6-15定义列出本文件中用到的专门术语的定义和缩写词的源词组。1 所有的表名的命名规则:所有表名都根据表意用
3、相关的英文全称命名。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 “男” 只取“男” 、
4、“女” 性别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(
5、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 已选人数RuleN
6、o 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 Varchar
7、2(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:工作人员数据字典记录工作人员相关信息字典结构属性名称 属性类型 是否允许为空
8、默认值 约束 含义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:器材数据字
9、典记录器材相关信息字典结构属性名称 属性类型 是否允许为空 默认值 约束 含义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:项目器材数据字典记录项目器材相
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 N
11、ULL 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 主键、外键、届数流水号 班级编号TrackFieldJudge Number(1) NOT NULL 田径赛区分GroupN
12、o 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 主键、外键、届数流水号 班级编号TotalScore Number(3) NULL 总分Place Number(3) NULL 总分排名2. 数据库设计3.1 班
13、级表设计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, /*运动员编号*/AthleteNa
14、me 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 结构设计/*RuleLis
15、t*/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, /*场地名称*/
16、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, /*
17、开始时间*/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
18、(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
19、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
20、 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 NU
21、LL, /*工作人员姓名*/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) NUL
22、L, /*存放简介*/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(Ope
23、ratorNo) 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) referenc
24、es 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 N
25、umber(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(It
26、emNo) 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
27、),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) referenc
28、es 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) reference
29、s Class(ClassNo);3. 数据库设计中的一个编号过程rem *rem * 产生员工编号过程rem * 功能:根据输入的届数,自动产生运动员编号rem * 输入参数: sYear 届数rem * 输出参数: returnAthleteNo 运动员编号rem *CREATE or REPLACE PROCEDURE proAthleteNo(sYear varchar2,returnAthleteNo OUT varchar2)isx number; /*得到员工编号后三位的流水号 */varEmployeeNo1 char(8); /*某年份的最大员工编号*/varEmployee
30、No2 char(8); /*新的员工编号*/beginvarEmployeeNo1 :=;select NVL(max(AthleteNo),0) into varEmployeeNo1from Athletewhere AthleteNo like sYear | %;if varEmployeeNo1 = 0 then /*无该年份的运动员,编号从 001 开始*/varEmployeeNo2 := sYear | -001;elsex := to_number(SUBSTR(varEmployeeNo1,5,3)+1;if x 10 then varEmployeeNo2 := sYear | -00 | ltrim(to_char(x);elsif x100 then varEmployeeNo2 := sYear | -0 | ltrim(to_char(x);elsevarEmployeeNo2 := sYear | - | ltrim(to_char(x);end if;end if;returnAthleteNo := varEmployeeNo2;end proAthleteNo;