2017-09-24 3 views
0

teamにプレーヤーを選ぶときにフィルタとして機能するclubテーブルを作成する必要があります。このようなclubは、id,name,tag,federationなどの重要な列で構成する必要がありますが、そのようなプレーヤーで構成されているため約50 という情報も含める必要があります。そのための最も簡単な(?最長とも最も信頼性の高い)方法はもちろんありますMySQL - マルチカラムテーブルを作成する正しい方法は何ですか?

- 単にCREATE追加の50個の列が、それらに名前を付けるplayer1 ... player50、アプローチの任意のより良い種類は、このようなにあります場合、私は思ったんだけど状況?たぶんそれを単一の文字列(player1,player2,player3...)として格納し、その後、PHPでassoiative idの配列に分割?

私はあなたの考えを教えてください。 http://sqlfiddle.com/#!9/b786b4

答えて

4

正しい方法は、で動作するように簡単になりますので、データを正規化することである。

はここで、そこに誰のために有用であるように思われた場合は、SQLのフィドルです。あなたは2つの異なるテーブルを使用する必要があります。この方式では

Club(ID,Name,Tag,Federation) 
Club_Players(ID,Player_ID,Club_ID) 

を、選手名簿は、いない列に分散されます。 SQLデータベースは、多数の行、より少ない列の操作を実行するように調整されています。さらに、このアプローチにより、新しいプレーヤーを簡単に追加することができます。新しい行を追加するだけです。現在のアプローチでは、50を超える新しいプレーヤーごとに新しい列を追加する必要があります。これは非常に柔軟な設計ではありません。

+0

この素敵な編集ありがとうございました:) @TimBiegeleisen – sagi

+0

私は既にそれぞれのプレーヤーのデータが入っているテーブルを持っています( 'club_ID'もあります)が、それを持っている方が良いとフィルターで考えましたクラブも。だから、一度私が選んだクラブのIDを確認し、別のテーブル( 'players')の列' club_ID'でこのIDを探してください。 –

+0

実際には、テーブル間の単純な結合により、必要なフィルタをすべて作成できるようになり、カンマで区切られた文字列を操作したり、(おそらく成長する可能性のある)60列テーブルを維持するように、 – sagi

関連する問題