MySQL的 - 的保存和加载项的最佳方法
问题描述:
所以在我的旧作,我一直使用的“文本”数据类型来存储项目,像这样:MySQL的 - 的保存和加载项的最佳方法
0=4151:54;1=995:5000;2=521:1;
所以基本上:slot=item:amount;
我一直在寻找在sql数据库中存储信息的最佳方式,并且无论我走到哪里,它都说使用文本是一个很大的性能问题。
我想在做别的事情,就像遇到了下列的表:
id, owner_id, slot_id, item_id, amount
哪里像现在我可以只插入一行字符分配每个项目。但我不知道如何保存它们,因为插槽的物品可以更改等等。一个角色有28个库存插槽和500个银行插槽,我是否应该在注册时插入它们?或者是否有更智能的方法来保存项目
答
是使用该结构。使用文本来存储关系数据会破坏关系数据库的目的。
我没有看到你的意思,在注册时插入它们。你能不能插入他们,因为你需要?
编辑
基于您以前的评论,因为它需要我只想建议插入插槽(如果我没有理解你的问题)。如果需要,在应用程序中保留插槽的ID可能是一个想法。
答
如果我理解正确的话,那插槽的项目可以改变的,那么你要进一步的抽象ITEM_ID与项目之间的映射:
entry_tbl.item_id->item_rel_realitems_tbl.real_id->items_tbl
这样,所有与itemid的指向一个条目将这些ID映射到可变项目的表格。当您更新'items_tbl'中的项目时,映射会自动更新entry_tbl。
但是需要另一个JOIN。在任何情况下,我也会使用存储过程来从语义中抽象出机制。
但我不确定我是否理解你的问题的措辞。
请多一点解释。我几乎可以理解你的意思,但是你应该说'slot','character'和'bank'的含义,因为这个用法有点奇怪。这似乎也是关于数据库结构的问题,而不是“保存和加载”。 – pavium 2010-01-12 03:58:34
对不起,我解释不好。 那么插槽是物品在库存/库中的入口点。由于插槽没有排序,因此ID可能为1,2,3,然后跳至8等。 字符是项目的所有者,银行是项目容器。 – TheAJ 2010-01-12 04:13:31