The Squad
table should be a linking table that creates a many to many relationship between Players
and Team
. Since each Player/Team combination can occur only once, both columns Team_ID
and Player_ID
should be part of the primary key.
Squad
should be on the n-side of two relationships. Its name should probably be something like Membership
.
Why do you need a separate PlayerStatistics
table? Apparently it stores statistics for the same Player_ID/Team_ID combinations as Squad
. The fields of this table should go to the Squad
table.
Shouldn't the Positions
be per membership? One position per membership, i.e. one player has one defined position in each team, in which case Position_ID
should be a column in Squad
.
There should be two relationships between Team
and MatchStatistics
. One on Home_team_ID
and one on Away_team_ID
.

Alternatively you could associate the PlayerStatistics
to Player
and Match
and thus store what each player has done in each single game. You would then retrieve the overall player statistics or the player-per-team statistics through appropriate queries.