【问题标题】:Designing the schema for an inventory system...should I calculate quantity or keep track of it?为库存系统设计架构...我应该计算数量还是跟踪它?
【发布时间】:2010-09-12 13:56:28
【问题描述】:

我正在为一个游戏做一个清单,就像一个 FF 风格的游戏。我有两个设计,想知道哪个更好

  1. 以字段形式跟踪数量;架构将是: item ( <item_id>, <character_id>, quantity )。如果一个角色装备了一件物品,或者从他的库存中移除了一件物品,我需要确保数量字段是正确的。

  2. 每个项目占据一个单独的行。我将使用 GROUP BY 来计算每种物品的数量(按 item_id)。装备和移除物品变得更加简单,但如果角色有十个治疗药水,他们将占据十行。

目前没有空间限制或编程限制(使用 MySQL)。从长远来看,哪个系统更好?

【问题讨论】:

标签: mysql language-agnostic database-design


【解决方案1】:

听起来某处的角色和物品之间存在一对多的关系。

我建议使用 GROUP BY 从数量作为派生项目开始。如果性能成为问题,我只会更改它。

我不喜欢项目必须跟踪其数量的设计,但如果您必须这样做,您可以使用 MySQL 中的触发器来完成它,以便在 INSERT、UPDATE 或 DELETE 时自动更新数量。

【讨论】:

    【解决方案2】:

    数据库的设计取决于需要执行的查询类型。

    在这种情况下,如果您只需要为字符 x 获取项目 x 的数量,那么选项一将起作用,但如果您需要:

    物品x的数量

    谁的 item_attribute1 = x

    AND item_attribute2 = X

    AND character_attribute1 = x

    AND character_attribute2 = x

    您需要选择选项 2。

    在选项 1 中,所有物品和所有角色都共享相同的数量,尽管它们具有不同的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2019-12-15
      • 2011-09-26
      • 1970-01-01
      相关资源
      最近更新 更多