初めての大規模なデータベースを設計していて、テーブルのリレーションシップを提供できるかどうかを確認したいと考えています。
私はwebappを設計しています
users
games
で遊べますteams
- それぞれ
game
がそれを持っていますcategories
users
team
のためにそれらを作成し、それらをgame
選択しますteam
category
- それぞれに独自の有効な
game
サブセットがありますcategories
- 実際
categories
には、ゲームごとにわずかに異なります。たとえば、game1 と game2 にはスローポークカテゴリがありますが、許容時間が異なります。
これをどのように保存したいですか:
users
、teams
、games
、categories
、それぞれに適切なデータフィールドINT primary_key
と- あり
user
-team
MN関係表 - ある
game
-category
MN 関係テーブル、許可された時間列 - テーブルに外部キー列があり
category_id
ますgame_id
team
私のよくある質問:
- ユーザー -> ゲーム、カテゴリであったすべての彼/彼女のチーム
- ゲーム -> すべてのカテゴリ
- ゲーム -> 参加したすべてのチーム、カテゴリ、ユーザー
- ゲーム -> すべてのユーザーが参加
- チーム -> ゲームです、カテゴリ
私への私の提案:
category
-関係テーブルで別の INT プライマリ インデックスを作成するリアル カテゴリ ID を作成し、game
それをチーム テーブルで使用します- team_id category_id game_id で別のテーブルを作成し、それらすべてを連結プライマリ インデックスとして設定します
- テーブルにINDEXとして設定
game_id
するだけteams
問題は、これが問題ないかどうか、そしてどのような提案を受け入れるかということです。