0

所以在我以前的工作中,我一直使用“文本”数据类型来存储项目,如下所示:

0=4151:54;1=995:5000;2=521:1;

所以基本上:slot=item:amount;

我一直在寻找在 sql 数据库中存储信息的最佳方法,无论我走到哪里,它都说使用文本对性能有很大影响。

我正在考虑做其他事情,比如有一个包含以下列的表格:

id, owner_id, slot_id, item_id, amount

现在我可以为字符分配的每个项目插入一行。但是我不知道如何保存它们,因为插槽的项目可以更改等。一个角色有 28 个库存插槽和 500 个银行插槽,我应该在注册时将它们全部插入吗?还是有更聪明的方法来保存物品

4

2 回答 2

2

是的,使用该结构。使用文本存储关系数据违背了关系数据库的目的。

我不明白您在注册时将它们全部插入是什么意思。您不能根据需要插入它们吗?

编辑

根据您之前的评论,我建议仅在需要时插入一个插槽(如果我理解您的问题)。如果需要,可以在应用程序中保留插槽的 ID。

于 2010-01-12T03:56:08.377 回答
1

如果我理解正确,并且插槽的项目可以更改,那么您希望进一步抽象 item_id 和项目之间的映射:

entry_tbl.item_id->item_rel_realitems_tbl.real_id->items_tbl

这样,所有带有 itemid 的条目都指向一个将这些 id 映射到可变项目的表。当您更新“items_tbl”中的项目时,映射会自动更新 entry_tbl。

但是,需要另一个 JOIN。在任何情况下,我都会使用存储过程从语义中抽象出机制。

但是,我不确定我是否理解您的问题的措辞。

于 2010-01-12T03:57:11.107 回答