次の表を検討してください。
リーグ [id,name]
team [ id,name,leaguesid]
FK: (leaguesid) -> (leagues.id)
AK: (leaguesId) UNIQUE /チームは 1 つのリーグに所属できる/
プレイヤー [id,name]
player_teams [playersid,teamsid]
FK: (playersid) ->players.id, teamid -> teams.id
AK: (playersid,teamsid) UNIQUE /プレイヤーは同じチームに 2 回所属することはできません/
これはかなりうまく機能しますが、同じプレイヤーが同じリーグに複数回参加することを防ぐ制約が必要です。これは、players_league テーブルを作成したり、リーグ ID をこのテーブルに追加したりせずに実行できますか? これらのオプションは、チームに基づいてプレーヤーが所属しているリーグをすでに判断できるため、非正規化/オーバーヘッドを追加しているようです。
ありがとう