《网络游戏信息管理系统.docx》由会员分享,可在线阅读,更多相关《网络游戏信息管理系统.docx(23页珍藏版)》请在三一办公上搜索。
1、大型数据库技术设计报告题目: 网络游戏信息管理系统数据库设计学生姓名 :易进学号:201317030119专业班级 :网工 13101班指导教师 :刘波涛设计时间 :2015年下学期指导老师意见:评定成绩 :签名:日期:目录1.需求分析 .12.概念模型设计 .11.玩家信息 E-R图(如图1 所示) .12.游戏信息 E-R图(如图2 所示) .23.排行信息 E-R图(如同3 所示) .24.交易信息 E-R图(如图4 所示) .35.游戏币信息 E-R图(如图 5 所示) .36.整体简洁 E-R图(如图6 所示) .47.用户信息 E-R图(如图7 所示) .43.逻辑结构设计 .51
2、.关系模型设计 .52.数据库表结构的设计 .54.数据库的实现 .71.创建玩家信息表 .72.向玩家信息表中插入记录.83.在表空间上创建游戏表.94.向游戏表中插入记录 .95.创建排行信息表 .96.向排行信息表中插入记录.107.创建交易信息表 .108.向交易信息表中插入记录.109.创建游戏币信息表 .1110.向游戏币信息表中插入记录 .1111.创建用户信息表. 1112.向用户信息表中插入记录. 1213.建立外键和 CHCEK约束. 125.主要代码 .131.查询代码 .132.创建视图 .173.创建存储过程 .186.数据库备份 .201.导出数据 .20s1. 需
3、求分析要求实现玩家信息管理、游戏介绍、成绩排行等功能,包括玩家信息的添加、修改、删除及查询;按游戏类型、关键字等实现网络游戏的灵活查询;实现游戏币销售等功能。2. 概念模型设计1. 玩家信息 E-R 图(如图 1 所示)昵称性别玩家编号玩家游戏编号充值总金额等级图 1 玩家信息E-R 图12. 游戏信息 E-R 图(如图 2 所示)上线时间游戏编号游戏类型游戏游戏名称运营公司图 2 游戏信息E-R 图3. 排行信息 E-R 图(如同 3 所示)充值总金游戏编号排行游戏人数图3 排行信息E-R 图24. 交易信息 E-R 图(如图 4 所示)交易编号交易时间交易玩家编号RMB玩家编号图 4 职务
4、信息E-R 图5. 游戏币信息E-R 图(如图5 所示)RMB游戏编号游戏币游戏币3图 5 考勤信息E-R 图6. 整体简洁 E-R 图(如图 6 所示)玩家玩家编号交易信息游戏编号游戏排行图 6 整体简洁E-R 图7. 用户信息 E-R 图(如图 7 所示)用密码户名用户权限图 7 用户信息E-R 图43. 逻辑结构设计1. 关系模型设计1) 玩家信息对应的关系模型玩家(玩家编号(主键) ,姓名,性别,游戏编号(外键),等级,充值总金额2) 游戏信息对应的关系模型游戏(游戏编号(主键) ,游戏名称,运营公司,上线时间)3) 排行信息对应的关系模型排行(游戏编号(外键) ,游戏人数,充值总金额
5、)4) 交易信息对应的关系模型交易(交易编号(主键) ,玩家编号,游戏编号,RMB金额,交易时间)5) 考勤信息对应的关系模型考勤(员工编号 ( 主键一部分 ) ,日期(主键一部分) ,请假次数,迟到次数,缺勤次数)6) 用户信息对应的关系模型用户(用户名,密码,权限)2. 数据库表结构的设计1) 玩家信息表结构52) 游戏信息表结构3) 排行信息表结构4) 交易信息表结构65) 游戏币信息表结构4. 数据库的实现1. 创建玩家信息表CREATE TABLE player(pid int primary key,pname varchar(10),sex varchar(2),gid int,
6、levels int,money int);72. 向玩家信息表中插入记录insert into player values(1, 张三 ,男 ,1,58,51);insert into player values(2, 李四 ,男 ,1,59,58);insert into player values(3, 王五 ,男 ,2,27,65);insert into player values(4, 赵六 ,男 ,2,25,25);insert into player values(5, 徐涛 ,男 ,2,29,5);insert into player values(6, 石头 ,男 ,3,2
7、7,53);insert into player values(7, 陈子文 ,男 ,3,25,5);insert into player values(8, 王灿 ,女 ,4,66,35);insert into player values(9, 徐香气 ,女 ,4,66,25);insert into player values(10, 郭俊明 ,男 ,5,6,45);insert into player values(11, 王一 ,男,4,66,35);insert into player values(12, 王二 ,女,3,6,5);insert into player value
8、s(13, 王三 ,男,4,66,30);insert into player values(14, 王四 ,女,2,76,35);insert into player values(15, 王五五 ,女 ,4,66,35);insert into player values(16, 王六 ,女,1,89,3);insert into player values(17, 王七,女 ,4,54,35);insert into player values(18, 王八 ,男,2,66,31);insert into player values(19, 王九 ,女,4,86,35);insert i
9、nto player values(20, 王十 , 女,1,66,37);insert into player values(21, 赵一 ,男,4,66,54);insert into player values(22, 赵二 ,女,3,66,35);insert into player values(23, 赵三 ,男,1,69,38);insert into player values(24, 赵四 ,男,5,66,39);8insert into player values(25, 赵五 , 女,4,60,5);3. 在表空间上创建游戏表CREATE TABLE game(gid i
10、nt primary key,gname varchar(10),type varchar(5) NOT NULL,operating_company varchar(10),birth_date date);4. 向游戏表中插入记录insert into game values(1,吞噬天地 ,网游 ,网易 , 2014-9-1);insert into game values(2,英雄联盟 ,竞技 ,腾讯 , 2010-5-20);insert into game values(3,DOTA2,竞技 ,暴雪 , 2006-1-30);insert into game values(4,炫舞
11、 ,休闲 ,腾讯 , 2012-6-1);insert into game values(5, 模拟人生 ,模拟 ,腾讯 , 2010-2-25);5. 创建排行信息表CREATE TABLE rank(gid int,peoplesum int,moneysum int);96. 向排行信息表中插入记录insert into rank values(1,25216020,35000);insert into rank values(2,26514260,250000);insert into rank values(3,215656560,205000);insert into rank v
12、alues(4,2515540,350000);insert into rank values(5,1655620,3000);7. 创建交易信息表CREATE TABLE salerecord(saleid int primary key,pid int,gid int,RMB int,saledate date);8. 向交易信息表中插入记录insert into salerecord values(1,1,2,35000,2014-9-1); insert into salerecord values(2,2,3,250000,2013-8-12); insert into salere
13、cord values(3,3,4,205000,2014-9-12); insert into salerecord values(4,4,1,350000,2012-7-21); insert into salerecord values(5,5,4,7000,2014-9-3); insert into salerecord values(6,11,4,35050,2010-3-1); insert into salerecord values(7,6,5,50010,2014-4-17); insert into salerecord values(8,9,2,935000,2009-
14、8-5); insert into salerecord values(9,6,3,835000,2015-3-14); insert into salerecord values(10,18,1,3215000,2010-3-11); insert into salerecord values(11,22,2,1325000,2014-3-1);109. 创建游戏币信息表CREATE TABLE gameb(gid int,RMB int,gameb int);10. 向游戏币信息表中插入记录insert into gameb values(1,8,800);insert into game
15、b values(2,9,9000);insert into gameb values(3,65,6500);insert into gameb values(4,5,500);insert into gameb values(5,25,25000);insert into gameb values(6,25,2500);insert into gameb values(7,25,2500);11. 创建用户信息表create table users(username char(10) not null,password char(30) not null,juris char(30);111
16、2. 向用户信息表中插入记录insert into users(username,password,juris)values(YH,123, 所有权限 );insert into users(username,password,juris)values(YH00,123, 查询 );13. 建立外键和 CHCEK 约束alter table playeradd constraint player_game foreign key (gid)references game(gid);alter table rankadd constraint rank_game foreign key (gid
17、)references game(gid);alter table salerecordadd constraint salerecord_player foreign key (pid)references player(pid);alter table salerecordadd constraint salerecord_game foreign key (gid)references game(gid);alter table playeradd constraint check_sex check (sex in(男, 女);125. 主要代码1. 查询代码1) 查询王五的等级sel
18、ect levels from playerwhere player.pname=王五 ;2) 查询模拟戏人生的运营公司select operating_company from YH.dbo.gamewhere game.gname = 模拟人生 ;3) 查看游戏排行按游戏人数排列selectdistinctgame.gname,rank.peoplesum,rank.moneysumfromYH.dbo.game,YH.dbo.rankwhere rank.gid= game.gid13orderbypeoplesumdesc;4) 查询 DOTA2所有玩家信息select player.
19、* from YH.dbo.player,YH.dbo.gamewheregame.gname=DOTA2andgame.gid=player.gid;5) 查询玩家及玩家所玩游戏名称selectplayer.pid,player.pname,game.gname,player.levelsfromYH.dbo.player,YH.dbo.game14whereplayer.gid=game.gid;6) 查询李四玩家的所有交易记录select salerecord.* from YH.dbo.salerecord,YH.dbo.playerwhereplayer.pname=李四andpla
20、yer.pid=salerecord.pid;7) 查询英雄联盟的玩家排行表按等级排列select player.* from YH.dbo.player,YH.dbo.gamewhere game.gname= 英雄联盟 and player.gid=game.gid15orderbylevelsdesc;8) 查询炫舞玩家的总充值金额select sum(player.money)炫舞充值总金额from YH.dbo.game,YH.dbo.playerwhere game.gname= 炫舞 and player.gid =game.gid;9) 查看所有充值金额超过 50 的玩家的名称
21、和游戏selectgame.gname,player.pname,salerecord.RMBfromYH.dbo.game,YH.dbo.salerecord,YH.dbo.player16wheresalerecord.RMB50andsalerecord.pid=player.pidandplayer.gid=game.gid;10) 查询与吞噬天地有交易的玩家的信息按交易金额降序排列selectplayer.*,salerecord.RMBfromYH.dbo.salerecord,YH.dbo.game,YH.dbo.playerwheregame.gname= 吞 噬 天 地 an
22、dgame.gid=salerecord.gidandsalerecord.pid = player.pidorder by salerecord.RMB desc;2. 创建视图1) 创建视图统计各个游戏的玩家数量。按玩家编号升序排列 create view vw_count asselect distinct game.gid,game.gname,count(player.pid) player from YH.dbo.game,YH.dbo.playerwhere game.gid= player.gid17group by game.gid,game.gnameorder by ga
23、me.gid;2) 调用视图( sal_avg )中的记录 select * from vw_count;3. 创建存储过程1) 创建存储过程,使某玩家升级( levelup ) create procedure leveluppname varchar(10) asbeginupdate YH.dbo.player set player.levels=player.levels+1where player.pname=pname;end;张三升级了exec levelup pname=张三 ;182) 创建一个删除玩家的存储过程create procedure delpid intasbegindelete YH.dbo.salerecord where salerecord.pid=pid;delete YH.dbo.player where player.pid=pid;commit;end;执行存储过程exec del pid=3;196. 数据库备份1. 导出数据20