我正在为游戏制作一个库存,而不是像FF风格的游戏。我有两个设计,并想知道哪个更好
将数量跟踪为一个字段;架构将是:
item ( <item_id>, <character_id>, quantity )
。如果角色装备了物品,或从库存中移除了物品,我需要确保数量字段是正确的。
每个项目都占用一个单独的行。我将使用GROUP BY来计算每种类型的项目的数量(按item_id)。装备和移除物品变得更加直接,但如果角色有10个治疗药水,他们会占用10行。
目前没有空间限制或编程限制(使用MySQL)。从长远来看哪个系统更好?
答案 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中,所有项目和所有字符共享相同的数量,尽管它们具有不同的属性。