2010-07-05 62 views
1

我试图弄清楚如何建模一个玩家可能拥有多个类的规范化数据库。玩家和类对象之间的关系是什么?玩家与游戏中的类数据库关系

每个玩家将能够有多个班级,每个班级也会授予玩家多种技能。我熟悉规范化的数据库并与他们一起工作,但从头开始并没有设置很多,尤其是对我自己而言。

我与如果任何人有一个方便的EER图/截屏MySQL的社区工具集工作,他们能告诉我还有:)

回答

3

这通常与一个链接表被处理的许多一对多关系:

PlayerClass: 
PlayerID 
ClassID 

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

通常,在许多设计中(虽然可能不在您的设计中),它也会以其他方式(ClassID,PlayerID)编入索引。

你的技能表将类似地连接到一个类:

ClassSkills: 
ClassID 
SkillID 

现在,这里的地方变得棘手 - 如果一个球员在两个班,每个赋予相同的技能发生了什么?它们是添加剂还是合并,或者是什么?这是一个问题领域问题,在将这些表格全部加入一起并查看玩家的技能之前,必须解决这个问题。

1

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

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

PlayerClass表在其列上应具有外键约束。

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

+0

感谢提示,我使用数据库的原因是因为我教自己一些Flash/Actionscript和使用Web服务,所以我可以将它(游戏)挂钩到Kongregate或ArmorGames等各种门户框架。 – Organiccat 2010-07-05 20:36:42