所以在我以前的作品中,我总是使用'text'数据类型来存储项目,如下所示:
0=4151:54;1=995:5000;2=521:1;
所以基本上:slot=item:amount;
我一直在寻找在sql数据库中找到存储信息的最佳方法,无论我走到哪里,都说使用文本是一个很大的性能影响。
我正在考虑做其他事情,比如有一个包含以下列的表:
id, owner_id, slot_id, item_id, amount
现在我可以为角色分配的每个项目插入一行。但我不知道如何保存它们,因为插槽的项目可以更改,等等。一个字符有28个库存插槽和500个银行插槽,我应该在注册时插入它们吗?或者有更聪明的方法来保存项目
答案 0 :(得分:2)
是的,使用那种结构。使用文本存储关系数据会破坏关系数据库的目的。
在注册时将所有内容全部插入,我看不出你的意思。你能否根据需要插入它们?
修改强>
根据您之前的评论,我建议只根据需要插入一个插槽(如果我理解您的问题)。如果需要,可以在应用程序中保留插槽的ID。
答案 1 :(得分:1)
如果我理解正确,并且插槽的项目可以更改,那么您希望进一步抽象item_id和项目之间的映射:
entry_tbl.item_id->item_rel_realitems_tbl.real_id->items_tbl
这样,带有itemid的所有条目都指向将这些id映射到可变项的表。当您更新'items_tbl'中的项目时,映射会自动更新entry_tbl。
然而,需要另一个JOIN。我也会在任何情况下使用存储过程从语义中抽象出机制。
但我不确定我理解你问题的措辞。