1 Team (pk TeamId)
2 Player (pk PlayerId)
3 Player/Team (pk is from fk's TeamId and PlayerId plus a date, assuming you want that over time)
4 PlayerAttributeType (pk PlayerAttributeTypeId, instances include personal and position attribute types: height, weight, DOB, favorite color, etc.)
5 Player/PlayerAttributeType (pk is from fk's PlayerId, PlayerAttributeTypeId, date)
You could even go down another level and have a Player/PlayerAttributeType/Team entity, depending on if the player had different attributes for different teams (Look at American baseball players such as Russell Martin or Johnny Damon...different positions for different teams for different seasons).
Might be too vague (sorry, no picture).
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...