Database Design for Sports Stats
If you find yourself saying "nullable columns" before you have written code I generally think you need to normalize more(as always, it depends.)

If you want one system to maintain, the last option seems the most relevant, but "splitting them into two tables" is not really where you would want to take it.

if we want to track basic things like Players, Games, and Sport type you would simply add intersection tables between the relevant things you want to store. 


Players(playerid, player information) -&gt; PlayerGames(playerid, gameid) &lt;- Games (gameid, game information)
^
|
PlayerSport (playerid, sportid)
|
v
Sports (sportid, sportname)


This means we could count all of Michael Jordan's games by sport(as he played multiple) with a query something like: 

select count(*), sportname
from Players p
join PlayerSport ps ON ps.playerid = p.playerid
join PlayerGames pg ON p.playerid = pg.playerid
where p.name='Michael Jordan'
group by sportname