SQL角色扮演游戏——引用技能表的类表

Posted

技术标签:

【中文标题】SQL角色扮演游戏——引用技能表的类表【英文标题】:SQL role playing game -- Classes table referencing a skills table 【发布时间】:2017-06-12 11:27:16 【问题描述】:

我一直在开发一个 wordpress 插件,该插件旨在为使用 mysql 的 wordpress 用户创建一个字符。我是 php 和 sql 的新手。我目前正在为我的数据库中的两个表而苦苦挣扎。一个职业表和一个技能表。

类表由一个角色可以是不同的类组成。例如;战士、圣骑士或巫师。

技能表由角色可以使用的不同技能组成。例如;闪电,杀戮或治疗。

我希望这些表相互关联。职业表中的职业只能使用所列技能中的某些技能。例如,圣骑士职业只能选择治疗技能,而战士职业只能使用杀戮技能。我只是不确定使用什么来成功完成这项工作。

我不确定技能表上是否可以使用仅允许某个职业引用某些技能的条件。谁能指出我正确的方向?提前感谢您的帮助!

【问题讨论】:

如果只有一个职业有技能,你可以在技能表中添加class_id作为fk。如果多个班级可以拥有相同的技能,则需要一个带有 class_id fk 和 Skill_id fk 的 class_skill 表,用于设置哪个班级可以拥有哪些技能 听起来您想使用所谓的“多对多”关系。这涉及创建一个连接两个表的中间表。只需 google sql 多对多示例,应该会出现很多。 【参考方案1】:

在这里,多对多的关系可以解决问题,这就是我要做的。 我会创建 3 个表,1) Character 2) Skill 3) character_skill,这是一个非常简单的例子:

CREATE TABLE hero
(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255)
);

CREATE TABLE skill
(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255)
)

CREATE TABLE character_skill
(
    id INT PRIMARY KEY AUTO_INCREMENT,
    charachter_id INT,
    skill_id INT,
    CONSTRAINT character_skill_character_id_fk FOREIGN KEY (charachter_id) REFERENCES hero (id),
    CONSTRAINT character_skill_skill_id_fk FOREIGN KEY (skill_id) REFERENCES skill (id)
);

现在您将存储英雄表中的角色,以及技能表中的技能,现在这里是技巧,为英雄(角色)分配技能,您将在 character_skill 表中添加一条记录,id 为英雄和技能的id。在示例中,我添加了一个约束,仅允许您添加之前在其他表中创建的角色和技能。

然后查询它,我会在 character_skill 表中查找所有具有相同 charachter id 的技能,喜欢这样:

select
  skill.name
from skill
INNER JOIN character_skill
  on character_skill.skill_id = skill.id
where character_skill.charachter_id = 3

这是一个非常简单的例子。

这是基本思路,只有在character_skill表中连接的技能才能被id为3的角色使用

我使用 hero 作为字符表的名称,因为“字符”名称是保留的

【讨论】:

我相信我明白了,所以character_skill表基本上是一个交叉引用表,它限制某些类选择某些技能。 是的,比是正确的,你可以对照角色的技能。希望它对你有用;-)

以上是关于SQL角色扮演游戏——引用技能表的类表的主要内容,如果未能解决你的问题,请参考以下文章

100个 Unity实用技能| 游戏中使技能或装备跟随角色环绕,持续旋转

100个 Unity实用技能| 游戏中使技能或装备跟随角色环绕,持续旋转

python --- 面向对象编程

unity实用技能unity在游戏中更换角色的shader,比如加个流光

Unity技能工厂——怎样实现丝滑的角色连击动画

游戏开发小技Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)