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 に答える