【发布时间】:2017-05-14 16:19:05
【问题描述】:
有没有最好的方法将玩家背包等数据存储在关系数据库中?
假设我想将玩家背包存储在数据库中。
表“eq”的数据库模型如下:
playerId | slot | itemId | amount
现在假设我在数据库中有这一行:
1 | 10 | 20 | 99
这意味着,ID 为 1 的玩家在第 10 个位置有 99 个 id 为 20 的物品。将这些数据读取到游戏中很容易(如果槽 Y 的行不存在,则表示它是空的),但保存这些数据有点棘手。为什么?因为如果玩家使用 99 个 id 为 20 的物品,他的背包在 RAM 中将是空的,但在数据库中仍然会有一行。玩家将物品移动到另一个插槽时也是如此,如何知道何时删除数据库中的插槽?
这是我的两个想法,看起来很糟糕:
当玩家注册新账户时,我可以在“eq”表中添加 X 个空行,带有他的 id 和以下插槽(1、2、3、4...),然后保存就迭代player eq 并更新 每一 属于 player 的行
-
当保存过程开始时,删除所有属于玩家的“eq”行,然后仅将这些行插入到数据库中,这些行在哪里(保留空槽)
【问题讨论】:
标签: mysql database database-design relational-database inventory