MySql课程设计

您所在的位置:网站首页 游戏装备系统设计 MySql课程设计

MySql课程设计

2024-07-04 04:20| 来源: 网络整理| 查看: 265

1 概述 选题的背景与意义

当前游戏行业无论国内外都欣欣向荣。国内随着版号发放逐渐趋于正常,与游戏相关的政策逐步明确与实施,游戏管理越来越多样化与精细化,与游戏版权相关的法律法规日益完善,无疑是促进了游戏这个上千亿的产业逐步走向正轨,让各游戏开发者们能够安心下来开发游戏,专注与游戏内容的表达。近年来国内游戏频频报出喜讯。像根据西游故事改编创作的单机买断制游戏《黑神话:悟空》,其实机演示视频一经放出就引得无数国内外玩家的大量关注,纷纷表示“出必买”(游戏出了必买)、“shut up and take my money!”(闭嘴,把我的钱拿走);有原创的动作冒险RPG开放世界多端游戏《原神》,上线一个月包括我国在内的多国游戏月收入榜单排名第一,独占鳌头,超过国民级游戏《王者荣耀》,其扎实的内容和技术功底给国内外玩家带去了全新的视听体验,同年获得TGA最佳移动游戏大奖。国外游戏行业也佳作频出。以中国白眉拳为动作原型开发的游戏《师父》(SIFU)一经上市就引起国内外玩家对中国功夫的讨论,纷纷表示其还原程度高、动作丰富优美、打击感强,获得TGA最佳动作、最佳单机、最佳战斗提名;2022年年初上市的游戏《艾尔登法环》,这部由日本FROM SOFTWARE工作室开发、《冰与火之歌》作者乔治马丁编写游戏背景故事的大型开放世界类魂游戏,是本年度现象级游戏作品。上市一个月狂卖1600万份,各路游戏媒体评分普遍满分,在玩家圈子里更是热闹非凡,无不惊叹于FROM SOFTWARE带来的极致视觉艺术与无与伦比的游玩体验,毫无意外地,该游戏获得了TGA最佳年度游戏大奖。

本次MySQL课程设计也将以《艾尔登法环》内装备信息为基准,尝试在一定条件下设计出符合逻辑的游戏装备信息管理系统。

相关技术分析

MySQL是一个开放源代码的关系型数据库管理系统,可以将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。而我用的是MySQL 8.0版本,此版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。并利用MySQL图形化工具MySQL Workbench,该工具可以方便地创建数据库、表、视图和索引等,还可以方便地进行插入、更新和删除等操作,同时可以方便地进行数据库、数据表的备份和还原。

系统功能设计 系统总体结构设计图

2.2 系统功能模块 2.2.1 模块功能

总共10个对象,各个对象包含的信息如下:

(1)玩家装备信息管理:该对象主要包含玩家编号、装备名称与装备等级,可以修改、删除、添加和查询玩家装备信息,包括攻击力、减伤率等信息。

(2)装备基本信息管理:包含有关装备的所有基本信息,该信息不跟随装备等级的提升而改变,存储装备的不变属性信息,比如装备名称、装备3D资源等。计算机可以查询并显示该信息。添加装备信息时等于在游戏中增加了某个装备。

(3)装备攻击力信息管理:在装备等级为1级时,包含攻击时产生效果的所有数值,比如物理攻击力数值,火攻击力数值等,跟随装备等级的变化而变化,但该表只存储装备等级为1级时的攻击力信息。(实际上这些数值不仅跟随装备等级变化,还跟随玩家属性等级变化,比如玩家力气属性提高,该装备的物理攻击力也会提高,此外还有单持武器与双持武器、是否达到必须能量值等也会发生攻击力的变化,这里由于只涉及装备信息管理,因此做了简化)。计算机可以查询并显示该信息。

(4)装备防御时减伤率信息管理:在装备等级为1级时,包含装备防御时减伤率的所有信息,比如物理减伤率信息,火减伤率信息等,同样跟随装备等级的变化而变化,但该表只存储装备等级为1级时的减伤率信息。(简化策略与攻击力相同)。计算机可以查询并显示该信息。

(5)装备能力加成信息管理:在装备等级为1级时,包含装备能力加成等级信息,等级信息从高到低有ABCDE五个等级,比如装备对玩家力气属性的加成等级为A级,则会根据相应的算法计算出装备攻击力和减伤率中受力气属性影响的数值,并作为而外数值添加到相应的攻击力和减伤率属性中去。这里同样因为只涉及装备信息管理,该算法不会具体呈现,只会根据装备等级变化而改变加成等级。计算机可以查询并显示该信息。

(6)装备必须能量值信息管理:包含玩家能够使用该武器的玩家属性所必须到达的值,比如某武器力气必须能量值为30,则该玩家的力气属性必须到达30才可以发挥出武器的全部攻击力,该信息一般不跟随武器等级的变化而变化。计算机可以查询并显示该信息。

(7)装备攻击时附加效果信息管理:包含攻击时对攻击对象产生的附加效果名和附加效果值,该信息一般不跟随装备等级的变化而变化。计算机可以查询并显示该信息。

(8)装备攻击力等级转化信息管理:包含装备等级提升时对应属性攻击力随等级变化的参数,比如物理属性参数为5时,等级提升一级,装备物理攻击力提高5。计算机可以查询并显示一条信息。

(9)装备减伤率等级转化信息管理:包含装备等级提升时对应属性减伤率随等级变化的参数,比如物理属性参数为5时,等级提升一级,装备物理减伤率提高5%。计算机可以查询并显示一条信息。

(10)装备能力加成等级转化信息管理:加成等级的变化为跳跃式变化,每次只能跳跃一级(从E到D,从B到A,S省略),这里我设置了一个等级跳变值属性,当等级到该值时发生一次跳变,一件装备的等级跳跃次数一般不超过两次(可用一个参数存储多个值的算法,比如整形数68,表示装备在6级和8级时发生跳变,只需取出它的十位和个位数即可;也可以是字符串类型“68”,每次取出一个即可)。计算机可以查询并显示一条信息。

3 数据库设计 3.1 需求分析 3.1.1 功能分析

(1)该系统能够实现玩家装备信息管理、装备基本信息管理等功能。

(2)每个装备有装备名称、装备类型、3D模型资源名等基础信息。

(3)每个装备还有攻击力信息、减伤率信息、能力加成信息、必须能量值信息、附加效果信息,每个信息又可以细分为不同的信息。

(4)每个装备属性还有跟随等级转化的信息。

(5)计算机可以查询这些信息。

(6)计算机可以根据玩家装备等级信息计算出相应的信息,比如某件3级装备攻击力信息。

3.1.2 功能要求

(1)装备等级的录入。

(2)装备各个信息的初始化。

(3)装备各个信息的添加与修改。

(4)玩家装备信息依照等级转化信息完成计算并显示。

(5)装备各个信息的查询。

3.1.3 装备信息添加与更新流程

3.1.4 表结构设计

(1)玩家装备信息表,主要用于存储玩家的装备以及装备等级。

表1 玩家装备表(per_equipment)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Pno

Char

玩家编号

10

2

Ename

Char

装备名称

10

3

Elevel

Int

装备等级

4

(2)装备基本信息表,存储不受装备等级而变化的信息。

表2 装备基本信息表(equipment)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

1

Ename

Char

装备名称

10

2

Etype

Char

装备类型

10

3

E3D

Char

3D资源名

20

4

E2D

Char

2D资源名

20

5

Eskill_name

Char

装备技能名

20

6

Eweight

Float

装备重量

4

7

Elevel_max

Int

等级上限

2

(3)装备攻击力信息表,存储装备各属性攻击力,能够在玩家升级装备时更新。

表3 装备攻击力信息表(demage)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

ADm

Float

物理伤害

8

3

MDm

Float

魔力伤害

8

4

FDm

Float

火属性伤害

8

5

LDm

Float

雷属性伤害

8

6

HDm

Float

圣属性伤害

8

7

CS

Float

致命一击

8

(4)装备减伤率信息表,存储装备防御时各属性减伤率,能够在玩家升级装备时更新。

表4装备减伤率信息表(defense)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

ADf

Float

物理减伤率

4

3

MDf

Float

魔力减伤率

4

4

FDf

Float

火属性减伤率

4

5

LDf

Float

雷属性减伤率

4

6

HDf

Float

圣属性减伤率

4

7

DS

Float

防御强度

4

(5)装备能力加成信息表,存储能力加成等级信息。

表5装备能力加成信息表(ability_bonus)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

Strength_bn

Char

力气

1

3

Dexterity_bn

Char

灵巧

1

4

Intelligence_bn

Char

智力

1

5

Belief_bn

Char

信仰

1

6

Inductive_bn

Char

感应

1

(6)装备必须能量值信息表,只与装备名相关,存储使用该装备的最低属性值。

表6装备必须能量值信息表(mustbe_ability)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

Strength_mb

Int

力气

2

3

Dexterity_mb

Int

灵巧

2

4

Intelligence_mb

Int

智力

2

5

Belief_mb

Int

信仰

2

6

Inductive_mb

Int

感应

2

(7)装备附加效果信息表,只与装备名相关,存储攻击时给攻击对象附加的效果。

表7装备附加效果信息表(additional_effects)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

AEname

Char

附加效果名

10

3

AEvalue

Int

附加效果值

2

(8)装备攻击力等级转化表,只与装备名有关,存储装备升级时攻击力的递增参数。

表8装备攻击力等级转化表(dm_Level_trans)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

ADm_p

Float

物理递增参数

5

3

MDm_p

Float

魔力递增参数

5

4

FDm_p

Float

火递增参数

5

5

LDm_p

Float

雷递增参数

5

6

HDm_p

Float

圣递增参数

5

(9)装备减伤率等级转化表,只与装备名有关,存储装备升级时减伤率的变化参数。

表9装备减伤率等级转化表(df_Level_trans)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

ADf_p

Float

物理递增参数

4

3

MDf_p

Float

魔力递增参数

4

4

FDf_p

Float

火递增参数

4

5

LDf_p

Float

雷递增参数

4

6

HDf_p

Float

圣递增参数

4

(10)装备能力加成等级转化表,只与装备名有关,存储装备升级时加成等级的变化参数。

表10装备能力加成等级转化表(bn_Level_trans)

编号

字段名

字段类型

字段注释

是否为空

字段长度

是否为主键

是否为外键

1

Ename

Char

装备名称

10

2

Strength_bn_p

Int

力气加成跳变参数

2

3

Dexterity_bn_p

Int

灵巧加成跳变参数

2

4

Intelligence_bn_p

Int

智力加成跳变参数

2

5

Belief_bn_p

Int

信仰加成跳变参数

2

6

Inductive_bn_p

Int

感应加成跳变参数

2

3.1.5 数据字典

数据项,系统涉及的数据项有48项。见表11。

表11 数据项表

数据项编号

数据项名称

别名

类型长度

描述

1

Pno

玩家编号

Char(10)

玩家编号

2

Ename

装备名称

Char(10)

装备名称

3

Elevel

装备等级

Int

装备等级

4

Etype

装备类型

Char(10)

装备类型

5

E3D

3D资源名

Char(20)

3D资源名

6

E2D

2D资源名

Char(20)

2D资源名

7

Eskill_name

装备技能名

Char(20)

装备技能名

8

Eweight

装备重量

Float

装备重量

9

Elevel_max

等级上限

Int

等级上限

10

ADm

物理伤害

Float

物理伤害

11

MDm

魔力伤害

Float

魔力伤害

12

FDm

火属性伤害

Float

火属性伤害

13

LDm

雷属性伤害

Float

雷属性伤害

14

HDm

圣属性伤害

Float

圣属性伤害

15

CS

致命一击

Float

致命一击

16

ADf

物理减伤率

Float

物理减伤率

17

MDf

魔力减伤率

Float

魔力减伤率

18

FDf

火属性减伤率

Float

火属性减伤率

19

LDf

雷属性减伤率

Float

雷属性减伤率

20

HDf

圣属性减伤率

Float

圣属性减伤率

21

DS

防御强度

Float

防御强度

22

Strength_bn

力气

Char(1)

力气加成等级

23

Dexterity_bn

灵巧

Char(1)

灵巧加成等级

24

Intelligence_bn

智力

Char(1)

智力加成等级

25

Belief_bn

信仰

Char(1)

信仰加成等级

26

Inductive_bn

感应

Char(1)

感应加成等级

27

Strength_mb

力气

Int

必须力气值

28

Dexterity_mb

灵巧

Int

必须灵巧值

29

Intelligence_mb

智力

Int

必须智力值

30

Belief_mb

信仰

Int

必须信仰值

31

Inductive_mb

感应

Int

必须感应值

32

AEname

附加效果名

Char(10)

附加效果名

33

AEvalue

附加效果值

Int

附加效果值

34

ADm_p

物理递增参数

Float

物理递增参数

35

MDm_p

魔法递增参数

Float

魔法递增参数

36

FDm_p

火递增参数

Float

火递增参数

37

LDm_p

雷递增参数

Float

雷递增参数

38

HDm_p

圣递增参数

Float

圣递增参数

39

ADf_p

物理递增参数

Float

物理递增参数

40

MDf_p

魔法递增参数

Float

魔法递增参数

41

FDf_p

火递增参数

Float

火递增参数

42

LDf_p

雷递增参数

Float

雷递增参数

43

HDf_p

圣递增参数

Float

圣递增参数

44

Strength_bn_p

力气加成跳变参数

Int

力气加成跳变参数

45

Dexterity_bn_p

灵巧加成跳变参数

Int

灵巧加成跳变参数

46

Intelligence_bn_p

智力加成跳变参数

Int

智力加成跳变参数

47

Belief_bn_p

信仰加成跳变参数

Int

信仰加成跳变参数

48

Inductive_bn_p

感应加成跳变参数

Int

感应加成跳变参数

3.1.6 数据结构

数据结构见表11。

表11 数据结构表

数据结构编号

数据结构名

含义

组成

1

Per_equipment

玩家装备表

Pno,Ename,Elevel

2

equipment

装备基本信息表

Ename,Etype,E3D,E2D,Eskill_name,Eweight,level_max

3

demage

装备攻击力信息表

Pno,Ename,Adm,MDm,FDm,LDm,HDm,CS

4

defense

装备减伤率信息表

Pno,Ename,ADf,MDf,FDf,LDf,HDf,DS

5

ability_bonus

装备能力加成信息表

Pno,Ename,Strength_bn,Dexterity_bn,Intelligence_bn,Belief_bn,Inductive_bn

6

mustbe_ability

装备必须能量值信息表

Ename,Strength_mb,Dexterity_mb,Intelligence_mb,Belief_mb,Inductive_mb

7

additional_effects

装备附加效果信息表

Ename,AEname,AEvalue

8

dm_Level_trans

装备攻击力等级转化表

Ename,ADm_p,MDm_p,FDm_p,LDm_p,HDm_p

9

df_Level_trans

装备减伤率等级转化表

Ename,ADf_p,MDf_p,FDf_p,LDf_p,HDf_p

10

bn_Level_trans

装备能力加成等级转化表

Ename,Strength_bn_p,Dexterity_bn_p,Intelligence_bn_p,Belief_bn_p,Inductive_bn_p

3.1.7 数据存储表

数据存储表见表12。

表12 数据存储表

编号

数据存储名

输入的数据流

输出的数据流

组成

1

玩家装备

玩家装备信息

玩家装备信息

玩家,装备

2

装备基本信息

装备信息

装备信息

装备

3

装备攻击力

装备攻击力信息

装备攻击力信息

装备,攻击力

4

装备减伤率

装备减伤率信息

装备减伤率信息

装备,减伤率

5

能力加成

能力加成信息

能力加成信息

装备,能力加成

6

必须能量值

必须能量值信息

必须能量值信息

装备,必须能量值

7

附加效果

附加效果信息

附加效果信息

装备,附加效果

8

攻击力等级转化

攻击力递增参数信息

攻击力递增后信息

装备,攻击力递增参数

9

减伤率等级转化

减伤率递增参数信息

减伤率递增后信息

装备,减伤率递增参数

10

能力加成等级转化

加成跳变参数信息

加成跳变后信息

装备,加成跳变参数

3.1.8 处理过程

处理过程见表13。

表13 处理过程表

处理过程名

输入数据流

输出数据流

处理

向玩家添加装备信息

玩家编号,装备名称,装备等级

添加成功或失败

将信息存储进玩家装备信息表

提升玩家装备等级

玩家编号,装备名称

强化成功或失败

将等级加1

查询玩家装备攻击力信息

玩家编号,装备名称

装备攻击力信息

根据攻击力等级转化表计算出装备攻击力

查询玩家装备防御率信息

玩家编号,装备名称

装备防御率信息

根据防御率等级转化表计算出装备防御率

查询玩家装备能力加成信息

玩家编号,装备名称

装备能力加成信息

根据能力加成等级转化表计算出装备能力加成信息

查询视图

视图名

视图

查询视图

查询表

表名

查询表

向表中插入信息

表名,数据

插入成功

向特定表中添加数据

删除表中的信息

表名,装备名称

删除成功

向特定表中删除数据

3.2 概念结构设计 3.2.1 E-R图

(1)全局E-R图:

(2)各实体分图:

(3)上述E-R图各实体的属性如下所示(主键加粗,外键下划线):

Equipment(Ename,Etype,E3D,E2D,Eskill_name,Eweight,level_max)

Per_equipment(Pno,Ename,Elevel)

Demage(Ename,Adm,MDm,FDm,LDm,HDm,CS)

Defense(Ename,ADf,MDf,FDf,LDf,HDf,DS)

ability_bonus(Ename,Strength_bn,Dexterity_bn,Intelligence_bn,Belief_bn,Inductive_bn)

mustbe_ability(Ename,Strength_mb,Dexterity_mb,Intelligence_mb,Belief_mb,Inductive_mb)

additional_effects(Ename,AEname,AEvalue)

dm_Level_trans(Ename,ADm_p,MDm_p,FDm_p,LDm_p,HDm_p)

df_Level_trans(Ename,ADf_p,MDf_p,FDf_p,LDf_p,HDf_p)

bn_Level_trans(Ename,Strength_bn_p,Dexterity_bn_p,Intelligence_bn_p,Belief_bn_p,Inductive_bn_p)

3.3 逻辑结构设计 3.3.1 E-R图向关系模式转换原则

(1)一个实体转换为一个表,实体的属性转换为表的列,实体的码转换为表的主键。

(2)实体间的联系根据联系的类型转换如下:

1:1的联系 两个实体分别转换为表后,只要在一个表中增加外键,一般在记录较少的表中增加属性,作为外键,该属性是另一个表的主键。

1:n的联系 在n端的实体对应的表中增加属性,该属性是1端实体对应的主键。

m:n的联系 通过引进一个新表来表达两个实体多对多的联系,新表的主键是由联系两端实体的主键组合而成,同时增加相关的联系属性。

3.3.2 范式的判定(3NF)

(1)范式的判定

Equipment(Ename,Etype,E3D,E2D,Eskill_name,Eweight,level_max) 3NF

Per_equipment(Pno,Ename,Elevel) 3NF

Demage(Ename,Adm,MDm,FDm,LDm,HDm,CS) 3NF

Defense(Ename,ADf,MDf,FDf,LDf,HDf,DS) 3NF

ability_bonus(Ename,Strength_bn,Dexterity_bn,Intelligence_bn,Belief_bn,Inductive_bn)3NF

mustbe_ability(Ename,Strength_mb,Dexterity_mb,Intelligence_mb,Belief_mb,Inductive_mb)3NF

additional_effects(Ename,AEname,AEvalue) 3NF

dm_Level_trans(Ename,ADm_p,MDm_p,FDm_p,LDm_p,HDm_p) 3NF

df_Level_trans(Ename,ADf_p,MDf_p,FDf_p,LDf_p,HDf_p) 3NF

bn_Level_trans(Ename,Strength_bn_p,Dexterity_bn_p,Intelligence_bn_p,Belief_bn_p,Inductive_bn_p)3NF

以上各表均满足第一范式属性是不可分割的基本数据象,第二范式关系属性集中的非主属性完全依赖于候选码,第三范式没有一个非主属性是传递函数依赖于码。

(2)数据依赖

确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。根据需求分析可知:

玩家装备信息表:{(玩家编号,装备名称)->装备等级}

装备基本信息表:{装备名称->装备类型,装备名称->3D资源,装备名称->2D资源,装备名称->装备技能名,装备名称->装备重量,装备名称->等级最大值}

装备攻击力信息表:{装备名称->物理攻击力,装备名称->魔力攻击力,装备名称->火属性攻击力,装备名称->雷属性攻击力,装备名称->圣属性攻击力,装备名称->致命一击}

装备减伤率信息表:{装备名称->物理减伤率,装备名称->魔力减伤率,装备名称->火属性减伤率,装备名称->雷属性防御力,装备名称->圣属性减伤率,装备名称->防御强度}

装备能力加成信息表:{装备名称->力气加成等级,装备名称->灵巧加成等级,装备名称->智力加成等级,装备名称->信仰加成等级,装备名称->感应加成等级}

装备必须能量值信息表:{装备名称->力气,装备名称->灵巧,装备名称->智力,装备名称->信仰,装备名称->感应}

装备攻击力等级转化表:{装备名称->物理递增值,装备名称->魔力递增值,装备名称->火属性递增值,装备名称->雷属性递增值,装备名称->圣属性递增值}

装备附加效果信息表:{装备名称->效果名,装备名称->效果值}

装备减伤率等级转化表:{装备名称->物理递增值,装备名称->魔力递增值,装备名称->火属性递增值,装备名称->雷属性递增值,装备名称->圣属性递增值}

装备能力加成等级转化表:{装备名称->力气跳变值,装备名称->魔力跳变值,装备名称->智力跳变值,装备名称->信仰跳变值,装备名称->感应跳变值}

3.3.3 子模式的设计(视图)

(1)装备基本信息表

(2)玩家装备信息表

(3)装备攻击力信息表

(4)装备减伤率信息表

(5)装备能力加成信息表

(6)装备必须能量值信息表

(7)装备附加效果信息表

(8)装备攻击力等级转化表

(9)装备减伤率等级转化表

(10)装备能力加成等级转化表

3.4 物理结构设计 3.4.1 存储结构与存取方法

(1)存储结构的确定

确定数据库的存储结构,主要是数据库中数据的存放位置,合理设置系统参数。数据库中的数据主要是指表、索引、聚促、日志、备份等数据。存储结构选择的主要原则是:数据存取时间上的高效性、存储空间的利用率、存储数据的安全性。

(2)存放位置

在数据存放位置之前,要将数据中易变部分和稳定部分适当分离并分开存放;要将数据库管理系统文件和数据库文件分开。如果系统采用多个磁盘和磁盘阵列,将表和索引存放在不同的磁盘上,查询时由于两个驱动器并行工作,可以提高I/O读写速度。为了系统的安全性,一般将日志文件和重要的系统文件存放在多个磁盘上,互为备份。另外,数据库文件和日志文件的备份,由于数据量大,并且只在数据库恢复时使用,所以一般存储在磁带上。

(3)系统配置

DBMS产品一般都提供大量的配置参数,供数据库设计人员和DBA进行数据库的物理结构设计和优化,如用户数,缓冲区,内存配置,物理块的大小等。一般建立数据库时,系统都提供了默认参数,但是默认参数不一定适用每一个应用环境,要做适当的调整。此外,在物理结构设计的参数,只是初步的,要在系统运行阶段根据实际情况进一步调整和优化。

(4)存取方法的选择

索引是数据库表的一个附加表,存储了建立索引猎德值和对应的地址。查询数据时,先在索引中根据查询的条件值找到相关地址,然后在表中存取对应的记录,所以能加快查询速度。但索引本身占用存储空间,索引是系统自维护的。建立索引的一般原则是:

a. 如果某属性或属性组经常出现在查询中,则考虑为该属性或属性组建立索引;

b. 如果某个属性经常作为最大值和最小值等聚集函数的参数,则考虑建立索引;

c. 如果某属性和属性组经常出现在连接操作的连接条件中,则考虑建立索引。

3.4.2 数据的易变与稳定部分

由于基本表per_equipment、equipment、demage、defense、ability_bonus、mustbe_ability、additional_effects、dm_level_trans、df_level_trans、bn_level_trans的主码pno、ename经常在查询条件和连接条件中出现,且它们的值唯一,在这些属性上建立唯一性索引。

3.4.3 索引的建立 CREATE UNIQUE INDEX unidx_per ON per_equipment(pno,ename); CREATE UNIQUE INDEX unidx_equ ON equipment(ename); CREATE UNIQUE INDEX unidx_dem ON demage(ename); CREATE UNIQUE INDEX unidx_def ON defense(ename); CREATE UNIQUE INDEX unidx_abi ON ability_bonus(ename); CREATE UNIQUE INDEX unidx_mus ON mustbe_ability(ename); CREATE UNIQUE INDEX unidx_add ON additional_effects(ename); CREATE UNIQUE INDEX unidx_dml ON dm_level_trans(ename); CREATE UNIQUE INDEX unidx_dfl ON df_level_trans(ename); CREATE UNIQUE INDEX unidx_bnl ON bn_level_trans(ename); 3.5 数据库、表建立代码

(1)创建数据库:

CREATE DATABASE `equipment_ms` ;

(2)装备基本信息表:

CREATE TABLE `equipment_ms`.`equipment` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `etype`CHAR(10) NOT NULL COMMENT '装备类型', `e3d`CHAR(20) NULL COMMENT '3d资源名', `e2d`CHAR(20) NULL COMMENT '2d资源名', `eskill_name`CHAR(20) NULL COMMENT '装备技能名', `ewight`FLOAT NULL COMMENT '装备重量', `elevel_max` INT NULL COMMENT '等级上限', PRIMARY KEY(`ename`)) COMMENT = '装备基本信息表';

(3)玩家装备表:

CREATE TABLE `equipment_ms`.`per_equipment` ( `pno`CHAR(10) NOT NULL COMMENT '玩家编号', `ename`CHAR(10) NOT NULL COMMENT '装备名称', `elevel`INT NOT NULL COMMENT '装备等级', PRIMARY KEY(`pno`, `ename`), INDEX `fk_per_ename_idx` (`ename` ASC) VISIBLE, CONSTRAINT`fk_per_ename` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '玩家装备表';

(4)装备攻击力信息表:

CREATE TABLE `equipment_ms`.`demage` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `adm` FLOAT NULL COMMENT '物理伤害值', `mdm` FLOAT NULL COMMENT '魔力伤害值', `fdm` FLOAT NULL COMMENT '火属性伤害值', `ldm` FLOAT NULL COMMENT '雷属性伤害值', `hdm` FLOAT NULL COMMENT '圣属性伤害值', `cs` FLOAT NULL COMMENT '致命一击', PRIMARY KEY(`ename`), CONSTRAINT`fk_dem` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.` equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备攻击力信息表';

(5)装备减伤率信息表:

CREATE TABLE `equipment_ms`.`defense` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `adf` FLOAT NULL COMMENT '物理减伤率', `mdf` FLOAT NULL COMMENT '魔力减伤率', `fdf` FLOAT NULL COMMENT '火属性减伤率', `ldf` FLOAT NULL COMMENT '雷属性减伤率', `hdf` FLOAT NULL COMMENT '圣属性减伤率', `ds` FLOAT NULL COMMENT '防御强度', PRIMARY KEY(`ename`), CONSTRAINT`fk_def` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`per_equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备减伤率信息表';

(6)装备能力加成信息表:

CREATE TABLE `equipment_ms`.`ability_bonus` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `strength_bn`CHAR(1) NULL COMMENT '力气加成等级', `dexterity_bn` CHAR(1) NULL COMMENT '灵巧加成等级', `intelligence_bn` CHAR(1) NULL COMMENT '智力加成等级', `belief_bn`CHAR(1) NULL COMMENT '信仰加成等级', `inductive_bn` CHAR(1) NULL COMMENT '感应加成等级', PRIMARY KEY(`ename`), CONSTRAINT`fk_abi` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`per_equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备能力加成信息表';

(7)装备必须能量值信息表:

CREATE TABLE `equipment_ms`.`mustbe_ability` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `strength_mb`INT NULL COMMENT '必须力气值', `dexterity_mb` INT NULL COMMENT '必须灵巧值', `intelligence_mb` INT NULL COMMENT '必须智力值', `belief_mb`INT NULL COMMENT '必须信仰值', `inductive_mb` INT NULL COMMENT '必须感应值', PRIMARY KEY(`ename`), CONSTRAINT`fk_mus` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备必须能量值信息表';

(8)装备附加效果信息表:

CREATE TABLE `equipment_ms`.`additional_effects` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `aename`CHAR(10) NULL COMMENT '效果名', `aevalue`INT NULL COMMENT '效果值', PRIMARY KEY(`ename`), CONSTRAINT`fk_add` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备附加效果信息表';

(9)装备攻击力等级转化表:

CREATE TABLE `equipment_ms`.`dm_level_trans` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `adm_p`FLOAT NULL COMMENT '物理递增参数', `mdm_p`FLOAT NULL COMMENT '魔力递增参数', `fdm_p`FLOAT NULL COMMENT '火递增参数', `ldm_p`FLOAT NULL COMMENT '雷递增参数', `hdm_p`FLOAT NULL COMMENT '圣递增参数', PRIMARY KEY(`ename`), CONSTRAINT`fk_dml` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备攻击力等级转化表';

(10)装备减伤率等级转化表:

CREATE TABLE `equipment_ms`.`df_level_trans` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `adf_p`FLOAT NULL COMMENT '物理递增参数', `mdf_p`FLOAT NULL COMMENT '魔力递增参数', `fdf_p`FLOAT NULL COMMENT '火递增参数', `ldf_p`FLOAT NULL COMMENT '雷递增参数', `hdf_p`FLOAT NULL COMMENT '圣递增参数', PRIMARY KEY(`ename`), CONSTRAINT`fk_dfl` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备减伤率等级转化表';

(11)装备能力加成等级转化表:

CREATE TABLE `equipment_ms`.`bn_level_trans` ( `ename`CHAR(10) NOT NULL COMMENT '装备名称', `srtength_bn_p`INT NULL COMMENT '力气加成跳变参数', `dexterity_bn_p`INT NULL COMMENT '灵巧加成跳变参数', `intelligence_bn_p` INT NULL COMMENT '智力加成跳变参数', `belief_bn_p` INT NULL COMMENT '信仰加成跳变参数', `inductive_bn_p` INT NULL COMMENT '感应加成跳变参数', PRIMARY KEY(`ename`), CONSTRAINT`fk_bnl` FOREIGNKEY (`ename`) REFERENCES `equipment_ms`.`equipment` (`ename`) ON DELETE CASCADE ON UPDATE CASCADE) COMMENT = '装备能力加成等级转化表';

(12)给各表添加数据:

# 黄铜短刀 insert into equipment values ('黄铜短刀', '短剑', '黄铜短刀.obj', '黄铜短刀.png', '碎步', 2.0, 25); insert into demage values ('黄铜短刀', 67, 0, 0, 0,0,110); insert into defense values ('黄铜短刀', 36.0, 21.0, 21.0, 21.0, 21.0, 15); insert into ability_bonus values ('黄铜短刀', 'D', 'D', '-', 'D', '-'); insert into mustbe_ability values ('黄铜短刀', 7, 12, 0, 14, 0); insert into additional_effects values ('黄铜短刀', '-', null); insert into dm_level_trans values ('黄铜短刀', 3, 0, 0, 0, 0); insert into df_level_trans values ('黄铜短刀', 0, 0, 0, 0, 0); insert into bn_level_trans values ('黄铜短刀', 0, 0, 0, 0, 0); # 逆刺 insert into equipment values ('逆刺', '短剑', '逆刺.obj', '逆刺.png', '逆刺血刃', 2.5, 10); insert into demage values ('逆刺', 79, 0, 0, 0,0,110); insert into defense values ('逆刺', 38.0, 22.0, 22.0, 22.0, 22.0, 16); insert into ability_bonus values ('逆刺', 'E', 'D', '-', '-', 'D'); insert into mustbe_ability values ('逆刺', 5, 13, 0, 0, 13); insert into additional_effects values ('逆刺', '累计出血量表', 30); insert into dm_level_trans values ('逆刺', 11, 0, 0, 0, 0); insert into df_level_trans values ('逆刺', 0, 0, 0, 0, 0); insert into bn_level_trans values ('逆刺', 0, 6, 0, 0,3); # 猎犬长牙 insert into equipment values ('猎犬长牙', '大曲剑', '猎犬长牙.obj', '猎犬长牙.png', '猎犬剑技', 11.5, 10); insert into demage values ('猎犬长牙', 141, 0, 0,0, 0,100); insert into defense values ('猎犬长牙', 68.0, 36.0, 36.0, 36.0, 36.0, 44); insert into ability_bonus values ('猎犬长牙', 'D', 'C', '-', '-', '-'); insert into mustbe_ability values ('猎犬长牙', 18, 17, 0, 0, 0); insert into additional_effects values ('猎犬长牙', '累计出血量表', 55); insert into dm_level_trans values ('猎犬长牙', 20, 0, 0, 0, 0); insert into df_level_trans values ('猎犬长牙', 0, 0, 0, 0, 0); insert into bn_level_trans values ('猎犬长牙', 0, 6, 0, 0, 0); # 蚁刺细剑 insert into equipment values ('蚁刺细剑', '刺剑', '蚁刺细剑.obj', '蚁刺细剑.png', '贯穿', 3.0, 25); insert into demage values ('蚁刺细剑', 98, 0, 0, 0,0,100); insert into defense values ('蚁刺细剑', 47.0, 31.0, 31.0, 31.0, 31.0, 21); insert into ability_bonus values ('蚁刺细剑', 'D', 'D', '-', '-', '-'); insert into mustbe_ability values ('蚁刺细剑', 10, 20, 0, 0, 0); insert into additional_effects values ('蚁刺细剑', '累计猩红腐败量表', 55); insert into dm_level_trans values ('蚁刺细剑', 6, 0, 0, 0, 0); insert into df_level_trans values ('蚁刺细剑', 0, 0, 0, 0, 0); insert into bn_level_trans values ('蚁刺细剑', 10, 6, 0, 0, 0); # 结晶剑 insert into equipment values ('结晶剑', '直剑', '结晶剑.obj', '结晶剑.png', '会旋斩', 4.5, 10); insert into demage values ('结晶剑', 106, 68, 0,0, 0,100); insert into defense values ('结晶剑', 44.0, 44.0, 30.0, 30.0, 30.0, 33); insert into ability_bonus values ('结晶剑', 'D', 'E', 'D', '-', '-'); insert into mustbe_ability values ('结晶剑', 13, 10, 15, 0, 0); insert into additional_effects values ('结晶剑', '-', null); insert into dm_level_trans values ('结晶剑', 10, 5, 0, 0, 0); insert into df_level_trans values ('结晶剑', 0, 0, 0, 0, 0); insert into bn_level_trans values ('结晶剑', 0, 0, 6, 0, 0); # 玩家装备信息 insert into per_equipment values ('001', '黄铜短刀', 1); insert into per_equipment values ('001', '结晶剑', 6); insert into per_equipment values ('002', '蚁刺细剑', 7); 3.5.1 建立视图

(1)查询装备基本信息的视图:

CREATE VIEWV_equ (装备名称,装备类型,3d资源名,2d资源名,装备技能名,装备重量,等级上限) AS SELECT Ename,Etype,E3d,E2d,Eskill_name,Ewight,Elevel_max FROM equipment;

(2)查询玩家装备信息的视图:

CREATE VIEWV_per (玩家编号,装备名称,装备等级) AS SELECT Pno,Ename,Elevel FROM per_equipment;

(3)查询装备攻击力信息的视图:

CREATE VIEWV_dem (装备名称,物理伤害,魔力伤害,火属性伤害,雷属性伤害,圣属性伤害,致命一击) AS SELECT Ename,Adm,MDm,FDm,LDm,HDm,CS FROM demage;

(4)查询装备减伤率信息的视图:

CREATE VIEWV_def (装备名称,物理减伤率,魔力减伤率,火属性减伤率,雷属性减伤率,圣属性减伤率,防御强度) AS SELECT Ename,ADf,MDf,FDf,LDf,HDf,DS FROM defense;

(5)查询装备能力加成信息的视图:

CREATE VIEWV_abi (装备名称,力气加成等级,灵巧加成等级,智力加成等级,信仰加成等级,感应加成等级) AS SELECT ename,strength_bn,dexterity_bn,intelligence_bn,belief_bn,inductive_bn FROMability_bonus;

(6)查询装备必须能量值信息的视图:

CREATE VIEWV_mus (装备名称,必须力气值,必须灵巧值,必须智力值,必须信仰值,必须感应值) AS SELECT ename,strength_mb,dexterity_mb,intelligence_mb,belief_mb,inductive_mbFROM mustbe_ability;

(7)查询装备附加效果信息的视图:

CREATE VIEWV_add (装备名称,附加效果名,附加效果值) AS SELECT ename,aename,aevalue FROM additional_effects;

(8)查询装备攻击力等级转化信息的视图:

CREATE VIEWV_dml (装备名称,物理递增参数,魔力递增参数,火递增参数,雷递增参数,圣递增参数) AS SELECT ename,adm_p,mdm_p,fdm_p,ldm_p,hdm_p FROM dm_level_trans;

(9)查询装备减伤率等级转化信息的视图:

CREATE VIEWV_dfl (装备名称,物理递增参数,魔力递增参数,火递增参数,雷递增参数,圣递增参数) AS SELECT ename,adf_p,mdf_p,fdf_p,ldf_p,hdf_p FROM df_level_trans;

(10)查询装备能力加成等级转化信息的视图:

CREATE VIEWV_bnl (装备名称,力气加成跳变参数,灵巧加成跳变参数,智力加成跳变参数,信仰加成跳变参数,感应加成跳变参数) AS SELECT ename,strength_bn_p,dexterity_bn_p,intelligence_bn_p,belief_bn_p,inductive_bn_pFROM bn_level_trans; 3.5.2 建立存储过程

(1)建立向玩家装备表中添加数据的存储过程:

delimiter // create procedure per_insert (in p_no char(10), in e_name char(10), in e_level int) begin if e_name in (select ename from equipment) then insert into per_equipment values (p_no, e_name,e_level); select 'success!'; end if; if e_name not in (select ename from equipment) then select 'don't have the equipment'; end if; if e_level >= (select elevel_max from equipment where ename=e_name) then select 'level oversize'; end if; end // delimiter ;

(2)建立玩家装备等级提升的存储过程:

delimiter // create procedure e_up (in p_no char(10), ine_name char(10)) begin if (select elevel+1 from per_equipment where pno=p_no and ename=e_name)>(select elevel_max from equipment where ename=e_name) then select 'Tostrengthen to the maximum level'; else update per_equipment set elevel=elevel+1 where pno=p_no and ename=e_name; select 'strengthen success'; end if; end // delimiter ;

(3)建立查询某玩家的某个装备的攻击力的存储过程:

delimiter // create procedure p_demage (in p_no char(10), ine_name char(10)) begin declare level int; declare admp float; declare mdmp float; declare fdmp float; declare ldmp float; declare hdmp float; select elevel into level from per_equipment where pno=p_no and ename=e_name; select adm_p into admp from dm_level_trans where ename=e_name; select mdm_p into mdmp from dm_level_trans where ename=e_name; select fdm_p into fdmp from dm_level_trans where ename=e_name; select ldm_p into ldmp from dm_level_trans where ename=e_name; select hdm_p into hdmp from dm_level_trans where ename=e_name; select pno 玩家, ename 装备名称, elevel 等级, adm+admp*level 物理, mdm+mdmp*level 魔力, fdm+fdmp*level 火, ldm+ldmp*level 雷, hdm+hdmp*level 圣, cs 致命一击 from demage natural join per_equipment where ename=e_name and pno=p_no; end // delimiter ;

(4)建立查询某玩家的某个装备的减伤率的存储过程:

delimiter // create procedure p_defense (in p_no char(10),in e_name char(10)) begin declare level int; declare adfp float; declare mdfp float; declare fdfp float; declare ldfp float; declare hdfp float; select elevel into level from per_equipment where pno=p_no and ename=e_name and pno=p_no; select adf_p into adfp from df_level_trans where ename=e_name; select mdf_p into mdfp from df_level_trans where ename=e_name; select fdf_p into fdfp from df_level_trans where ename=e_name; select ldf_p into ldfp from df_level_trans where ename=e_name; select hdf_p into hdfp from df_level_trans where ename=e_name; select pno 玩家, ename 装备名称, elevel 等级, adf+adfp*level 物理, mdf+mdfp*level 魔力, fdf+fdfp*level 火, ldf+ldfp*level 雷, hdf+hdfp*level 圣, ds 防御强度 from defense natural join per_equipment where ename=e_name and pno=p_no; end // delimiter ;

(5)建立查询某玩家的某个装备的能力加成等级的存储过程:

delimiter // create procedure p_ability_bonus (in p_nochar(10), in e_name char(10)) begin declare level int; declare strbn int; declare dexbn int; declare intbn int; declare belbn int; declare indbn int; select elevel into level from per_equipment where pno=p_no and ename=e_name and pno=p_no; select strength_bn_p into strbn from bn_level_trans where ename=e_name; if level=strbn then set strbn=1; else set strbn=0; end if; select dexterity_bn_p into dexbn from bn_level_trans where ename=e_name; if level=dexbn then set dexbn=1; else set dexbn=0; end if; select intelligence_bn_p into intbn from bn_level_trans where ename=e_name; if level=intbn then set intbn=1; else set intbn=0; end if; select belief_bn_p into belbn from bn_level_trans where ename=e_name; if level=belbn then set belbn=1; else set belbn=0; end if; select inductive_bn_p into indbn from bn_level_trans where ename=e_name; if level=indbn then set indbn=1; else set indbn=0; end if; select pno 玩家, ename 装备名称, elevel 等级, convert(char(ascii(strength_bn)-strbn)using utf8mb4) 力气,     #类型转化 convert(char(ascii(dexterity_bn)-dexbn)using utf8mb4) 灵巧, convert(char(ascii(intelligence_bn)-intbn)using utf8mb4) 智力, convert(char(ascii(belief_bn)-belbn)using utf8mb4) 信仰, convert(char(ascii(inductive_bn)-indbn)using utf8mb4) 感应 from ability_bonus natural join per_equipment where ename=e_name and pno=p_no; end // delimiter ;

(6)建立查看某个视图的存储过程:

delimiter // create procedure select_view (in vname char(50)) begin if vname='V_equ' then select * from V_equ; elseif vname='V_per' then select * from V_per; elseif vname='V_dem' then select * from V_dem; elseif vname='V_def' then select * from V_def; elseif vname='V_abi'then select * from V_abi; elseif vname='V_mus' then select * from V_mus; elseif vname='V_add' then select * from V_add; elseif vname='V_dfl' then select * from V_dfl; elseif vname='V_dml' then select * from V_dml; elseif vname='V_bnl' then select * from V_bnl; else select '无此视图'; end if; end // delimiter ;

(7)建立查看某个表数据的存储过程:

delimiter // create procedure select_table (in tablename char(50)) begin if tablename='equipment' then select * from equipment; elseif tablename='per_equipment' then select * from per_equipment; elseif tablename='demage' then select * from demage; elseif tablename='defense' then select * from defense; elseif tablename='ability_bonus' then select * from ability_bonus; elseif tablename='mustbe_ability'then select * from mustbe_ability; elseif tablename='additional_effects' then select * from additional_effects; elseif tablename='df_level_trans' then select * from df_level_trans; elseif tablename='dm_level_trans' then select * from dm_level_trans; elseif tablename='bn_level_trans' then select * from bn_level_trans; else select '无此表'; end if; end // delimiter ;

(8)建立向某个表中插入数据的存储过程:

delimiter // create procedure insert_table (in tablename char(50), in v1 char(20), in v2 char(20),in v3 char(20), in v4 char(20), in v5 char(20), in v6 char(20), in v7 char(20)) begin declare tran_signed float; if tablename='equipment' then set tran_signed=cast(v6 as signed); insert into equipment values (v1, v2, v3,v4, v5, tran_signed, null); set tran_signed=cast(v7 as signed); update equipment set elevel_max=tran_signed where ename=v1; elseif tablename='per_equipment' then set tran_signed=cast(v3 as signed); insert into per_equipment values (v1, v2,tran_signed); elseif tablename='demage' then set tran_signed=cast(v2 as signed); insert into demage (ename,adm) values (v1,v2); set tran_signed=cast(v3 as signed); update demage set mdm=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update demage set fdm=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update demage set ldm=tran_signed where ename=v1; set tran_signed=cast(v6 as signed); update demage set hdm=tran_signed where ename=v1; set tran_signed=cast(v7 as signed); update demage set cs=tran_signed where ename=v1; elseif tablename='defense' then set tran_signed=cast(v2 as signed); insert into defense (ename,adf) values (v1,v2); set tran_signed=cast(v3 as signed); update defense set mdf=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update defense set fdf=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update defense set ldf=tran_signed where ename=v1; set tran_signed=cast(v6 as signed); update defense set hdf=tran_signed where ename=v1; set tran_signed=cast(v7 as signed); update defense set ds=tran_signed where ename=v1; elseif tablename='ability_bonus' then insert into ability_bonus values (v1, v2,v3, v4, v5, v6); elseif tablename='mustbe_ability' then set tran_signed=cast(v2 as signed); insert into mustbe_ability(ename,strength_mb) values (v1, v2); set tran_signed=cast(v3 as signed); update mustbe_ability set dexterity_mb=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update mustbe_ability set intelligence_mb=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update mustbe_ability set belief_mb=tran_signed where ename=v1; set tran_signed=cast(v6 as signed); update mustbe_ability set inductive_mb=tran_signed where ename=v1; elseif tablename='additional_effects' then insert into additional_effects(ename,aename) values (v1, v2); set tran_signed=cast(v3 as signed); update additional_effects set aevalue=tran_signed where ename=v1; elseif tablename='df_level_trans' then set tran_signed=cast(v2 as signed); insert into df_level_trans (ename,adf_p)values (v1, v2); set tran_signed=cast(v3 as signed); update df_level_trans set mdf_p=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update df_level_trans set fdf_p=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update df_level_trans set ldf_p=tran_signed where ename=v1; set tran_signed=cast(v6 as signed); update df_level_trans set hdf_p=tran_signed where ename=v1; elseif tablename='dm_level_trans' then set tran_signed=cast(v2 as signed); insert into dm_level_trans (ename,adm_p)values (v1, v2); set tran_signed=cast(v3 as signed); update dm_level_trans set mdm_p=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update dm_level_trans set fdm_p=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update dm_level_trans set ldm_p=tran_signed where ename=v1; set tran_signed=cast(v6 as signed); update dm_level_trans set hdm_p=tran_signed where ename=v1; elseif tablename='bn_level_trans' then set tran_signed=cast(v2 as signed); insert into bn_level_trans(ename,strength_bn_p) values (v1, v2); set tran_signed=cast(v3 as signed); update bn_level_trans set dexterity_bn_p=tran_signed where ename=v1; set tran_signed=cast(v4 as signed); update bn_level_trans set intelligence_bn_p=tran_signed where ename=v1; set tran_signed=cast(v5 as signed); update bn_level_trans set belief_bn_p=tran_signedwhere ename=v1; set tran_signed=cast(v6 as signed); update bn_level_trans set inductive_bn_p=tran_signed where ename=v1; else select '无此表'; end if; end // delimiter ;

(9)建立删除某个表中数据的存储过程:

delimiter // create procedure delete_table (in tablename char(50), in where_ char(20)) begin if tablename='equipment' then delete from equipment where ename=where_; elseif tablename='per_equipment' then delete from per_equipment where ename=where_; else select '无法删除这个表'; end if; end // delimiter ; 3.5.3 建立触发器

(1)创建删除玩家装备表中信息时给变量respond设置为1的触发器,用于提示删除成功:

delimiter // create triggertri_per after delete on per_equipment for each row begin set @respond=1; end // delimiter ; 3.6 数据库实施 3.6.1 数据表截图

(1)per_equipment表

(2)equipment表

(3)demage表

(4)defense表

(5)ability_bonus表

(6)mustbe_ability表

(7)additional_effects表

(8)dm_level_trans表

(9)df_level_trans表

(10)bn_level_trans表

3.6.2 视图截图

(1)V_per:

(2)V_equ:

(3)V_dem:

(4)V_def:

(5)V_abi:

(6)V_mus:

(7)V_add:

(8)V_dml:

(9)V_dfl:

(10)V_bnl:

3.6.3 存储过程截图

(1)per_insert():

(2)e_up:

(3)p_demage:

(4)P_defense:

(5)P_ability_bonus:

(6)select_view:

(7)select_table:

(8)insert_table:

(9)delete_table:

3.6.4 触发器实现过程截图

(1)tri_per:

3.6.5 备份还原策略

正确及时的进行数据库的备份能减少数据丢失后恢复数据库的大量工作,所以为了避免数据在灾难后无法恢复,必须对数据库进行备份。

在游戏装备信息管理系统的数据库中,由于玩家信息,装备信息等比较重要可以数据库建好之后选择对数据库进行备份,以免数据库遭到灾难导致数据丢失或损坏,找不到原始数据。对数据库进行备份后,选择数据库中的‘任务—〉还原—〉数据库’菜单项,就可以还原原始数据。

4 总结

这次课程设计,由于理论知识的不足,再加上平时没有什么设计经验,一开始的时候有些手忙脚乱,不知从何入手。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦虽然这个设计做的可能不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。

经过这次课程设计我们学到了很多课本上没有的东西,它对我们今后的生活和工作都有很大的帮助,所以,这次的课程设计不仅仅有汗水和艰辛,更的是苦后的甘甜。

5 致谢

两周的课程设计结束了,在这次课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容学会了理解。在我所负责的大学生消费与使用情况调查方案的过程中,让我对调查方案的具体设计及撰写都有了更好地理解。

课程设计是mysql学科的一项实践,综合运用所学知识,是我们迈向社会,从事工作的一个必不可少的过程。踏踏实实的做好一项任务让我体会了稳健才会在未来有更好结果。

在此,感谢老师这半年来的教导,真的很喜欢您,您辛苦了!同时感谢那些帮助我的同学们,谢谢你们对我的支持和帮助,谢谢同学们的相互理解与包容,让我感受到同学的友谊。

由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师多多指教,我将虚心接受您的点评与指正。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3