【发布时间】:2010-11-21 04:18:39
【问题描述】:
所以我正在努力扩展 www.ninjawars.net 上的项目的用途,但我不确定如何在我们使用的关系数据库中灵活地表示它们。
我可能找错了树,所以请随意提出其他方向的建议,但目前我认为每个项目都应该有关系“标签”。
例如,Katana 当前是“items”数据库中的一行。为了把它变成一种武器,一个可以拿的东西,我想我应该有一个“特征”数据库,以及一个连接两者的 item_traits 表。
// Objects and their basic data
item_id | item | material | etc
1 | Naginata | steel | etc
// Things that objects can do
trait_id | trait
1 | weapon
2 | holdable
// How those objects do those things, e.g. powerfully, weakly, while on fire
_item_id | _trait_id | item_trait_data
1 | 1 | damage: 5, damage_type: sharp, whatever, etc
我不太确定如何对产生的额外数据建模(例如,剑会造成的伤害、damage_type 等)。
我也不是特别高兴整个项目将存储在多个地方,例如。为了创建具有不同名称的项目的副本,例如“短剑”,我必须从多个表中复制以创建重复的项目。
有没有更好的方法来整理我错过的这些东西?
【问题讨论】:
标签: database architecture tagging