玩家在游戏中对类数据库关系进行分类

时间:2010-07-05 20:12:49

标签: sql mysql database normalization

我正试图弄清楚如何为玩家可能拥有多个类的规范化数据库建模。玩家和班级对象之间有什么关系?

每个玩家将能够拥有多个班级,每个班级将为玩家提供多种技能。我熟悉规范化的数据库并使用它们,但是没有从头开始设置很多数据库,特别是对我自己来说。

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

2 个答案:

答案 0 :(得分:3)

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

PlayerClass:
PlayerID
ClassID

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

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

您的技能表类似地与班级相关联:

ClassSkills:
ClassID
SkillID

现在这里变得棘手 - 如果一个玩家分为两个类,每个类都赋予相同的技能,会发生什么?它们是添加剂还是合并,或者是什么?这是一个问题域问题,必须先解决才能简单地将这些表连接在一起,看看玩家有哪些技能。

答案 1 :(得分:1)

这种关系会有很多人。通常由中间表格建模:

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

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

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