I think it depends on if you want your database table to enforce non-nulls and FK constraints. If you don't need your database table to do this kind of enforcement then you aren't breaking any contracts about the integrity or completeness of the rows in a single table. If you want to have your database table do this kind of "checking" then you'd need a second table that allows for "missing-ness" in your draft.