设计库存系统的架构......我应该计算数量还是跟踪它?

时间:2010-09-12 13:56:28

标签: mysql language-agnostic database-design

我正在为游戏制作一个库存,而不是像FF风格的游戏。我有两个设计,并想知道哪个更好

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

项目x的数量

谁是item_attribute1 = x

AND item_attribute2 = X

AND character_attribute1 = x

AND character_attribute2 = x

您需要选择选项2.

在选项1中,所有项目和所有字符共享相同的数量,尽管它们具有不同的属性。