数据库项目NBA球队信息管理系统.docx
《数据库项目NBA球队信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库项目NBA球队信息管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
数据库项目NBA球队信息管理系统
NBA球队信息管理系统
一.系统需求
系统结构简述:
本系统包括6个实体:
球员;球队;比赛;赛区;赞助商,教练
实体之间的关系转换为其他三个表:
球队参加比赛情况,赞助,球员参赛情况(均为“M比N”关系)
实体“球员”与“球队”之间多对一化到“球员”表中,“球队”与“赛区”转换到表“球队”中,“教练”与“球队”转换到“球队”表中
注:
各个基本表中关键字已在关系模式中说明
该数据库需要进行如下数据处理(通过创建存储过程来实现):
查询某球员的基本信息:
输入:
球员姓名
输出:
球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪,加盟时间
查询某球员的加盟球队情况:
输入:
球员姓名
输出:
球员姓名,球队名,球员数,总冠军数,赛区名,城市,赛区名次
查询某球员比赛表现(按得分降序排序):
输入:
球员姓名
输出:
球员姓名,比赛类型,开始时间,结束时间,场均得分,个人奖项
查询某赞助商所赞助球队情况:
输入:
赞助商名
输出:
赞助商名,球队名,名次,胜率
删除某球员信息:
输入:
球员姓名
操作:
删除其全部信息
二.ER图
球员
身高
姓名
体重
年龄
国籍
位置
球队
球队名
球员数
所在城市
总冠军数
三.逻辑结构设计
赛区(赛区名,地理位置)
球队(球队名,城市,球员数,总冠军数,赛区名,赛区名次)
球员(球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪,加盟时间)
比赛(比赛类型,开始时间,结束时间)
球队参赛(球队名,比赛类型,名次,胜率)
球员参赛(球员姓名,比赛类型,场均得分,个人奖项)
赞助商(赞助商名,地区,行业,老板)
赞助(球队名,赞助商名,赞助金额)
教练(教练姓名,教练年龄,球队名,执教时间)
四.物理设计
表1:
赛区表
字段名
类型
特殊属性
赛区名
Char(10)
主键
地理位置
Char(10)
Notnull
表2:
球队表
字段名
类型
特殊属性
球队名
Char(20)
主键
城市
Char(20)
Notnull
球员数
Int
Notnull
总冠军数
Int
Notnull
赛区名
Char(10)
赛区表外键约束
赛区名次
Int
Notnull
表3:
球员表
字段名
类型
特殊属性
球员姓名
Char(20)
主键
年龄
Int
Notnull
身高
Int
Notnull
体重
Int
Notnull
国籍
Char(10)
Notnull
位置
Char(10)
Notnull
球队名
Char(20)
球队表外键约束
年薪
Int
Notnull
加盟时间
Datetime
Notnull
表4:
比赛表
字段
类型
特殊属性
比赛类型
Char(10)
主键
开始时间
Datetime
Notnull
结束时间
Datetime
Notnull
表5:
球队参赛表
字段
类型
特殊属性
球队名
Char(20)
球队表外键约束
比赛类型
Char(10)
比赛表外键约束
名次
Int
Notnull
胜率
Float
Notnull
表6:
球员参赛表
字段
类型
特殊属性
球员姓名
Char(20)
球员表外键约束
比赛类型
Char(10)
比赛表外键约束
场均得分
Float
Notnull
个人奖项
Char(15)
表7:
赞助商表
字段
类型
特殊属性
赞助商名
Char(20)
主键
地区
Char(10)
Notnull
行业
Char(20)
Notnull
老板
Char(20)
Notnull
表8:
赞助表
字段
类型
特殊属性
球队名
Char(20)
球队表外键
赞助商名
Char(20)
赞助商表外键
赞助金额
Int
Notnull
表9:
教练表
字段
类型
特殊属性
教练姓名
Char(20)
主键
教练年龄
Int
Notnull
球队名
Char(20)
球队表外键
执教时间
Int
Notnull
五.数据库实施
1.数据库及其基本表的建立
createdatabaseNBA-------数据库的建立
go
createtable赛区表---------------基本表的建立
(赛区名char(10)notnullprimarykey,
地理位置char(10)notnull,
)
go
createtable球队表
(球队名char(20)notnullprimarykey,
城市char(20)notnull,
球员数intnotnull,
总冠军数intnotnull,
赛区名char(10)null,
赛区名次intnotnull,
)
go
createtable球员表
(球员姓名char(20)notnullprimarykey,
年龄intnotnull,
身高intnotnull,
体重intnotnull,
国籍char(10)notnull,
位置char(10)notnull,
球队名char(20)notnullforeignkey(球队名)references球队表(球队名),
年薪intnotnull,
加盟时间datetimenotnull,
)
go
createtable比赛表
(比赛类型char(10)notnullprimarykey,
开始时间datetimenotnull,
结束时间datetimenotnull,
)
go
createtable球队参赛表
(球队名char(20)notnullforeignkey(球队名)references球队表(球队名),
比赛类型char(10)notnullforeignkey(比赛类型)references比赛表(比赛类型),
名次intnotnull,
胜率floatnotnull,
)
go
createtable球员参赛表
(球员姓名char(20)notnullforeignkey(球员姓名)references球员表(球员姓名),
比赛类型char(10)notnullforeignkey(比赛类型)references比赛表(比赛类型),
场均得分floatnotnull,
个人奖项char(15),
)
go
createtable赞助商表
(赞助商名char(20)notnullprimarykey,
地区char(10)notnull,
行业char(20)notnull,
老板char(20)notnull,)
go
createtable赞助表
(球队名char(20)notnullforeignkey(球队名)references球队表(球队名),
赞助商名char(20)notnullforeignkey(赞助商名)references赞助商表(赞助商名),
赞助金额intnotnull,
)
go
createtable教练表
(教练姓名char(20)notnullprimarykey,
教练年龄intnotnull,
球队名char(20)notnullforeignkey(球队名)references球队表(球队名),
执教时间intnotnull,
)
go
Insertinto赛区表values('EN','东北')-------数据的插入
insertinto赛区表values('WS','西南')
insertinto赛区表values('ES','东南')
insertinto赛区表values('WN','西北')
insertinto球队表values('凯尔特人','波士顿','14','17','EN','7')
insertinto球队表values('热火','迈阿密','15','2','ES','2')
insertinto球队表values('湖人','洛杉矶','15','16','WS','11')
insertinto球队表values('雷霆','俄荷拉何马','14','1','WN','2')
insertinto球员表values('KobeByrant','34','198','93','美国','得分后卫','湖人','2000','1996-08-12')
Insertinto球员表values('DwightHoward','27','211','120','美国','中锋','湖人','1700','2012-08-09')
insertinto球员表values('SteveNash','38','191','80','加拿大','控球后卫','湖人','1200','2012-08-22')
insertinto球员表values('DwyaneWade','30','193','99','美国','得分后卫','热火','1700','2003-09-11')
insertinto球员表values('ChrisBosh','28','211','106','美国','中锋','热火','1665','2010-07-25')
insertinto球员表values('LebornJames','28','203','113','美国','得分后卫','热火','1770','2010-07-31')
insertinto球员表values('KevinGarnett','36','211','115','美国','大前锋','凯尔特人','1455','2007-08-01')
insertinto球员表values('LeandroBabosa','30','191','88','巴西','小前锋','凯尔特人','774','2008-08-06')
insertinto球员表values('PaulPierce','35','201','106','美国','得分后卫','凯尔特人','1520','2010-07-09')
insertinto球员表values('RusselWestbrook','24','191','85','美国','控球后卫','雷霆','1600','2008-03-06')
insertinto球员表values('KevinDurant','24','206','106','美国','得分后卫','雷霆','1863','2007-03-15')
insertinto球员表values('SergeIbaka','23','208','106','西班牙','中锋','雷霆','236','2008-04-05')
insertinto比赛表values('常规赛','2011-10-03','2012-04-22')
insertinto比赛表values('季前赛','2011-08-31','2011-09-30')
insertinto比赛表values('季后赛','2012-04-22','2012-07-25')
insertinto球队参赛表values('凯尔特人','季前赛','2','0.8')
insertinto球队参赛表values('凯尔特人','常规赛','4','0.32')
insertinto球队参赛表values('凯尔特人','季后赛','3','0.47')
insertinto球队参赛表values('热火','季前赛','1','0.88')
insertinto球队参赛表values('热火','常规赛','2','0.76')
insertinto球队参赛表values('热火','季后赛','4','0.36')
insertinto球队参赛表values('湖人','季前赛','3','0.54')
insertinto球队参赛表values('湖人','常规赛','1','0.90')
insertinto球队参赛表values('湖人','季后赛','1','1')
insertinto球队参赛表values('雷霆','季前赛','4','0.25')
insertinto球队参赛表values('雷霆','常规赛','3','0.66')
insertinto球队参赛表values('雷霆','季后赛','2','0.88')
insertinto球员参赛表values('KobeByrant','常规赛','28','MVP')
insertinto球员参赛表values('DwightHoward','季前赛','22','篮板王')
insertinto球员参赛表values('SteveNash','季后赛','17','助攻王')
insertinto球员参赛表values('DwyaneWade','常规赛','26',null)
insertinto球员参赛表values('ChrisBosh','季后赛','15',null)
insertinto球员参赛表values('LeBornJames','常规赛','31','盖帽王')
insertinto球员参赛表values('KevinGarnett','季前赛','12',null)
insertinto球员参赛表values('LeandroBabosa','季前赛','6',null)
insertinto球员参赛表values('PaulPierce','季后赛','20','抢断王')
insertinto球员参赛表values('RusselWestbrook','季前赛','24','最佳新秀')
insertinto球员参赛表values('KevinDurant','常规赛','32','得分王')
insertinto球员参赛表values('SergeIbaka','季后赛','22',null)
insertinto赞助商表values('nike','USA','SportsExperiments','PhilKnight')
insertinto赞助商表values('adidas','Germany','SportsExperiments','AdolfAdiDassler')
insertinto赞助商表values('Haier','China','electricappliance','ZhangRuiming')
insertinto赞助商表values('Toyota','Japan','Car','FujioCho')
insertinto赞助表values('凯尔特人','nike',2000000)
insertinto赞助表values('凯尔特人','Haier',3500000)
insertinto赞助表values('湖人','adidas',2300000)
insertinto赞助表values('湖人','Toyota',4000000)
insertinto赞助表values('热火','nike',3000000)
insertinto赞助表values('热火','Haier',2600000)
insertinto赞助表values('雷霆','adidas',2400000)
insertinto赞助表values('雷霆','Toyota',3400000)
insertinto教练表values('DocRivers','51','凯尔特人','8')
insertinto教练表values('ErikSpoelstra','42','热火','4')
insertinto教练表values('MikeDAntoni','61','湖人','1')
insertinto教练表values('ScottBrooks','47','雷霆','4')
2.创建索引
useNBA_SYSTEM
createuniqueindexIX_球队名on球队表(球队名)
go
createindexIX_身高on球员表(身高)
go
createindexIX_球员姓名on球员表(球员姓名)
go
createindexIX_赞助商名on赞助商表(赞助商名)
go
createindexIX_教练姓名on教练表(教练姓名)
go
3.创建视图
createview赞助商信息_view
as
select赞助表.赞助商名,老板,赞助表.球队名,赞助金额
from赞助表,赞助商表,球队表
where赞助商表.赞助商名=赞助表.赞助商名and赞助表.球队名=球队表.球队名
go
createview教练信息_view
as
select教练姓名,教练年龄,执教时间,教练表.球队名,城市,总冠军数
from教练表,球队表
where教练表.球队名=球队表.球队名
go
六.数据库运行
Select*from比赛表
Select*from教练表
Select*from球队表
Select*from球队参赛表
Select*from球员表
Select*from球员参赛表
Select*from赛区表
Select*from赞助表
Select*from赞助商表
七.数据库维护
八.数据库开发
useNBA---------------------存储过程的创建
go
createprocedure某球员基本信息_pro@球员姓名varchar(20)
as
select*
from球员表
where@球员姓名=球员姓名
go
createprocedure某球员的加盟球队情况_pro@球员姓名varchar(20)
as
select球员表.球员姓名,球队表.球队名,球员数,总冠军数,城市
from球队表innerjoin球员表on球员表.球队名=球队表.球队名
where@球员姓名=球员姓名
go
createprocedure某球员比赛表现_pro@球员姓名varchar(20)
as
select球员姓名,比赛表.比赛类型,开始时间,结束时间,场均得分,个人奖项
from比赛表innerjoin球员参赛表on比赛表.比赛类型=球员参赛表.比赛类型
where@球员姓名=球员姓名
orderby场均得分desc
go
createprocedure赞助商所赞助球队情况_pro@赞助商名varchar(20)
as
select赞助商名,赞助表.球队名,比赛类型,名次,胜率
from赞助表innerjoin球队参赛表on赞助表.球队名=球队参赛表.球队名
where@赞助商名=赞助商名
go
createprocedure删除某球员信息_pro@球员姓名varchar(20)
as
begin
delete球员表where@球员姓名=球员姓名
delete球员参赛表where@球员姓名=球员姓名
end
go