我正试图弄清楚如何为玩家可能拥有多个类的规范化数据库建模。玩家和班级对象之间有什么关系?
每个玩家将能够拥有多个班级,每个班级将为玩家提供多种技能。我熟悉规范化的数据库并使用它们,但是没有从头开始设置很多数据库,特别是对我自己来说。
我正在使用MySQL社区工具集,如果有人有一个方便的EER图/截图他们也可以给我看:)
答案 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表的两列都应该有一个外键约束。
请注意,数据库对于游戏来说太慢了。大多数游戏都使用自定义存储机制。