2017-05-09 6 views
0

私はすべてのプレーヤーを格納するテーブルがあるファンタジーフットボールアプリケーションを構築しています。私は次のようにテーブルを設計しました。これまでのところ、体制が4-4-2で、1人のゴールキーパーが出ていて、1人のディフェンダーが出ていて、1人のフォワードが出ていて、チームに変更を加えることは、ベンチ上でプレーするプレーヤーと同じくらい簡単です。MySQLデータベースデザイン

enter image description here

私は3-5-2、5-4-1のような複数の地層を持ちたいなど、私はデータベースにこれを保存する方法を知らないので、問題が来る

ときほど誰かが変更されたチームを見ると、フォーメーションが3-5-2のときに2人のディフェンダーを見ることができます。私はすでにjavascriptを使ってフロントエンドを達成しました。問題はバックエンドです。私はオプションを使い果たしたので、どんな助けもありがとう。

+1

私は正確に何をしたい、非常にわからないんだけど、良いスタートを形成するために別々のテーブルを作成するかもしれません。次に、フロントエンドコードを使用して、これらのフォーメーションのどれを選択できるかを制限します。 – Noceo

+0

こんにちは、ありがとうございます。理に適っていますが、編成のために別のテーブルを持っている場合、どのプレイヤーがベンチにいるのかをどのように知ることができますか?それはベンチで選手としてGK2、DEF5、MID5、FWD3を見て、それが簡単に見つけることができる4-4-2フォーメーションであれば、私が持っている最大の課題です。 – bobin56

+0

うん、あなたはポジションを作ってみませんかGK1、GK2、DEF1、DEF2などが含まれているテーブルとサッカー選手のための1つのテーブルは、位置と選手のテーブルを関連付けるためにピボットテーブル(多対多の関係)を作るのですか? 「ベンチ」プレイヤーに関しては、ベンチ1、ベンチ2のような特別な「ポジション」に置かなければならなかったのですか? –

答えて

0

可能な解決策以下の表

user 
id | team_name | current_formation_id 
1 | Masaki | 1 
2 | Other  | 3 

formation 
id | desc | defenders_count | midfielders_count | forwarders_count 
1 | 442 | 4    | 4     | 2 
1 | 433 | 4    | 3     | 3 
1 | 352 | 3    | 5     | 2 

player 
id | name | role | whatever_else 
1 | P1 | MID | ... 
2 | P2 | DEF | ... 
3 | P3 | FWD | ... 

user_roster 
user_id | player_id | is_on_field 
     1 |   1 | 1 
     1 |   2 | 0 
     1 |   3 | 1 

あなたがテーブル構造を変更することなく形成を変更する柔軟性を持つことができ、この方法を使用することができ、あなたは選手がベンチにいる単純なクエリを知っている可能性があり現在の選手が現在の選手数を尊重しているかどうかを簡単に確認することができます。

+0

こんにちは、ありがとうございました。それはおそらく私が探していたものです:-) – bobin56

関連する問題