0

次の表を検討してください:シーズン、クラブ、チームプレーヤー

チームはクラブに属し、プレーヤーがいますが、シーズンごとにクラブのチームとそこにいるプレーヤーは変わる可能性があります。シーズンごとにクラブ/チーム/プレーヤーのすべての変更をフォローできるようにしたいと思います。

今のところ、次のような関係テーブルを作成します。

season_club(season_id、club_id)
season_team_player(season_id、team_id、player_id)

チームは直接クラブに属しています(このための外部キー列があります)。

これはこれを行うための最良の方法ですか、それともシーズンごとに新しいクラブを作成し、そのシーズンをクラブに直接保存する方が良いですか?クラブのデータはシーズンごとに変わらないので、このようにしようとしています。クラブのチーム/プレーヤーの変化を追跡し、個々のプレーヤーのチームの変化も追跡したいと思います。

私の質問がいくらか明確であることを願っています...

前もって感謝します!

4

1 に答える 1

1

とりあえず、次のような関係テーブルを作成します。

season_club (season_id, club_id)
season_team_player (season_id, team_id, player_id)

チームはクラブに直接属しています (このための外部キー列があります)。

これらのテーブルの 2 番目は、私にとって非常に理にかなっています。4 つのメイン テーブルと合わせて、必要なすべての情報を提供する必要があります。つまり、どのプレーヤーがどのチームでどのシーズンにプレーしたかがわかります。また、特定のシーズンに選手がいたチームを確認し、そのシーズンに存在したチームを結論付けたり、クラブのキーからそのシーズンにアクティブだったクラブを結論付けたりすることもできます。したがって、2 番目のテーブルが不完全でない限り、最初のテーブルは必要ないと思います。つまり、既存のチームに関するデータがないクラブや、個々の選手がわからないクラブがあった場合です。

パフォーマンスの観点からは、より多くの冗長性が望ましいかもしれませんが、エレガンスの観点からは、上記のスキームと多数の優れたビューを組み合わせることで、ニーズに十分に応えることができます。

これはこれを行うための最良の方法ですか、それともシーズンごとに新しいクラブを作成し、シーズンをクラブに直接保存する方が良いですか?

住所の変更など、クラブのデータ自体の変更を追跡する場合を除き、これを行わないことをお勧めします。クラブ名を比較しなくても、シーズンごとに同じクラブを特定できれば、これは大きな利点だと思います。

于 2013-02-25T12:56:01.440 に答える