代码之家  ›  专栏  ›  技术社区  ›  Organiccat

游戏中的玩家对类数据库关系

  •  1
  • Organiccat  · 技术社区  · 14 年前

    我正试图弄清楚如何建模一个规范化的数据库,其中一个播放器可能有多个类。玩家和类对象之间的关系是什么?

    每个玩家将能够有多个班级,然后每个班级将授予一个玩家多个技能。我熟悉规范化数据库并使用它们,但从零开始就没有建立很多数据库,尤其是我自己。

    我正在使用MySQL社区工具集,如果有人有一个方便的EER图/屏幕截图,他们也可以显示我:)

    2 回复  |  直到 14 年前
        1
  •  3
  •   Cade Roux    14 年前

    对于多对多关系,通常使用链接表来处理这一点:

    PlayerClass:
    PlayerID
    ClassID
    

    通常使用playerid,classid是主键,playerid和classid是对类和播放器表的外键引用。

    通常,在许多设计中(尽管可能不在您的设计中),这也将以另一种方式索引(ClassID、PlayerID)。

    您的技能表将类似地链接到一个类:

    ClassSkills:
    ClassID
    SkillID
    

    现在,这就是它变得棘手的地方——如果一个玩家在两个等级中,每个等级都授予相同的技能,会发生什么?它们是加性的还是合并的,或者什么?这是一个问题域问题,必须先解决这个问题,然后才能简单地将这些表连接在一起,并查看玩家有哪些技能。

        2
  •  1
  •   Andomar    14 年前

    这种关系将是多对多的。通常由中间表建模:

    table Player:       Id int, name varchar(50)
    table PlayerClass:  PlayerId int, ClassId int
    table Class:        Id int, name varchar(50)
    

    playerClass表的两列都应具有外键约束。

    注意,对于游戏来说,数据库被认为太慢了。大多数游戏都使用自定义存储机制。