Let's consider a scenario in which a user registers to a certain service which needs his gender, birthday and location to function properly.
Sometimes we want to try registration with just email then ask later for the other details in order to increase conversion rate and not to annoy the users.
In this case there are two solutions that I can think of:
make birthday, gender and place as nullable fields in database (place_id is referencing primary key in places table, so it will be a nullable index) and set them as null
just put some default value (ex always male, or another gender not set, and birthday now, or create a fictious place with certain id that internally we know that means not set and use it as default)
The risk with solution 1 that I can think of is that other parts of application (ex javascript frontend) may run into errors if not having very detailed validation. For example if we show the location in map and expect always to have place id but that is nullable an error may happen.
The second solution also looks "shady" to me, may have unexpected results.
So that's why I am here to ask you in case of suggestions for a better solution? Thanks in advance