【问题标题】:How to model multiple "uses" (e.g. weapon) for usable-inventory/object/items (e.g. katana) within a relational database如何在关系数据库中为可用库存/对象/项目(例如武士刀)建模多个“用途”(例如武器)
【发布时间】: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


    【解决方案1】:

    嗯,不同种类的武器可以共享共同的专长。
    例如,“锋利”武器可以包括长剑、短剑、匕首和武士刀;他们都可以共享相似的基础伤害,以及一些与实际武器相关的额外特殊内容。
    同样,“钝”武器可以包括锤子、钉头锤和连枷。
    所以我认为你应该引入“武器类型”的概念,这样你就不必为每种武器类型复制东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2014-02-09
      • 1970-01-01
      • 2015-03-07
      • 2014-08-22
      相关资源
      最近更新 更多