大型数据库技术设计报告题目:网络游戏信息管理系统数据库设计学生: 易进学号: 201317030119 专业班级: 网工13101班指导教师: 波涛设计时间: 2015年下学期指导老师意见:评定成绩:签名: 日期:目录1.需求分析 (1)2.概念模型设计 (1)1.玩家信息E-R图(如图1所示) (1)2.游戏信息E-R图(如图2所示) (2)3.排行信息E-R图(如同3所示) (2)4.交易信息E-R图(如图4所示) (3)5.游戏币信息E-R图(如图5所示) (3)6.整体简洁E-R图(如图6所示) (4)7.用户信息E-R图(如图7所示) (4)3.逻辑结构设计 (5)1.关系模型设计 (5)2.数据库表结构的设计 (5)4.数据库的实现 (7)1.创建玩家信息表 (7)2.向玩家信息表中插入记录 (8)3.在表空间上创建游戏表 (9)4.向游戏表中插入记录 (9)5.创建排行信息表 (9)6.向排行信息表中插入记录 (10)7.创建交易信息表 (10)8.向交易信息表中插入记录 (10)9.创建游戏币信息表 (11)10.向游戏币信息表中插入记录 (11)11.创建用户信息表 (11)12.向用户信息表中插入记录 (12)13.建立外键和CHCEK约束 (12)5.主要代码 (13)1.查询代码 (13)2.创建视图 (17)3.创建存储过程 (18)6.数据库备份 (20)1.导出数据 (20)s1.需求分析要现玩家信息管理、游戏介绍、成绩排行等功能,包括玩家信息的添加、修改、删除及查询;按游戏类型、关键字等实现网络游戏的灵活查询;实现游戏币销售等功能。
2.概念模型设计1.玩家信息E-R图(如图1所示)图1玩家信息E-R图图2游戏信息E-R图3.排行信息E-R图(如同3所示)图3排行信息E-R图图4职务信息E-R图5.游戏币信息E-R图(如图5所示)图5考勤信息E-R图6.整体简洁E-R图(如图6所示)图6整体简洁E-R图7.用户信息E-R图(如图7所示)图7用户信息E-R图3.逻辑结构设计1.关系模型设计1)玩家信息对应的关系模型玩家(玩家编号(主键),,性别,游戏编号(外键),等级,充值总金额2)游戏信息对应的关系模型游戏(游戏编号(主键),游戏名称,运营公司,上线时间)3)排行信息对应的关系模型排行(游戏编号(外键),游戏人数,充值总金额)4)交易信息对应的关系模型交易(交易编号(主键),玩家编号,游戏编号,RMB金额,交易时间)5)考勤信息对应的关系模型考勤(员工编号(主键一部分),日期(主键一部分),请假次数,迟到次数,缺勤次数)6)用户信息对应的关系模型用户(用户名,密码,权限)2.数据库表结构的设计1)玩家信息表结构2)游戏信息表结构3)排行信息表结构4)交易信息表结构5)游戏币信息表结构4.数据库的实现1.创建玩家信息表CREATE TABLE player(pid int primary key,pname varchar(10),sex varchar(2),gid int,levels int,money int);2.向玩家信息表中插入记录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,27,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 values(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 into 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);insert into player values(25,'五','女',4,60,5);3.在表空间上创建游戏表CREATE TABLE game(gid int 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,'炫舞','休闲','腾讯', '2012-6-1');insert into game values(5,'模拟人生','模拟','腾讯', '2010-2-25');5.创建排行信息表CREATE TABLE rank(gid int,peoplesum int,moneysum int);6.向排行信息表中插入记录insert into rank values(1,25216020,35000);insert into rank values(2,26514260,250000);insert into rank values(3,215656560,205000);insert into rank values(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 salerecord 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-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');9.创建游戏币信息表CREATE TABLE gameb(gid int,RMB int,gameb int);10.向游戏币信息表中插入记录insert into gameb values(1,8,800);insert into gameb 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));12.向用户信息表中插入记录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)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('男','女'));5.主要代码1.查询代码1)查询王五的等级select levels from playerwhere player.pname='王五';2)查询模拟戏人生的运营公司select operating_company from YH.dbo.gamewhere game.gname ='模拟人生';3)查看游戏排行按游戏人数排列select distinct game.gname,rank.peoplesum,rank.moneysum from YH.dbo.game,YH.dbo.rankwhere rank.gid= game.gidorder by peoplesum desc;4)查询DOTA2所有玩家信息select player.* from YH.dbo.player,YH.dbo.gamewhere game.gname='DOTA2' and game.gid = player.gid;5)查询玩家及玩家所玩游戏名称select player.pid,player.pname,game.gname,player.levels from YH.dbo.player,YH.dbo.gamewhere player.gid=game.gid;6)查询四玩家的所有交易记录select salerecord.* from YH.dbo.salerecord,YH.dbo.playerwhere player.pname='四'and player.pid=salerecord.pid;7)查询英雄联盟的玩家排行表按等级排列select player.* from YH.dbo.player,YH.dbo.gamewhere game.gname='英雄联盟' and player.gid=game.gidorder by levels desc;8)查询炫舞玩家的总充值金额select sum(player.money) 炫舞充值总金额 from YH.dbo.game,YH.dbo.playerwhere game.gname='炫舞' and player.gid =game.gid;9)查看所有充值金额超过50的玩家的名称和游戏select game.gname,player.pname,salerecord.RMB from YH.dbo.game,YH.dbo.salerecord,YH.dbo.playerwhere salerecord.RMB>50 and salerecord.pid=player.pid and player.gid=game.gid;10)查询与吞噬天地有交易的玩家的信息按交易金额降序排列select player.*,salerecord.RMB from YH.dbo.salerecord,YH.dbo.game,YH.dbo.playerwhere game.gname='吞噬天地' and game.gid=salerecord.gid and salerecord.pid = player.pidorder by salerecord.RMB desc;2.创建视图1)创建视图统计各个游戏的玩家数量。