1

初めての大規模なデータベースを設計していて、テーブルのリレーションシップを提供できるかどうかを確認したいと考えています。

私はwebappを設計しています

  1. usersgamesで遊べますteams
  2. それぞれgameがそれを持っていますcategories
  3. usersteamのためにそれらを作成し、それらをgame選択しますteam category
  4. それぞれに独自の有効なgameサブセットがありますcategories
  5. 実際categoriesには、ゲームごとにわずかに異なります。たとえば、game1 と game2 にはスローポークカテゴリありますが、許容時間が異なります。

これをどのように保存したいですか:

  1. usersteamsgamescategories、それぞれに適切なデータフィールドINT primary_key
  2. ありuser- teamMN関係表
  3. あるgame- categoryMN 関係テーブル、許可された時間列
  4. テーブルに外部キー列がありcategory_idますgame_idteam

私のよくある質問:

  1. ユーザー -> ゲーム、カテゴリであったすべての彼/彼女のチーム
  2. ゲーム -> すべてのカテゴリ
  3. ゲーム -> 参加したすべてのチーム、カテゴリ、ユーザー
  4. ゲーム -> すべてのユーザーが参加
  5. チーム -> ゲームです、カテゴリ

私への私の提案:

  1. category-関係テーブルで別の INT プライマリ インデックスを作成するリアル カテゴリ ID を作成し、gameそれをチーム テーブルで使用します
  2. team_id category_id game_id で別のテーブルを作成し、それらすべてを連結プライマリ インデックスとして設定します
  3. テーブルにINDEXとして設定game_idするだけteams

問題は、これが問題ないかどうか、そしてどのような提案を受け入れるかということです。

4

1 に答える 1

2

いくつかの考え:

  • UNSIGNED INTではなく主キーに使用しますINT
  • TEAM-> GAMEマッピングが必要ですよね?

それを考えると、「一般的なクエリ」を簡単に処理できるようです。

あなたの「提案」はどのような問題を解決しようとしていましたか?

于 2012-11-13T18:17:20.037 に答える