次のテーブルがあります。
プレイヤー
- ID
- プレーヤの名前
兵器
- ID
- タイプ
- その他のデータ
武器2プレイヤー
- ID
- プレーヤーID_リファレンス
- WeaponID_reference
シンプルでよかったです。
今度は、前にotherData列にパックしたいくつかの特性に従って、 Weaponsテーブルから項目を選択する必要があります (クライアント側でのみ必要だったため)。問題は、タイプがさまざまな特性を持っていることですが、同様のデータもたくさんあります。
そのため、次の可能性について判断しようとしていますが、いずれにも長所と短所があります。
ソリューション A
Weapons テーブルを削除し、Weapon-Type ごとに新しいテーブルを作成します。
武器_剣
- ID
- 刃の種類
- ダメージ
- その他のデータ
武器_銃
- ID
- 正確さ
- ダメージ
- 弾薬の種類
- その他のデータ
しかし、どうすればこれらをPlayersにリンクできますか?
- 武器の種類ごとに Weapons_Swords2Players、Weapons_Guns2Playersを作成しますか? (プレーヤーにすべての武器をロードすると、より多くのJOINSが発生します...また、新しいプレーヤーを挿入するのもより複雑です)
また
- WeaponsTypeTableという名前のWeapons2Playersに別の列を追加し、正しい Weapons サブテーブルをサブ選択します (簡単に思えますが、実際にはそうではありません。少し簡単に挿入できると思います)。
ソリューション B
Weapons テーブルを保持し、必要なすべてのフィールドを追加します。問題は、すべての武器タイプがすべてのフィールドを使用するわけではないため、NULLフィールドが存在することです (正しくない可能性があります)。
兵器
- ID
- タイプ
- 正確さ
- ダメージ
- 弾薬の種類
- 刃の種類
- その他のデータ
これはかなり基本的なもののようですが、何が最善かを判断することはできません. または、正しいソリューション C はありますか?