We usually have something like 3 or 4 tables that get joined, and the columns that are nullable indicate what type to make it (the phone number is null so this is an email recipient, that kind of thing), however joins can get hairy. My general rule of thumb is to have the tables be easy to insert into since queries are easier to scale: so if you have all your data coming from one endpoint, it goes into one table, that kind of thing. I don’t like having multiple sources of truth for a table (like two separate classes modifying the same table). Hopefully that helps - essentially keep the writes super simple and let the queries be more complex