ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:384.70KB ,
资源ID:8303312      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8303312.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库大作业三国战略2.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库大作业三国战略2.docx

1、数据库大作业三国战略2数据库设计报告-模拟三国策略游戏数据库院系: 软件学院 班级: 软件0903班 组员: 卢鹏洲(200992042)组员: 马英杰(200992214) 日期 2011/11/1一、业务规则我们数据库设计的构思来自于平时玩的三国题材游戏。根据游戏中武将、城池、势力、军队、人物关系等各种信息,以及建设、战斗、查看情报等各种功能,提出一种可以实现游戏部分功能的数据库设计方案。 在此,我们首先分析游戏的要实现的功能主要包括:1.情报查看:用户(以下统称玩家)可以查看各个势力、军团、城池的情报。2.任命太守:玩家将一名武将设置为一座城池的太守,太守可在城池中执行内政命令。3.城池

2、经营:城池经营包涵两个分支功能,一个是内政,内政由城池的太守执行(执行效果由智力决定),内政提高城市的治安,治安越高兵粮增加越快。另一个是征兵,选取一个武将对一只部队进行征兵,征兵数量由武将武力决定。 4.攻打城池:选择己方的一个城池发动对敌方一个城池的进攻,攻打时以部队为单位,每只部队由一到两名武将带领。5.输送:将部队或武将由一个城池转移到另一个城池。游戏过程中的主要功能为以上几种,我们的数据库就围绕上述功能设计,尽管要形成一个游戏还有很多细小零碎的功能,其余和数据库关系不大的功能在此就不赘述了。二、 业务流程1.情报查看:玩家执行情报查看功能,相关数据操作如下:1.1“实力情报显示”玩家

3、发出的查看命令,系统显示各势力总体情报。1.2“军团情报显示”玩家选择一个势力,显示该势力军团情报。1.3“城池武将情报显示”选择一个军团,显示该军团城池武将情报。图 1 玩家查看情报数据流图2任命太守:玩家指定一位武将,再指定一座己方城池,将该武将设置为该城池太守,玩家相关数据操作如下:1.1“城池列表显示”1.2“选择城池”玩家选择城池,选择信息传给系统2.1“武将列表显示”2.2“选择武将”玩家选择城池、和太守,选择信息传给系统3.1“修改武将所在”3.2“计算城池太守能力”系统根据玩家指令修改城池3.3“太守能力修改”生成新的太守数据。 图 2 太守任命数据流图3.城池经营-内政:玩家

4、选择城池,根据该城太守智力增加城池治安,相关数据操作如下:1.1“城池列表显示”1.2“城池选择”玩家根据系统给出的城池表选择城池,选择信息传给系统2.1“治安计算”系统根据所选城池最大治安值和太守智力计算出新治安值,并修改城池数据 图 3 内政指令数据流图4.城池经营-征兵:玩家选择城池,之后选择武将、部队,让该武将对该部队执行征兵,相关数据操作如下:1.1“城池列表显示”1.2“选择城池”根据系统提供城池表选择城池2.1“武将、部队显示”系统根据所选城池生成武将部队表2.2“选择武将、部队”由玩家选择执行武将和部队3.1“计算征兵数”系统根据玩家选择计算,然后修改相应数据 图4 征兵指令数

5、据流图5.攻打城池:有玩家选择一个敌对城池,选择由己方武将和部队编成的军队,将所选数据交给系统,系统计算输赢,修改城池、武将、部队信息,数据流图如下: 图 5 攻城指令数据流图6.输送:玩家选择一个城池的部队或武将,转移到另一城池,对两城数据以及转移武将、部队数据进行修改,数据流图如下: 图 6 输送指令数据流图三、 概念设计 图 7 整体ER图四、 逻辑设计势力表:军团表:城池表:部队表:兵种表:太守表:武将表:武将关系表:关系表:如图所示,有钥匙标示的是表的主键,如城池的城池名,有的表不含有主键只是作为外部键,如太守表、武将关系表中没有主键五、 规范化设计第一范式势力(势力名,君主,)军团

6、(军团名,所属势力,军团长)城池(城池名,所属军团,所属势力,太守)太守(镇守城,名字,战力值,农业值)武将(武将名,驻守城,势力,武力,智力)武将关系(武将名,关系武将,关系)部队(部队名,兵种,驻扎城池)兵种(兵种名,地战力,山战力,水战力,城战力)第二范式 同以上第一范式第三范式势力(势力名,君主,)军团(军团名,所属势力,军团长)城池(城池名,所属军团,太守)武将(武将名,驻守城,武力,智力)太守(镇守城,名字,战力值,农业值)武将关系(武将名,关系武将,关系)部队(部队名,兵种,驻扎城池)兵种(兵种名,地战力,山战力,水战力,城战力)BC范式 同以上第三范式六、 物理设计建表语句:C

7、REATE TABLE dbo.势力( 势力名 char(20) NOT NULL, 君主 char(20) NULL, CONSTRAINT PK_势力_1 PRIMARY KEY CLUSTERED ( 势力名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARYCREATE TABLE dbo.兵种( 兵种名 char(20) NOT NULL, 地战力 int NULL, 水战力 int NULL, 山战力 int NULL, 城战力 int NULL, CONSTRAINT PK_兵种 PRIM

8、ARY KEY CLUSTERED ( 兵种名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARYCREATE TABLE dbo.关系( 武将名 char(20) NULL, 关系 char(20) NULL, 关系武将 char(20) NULL) ON PRIMARYCREATE TABLE dbo.太守( 镇守城 char(20) NULL, 名字 char(20) NOT NULL, 战力值 int NULL, 农业值 int NULL) ON PRIMARYCREATE TABLE dbo.

9、武将( 武将名 char(20) NOT NULL, 武力 int NULL, 智力 int NULL, 势力 char(20) NULL, 驻守城 char(20) NULL, CONSTRAINT PK_武将 PRIMARY KEY CLUSTERED ( 武将名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARYCREATE TABLE dbo.军团( 军团名 char(20) NOT NULL, 军团长 char(20) NULL, 所属势力 char(20) NULL, CONSTRAINT

10、PK_军团 PRIMARY KEY CLUSTERED ( 军团名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARYCREATE TABLE dbo.城池( 城池名 char(20) NOT NULL, 太守名 char(20) NULL, 军团名 char(20) NULL, 势力名 char(20) NULL, 兵数 int NULL, CONSTRAINT PK_城池 PRIMARY KEY CLUSTERED ( 城池名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DU

11、P_KEY = OFF) ON PRIMARY) ON PRIMARYCREATE TABLE dbo.部队( 部队名 char(20) NOT NULL, 驻扎城池 char(20) NULL, 兵种 char(20) NULL, CONSTRAINT PK_部队 PRIMARY KEY CLUSTERED ( 部队名 ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY关系语句:ALTER TABLE dbo.关系 WITH CHECK ADD CONSTRAINT FK_关系_武将 FOREIGN

12、KEY(武将名)REFERENCES dbo.武将 (武将名)ALTER TABLE dbo.关系 CHECK CONSTRAINT FK_关系_武将ALTER TABLE dbo.太守 WITH CHECK ADD CONSTRAINT FK_太守_城池 FOREIGN KEY(镇守城)REFERENCES dbo.城池 (城池名)ALTER TABLE dbo.太守 CHECK CONSTRAINT FK_太守_城池ALTER TABLE dbo.太守 WITH CHECK ADD CONSTRAINT FK_太守_武将 FOREIGN KEY(名字)REFERENCES dbo.武将 (

13、武将名)ALTER TABLE dbo.太守 CHECK CONSTRAINT FK_太守_武将ALTER TABLE dbo.武将 WITH CHECK ADD CONSTRAINT FK_武将_城池 FOREIGN KEY(驻守城)REFERENCES dbo.城池 (城池名)ALTER TABLE dbo.武将 CHECK CONSTRAINT FK_武将_城池ALTER TABLE dbo.武将 WITH CHECK ADD CONSTRAINT FK_武将_势力 FOREIGN KEY(势力)REFERENCES dbo.势力 (势力名)ALTER TABLE dbo.武将 CHEC

14、K CONSTRAINT FK_武将_势力ALTER TABLE dbo.军团 WITH CHECK ADD CONSTRAINT FK_军团_势力 FOREIGN KEY(所属势力)REFERENCES dbo.势力 (势力名)ALTER TABLE dbo.军团 CHECK CONSTRAINT FK_军团_势力ALTER TABLE dbo.城池 WITH CHECK ADD CONSTRAINT FK_城池_军团 FOREIGN KEY(军团名)REFERENCES dbo.军团 (军团名)ALTER TABLE dbo.城池 CHECK CONSTRAINT FK_城池_军团ALTE

15、R TABLE dbo.部队 WITH CHECK ADD CONSTRAINT FK_部队_兵种 FOREIGN KEY(兵种)REFERENCES dbo.兵种 (兵种名)ALTER TABLE dbo.部队 CHECK CONSTRAINT FK_部队_兵种ALTER TABLE dbo.部队 WITH CHECK ADD CONSTRAINT FK_部队_城池 FOREIGN KEY(驻扎城池)REFERENCES dbo.城池 (城池名)ALTER TABLE dbo.部队 CHECK CONSTRAINT FK_部队_城池七、 SQL部分1.查看蜀国城池情报select * fro

16、m 城池where 势力名=蜀2.零陵增兵30000update 城池set 兵数=(select 新兵数=a.兵数+30000 from (select 兵数 from 城池where 城池名=零陵) a )where 城池名=零陵3.零陵攻城部队选择列表的查询select a.武将名,a.武力,a.智力,b.部队名,b.兵种from(select * from 武将where 驻守城=零陵) a,(select * from 部队where 驻扎城池=零陵) b4.假如选择 卢鹏州-零陵1 生成新表需要新查询select a.武将名,a.武力,a.智力,b.部队名,b.兵种from(sel

17、ect * from 武将where 驻守城=零陵) a,(select * from 部队where 驻扎城池=零陵) bwhere a.武将名卢鹏州 and b.部队名零陵15.列出所有可能的吴魏两国武将配对 显示两名武将的所在城池 以及武力差值select a.武将名,a.驻守城,b.武将名,b.驻守城,difference=(a.武力-b.武力)from 武将a , 武将bwhere a.武将名b.武将名and a.武力b.武力and a.势力=魏 and b.势力=吴6.假设武力和智力与兵数的换算是1:20,与在零陵的卢鹏州相比更为有实力的是,输出城池和武将(重新设置零陵兵力为120

18、00)select a.武将名,a.驻守城,a.总兵数 ,b.武将名,b.驻守城,b.总兵数from(select 武将名,驻守城,总兵数=(20*(武力+智力)+兵数) from 武将,城池where 驻守城=城池名)a,(select 武将名,驻守城,总兵数=(20*(武力+智力)+兵数) from 武将,城池where 驻守城=城池名)bwhere a.武将名=卢鹏州 and a.总兵数b.总兵数7.不在同一势力却有朋友关系的武将,输出武将和势力select a.武将名,a.势力,b.武将名,b.势力,关系from 关系,武将a ,武将bwhere 关系.武将名=a.武将名and 关系武

19、将=b.武将名and a.势力b.势力8.输出在地面上实力最强的城池部队(包括太守的能力值)select 战力=(地战力+战力值),镇守城,部队名,兵种,势力from 部队,兵种,太守,武将where 兵种=兵种名and 镇守城=驻扎城池and 名字=武将名and 势力=魏 order by 战力desc; 9.输出魏蜀前线军团中总兵数和蜀魏前线军团总兵数,并算出差值select a.总兵数,b.总兵数,差值=(a.总兵数-b.总兵数) from(select sum(兵数) 总兵数from 城池group by 军团名having 军团名=魏蜀前线军)a , (select sum(兵数) 总兵数from 城池group by 军团名having 军团名=蜀魏前线军)b10.可以带领弩兵部队的武将select 武将名,城池名,部队名from 城池,部队,武将where 驻守城=城池名and 城池名=驻扎城池and 兵种=弩兵;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1