数据库课程设计报告
足球联赛管理系统的设计与实现
班 级: | ||
组长: | 学号: | 姓名: |
组员1: | 学号: | 姓名: |
组员2: | 学号: | 姓名: |
指导教师: |
年 月 日
目 录
一、问题描述
拟为足球联赛设计一个管理系统,记录球队、赛事的相关信息,已经获取的需求信息如下:
(1) 球队信息主要包括:球队编号,名称,成立时间,人数,主场地址,主教练。
(2) 球员信息主要包括:姓名,身份证号,生日,身高,家庭住址。
(3) 主教练信息主要包括:姓名,身份证号,生日,资格证书号,级别。
(4) 主裁判信息主要包括:姓名,身份证号,生日,资格证书号,证书获得日期,级别。
(5) 每支球队有一名主教练,若干名球员。
(6) 一名主教练只能受聘于一支球队。
(7) 一名球员只能效力于一支球队。
(8) 每支球队都有一个主场地,且不与其他球队的主场重合。
(9) 联赛采用主客场循环制,每周进行一轮比赛,且每一轮的所有比赛同时进行,每支球队都要和其它球队分别比赛最少一次。
(10) 联赛的排名采用积分制,赢一场3分,平一场1分,输一场0分。
同分情况下一般考虑:相互间的净胜球、进球数、红牌数、黄牌数,总的净胜球、进球数、红牌数、黄牌数等。
(11) 赛后需要根据进球数,处罚情况评球员个人奖项。
每一组需要完成必做任务、选做任务一中的一个任务,选做任务二中的一个任务,用MySQL建立数据库,用Java语言实现选做任务的功能。老师将根据系统的完成度、图形用户界面设计的合理性、操作的流畅性、代码的可读性、代码的健壮性以及说明书的规范性等方面进行评分。
1.必做任务
数据库的完整的设计与创建
2.选做任务一
1)基础数据维护模块
为赛事组织方,实现对球队信息的浏览、添加、修改、删除、查询等功能。
2)基础数据维护模块
为赛事组织方,实现队员信息的浏览、添加、修改、删除、查询等功能。
3)基础数据维护模块
为赛事组织方,实现裁判员信息的浏览、添加、修改、删除、查询等功能。
4)基础数据维护模块
为赛事组织方,实现教练员信息的浏览、添加、修改、删除、查询等功能。
3.选做任务二
1)安排比赛模块
为赛事组织方,实现循环赛的赛事(包括比赛及裁判)安排、浏览、查询功能。
2)比赛数据管理模块
为赛事的组织方,实现浏览、填写、修改比赛结果(包括进球、黄牌,红牌等)及成绩(自动计算)的功能。
3)赛事发布模块
为足球爱好者提供浏览、查询(允许用户给出查询条件)所有比赛及成绩及排名功能。
4)赛事统计功能
为足球爱好者提供可视化(诸如柱状图,饼形图,雷达图、折线图等)的分类统计分析功能。
为赛事的组织方提供可视化的分类统计分析功能。
1.E/R图
E-R图 |
说明:可以画成多个图,也可以一张图
2. 属性的说明
关于各个实体的属性的特性的说明
实体名:球队
属性名 | 属性的描述 | 属性的约束等说明 | 属性的特性说明 |
球队编号 | 编号 | 主码 | 非空 |
名称 | 名称 | 非空 | |
成立时间 | 成立时间 | 非空 | |
人数 | 球队人数 | ||
主场地址 | 地址 | 非空 |
实体名:球员
属性名 | 属性的描述 | 属性的约束等说明 | 属性的特性说明 |
姓名 | 姓名 | 非空 | |
身份证号 | 身份证号 | 主码 | 非空 |
生日 | 生日 | 非空 | |
身高 | 身高 | 非空 | |
家庭住址 | 住址 | 非空 |
实体名:主教练
属性名 | 属性的描述 | 属性的约束等说明 | 属性的特性说明 |
姓名 | 姓名 | 非空 | |
身份证号 | 身份证号 | 主码 | 非空 |
生日 | 出生日期 | 非空 | |
身高 | 身高 | 非空 | |
家庭住址 | 住址 | 非空 |
实体名:裁判
属性名 | 属性的描述 | 属性的约束等说明 | 属性的特性说明 |
姓名 | 姓名 | 非空 | |
身份证号 | 身份证号 | 主码 | 非空 |
生日 | 生日 | 非空 | |
资格证书号 | 资格证书号 | 非空 | |
级别 | 级别 | 非空 | |
资格证书获得日期 | 资格证书获得日期 | 非空 |
3.数据依赖关系说明
球队:球队编号->名称;球队编号->成立时间;球队编号->主场地址;球队编号->人数。
球员:身份证号->姓名;身份证号->生日;身份证号->身高;身份证号->家庭住址。
主教练:身份证号->姓名;身份证号->生日;资格证书号->级别。
裁判:身份证号->姓名;身份证号->生日;资格证书号->级别;资格证书号->证书获得日期。
4.关系的模式描述
关系名:球队 | ||||
函数依赖 | 球队编号à名称, 成立时间,人数,主场地址 | |||
范式级别 | 2NF | |||
属性名 | 属性的描述 | 属性的类型 | 约束 | 备注 |
球队编号 | 编号 | 单值 | 主码 | 非空 |
名称 | 队名 | 单值 | 非空 | |
成立时间 | 成立时间 | 单值 | 非空 | |
人数 | 人数 | 派生 | 非空 | |
主场地址 | 主场球馆 | 多值 | 非空 | |
主教练 | 主教练 | 单值 | 外码 | 非空 |
关系名:球员 | ||||
函数依赖 | 身份证号à姓名,生日,身高,家庭住址 | |||
范式级别 | 2NF | |||
属性名 | 属性的描述 | 属性的类型 | 约束 | 备注 |
身份证号 | 身份证号 | 单值 | 主码 | 非空 |
姓名 | 姓名 | 单值 | 非空 | |
生日 | 出生日期 | 单值 | 非空 | |
身高 | 身高 | 简单 | 非空 | |
家庭住址 | 家庭住址 | 复合 | 非空 |
关系名:主教练 | ||||
函数依赖 | 身份证号à姓名,生日,资格证书号,级别 | |||
范式级别 | 2NF | |||
属性名 | 属性的描述 | 属性的类型 | 约束 | 备注 |
身份证号 | 身份证号 | 单值 | 主码 | 非空 |
姓名 | 姓名 | 单值 | 非空 | |
生日 | 出生日期 | 单值 | 非空 | |
资格证书号 | 资格证书号 | 单值 | 非空 | |
级别 | 级别 | 多值 | 非空 |
四、关系数据库创建
1.建立数据库的SQL定义
TEAM: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
NAME | VARCHAR | 20 | 是 | 否 |
HOME | VARCHAR | 30 | 否 | 否 |
COACH | VARCHAR | 20 | 否 | 否 |
MEMBER: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
NAME | VACHAR | 20 | 否 | 否 |
TEAMNAME | VACHAR | 20 | 是 | 否 |
MUMBER | INT | 是 | 否 | |
POSITION | VARCHAR | 6 | 否 | 否 |
HEIGHT | INT | 否 | 是 | |
WEIGHT | INT | 否 | 是 | |
BIRTHDATE | DATETIME | 否 | 否 |
course: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
home | VACHAR | 20 | 是 | 否 |
away | VACHAR | 20 | 是 | 否 |
turn | INT | 否 | 否 | |
matchdate | DATETIME | 6 | 否 | 否 |
homescore | INT | 否 | 否 | |
awayscore | INT | 否 | 否 |
goal: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
teamname | VACHAR | 20 | 是 | 否 |
MUMBER | INT | 是 | 否 | |
turn | INT | 否 | 否 | |
goaltime | DATETIME | 否 | 否 |
score: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
place | INT | 否 | 否 | |
NAME | VACHAR | 20 | 是 | 否 |
turn | INT | 否 | 否 | |
won | INT | 否 | 否 | |
even | INT | 否 | 否 | |
beaten | INT | 否 | 否 | |
goal | INT | 否 | 否 | |
lost | INT | 否 | 否 | |
net | INT | 否 | 否 | |
POINT | INT | 否 | 否 |
goalscore: | ||||
字段 | 数据类型 | 长度 | 是否主键 | 是否可空 |
place | INT | 否 | 否 | |
NAME | VACHAR | 20 | 是 | 否 |
teamname | VARCHAR | 20 | 是 | 否 |
NUMBER | INT | 否 | 否 | |
goals | INT | 否 | 否 |
2.数据库关系图
五、数据库其他设计
1.索引
2.视图
3.存储过程
4.触发器
插入球队触发插入积分表
--当向球队表Team中插入一行数据时,会自动向积分榜Score中插入一条对应的数据
create trigger teaminsert on team
for insert
as
declare @name varchar(20)
select @name=NAME from inserted
insert into score(PLACE,NAME,TURN,WON,EVEN,BEATEN,GOAL,LOST,NET,POINT) values(0,@name,0,0,0,0,0,0,0,0)
修改球队名称时自动调整相关表格中的球队名称
create trigger TeamUpdate
on Team
instead of update
as
declare @oldName varchar(20)
declare @oldHome varchar(30)
declare @oldCoach varchar(20)
declare @newName varchar(20)
declare @newHome varchar(30)
declare @newCoach varchar(20)
select @oldName=name, @oldHome=home, @oldCoach=coach from deleted
select @newName=name, @newHome=home, @newCoach=coach from inserted
if (@oldName<>@newName)
begin
begin transaction
insert into team(name,home,coach) values(@newName,@newhome,@newCoach)
delete from score where name=@newName
update goal set teamname=@newName where teamname=@oldName
update member set teamname=@newName where teamname=@oldName
update course set home=@newName where home=@oldName
update course set away=@newName where away=@oldName
update score set name=@newName where name=@oldName
delete from team where name=@oldName
commit
end
else
update team set home=@newhome, coach=@newCoach where name=@oldName
六、功能实现
每一位同学分别描述自己所实现的功能,实现的方法和效果
七、设计总结
每一位同学分别谈谈你在设计中遇到的问题,解决的过程及收获及不足等。
八、小组分工
九、参考文献
1.数据库应用技术《北京邮电大学出版社》