Factsheet
Videos
Nulls are negatively viewed from the perspective of database normalization. The idea being that if a value can be nothing, then you really should split that out into another sparse table such that you don't require rows for items which have no value.
It's an effort to make sure all data is valid and valued.
In some cases having a null field is useful, though, especially when you want to avoid yet another join for performance reasons (although this shouldn't be an issue if the database engine is setup properly, except in extraordinary high performance scenarios.)
One argument against nulls is that they don't have a well-defined interpretation. If a field is null, that could be interpreted as any of the following:
- The value is "Nothing" or "Empty set"
- There is no value that makes sense for that field.
- The value is unknown.
- The value hasn't been entered yet.
- The value is an empty string (for databases that don't distinguish between nulls and empty strings).
- Some application-specific meaning (e.g., "If the value is null, then use a default value.")
- An error has occurred, causing the field to have a null value when it really shouldn't.
Some schema designers demand that all values and data types should have well-defined interpretations, therefore nulls are bad.