NBA球员球队信息管理系统项目设计方案Word文件下载.docx
《NBA球员球队信息管理系统项目设计方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《NBA球员球队信息管理系统项目设计方案Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。
第三章系统数据库设计
本数据库使用的是DBMS中的DQL(数据查询语言DataQueryLanguage)。
该查询语言可以按一定的查询条件从数据库对象中检索符合条件的数据,该查询语言更加适合本数据库使用。
3.1数据库概念设计
该数据库具有四个实体,分别为赛区,球队,球员,比赛。
实体之间的关系转换为其他两个表(球队参赛表,球员参赛表)。
赛区为实体,赛区名和地理位置是赛区的属性
球队是实体,球队名,城市,球员数,总冠军数,赛区名和赛区名次是球队的属性
球员是实体,球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪和加盟时间是球员的属性
比赛是实体,比赛类型,开始时间和结束时间是比赛的属性
球队参赛是球队和比赛表关系转换得来,所以球员参赛是实体,球队名,比赛类型,名次和胜率是球队参赛的属性
球员参赛是球员和比赛表转换得来的,所以球员姓名,比赛类型,场均得分和个人奖项是球员参赛的属性
3.2数据库逻辑设计(关系模式)
赛区(赛区名,地理位置)
球队(球队名,城市,球员数,总冠军数,赛区名,赛区名次)
球员(球员姓名,年龄,身高,体重,国籍,位置,球队名,年薪,加盟时间)
比赛(比赛类型,开始时间,结束时间)
球队参赛(球队名,比赛类型,名次,胜率)
球员参赛(球员姓名,比赛类型,场均得分,个人奖项)
球队
城市
赛区名
赛区
名次
总冠
军数
球员数
球队名
球队参赛
胜率
比赛类型
比赛
开始
时间
结束
E-R图图示2-1
球员
体重
年龄
身高
国籍
位置
球队姓名
球员参赛
个人
奖项
场次
得分
年薪
加盟
E-R图图示3-1
地理
E-R图图示4-1
3.3数据库物理设计
赛区表
序号
列名
数据类型
宽度
是否主外键
是否为空
描述
1.
Varchar
10
PK
NotNull
2.
地理位置
赛区表建表T-SQL语句
--创建赛区表
createtableDivision(
赛区名char(10)notnullprimarykey,
地理位置char(10)notnull,
)
球队表
1.
20
2
3.
Int
4.
总冠军数
5.
Char
赛区表FK
6.
赛区名次
球队表建表T-SQL语句
--创建球队表
createtableteam
(球队名char(20)notnullprimarykey,
城市char(20)notnull,
球员数intnotnull,
总冠军数intnotnull,
赛区名char(10)null,
赛区名次intnotnull,
球员表
球员姓名
2.
3.
4.
5.
6.
7.
球队表FK
8.
9.
加盟时间
Datime
球员表建表T-SQL语句
--创建球员表
createtableplayer
(球员姓名char(20)notnullprimarykey,
年龄intnotnull,
身高intnotnull,
体重intnotnull,
国籍char(10)notnull,
位置char(10)notnull,
球队名char(20)notnull,
年薪intnotnull,
加盟时间datetimenotnull,
--创建外键球队名
AlterTableplayerAddConstraintFK_球队名
ForeignKey(球队名)Referencesteam(球队名)
比赛表
开始时间
结束时间
比赛表建表T-SQL语句
--创建比赛表
createtablerace(
比赛类型char(10)notnullprimarykey,
开始时间datetimenotnull,
结束时间datetimenotnull,
球队参赛表
比赛表FK
Float
球队参赛建表T-SQL语句
--创建球队参赛表
createtableQC(
球队名char(20)notnull,
比赛类型char(10)notnull,
名次intnotnull,
胜率floatnotnull,
--创建外键--球队名
AlterTableQCAddConstraintFK_球队名_QC
ForeignKey(球队名)ReferencesTeam(球队名)
--创建外键--比赛类型
AlterTableQCAddConstraintFK_比赛类型
ForeignKey(比赛类型)Referencesrace(比赛类型)
球员参赛表
场均得分
个人奖项
15
球员参赛表建表T-SQL语句
--创建球员参赛表
createtablePC(
球员姓名char(20)notnull,
比赛类型char(10)notnull,
场均得分floatnotnull,
个人奖项char(15),
--创建外键--球员姓名
AlterTablePCAddConstraintFK_球员姓名
ForeignKey(球员姓名)Referencesplayer(球员姓名)
AlterTablepcAddConstraintFK_比赛类型_PC
以上是六个表格的建立及代码,下面是数据库的插入数据和创建索引,代码如下:
--向赛区表加入数据
InsertintoDivisionvalues('
EN'
'
东北'
insertintoDivisionvalues('
WS'
西南'
ES'
'
东南'
WN'
西北'
--向球队表加入数据
insertintoTeamvalues('
凯尔特人'
波士顿'
14'
17'
7'
热火'
迈阿密'
15'
2'
湖人'
洛杉矶'
16'
11'
雷霆'
俄荷拉何马'
1'
--向球员表加入数据
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'
DwyaneWade'
30'
193'
99'
2003-09-11'
ChrisBosh'
28'
106'
1665'
2010-07-25'
LebornJames'
203'
113'
1770'
2010-07-31'
KevinGarnett'
36'
115'
大前锋'
1455'
2007-08-01'
LeandroBabosa'
88'
巴西'
小前锋'
774'
2008-08-06'
PaulPierce'
35'
201'
1520'
2010-07-09'
RusselWestbrook'
24'
85'
1600'
2008-03-06'
KevinDurant'
206'
1863'
2007-03-15'
SergeIbaka'
23'
208'
西班牙'
236'
2008-04-05'
--向比赛表加入数据
insertintoracevalues('
常规赛'
2011-10-03'
2012-04-22'
季前赛'
2011-08-31'
2011-09-30'
季后赛'
2012-07-25'
--向球队参赛表加入数据
insertintoQCvalues('
0.8'
4'
0.32'
3'
0.47'
0.88'
0.76'
insertintoQCvalues('
0.36'
0.54'
0.90'
0.25'
0.66'
--向球员参赛表加入数据
insertintoPCvalues('
MVP'
insertintoPCvalues('
22'
篮板王'
助攻王'
26'
null)
LeBornJames'
31'
盖帽王'
12'
6'
20'
抢断王'
最佳新秀'
32'
得分王'
--创建索引--球队名
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:
--查询球员表中球员年龄不超过的人数
selectCount(*)AS'
年龄不超过的人数'
fromplayer
--查询球员表中球员的平均年龄
selectSum(年龄)/12AS'
平均年龄'
--统计球员表中球员的年龄总和
selectSum(年龄)Fromplayer
--查询各队季前赛的名次和胜率
select*fromQCwhere比赛类型='
--查询常规赛mvp的详细信息
select*frompCwhere个人奖项='
未知值(null)查询
--查询在各项比赛中没有获得任何个人奖项的球员信息
select*fromPCwhere个人奖项ISNULL
--查询场均得分超过分的人数
场均得分超过28的人数'
frompc
--查询场均得分最高的前%的球员信息
selecttop10percent*frompc
orderby场均得分desc
--排序增加删除数据
--按名次从大到小,胜率从小到大排序
select*fromQC
orderby名次Desc,胜率asc
--需要向表中增加数据的代码
--为表球员参赛表(pc)增加列Comments,可以为空Null
AlterTablePC
AddCommentsvarchar(20)
select*frompc
--需要向表中删除数据的代码
--删除一列
AlterTablepcDROPCOLUMNcomments
SELECT*FROMpc