软件工程综合实践专题第一次作业

软件工程综合实践专题第一次作业

题目:NBA数据库程序分析

来源:SQL SERVER数据库课程同学的小组大作业

 

create table Coach_information(

   cname char(20) primary key,

   tname char(20),

   age  int,

 )

insert into Coach_information values('卢克沃顿','洛杉矶湖人','38')

insert into Coach_information values('史蒂夫科尔','金州勇士','50')

insert into Coach_information values('迈克德安东尼','休斯敦火箭','67')

insert into Coach_information values('布拉德史蒂文斯','波士顿凯尔特人','42')

select * from Coach_information

create table Team_information(

   tname char(20) primary key,

   qiuguan_name  char(20),

   cname char(20) foreign key references Coach_information(cname)

 )

insert into Team_information values('洛杉矶湖人','斯台普斯中心','卢克沃顿')

insert into Team_information values('金州勇士','甲骨文球馆','史蒂夫科尔')

insert into Team_information values('休斯敦火箭','丰田中心','迈克德安东尼')

insert into Team_information values('波士顿凯尔特人','TD花园','布拉德史蒂文斯')

select * from Team_information

  create table Match_information(

   match_time char(20) unique,

   tname char(20) primary key,

   vname char(20)

 )

insert into Match_information values('2019.6.11_9:00','洛杉矶湖人','波士顿凯尔特人')

insert into Match_information values('2019.4.28_8:00','金州勇士','休斯敦火箭')

select * from Match_information

 

create table Player_information(

   pname char(50) primary key,

   age  int,

   height  float,

   weighet float,

   weizhi  char(20),

   number  int,

   tname char(20),

   foreign key (tname)references Team_information(tname)

 )

insert into Player_information values('勒布朗詹姆斯',33,2.03,113,'SF/PF',23,'洛杉矶湖人')

insert into Player_information values('布兰登英格拉姆',21,2.06,86,'SF',14,'洛杉矶湖人')

insert into Player_information values('朗佐鲍尔',21,1.98,86,'PG',2,'洛杉矶湖人')

insert into Player_information values('凯尔库兹马',23,2.06,100,'SF',0,'洛杉矶湖人')

insert into Player_information values('贾维尔麦基',30,2.13,122,'C',7,'洛杉矶湖人')

insert into Player_information values('斯蒂芬库里',30,1.91,86,'PG',30,'金州勇士')

insert into Player_information values('凯文杜兰特',30,2.06,109,'SF',35,'金州勇士')

insert into Player_information values('克莱汤普森',28,2.03,98,'PG',11,'金州勇士')

insert into Player_information values('德雷蒙德格林',28,2.01,104,'PF',23,'金州勇士')

insert into Player_information values('德马库斯考辛斯',28,2.11,122,'C',0,'金州勇士')

insert into Player_information values('克里斯保罗',33,1.83,79,'PG',3,'休斯敦火箭')

insert into Player_information values('詹姆斯哈登',29,1.96,100,'PG',13,'休斯敦火箭')

insert into Player_information values('克林特卡佩拉',24,2.11,109,'C',15,'休斯敦火箭')

insert into Player_information values('埃里克戈登',29,1.93,98,'PF',10,'休斯敦火箭')

insert into Player_information values('PJ塔克',33,1.98,111,'PF',17,'休斯敦火箭')

insert into Player_information values('戈登海沃德',28,2.03,102,'SF',20,'波士顿凯尔特人')

insert into Player_information values('凯里欧文',26,1.91,88,'PG',11,'波士顿凯尔特人')

insert into Player_information values('杰森塔图姆',20,2.03,93,'SF',0,'波士顿凯尔特人')

insert into Player_information values('艾尔霍福德',32,2.08,111,'C/PF',42,'波士顿凯尔特人')

insert into Player_information values('马库斯斯马特',24,1.93,100,'PG',36,'波士顿凯尔特人')

 

create table Player_data

(

  pname char(20) primary key,

  time float,

  score int,

  backboard int,

  assist int,

  steal int,

  block_shot int,

  match_time char(20) foreign key references Match_information(match_time)

)

insert into Player_data values('勒布朗詹姆斯',43,34,10,2,1,0,'2019.6.11_9:00')

insert into Player_data values('布兰登英格拉姆',35,20,5,6,2,1,'2019.6.11_9:00')

insert into Player_data values('朗佐鲍尔',36,25,6,4,6,0,'2019.6.11_9:00')

insert into Player_data values('凯尔库兹马',34,20,10,3,5,0,'2019.6.11_9:00')

insert into Player_data values('贾维尔麦基',30,9,10,10,3,8,'2019.6.11_9:00')

insert into Player_data values('斯蒂芬库里',39,28,5,7,0,0,'2019.4.28_8:00')

insert into Player_data values('凯文杜兰特',40,20,7,5,1,1,'2019.4.28_8:00')

insert into Player_data values('克莱汤普森',36,20,2,3,0,0,'2019.4.28_8:00')

insert into Player_data values('德雷蒙德格林',38,15,9,11,4,0,'2019.4.28_8:00')

insert into Player_data values('德马库斯考辛斯',35,30,10,5,11,6,'2019.4.28_8:00')

insert into Player_data values('克里斯保罗',40,28,10,4,2,0,'2019.4.28_8:00')

insert into Player_data values('詹姆斯哈登',39,30,8,3,4,1,'2019.4.28_8:00')

insert into Player_data values('克林特卡佩拉',30,9,2,3,4,5,'2019.4.28_8:00')

insert into Player_data values('埃里克戈登',32,16,3,5,6,7,'2019.4.28_8:00')

insert into Player_data values('PJ塔克',28,14,4,5,0,0,'2019.4.28_8:00')

insert into Player_data values('戈登海沃德',39,20,4,2,3,5,'2019.6.11_9:00')

insert into Player_data values('凯里欧文',40,30,10,3,4,0,'2019.6.11_9:00')

insert into Player_data values('杰森塔图姆',39,30,9,2,4,0,'2019.6.11_9:00')

insert into Player_data values('艾尔霍福德',30,10,3,4,5,9,'2019.6.11_9:00')

insert into Player_data values('马库斯斯马特',27,18,3,4,0,0,'2019.6.11_9:00')

 

 

create table yonghu(

   account char(20) primary key,

   phone   char(20),

   password char(20)

    pri     int

 )

insert into yonghu values('1759240','17609396094','heyixuan',0)

insert into yonghu values('1759233','17521577265','xhy',1)

select * from yonghu

 

create table user_favor(

account char(20) primary key,

flag int,

pname char(20)

 

 

create procedure Player

@pname char(50)

as select Player_information.pname 姓名,age 年龄,height 身高,weighet 体重,weizhi 位置,number 号码,tname 所属运动队,上场时间,得分,篮板,助攻,抢断,盖帽

from Player_information join(select pname,avg(time) 上场时间,avg(score) 得分,avg(backboard) 篮板,avg(assist) 助攻,avg(steal) 抢断,avg(block_shot) 盖帽 from Player_data group by pname) A on Player_information.pname=A.pname

where Player_information.pname=@pname

 

 

exec Player'詹姆斯哈登'

go

 

 

create view 洛杉矶湖人 as

select team_information.tname,team_information.qiuguan_name,player_information.pname,player_information.age,player_information.height,player_information.weighet,player_information.weizhi,player_information.number

from team_information,player_information

where team_information.tname=player_information.tname and team_information.tname='洛杉矶湖人'

 

create view 金州勇士 as

select team_information.tname,team_information.qiuguan_name,player_information.pname,player_information.age,player_information.height,player_information.weighet,player_information.weizhi,player_information.number

from team_information,player_information

where team_information.tname=player_information.tname and team_information.tname='金州勇士'

 

create view 休斯敦火箭 as

select team_information.tname,team_information.qiuguan_name,player_information.pname,player_information.age,player_information.height,player_information.weighet,player_information.weizhi,player_information.number

from team_information,player_information

where team_information.tname=player_information.tname and team_information.tname='休斯敦火箭'

 

 

create view 波士顿凯尔特人 as

select team_information.tname,team_information.qiuguan_name,player_information.pname,player_information.age,player_information.height,player_information.weighet,player_information.weizhi,player_information.number

from team_information,player_information

where team_information.tname=player_information.tname and team_information.tname='波士顿凯尔特人'

 

select * from 金州勇士

select * from 洛杉矶湖人

select * from 波士顿凯尔特人

select * from 休斯敦火箭

 

 

delete Player_information where pname='朗佐鲍尔'

 

create trigger delete_player

on player_information

after delete

as

begin

   declare @pname char(8)

   select @pname=pname from deleted

   delete player_data where pname=@pname

   select @pname as'退役球员'

   end

 

 

create table score1(

score1 float,

pname1 char(20)

)

 

declare Score cursor

for

select score,pname from Player_data

 

open Score

 

 

declare @score float

declare @pname char(20)

 

 

fetch next from Score into @score,@pname

while @@fetch_status=0

begin

fetch next from Score into @score,@pname

end

begin

insert into score1

values(@score,@pname)

fetch next from Score into @score,@pname

end

close Score

deallocate Score

 

select pname=pname1,score=max(score1)

from score1

group by pname1

 

 

create procedure time_perform(@weizhi char)

as

select Player_data.pname as ‘球员姓名’, time as ‘上场时间’ from Player_data

join Player_information

on Player_information.pname = Player_data.pname

where weizhi = @weizhi

order by time desc

go

 

exec time_perform 'C'

 

 

//存储过程

create proc StuProc(@pname char(20),@username char(20))

as

begin

    if(@pname is not null and @username is not null)

     begin

     

        insert into user_favor(pname,account)

         values(@pname,@username)

      end

 

end

//对数据进行更新操作

create trigger trg_content_insert

on user_favor

instead of insert

as

declare @content varchar(20),@c int,@content1 char(20)

select @content=pname from inserted;

select @content1=account from inserted;

select @c=count(1) from user_favor where pname=@content and account=@content1;

if @c>0

 update user_favor set flag=flag+1 where pname=@content and account=@content1;

else

 begin

  insert into user_favor select * from inserted;

  update user_favor set flag=1;

   end

go

//测试

exec StuProc '凯文杜兰特','1759240'

 

 

create trigger tri_noedit_name

on Player_data

instead of update

as

declare @fla int

select @fla=(select pri from user_favor where account='1759240')

if update(score) and @fla=0

begin

print('你没有权限!')

rollback tran

end

//测试

update Player_data

set score=100

where pname='凯文杜兰特'

 

 

功能:该数据库可以对比赛的信息,球员的信息,球队教练信息以及球员在比赛中的表现进行查询。有一个存储过程,可以显示特定球员的球员信息和球员平均数据。有一个触发器,删除球员信息的同时可以删除球员数据。有一个游标,当查询球员数据时显示MVP。有一个存储过程,可以查询特定位置上的球员数据排名。有一个触发器,可以识别用户等级,在更新数据的时候,若等级不够,则无法更改。有一个存储过程,可以记录用户喜好。

心得体会:该程序数据库的表结构科学,关系模式清晰,主键和外键使用正确,用SQL语句能完成一些基本的需求功能。功能明确,涵盖了用户所需要的功能,在此之上也有创新,增加的用户等级识别功能和记录用户喜好功能使程序更人性化,更符合用户的使用习惯。

遇到的问题:该数据库程序没有一个便于用户使用、易于操作的窗口程序。

解决办法:用JDBC把SQL SERVER与JAVA连接开发一个窗口程序。

转载于:https://www.cnblogs.com/consoler/p/10480009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值