私はゲームを作成しており、InnoDB エンジンで実行されている SQL データベースで使用する基礎となるデータモデルを考える必要があります。
主なエンティティは、アカウント、スロット、およびキャラクターになります。すべてのアカウントには、最小で 1 つのスロットがあり、場合によってはそれ以上のスロットがあります。また、各スロットには 1 つの文字を保持できますが、常に文字があるとは限りません。
詳しくは:
- プレイヤーはアカウントを使用してゲームにログインします。
- 時間が経つにつれて、1 つのスロットから始めて、より多くの (キャラクター スロット) が得られます。
- すべてのスロットに、ある時点で死ぬ可能性のあるキャラクターを配置できます。キャラクターがまだ配置されていないか、キャラクターが死んでいる場合、その時点でスロットは空になります。
- プレイヤーは、メイン アカウントでログインしている間、キャラクターを個別に操作できます。
関係のない構造:
- アカウント (accountId、...アカウント データ)
- スロット (accountId、slotId、...スロット データ)
- 文字 (characterId、...文字データ)
単純な関係:
- account_slots (accountId、slotId)
- slot_characters (accountId、slotId、characterId)
ノート:
- accountId はアカウントの一意のキーになります。
- slotId はスロットの一意のキーではなく、最大 1.. の数字になりますが、(accountId, slotId) は一意になります。
- characterId は文字の一意のキーになります。
まだ微調整する必要はありませんが、これは正しいモデルだと思いますか?
テーブルに列を追加することでリレーションを取得できる場合は、できるだけ少ないリレーションでテーブル間に正しいリレーションを追加したいと考えています。
よろしく。