【发布时间】:2016-11-15 10:41:16
【问题描述】:
我想为一组玩家建模一个数据库实体。 每个玩家都应该有:
- 许多固定字段(名称、角色...)
- 技能等级的多个可变字段(如果角色是 ATK,技能应该是 stat1 和 stat2;如果角色是 DEF,技能应该是 stat3 和 stat4)。
实现这种实体的最佳方式是什么(关系数据库和非关系数据库都适合我)?
最简单的解决方案当然是为每个角色保存不同的表。我还找到了this 答案,这很好,但已经 7 岁了,可能已经过时了。其他想法?
这是一个示例数据集:
"name": "name1"
"role": "attack"
"strength": 10
"constitution": 5
"name": "name2"
"role": "attack"
"strength": 7
"constitution": 7
"name": "name3"
"role": "defense"
"health": 8
"resistence": 8
"name": "name4"
"role": "defense"
"health": 10
"resistence": 10
"name": "name5"
"role": "support"
"mana": 4
"willpower": 3
【问题讨论】:
-
多态是一种面向对象的设计概念,而不是数据库概念。通常,为了弥合数据库和应用程序之间的差距,并使前者看起来面向对象,使用诸如 Hibernate 之类的工具。你能给我们展示一下样本数据吗?
-
我添加了一个简单的数据集!
-
在我看来,您可以使用单个用户表,如果需要规范化数据库,还可以使用其他一些属性表。
标签: sql oop orm polymorphism nosql