文档库 最新最全的文档下载
当前位置:文档库 › NBA球员数据管理系统

NBA球员数据管理系统

NBA球员数据管理系统
NBA球员数据管理系统

数据库课程设计

题目:NBA球员数据管理系统

学生姓名唐力班级网络101

学生学号2010121038 指导老师方睿

1 引言 (3)

1.1 NBA球员数据管理系统简介: (3)

1.2 本系统的主要工作: (3)

2 本系统需求分析及系统运行环境: (3)

2.1 背景: (3)

2.2 系统需求规格说明: (3)

2.3 NBA球员管理系统具备的主要功能: (4)

2.4 流程图: (6)

2.5 NBA球员管理系统的实体分析: (6)

2.5 系统运行环境: (9)

3 数据库分析: (9)

3.1 数据库的创建: (9)

3.2 数据库表的创建: (9)

3.3 表的约束: (12)

3.4 索引: (13)

3.5数据插入: (13)

3.6数据库表的查询用法: (16)

3.6.1数据库表多条件查询: (16)

3.6.2数据库表排序查询: (16)

3.6.3数据库表嵌套查询: (17)

3.6.4数据库表模糊查询: (17)

3.6.5数据库表的修改或删除: (17)

3.6.6数据库表分组查询: (18)

4 数据库的高级编程: (18)

5系统的安全: (20)

5.1登录服务器的账号创建: (20)

5.2数据库账号创建: (22)

5.3角色及权限的分配: (22)

5.4数据库的分离和附加,备份恢复: (23)

5.5数据库导入和导出: (25)

6总结: (26)

7参考文献: (26)

1 引言

1.1 NBA球员数据管理系统简介:

本程序设计与实现开发出来的是一个用SQL Server 2008软件编写而成的NBA球员数据管理系统。本文重点讨论该系统的设计与实现,系统通过代码的方式写成,通过测试与分析说明该系统可稳定运行,具有一定程度的实现价值。

1.2 本系统的主要工作:

NBA球员管理系统的主要任务是建立,维护用户信息档案,统计,更新现役NBA 球员的数据信息,提供给用户方便了解NBA球员。

2本系统需求分析及系统运行环境:

2.1 背景:

NBA是National Basketball Association的缩写。成立于1946年6月6日。成立时叫BAA,即全美篮协会(Basketball Association of America),是由十一家冰球馆体育馆的老板为了让体育馆在冰球比赛以外的时间,不至于闲置而共同发起成立的。BAA成立时共11支球队。1949年BAA吞并了当时的另外一个联盟(NBL),并改名为NBA。直到现在联盟共30支球队。

近些年,姚明成功的在NBA立足,成为世界巨星,且NBA也成功进入了中国这块市场,中国很多球迷开始迷恋NBA ,而球迷们也对每支球队的球员非常感兴趣。

而开发的系统是统计了每个球员的年龄,位置,籍贯,身高,所在球队,

以及场均得分,场均助攻,场均篮板,每场比赛球员的各种数据统计,球员的日常生活信息等。

为广大篮球fans提供了更为方便的去了解NBA以及各个球员,也让球迷们对自己喜爱的球员有直观的透彻的了解到他们的情况。

2.2 系统需求规格说明:

3(1)系统管理员为球迷建立信息档案,用户进入系统前需身份验证,用户名、密码输入正确后方可进入系统。用户分为管理员,球迷,他们分

别拥有不同的使用权限和不同的功能。管理员拥有最高权限和最大限度

的功能。

(2)系统为球迷建立档案,可按球迷ID或者名称查询,档案主要包括球员ID,名字,居住地,年龄等。

(3)在系统中,管理员需要对球员数据随时录入,更新,维护,方便球迷得到球员最新动态的数据。(一般一轮比赛完就更新)

(4)系统的客户端在Windows平台下运行,服务器可在Windows平台或UNIX 平台下运行。系统需要有较好的安全性和可扩展性,并提供简洁方便的图形用户界面。

球迷流程

管理员流程

2.3 NBA球员管理系统具备的主要功能:

本系统的主要功能如下:

(1)球迷信息管理:对球迷的基本信息(如ID,姓名,年龄,居住地等)

进行录入和修改。

(2)球员数据信息管理:对球员的数据信息(如球员场均得分,场均篮板,场均助攻,场均抢断,场均失误等)录入和更新。

(3)管理员信息管理:管理个人用户信息的录入和修改。(管理员只属于重庆,北京,上海等城市)

(4)每支球队信息管理:对球队的数据信息(如球队ID,球队名,战绩等)录入和更新。

(5)球员年龄信息管理:对球员年龄的数据信息(如球员ID,球员名,player20to30等)录入和修改。

(6)球员号码信息管理:对球员号码信息管理(如player11to20,player20to40等)录入和修改。

(7)球员信息管理:对球员信息(如年龄,资金,所在球队,球员号码等)进行录入和修改。

功能模块如下:

2.4 流程图:

2.5 NBA 球员管理系统的实体分析:

(1) 实体图:

数据录入

数据库

信息浏览目录

业务流程图

(2)ER 图

2.5 系统运行环境:

本系统是运行在WindowsXP、Windows win7等操作系统环境;处理器型号及内存容量:内存>=256M;输入及输出设备的型号和数量,联机或脱机:待定。

3数据库分析:

3.1 数据库的创建:

NBA球员数据管理系统数据库的创建:

CREATE DATABASE Player

ON PRIMARY

(

NAME=Player_Data,

FILENAME='G:\C\数据库作业\Player_Data.MDF',

SIZE=10,

MAXSIZE=UNLIMITED,

FILEGROWTH=5

)

LOG ON

(

NAME=Player_Log,

FILENAME='G:\C\数据库作业\Player_Data.LDF',

SIZE=10,

MAXSIZE=UNLIMITED,

FILEGROWTH=10%

)

GO

3.2 数据库表的创建:

(1)球员数据表:

CREATE TABLE playerdata

(

playerID char(10)NOT NULL,

playername char(25)NOT NULL,

ppg float NOT NULL,

rpg float NOT NULL,

apg float NOT NULL,

spg float NOT NULL,

bpg float NOT NULL,

mpg float NOT NULL,

FT float NOT NULL,

Fromthree float NOT NULL,

jumpershot float NOT NULL,

PRIMARY KEY (playerID,playername)

)

(2)球员表:

CREATE TABLE player

(

playerID char(10)NOT NULL,

playername char(25)NOT NULL,

playercapital money NOT NULL,

playerage smallint NOT NULL,

teamname char(30)NOT NULL,

playerNO smallint NOT NULL,

teamID char(15)NOT NULL,

PRIMARY KEY (playerID,playername)

)

(3)球员号码表:

CREATE TABLE playernum

(

playerID char(10)NOT NULL,

player1to20char(25)NOT NULL,

player20to40char(25)NOT NULL,

player40up char(25)NOT NULL,

playername char(25)NOT NULL,

CONSTRAINT pkplayernum PRIMARY KEY (playerID,playername),

FOREIGN KEY (playername)REFERENCES scancategory(playername)

)

(4)球员年龄表:

CREATE TABLE playerage

(

playerID char(10)NOT NULL,

playeradd smallint NOT NULL,

player20to23char(25)NOT NULL,

player23to27char(25)NOT NULL,

player27to32char(25)NOT NULL,

player32up char(25)NOT NULL,

playername char(25)NOT NULL,

CONSTRAINT pkplayerage PRIMARY KEY (playerID,playername),

FOREIGN KEY (playername)REFERENCES scancategory(playername)

)(5)每支球队表:

CREATE TABLE everyteam

(

teamID char(15)NOT NULL,

teamname char(30)NOT NULL,

teamcapital money NOT NULL,

combatgains float NOT NULL,

playername char(25)REFERENCES scancategory(playername),

CONSTRAINT pkeveryteam PRIMARY KEY (teamID)

)

(6)管理员表:

CREATE TABLE Administrator

(

ADMID char(10)NOT NULL,

name char(25)NOT NULL,

age smallint NOT NULL,

sex char(2)NOT NULL,

city char(15)NOT NULL CONSTRAINT chkcity CHECK(city IN

('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiw an','dalian')),

PRIMARY KEY (ADMID,name)

)

(7)登录用户表:

CREATE TABLE Registrant

(

funID char(10)NOT NULL,

lname char(25)NOT NULL,

lkey char(16)NOT NULL,

age smallint NOT NULL,

sex char(2)NOT NULL,

lcity char(15)NOT NULL CONSTRAINT chklcity CHECK (lcity IN

('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiw an','dalian')),

PRIMARY KEY (funID,lname)

)

(8)浏览目录表:

CREATE TABLE scancategory

(

playername char(25)NOT NULL,

teamname char(30)NOT NULL,

playerage smallint NOT NULL,

playerNO smallint NOT NULL,

PRIMARY KEY (playername)

)

CREATE UNIQUE NONCLUSTERED INDEX idx_category

ON scancategory(playername)

3.3 表的约束:

(1)检查约束:

管理员用户表:

CREATE TABLE Administrator

(

ADMID char(10)NOT NULL,

name char(25)NOT NULL,

age smallint NOT NULL,

sex char(2)NOT NULL,

city char(15)NOT NULL CONSTRAINT chkcity CHECK(city IN

('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiw an','dalian')),

PRIMARY KEY (ADMID,name)

)

CREATE TABLE Registrant

(

funID char(10)NOT NULL,

lname char(25)NOT NULL,

lkey char(16)NOT NULL,

age smallint NOT NULL,

sex char(2)NOT NULL,

lcity char(15)NOT NULL CONSTRAINT chklcity CHECK (lcity IN

('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiw an','dalian')),

PRIMARY KEY (funID,lname)

)

(2)外键约束:

球员年龄信息表:

CREATE TABLE playerage

(

playerID char(10)NOT NULL,

playeradd smallint NOT NULL,

player20to23char(25)NOT NULL,

player23to27char(25)NOT NULL,

player27to32char(25)NOT NULL,

player32up char(25)NOT NULL,

playername char(25)NOT NULL,

CONSTRAINT pkplayerage PRIMARY KEY (playerID,playername),

FOREIGN KEY (playername)REFERENCES scancategory(playername)

)

CREATE TABLE playernum

(

playerID char(25)NOT NULL,

player1to20char(25)NOT NULL,

player20to40char(25)NOT NULL,

player40up char(25)NOT NULL,

playername char(25)NOT NULL,

CONSTRAINT pkplayernum PRIMARY KEY (playerID,playername),

FOREIGN KEY (playername)REFERENCES scancategory(playername) )

(3)主键约束:

每支球队信息表:

CREATE TABLE everyteam

(

teamID char(15)NOT NULL,

teamname char(30)NOT NULL,

teamcapital money NOT NULL,

combatgains float NOT NULL,

playername char(25)REFERENCES scancategory(playername), CONSTRAINT pkeveryteam PRIMARY KEY (teamID)

)

3.4 索引:

CREATE TABLE scancategory

(

playername char(25)NOT NULL,

teamname char(30)NOT NULL,

playerage smallint NOT NULL,

playerNO smallint NOT NULL,

PRIMARY KEY (playername)

)

CREATE UNIQUE NONCLUSTERED INDEX idx_category

ON scancategory(playername)

3.5数据插入:

(1)目录数据插入:

INSERT scancategory(playername,teamname,playerNO,playerage)

VALUES ('Tracy McGrady','Detroit Pistons',1,32),('Tayshaun

Prince','Detroit Pistons',22,31),('Richard Hamilton','Detroit

Pistons',32,33),('Greg Monroe','Detroit Pistons',10,21),('Rodney Stuckey','Detroit Pistons',3,25),('Charlie Villanueva','Detroit

Pistons',31,27),('Ben Gordon','Detroit Pistons',7,28),('Jason

Maxiell','Detroit Pistons',54,28),('Ben Wallace','Detroit

Pistons',6,37),('Austin Daye','Detroit Pistons',5,23),

('Kevin Martin','Houston Rockets',12,28),('Luis Scola','Houston Rockets',4,31),('Kyle Lowry','Houston Rockets',7,25),('Chase

Budinger','Houston Rockets',10,23),('Courtney Lee','Houston

Rockets',5,26),('Chuck Hayes','Houston Rockets',44,28),('Goran

Dragic','Houston Rockets',3,25),('Patrick Patterson','Houston

Rockets',54,24),('Terrence Williams','Houston Rockets',1,24),('Hasheem Thabeet','Houston Rockets',32,24),

('Kevin Durant','Oklahoma City Thunder',35,23),('Russell Westbrook','Oklahoma City Thunder',0,23),('James Harden','Oklahoma City Thunder','13',22),('(Serge Ibaka','Oklahoma City

Thunder',9,22),('Thabo Sefolosha','Oklahoma City

Thunder',2,27),('Kendrick Perkins','Oklahoma City

Thunder',5,27),('Nazr Mohammed','Oklahoma City Thunder',8,34),('Eric Maynor','Oklahoma City Thunder',6,24),('Nate Robinson','Oklahoma City Thunder',3,27),('Nick Collison','Oklahoma City Thunder','4',31), ('Derrick Rose','Chicago Bulls',1,23),('Luol Deng','Chicago Bulls',9,26),('Carlos Boozer','Chicago Bulls',5,30),('Kyle

Korver','Chicago Bulls','26',30),('Taj Gibson','Chicago

Bulls',22,26),('Joakim Noah','Chicago Bulls',13,26),('Ronnie

Brewer','Chicago Bulls',11,26),('C.J. Watson','Chicago

Bulls',32,27),('Keith Bogans','Chicago Bulls',6,31),('Omer

Asik','Chicago Bulls',3,25),

('Amar`e Stoudemire','New York Knicks',1,29),('Carmelo

Anthony','New York Knicks',7,27),('Chauncey Billups','New York

Knicks',4,35),('Toney Douglas','New York Knicks',23,25),('Landry

Fields','New York Knicks',6,23),('Shawne Williams','New York

Knicks',3,25),('Bill Walker','New York Knicks',5,24),('Ronny

Turiaf','New York Knicks',14,28),('Shelden Williams','New York

Knicks',13,28),('Derrick Brown','New York Knicks',2,24)

select*from scancategory

(2)每支球队插入:

INSERT everyteam(teamID,combatgains,teamcapital,teamname) VALUES (001,0.54,2500,'Houston Rockets'),(002,0.75,2650,'Chicago Bulls'),(003,0.50,2750,'Detroit Pistons'),(004,0.65,2700,'Oklahoma City Thunder'),(005,0.54,3200,'New York

Knicks'),(006,0.61,2800,'Portland Trail Blazers')

(3)球员数据插入:

INSERT playerdata

(playerID,playername,spg,rpg,ppg,bpg,apg,mpg,FT,Fromthree,j umpershot)

VALUES ('a','Tracy

McGrady',3.21,5.4,25.5,1.21,5.6,0.32,89.5,42.5,45.4),

('b','Thabo

Sefolosha',1.21,5.4,25.5,1.21,5.6,0.32,89.5,42.5,40.4),

('c','Rodney

Stuckey',2.21,5.4,25.5,1.21,5.6,0.32,89.5,42.5,30.4),

('d','Chauncey

Billups',2.21,5.4,25.5,1.21,5.6,0.32,89.5,42.5,45.4),

('e','Austin

Daye',1.31,5.4,25.5,1.21,5.6,0.32,89.5,42.5,40.4),

('f','Landry

Fields',0.21,8.4,25.5,1.21,5.6,0.32,89.5,42.5,35.4)

(4)球员号码插入:

INSERT playernum(playerID,

player1to20,player20to40,player40up,playername)

VALUES ('a',1,0,0,'Tracy McGrady'),('b',2,0,0,'Thabo

Sefolosha'),('c',3,0,0,'Rodney Stuckey'),('d',4,0,0,'Chauncey

Billups'),('e',5,0,0,'Austin Daye'),('f',6,0,0,'Landry Fields') select*from playernum

(5)球员插入:

INSERT Player

(playerID,playername,playerNO,playerage,playercapital,teamID,te amname)

VALUES ('a','Tracy McGrady',1,32,249,003,'Detroit

Pistons'),

('b','Thabo Sefolosha',2,27,132,004,'Oklahoma City Thunder'),

('c','Rodney Stuckey',3,25,142,003,'Detroit

Pistons'),

('d','Chauncey Billups',4,37,239,005,'New York

Knicks'),

('e','Austin Daye',5,23,47,003,'Detroit Pistons'),

('f','Landry Fields',6,23,34,005,'New York Knicks')(6)球员年龄插入:

INSERT playerage

(playerID,playeradd,player20to23,player23to27,player27to32,player 32up,playername)

VALUES ('a',0,0,0,32,0,'Tracy McGrady'),('b',0,0,27,0,0,'Thabo Sefolosha'),('c',0,0,25,0,0,'Rodney

Stuckey'),('d',0,0,0,0,37,'Chauncey Billups'),('e',0,23,0,0,0,'Austin Daye'),('f',0,23,0,0,0,'Landry Fields')

select*from playerage

(7)管理员插入:

INSERT Administrator(ADMID,age,city,name,sex)

VALUES ('aa',21,'chongqing','li','G'),

('bb',22,'sichuan','tang','B'),

('cc',23,'beijing','liyi','G')

(8)登录用户插入:

INSERT Registrant(funID,age,lcity,lname,sex,lkey) VALUES ('aaa',20,'shanghai','tang','B','369258'),

('bbb',21,'beijing','li','G','741852'),

('ccc',22,'chongqing','liyi','G','123456')

3.6数据库表的查询用法:

3.6.1数据库表多条件查询:

查询球员年龄表(playerage)中年龄大于27且小于33球员:

SELECT playername,playerID,player27to32FROM playerage

where player27to32>27 AND player27to32<33

查询球员球员号码表(playernum)中号码大于0小于5球员:

SELECT playername,playerID,player1to20FROM playernum

where player1to20>0 AND player1to20<5

3.6.2数据库表排序查询:

按球员号码由大到小排序:

SELECT

playername,playerID,playercapital,teamname,teamID,playerage,playerNO FROM player

ORDER BY playerNO desc

3.6.3数据库表嵌套查询:

按球员表(player)中年龄最大的球员:

SELECT playername,playerID,teamname,teamID,playerNO FROM player WHERE playerage=(SELECT MAX(playerage)FROM player)

3.6.4数据库表模糊查询:

按球员表(player)中所在球队为D开头的查询:

SELECT playername,playerID,teamname,playerNO,teamID FROM player WHERE teamname like'D%'

3.6.5数据库表的修改或删除:

修改管理员表中(name=tang)的修改,并加对年龄age+2:

UPDATE Administrator

SET age=age+2

WHERE name='tang'

SELECT*from Administrator

(删除Registrantd中的lcity为shanghai的用户者)

DELETE Registrant

WHERE lcity='shanghai'

select*from Registrant

删除登录用户表中(lcity=shanghai)的删除:

DELETE Registrant

WHERE lcity='shanghai'

select*from Registrant

3.6.6数据库表分组查询:

在球员数据表(playerdata)中抢断(spg)大于1.0的查询:

SELECT playername,

'抢断大于1的球员'=MIN(spg)FROM playerdata

GROUP BY playername

HAVING MIN(spg)>1.0

4数据库的高级编程:

/*创建球员数据的视图,场均得分(ppg)大于的球员的场均助攻(apg)加2*/

CREATE VIEW vwplayerdata

AS

SELECT

playerID,playername,spg,rpg,ppg,bpg,apg,mpg,FT,Fromthree,ju mpershot FROM playerdata

WHERE ppg>20

GO

SELECT*FROM vwplayerdata

UPDATE vwplayerdata SET apg=apg+2

SELECT*FROM vwplayerdata

场均助攻(apg)加2之后:

/*在表球员数据(playerdata)中,根据输入球员名字,返回场均得分,场均助攻,场均篮板,场均抢断,场均盖帽。代码如下*/

CREATE PROCEDURE prplayerdata

@playername char(25)

AS

BEGIN

SELECT playerdata.playername,ppg,apg,spg,rpg,bpg FROM playerdata JOIN player ON playerdata.playername=player.playername

JOIN scancategory ON player.playername=scancategory.playername WHERE playerdata.playername=@playername

END

GO

EXEC prplayerdata'Tracy McGrady'

/*创建表afteraddage的触发器,自动在球员年龄增大后增加*/

CREATE TRIGGER trafteraddage

ON playerage

FOR INSERT

AS

BEGIN

DECLARE@playerID AS char(10),@player20to23AS char(25),@player23to27 AS char(25),@player27to32AS char(25),@player32up AS

char(25),@playername AS char(25),@playeradd AS smallint

SELECT@playername=playername,@playeradd=playeradd

FROM inserted

UPDATE player

SET playerage=playerage+@playeradd

WHERE playername=@playername

END

/*创建playerdalete事务删除球员名为Rodney Stuckey的球员*/

DECLARE@tname VARCHAR(30)

SELECT@tname='playerdelete'

BEGIN TRAN@tname

GO

USE Player

GO

DELETE FROM player WHERE playername='Rodney Stuckey'

GO

DELETE FROM playerage WHERE playername='Rodney Stuckey' GO

DELETE FROM playerdata WHERE playername='Rodney Stuckey' GO

DELETE FROM playernum WHERE playername='Rodney Stuckey' GO

DELETE FROM scancategory WHERE playername='Rodney Stuckey' GO

COMMIT TRAN

5系统的安全:

5.1登录服务器的账号创建:

相关文档