3

私は生き物を検索できるアプリを作成しており、その過程で知識を増やしたいと思っています。

私は表Creaturesと表Skillsを持っています

クリーチャーは複数のスキルを持ち、スキルは複数のクリーチャーで使用できます。

SQLマネージャーを使用してJavaでコーディングしています。

1,2 を使用してクリーチャー テーブルのスキルを表し、数値を使用してスキル テーブルを参照しています。

私が考えていたのは、オーバーロードされたストアドプロシージャを作成する方法はありますか?

私はまだ計画しているので、まだコーディングを開始していませんが、アイデアを送っていただければ幸いです。

私は真ん中のテーブルを避けようとしているのではなく、それほど難しくない別の方法でそれを行う方法があるかどうかを確認してください。

4

2 に答える 2

8

おそらく真ん中のテーブルが必要になります。

スキルのコンマ区切りリストをクリーチャーテーブルに保存すると、クリーチャーごとのスキルを簡単に取得できますが、特定のスキルを持つクリーチャーを知りたい場合はどうでしょうか。

カンマ区切りのリストには問題があります。それらを使用して、データにアクセスする1つの方法を最適化できますが、それにより、データにアクセスする他の方法が大幅に最適化されなくなります。

データベース列に区切りリストを格納することは本当に悪いですか?に対する私の答えも参照してください。

于 2013-02-13T22:42:55.017 に答える
2

リレーショナルデータベースを使用している場合、それを解決するための「正しい」一般的な方法は、リレーションを格納するテーブルを使用することです。真ん中のテーブルを避けたい場合は、クリーチャーごとのスキルの最大数に制約を課すことができます。たとえば、最大5つのスキルを設定し、skill1、skill2、...、skill5というフィールドを設定します。クエリがはるかに複雑になるため、このオプションはお勧めできませんが、場合によっては可能です。このオプションのもう1つの改善点は、各ビットがスキルを表す単一のintまたはlongフィールドです。私の意見ではまだ良くありません。

于 2013-02-13T22:46:35.060 に答える