您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 数据库大作业-三国战略2
数据库设计报告-------------------模拟三国策略游戏数据库院系:软件学院班级:软件0903班组员:卢鹏洲(200992042)组员:马英杰(200992214)日期2011/11/1一、业务规则我们数据库设计的构思来自于平时玩的三国题材游戏。根据游戏中武将、城池、势力、军队、人物关系等各种信息,以及建设、战斗、查看情报等各种功能,提出一种可以实现游戏部分功能的数据库设计方案。在此,我们首先分析游戏的要实现的功能主要包括:1.情报查看:用户(以下统称玩家)可以查看各个势力、军团、城池的情报。2.任命太守:玩家将一名武将设置为一座城池的太守,太守可在城池中执行内政命令。3.城池经营:城池经营包涵两个分支功能,一个是内政,内政由城池的太守执行(执行效果由智力决定),内政提高城市的治安,治安越高兵粮增加越快。另一个是征兵,选取一个武将对一只部队进行征兵,征兵数量由武将武力决定。4.攻打城池:选择己方的一个城池发动对敌方一个城池的进攻,攻打时以部队为单位,每只部队由一到两名武将带领。5.输送:将部队或武将由一个城池转移到另一个城池。游戏过程中的主要功能为以上几种,我们的数据库就围绕上述功能设计,尽管要形成一个游戏还有很多细小零碎的功能,其余和数据库关系不大的功能在此就不赘述了。二、业务流程1.情报查看:玩家执行情报查看功能,相关数据操作如下:1.1“实力情报显示”玩家发出的查看命令,系统显示各势力总体情报。1.2“军团情报显示”玩家选择一个势力,显示该势力军团情报。1.3“城池武将情报显示”选择一个军团,显示该军团城池武将情报。势力情报显示势力数据信息玩家势力信息势力选择指令势力列表军团情报信息军团情报显示查看情报命令军团信息军团数据信息军团选择指令城池武将情报信息城池情报信息城池数据信息军团信息城池信息城池信息武将数据信息武将信息军团选择信息势力选择信息图1玩家查看情报数据流图2.任命太守:玩家指定一位武将,再指定一座己方城池,将该武将设置为该城池太守,玩家相关数据操作如下:1.1“城池列表显示”1.2“选择城池”玩家选择城池,选择信息传给系统2.1“武将列表显示”2.2“选择武将”玩家选择城池、和太守,选择信息传给系统3.1“修改武将所在”3.2“计算城池太守能力”系统根据玩家指令修改城池3.3“太守能力修改”生成新的太守数据。玩家选择武将选择城池计算城池太守能力修改武将所在城池数据信息武将数据信息城池选择指令武将选择指令城池、太守信息城池选择信息赴任城池信息城池太守信息新任太守信息武将所在修改信息城池表城池列表显示城池列表武将列表显示武将列表武将表选城指令选将指令太守能力修改太守能力信息太守数据信息图2太守任命数据流图3.城池经营-内政:玩家选择城池,根据该城太守智力增加城池治安,相关数据操作如下:1.1“城池列表显示”1.2“城池选择”玩家根据系统给出的城池表选择城池,选择信息传给系统2.1“治安计算”系统根据所选城池最大治安值和太守智力计算出新治安值,并修改城池数据玩家城池选择城池列表城池选择信息城池列表显示选城指令太守数据信息城池数据信息治安计算城池表指定城池信息所选城池太守信息新治安值治安最大值图3内政指令数据流图4.城池经营-征兵:玩家选择城池,之后选择武将、部队,让该武将对该部队执行征兵,相关数据操作如下:1.1“城池列表显示”1.2“选择城池”根据系统提供城池表选择城池2.1“武将、部队显示”系统根据所选城池生成武将\部队表2.2“选择武将、部队”由玩家选择执行武将和部队3.1“计算征兵数”系统根据玩家选择计算,然后修改相应数据玩家选择武将、部队选择城池计算征兵数城池数据信息武将数据信息城池选择指令城池选择信息武将、部队信息城池兵力增加信息城池表城池列表显示城池列表武将、部队显示武将、部队列表武将表选城指令武将信息备选武将信息武将、部队选择指令部队数据信息部队表部队增编信息图4征兵指令数据流图5.攻打城池:有玩家选择一个敌对城池,选择由己方武将和部队编成的军队,将所选数据交给系统,系统计算输赢,修改城池、武将、部队信息,数据流图如下:玩家1.1攻城指令处理攻城指令2.1选攻处理2.2选派处理己方选派指令选攻城池指令城池数据信息可选敌对城池表选攻信息选派表单选派信息敌城表我方城池表选派部队信息2.3计算生成军队被攻打城池信息2.4攻城计算处理军队信息武将数据信息部队数据信息武将候选表部队候选表2.5战果处理战役数据城池更新数据武将所属修改数据部队更新数据图5攻城指令数据流图6.输送:玩家选择一个城池的部队或武将,转移到另一城池,对两城数据以及转移武将、部队数据进行修改,数据流图如下:玩家1.1起点城处理输送指令表单生成指令2.1生成输送候选表城池数据信息部队数据信息武将数据信息候选城池表候选部队表候选武将表执行指令2.2输送处理部队修改信息武将修改信息城池修改信息图6输送指令数据流图三、概念设计图7整体ER图四、逻辑设计势力表:军团表:城池表:部队表:兵种表:太守表:武将表:武将关系表:关系表:如图所示,有钥匙标示的是表的主键,如城池的城池名,有的表不含有主键只是作为外部键,如太守表、武将关系表中没有主键五、规范化设计第一范式势力(势力名,君主,)军团(军团名,所属势力,军团长)城池(城池名,所属军团,所属势力,太守)太守(镇守城,名字,战力值,农业值)武将(武将名,驻守城,势力,武力,智力)武将关系(武将名,关系武将,关系)部队(部队名,兵种,驻扎城池)兵种(兵种名,地战力,山战力,水战力,城战力)第二范式同以上第一范式第三范式势力(势力名,君主,)军团(军团名,所属势力,军团长)城池(城池名,所属军团,太守)武将(武将名,驻守城,武力,智力)太守(镇守城,名字,战力值,农业值)武将关系(武将名,关系武将,关系)部队(部队名,兵种,驻扎城池)兵种(兵种名,地战力,山战力,水战力,城战力)BC范式同以上第三范式六、物理设计建表语句:CREATETABLE[dbo].[势力]([势力名][char](20)NOTNULL,[君主][char](20)NULL,CONSTRAINT[PK_势力_1]PRIMARYKEYCLUSTERED([势力名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]CREATETABLE[dbo].[兵种]([兵种名][char](20)NOTNULL,[地战力][int]NULL,[水战力][int]NULL,[山战力][int]NULL,[城战力][int]NULL,CONSTRAINT[PK_兵种]PRIMARYKEYCLUSTERED([兵种名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]CREATETABLE[dbo].[关系]([武将名][char](20)NULL,[关系][char](20)NULL,[关系武将][char](20)NULL)ON[PRIMARY]CREATETABLE[dbo].[太守]([镇守城][char](20)NULL,[名字][char](20)NOTNULL,[战力值][int]NULL,[农业值][int]NULL)ON[PRIMARY]CREATETABLE[dbo].[武将]([武将名][char](20)NOTNULL,[武力][int]NULL,[智力][int]NULL,[势力][char](20)NULL,[驻守城][char](20)NULL,CONSTRAINT[PK_武将]PRIMARYKEYCLUSTERED([武将名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]CREATETABLE[dbo].[军团]([军团名][char](20)NOTNULL,[军团长][char](20)NULL,[所属势力][char](20)NULL,CONSTRAINT[PK_军团]PRIMARYKEYCLUSTERED([军团名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]CREATETABLE[dbo].[城池]([城池名][char](20)NOTNULL,[太守名][char](20)NULL,[军团名][char](20)NULL,[势力名][char](20)NULL,[兵数][int]NULL,CONSTRAINT[PK_城池]PRIMARYKEYCLUSTERED([城池名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]CREATETABLE[dbo].[部队]([部队名][char](20)NOTNULL,[驻扎城池][char](20)NULL,[兵种][char](20)NULL,CONSTRAINT[PK_部队]PRIMARYKEYCLUSTERED([部队名]ASC)WITH(PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]关系语句:ALTERTABLE[dbo].[关系]WITHCHECKADDCONSTRAINT[FK_关系_武将]FOREIGNKEY([武将名])REFERENCES[dbo].[武将]([武将名])ALTERTABLE[dbo].[关系]CHECKCONSTRAINT[FK_关系_武将]ALTERTABLE[dbo].[太守]WITHCHECKADDCONSTRAINT[FK_太守_城池]FOREIGNKEY([镇守城])REFERENCES[dbo].[城池]([城池名])ALTERTABLE[dbo].[太守]CHECKCONSTRAINT[FK_太守_城池]ALTERTABLE[dbo].[太守]WITHCHECKADDCONSTRAINT[FK_太守_武将]FOREIGNKEY([名字])REFERENCES[dbo].[武将]([武将名])ALTERTABLE[dbo].[太守]CHECKCONSTRAINT[FK_太守_武将]ALTERTABLE[dbo].[武将]WITHCHECKADDCONSTRAINT[FK_武将_城池]FOREIGNKEY([驻守城])REFERENCES[dbo].[城池]([城池名])ALTERTABLE[dbo].[武将]CHECKCONSTRAINT[FK_武将_城池]ALTERTABLE[dbo].[武将]WITHCHECKADDCONSTRAINT[FK_武将_势力]FOREIGNKEY([势力])REFERENCES[dbo].[势力]([势力名])ALTERTABLE[dbo].[武将]CHECKCONSTRAINT[FK_武将_势力]ALTERTABLE[dbo].[军团]WITHCHECKADDCONSTRAINT[FK_军团_势力]FOREIGNKEY([所属势力])REFERENCES[dbo].[势力]([势力名])ALTERTABLE[dbo].[军团]CHECKCONSTRAINT[FK_军团_势力]ALTERTABLE[dbo].[城池]WITHCHECKADDCONSTRAINT[FK_城池_军团]FOREIGNKEY([军团名])REFERENCES[dbo].[军团]([军团名])ALTERTABLE[dbo].[城池]CHECKCONSTRAINT[FK_城池_军团]ALTERTABLE[dbo].[部队]WITHCHECKADDCONSTRAINT[FK_部队_兵种]FOREIGNKEY([兵种])REFERENCES[dbo].[兵种]([兵种名])ALTERTABLE[dbo].[部队]CHECKCO
本文标题:数据库大作业-三国战略2
链接地址:https://www.777doc.com/doc-827293 .html