【问题标题】:Player to class database relationship in a game游戏中玩家与类数据库的关系
【发布时间】:2011-03-12 01:09:29
【问题描述】:

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

每个玩家都可以拥有多个职业,然后每个职业也会授予玩家多种技能。我熟悉规范化数据库并使用它们,但还没有从头开始设置很多,尤其是对我自己而言。

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

【问题讨论】:

    标签: sql mysql database normalization


    【解决方案1】:

    这通常使用多对多关系的链接表来处理:

    PlayerClass:
    PlayerID
    ClassID
    

    通常使用 PlayerID,ClassID 是主键,PlayerID 和 ClassID 是对 Class 和 Player 表的外键引用。

    通常,在许多设计中(尽管可能不在您的设计中),这也会以其他方式(ClassID、PlayerID)被索引。

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

    ClassSkills:
    ClassID
    SkillID
    

    现在问题来了——如果一个玩家属于两个职业,每个职业都有相同的技能,会发生什么?它们是相加的还是合并的,还是什么?这是一个问题域问题,必须先解决,然后才能简单地将这些表连接在一起并查看玩家的技能。

    【讨论】:

      【解决方案2】:

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

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

      PlayerClass 表的两列都应该有一个外键约束。

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

      【讨论】:

      • 感谢您的提示,我使用数据库的原因是因为我正在自学一些 Flash/Actionscript 并使用 Web 服务,因此我可以将它(游戏)连接到各种门户Kongregate 或 ArmorGames 等框架。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多