NBA球员球队信息管理系统项目设计方案刘啸尘魏春月.docx
《NBA球员球队信息管理系统项目设计方案刘啸尘魏春月.docx》由会员分享,可在线阅读,更多相关《NBA球员球队信息管理系统项目设计方案刘啸尘魏春月.docx(21页珍藏版)》请在冰豆网上搜索。
NBA球员球队信息管理系统项目设计方案刘啸尘魏春月
NBA球员球队信息管理系统项目设计方案(刘啸尘-魏春月)
NBA球员球队信息管理系统项目设计方案
专业
物联网应用技术
班级
12届1班
姓名
刘啸尘魏春月
学号
0507
日期
2013年12月3日
第1章系统概述
NBA是NationalBasketballAssociation的缩写。
成立于1946年6月6日。
成立时叫BAA,即全美篮协会(BasketballAssociationofAmerica),是由十一家冰球馆体育馆的老板为了让体育馆在冰球比赛以外的时间,不至于闲置而共同发起成立的。
BAA成立时共11支球队。
1949年BAA吞并了当时的另外一个联盟(NBL),并改名为NBA。
直到现在联盟共30支球队。
近些年,随着姚明在NBA的成功,华裔球员林书豪的大红大紫,NBA也逐渐地成功进入了中国这块市场,中国很多球迷开始迷恋NBA,而球迷们也对每支球队的球员非常感兴趣。
而设计这个的系统就是想统计了东部冠亚军和西部冠亚军四个球队中关键球员的年龄、位置、籍贯、身高、所在球队、加盟时间、年薪、场均得分、个人奖项及该球队在季前赛、常规赛、季后赛的胜率和名次的各种数据统计。
为广大篮球fans提供了更为方便的去了解NBA,也让球迷们对自己喜爱的球员有直观的透彻的了解到他们的情况。
该“NBA球员球队信息管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数据库模式的建立(即为数据库及其基本表的建立),而后数据的录入,最后完成一些简单的关系运算表达式的表达和相关的Select查询语句的使用。
第2章系统需求分析
2.1系统功能结构图
2.2系统可行性分析
时代的发展,技术的进入,人们生活水平的提高,人们对体育的热爱,使体育产业发展迅速,越来越多的参与到体育运动中,成为体育爱好者,成为体育职业运动员。
相应的,体育产业发展更加专业化,更加职业化,更加复杂庞大,组织、管理的工作量度增大了不少。
以篮球为例,欧美发达国家职业的篮球机构(例如美职篮)已有近百年的历史。
随着和平与发展的主旋律,全球化的时代,参与者的增加,职业篮球的竞争也愈加激烈,对职业球员的需求也在增加,职业球员的数量增长迅速,流动性也大了许多,跨国间的球员转会的数量越来越多,频率越来越快。
这些使其组织、管理的工作量增大了不少。
为了快捷方便的完成工作,提高运营,管理水平,必要开发球员管理信息系统,以便于篮球界各方的组织管理、参与关注。
从而促进篮球运动、篮球产业的发展。
综上分析,本系统可以立即开发。
第三章系统数据库设计
本数据库使用的是DBMS中的DQL(数据查询语言DataQueryLanguage)。
该查询语言可以按一定的查询条件从数据库对象中检索符合条件的数据,该查询语言更加适合本数据库使用。
3.1数据库概念设计
该数据库具有四个实体,分别为赛区,球队,球员,比赛。
实体之间的关系转换为其他两个表(球队参赛表,球员参赛表)。
赛区为实体,赛区名和地理位置是赛区的属性
球队是实体,球队名,城市,球员数,总冠军数,赛区名和赛区名次是球队的属性
球员是实体,球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪和加盟时间是球员的属性
比赛是实体,比赛类型,开始时间和结束时间是比赛的属性
球队参赛是球队和比赛表关系转换得来,所以球员参赛是实体,球队名,比赛类型,名次和胜率是球队参赛的属性
球员参赛是球员和比赛表转换得来的,所以球员姓名,比赛类型,场均得分和个人奖项是球员参赛的属性
3.2数据库逻辑设计(关系模式)
赛区(赛区名,地理位置)
球队(球队名,城市,球员数,总冠军数,赛区名,赛区名次)
球员(球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪,加盟时间)
比赛(比赛类型,开始时间,结束时间)
球队参赛(球队名,比赛类型,名次,胜率)
球员参赛(球员姓名,比赛类型,场均得分,个人奖项)
下面为关系图
表之间的关系图
3.3数据库物理设计
赛区表
序号
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
赛区
Varchar
10
PK
NotNull
赛区
2.
地理位置
Varchar
10
NotNull
地理位置
赛区表建表T-SQL语句
--创建赛区表
createtableDivision(
赛区名char(10)notnullprimarykey,
地理位置char(10)notnull,
)
球队表
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
球队名
Varchar
20
PK
NotNull
球队名
2
城市
Varchar
20
NotNull
城市
3.
球员数
Int
NotNull
球员数
4.
总冠军数
Int
NotNull
总冠军数
5.
赛区名
Char
10
赛区表FK
NotNull
赛区名
6.
赛区名次
Int
NotNull
赛区名次
球队表建表T-SQL语句
--创建球队表
createtableteam
(球队名char(20)notnullprimarykey,
城市char(20)notnull,
球员数intnotnull,
总冠军数intnotnull,
赛区名char(10)null,
赛区名次intnotnull,
)
球员表
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
球员姓名
Varchar
20
PK
NotNull
球员姓名
2.
年龄
Int
NotNull
年龄
3.
身高
Int
NotNull
身高
4.
体重
Int
NotNull
体重
5.
国籍
Varchar
10
NotNull
国籍
6.
位置
Varchar
10
NotNull
位置
7.
球队名
Varchar
20
球队表FK
NotNull
球队名
8.
年薪
Int
NotNull
年薪
9.
加盟时间
DateTime
NotNull
加盟时间
球员表建表T-SQL语句
--创建球员表
createtableplayer
(球员姓名char(20)notnullprimarykey,
年龄intnotnull,
身高intnotnull,
体重intnotnull,
国籍char(10)notnull,
位置char(10)notnull,
球队名char(20)notnull,
年薪intnotnull,
加盟时间datetimenotnull,
)
--创建外键球队名
AlterTableplayerAddConstraintFK_球队名
ForeignKey(球队名)Referencesteam(球队名)
比赛表
序号
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
比赛类型
Varchar
10
PK
NotNull
比赛类型
2.
开始时间
Datetime
NotNull
开始时间
3.
结束时间
Datetime
NotNull
结束时间
比赛表建表T-SQL语句
--创建比赛表
createtablerace(
比赛类型char(10)notnullprimarykey,
开始时间datetimenotnull,
结束时间datetimenotnull,
)
球队参赛表
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
球队名
Varchar
20
球队表FK
NotNull
球队名
2
比赛类型
Varchar
10
比赛表FK
NotNull
比赛类型
3.
名次
Int
NotNull
名次
4.
胜率
Float
NotNull
胜率
球队参赛建表T-SQL语句
--创建球队参赛表
createtableQC(
球队名char(20)notnull,
比赛类型char(10)notnull,
名次intnotnull,
胜率floatnotnull,
)
--创建外键--球队名
AlterTableQCAddConstraintFK_球队名_QC
ForeignKey(球队名)ReferencesTeam(球队名)
--创建外键--比赛类型
AlterTableQCAddConstraintFK_比赛类型
ForeignKey(比赛类型)Referencesrace(比赛类型)
球员参赛表
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
球队名
Varchar
20
球队表FK
NotNull
球队名
2
比赛类型
Varchar
10
比赛表FK
NotNull
比赛类型
3.
场均得分
Float
NotNull
场均得分
4.
个人奖项
Varchar
15
个人奖项
球员参赛表建表T-SQL语句
--创建球员参赛表
createtablePC(
球员姓名char(20)notnull,
比赛类型char(10)notnull,
场均得分floatnotnull,
个人奖项char(15),
)
--创建外键--球员姓名
AlterTablePCAddConstraintFK_球员姓名
ForeignKey(球员姓名)Referencesplayer(球员姓名)
--创建外键--比赛类型
AlterTablepcAddConstraintFK_比赛类型_PC
ForeignKey(比赛类型)Referencesrace(比赛类型)
以上是六个表格的建立及代码,下面是数据库的插入数据和创建索引,代码如下:
--向赛区表加入数据
InsertintoDivisionvalues('EN','东北')
insertintoDivisionvalues('WS','西南')
insertintoDivisionvalues('ES','东南')
insertintoDivisionvalues('WN','西北')
--向球队表加入数据
insertintoTeamvalues('凯尔特人','波士顿','14','17','EN','7')
insertintoTeamvalues('热火','迈阿密','15','2','ES','2')
insertintoTeamvalues('湖人','洛杉矶','15','16','WS','11')
insertintoTeamvalues('雷霆','俄荷拉何马','14','1','WN','2')
--向球员表加入数据
insertintoplayervalues('KobeByrant','34','198','93','美国','得分后卫','湖人','2000','1996-08-12')
Insertintoplayervalues('DwightHoward','27','211','120','美国','中锋','湖人','1700','2012-08-09')
insertintoplayervalues('SteveNash','38','191','80','加拿大','控球后卫','湖人','1200','2012-08-22')
insertintoplayervalues('DwyaneWade','30','193','99','美国','得分后卫','热火','1700','2003-09-11')
insertintoplayervalues('ChrisBosh','28','211','106','美国','中锋','热火','1665','2010-07-25')
insertintoplayervalues('LebornJames','28','203','113','美国','得分后卫','热火','1770','2010-07-31')
insertintoplayervalues('KevinGarnett','36','211','115','美国','大前锋','凯尔特人','1455','2007-08-01')
insertintoplayervalues('LeandroBabosa','30','191','88','巴西','小前锋','凯尔特人','774','2008-08-06')
insertintoplayervalues('PaulPierce','35','201','106','美国','得分后卫','凯尔特人','1520','2010-07-09')
insertintoplayervalues('RusselWestbrook','24','191','85','美国','控球后卫','雷霆','1600','2008-03-06')
insertintoplayervalues('KevinDurant','24','206','106','美国','得分后卫','雷霆','1863','2007-03-15')
insertintoplayervalues('SergeIbaka','23','208','106','西班牙','中锋','雷霆','236','2008-04-05')
--向比赛表加入数据
insertintoracevalues('常规赛','2011-10-03','2012-04-22')
insertintoracevalues('季前赛','2011-08-31','2011-09-30')
insertintoracevalues('季后赛','2012-04-22','2012-07-25')
--向球队参赛表加入数据
insertintoQCvalues('凯尔特人','季前赛','2','0.8')
insertintoQCvalues('凯尔特人','常规赛','4','0.32')
insertintoQCvalues('凯尔特人','季后赛','3','0.47')
insertintoQCvalues('热火','季前赛','1','0.88')
insertintoQCvalues('热火','常规赛','2','0.76')
insertintoQCvalues('热火','季后赛','4','0.36')
insertintoQCvalues('湖人','季前赛','3','0.54')
insertintoQCvalues('湖人','常规赛','1','0.90')
insertintoQCvalues('湖人','季后赛','1','1')
insertintoQCvalues('雷霆','季前赛','4','0.25')
insertintoQCvalues('雷霆','常规赛','3','0.66')
insertintoQCvalues('雷霆','季后赛','2','0.88')
--向球员参赛表加入数据
insertintoPCvalues('KobeByrant','常规赛','28','MVP')
insertintoPCvalues('DwightHoward','季前赛','22','篮板王')
insertintoPCvalues('SteveNash','季后赛','17','助攻王')
insertintoPCvalues('DwyaneWade','常规赛','26',null)
insertintoPCvalues('ChrisBosh','季后赛','15',null)
insertintoPCvalues('LeBornJames','常规赛','31','盖帽王')
insertintoPCvalues('KevinGarnett','季前赛','12',null)
insertintoPCvalues('LeandroBabosa','季前赛','6',null)
insertintoPCvalues('PaulPierce','季后赛','20','抢断王')
insertintoPCvalues('RusselWestbrook','季前赛','24','最佳新秀')
insertintoPCvalues('KevinDurant','常规赛','32','得分王')
insertintoPCvalues('SergeIbaka','季后赛','22',null)
--创建索引--球队名
createuniqueindexIX_球队名onteam(球队名)
--创建索引--身高
createindexIX_身高onplayer(身高)
--创建索引--球员姓名
createindexIX_球员姓名onplayer(球员姓名)
该数据的查询功能—查询语句
多条件组合查询
-查询球员表中国籍是美国的所有球员
select*fromplayerwhere国籍='美国'
截图结果
--查询球员表中加盟时间在-08-01到-08-01的球员
select*fromplayerwhere加盟时间between'1996-08-0100:
00:
00.000'and'2008-08-0100:
00:
00.000'
截图结果
--查询球员表中球员年龄不超过的人数
selectCount(*)AS'年龄不超过的人数'
fromplayer
截图结果
--查询球员表中球员的平均年龄
selectSum(年龄)/12AS'平均年龄'
fromplayer
截图结果
--统计球员表中球员的年龄总和
selectSum(年龄)Fromplayer
截图结果
--查询各队季前赛的名次和胜率
select*fromQCwhere比赛类型='季前赛'
截图结果
--查询常规赛mvp的详细信息
select*frompCwhere个人奖项='MVP'
截图结果
未知值(null)查询
--查询在各项比赛中没有获得任何个人奖项的球员信息
select*fromPCwhere个人奖项ISNULL
截图结果
--查询场均得分超过分的人数
selectCount(*)AS'场均得分超过28的人数'
frompc
截图结果
--查询场均得分最高的前%的球员信息
selecttop10percent*frompc
orderby场均得分desc
截图结果
--排序增加删除数据
--按名次从大到小,胜率从小到大排序
select*fromQC
orderby名次Desc,胜率asc
截图结果
--需要向表中增加数据的代码
--为表球员参赛表(pc)增加列Comments,可以为空Null
AlterTablePC
AddCommentsvarchar(20)
select*frompc
截图结果
--需要向表中删除数据的代码
--删除一列
AlterTablepcDROPCOLUMNcomments
SELECT*FROMpc
截图结果
第四章总结
系统大概的功能比如:
球员信息的查询,修改,删除等均可实现。
这些功能均可以用输入语句实现
NBA球员数据管理数据库做完了,写到最后,我们总结了不少的经验与知识,我们觉得每一次的课程设计,都是让我们对原有知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。
总而言之,通过这次的学习,我们受益匪浅。