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