I have a user table with around 30 columns. Most of these columns are almost always null unless user decides to share additional info about themselves. For example, weight, height, religion, is_smoking, is_drinking, star_sign, school, job, etc.
In my app, I have on option to filter users based on these values. I might be adding one or two columns like these in future.
I was just wondering if there is a better design approach for situations like these. For some reason, it doesn't feel right to have all these nullable columns in the same table with login credentials.
PS: I am using PostgreSQL 11.4 as the database management system.