Hacker News new | ask | show | jobs
by nerdponx 3234 days ago
I'm all for the idea that relational fields should be NOT NULL

What if the data is actually missing? How else do you record that information?

2 comments

You use the default empty value, and have an extra field for missingness. Than you have real type safety.
Real type safety is sum types. If I need to express something that is present or missing, I should use a Maybe monad.

Having an extra field for "missingness" is less safe because the type system won't enforce that it is either missing or set, you could have it set to a value but marked as missing which is still ambiguous.

That's a "cure" worse than the disease.
If missing data is a valid value, pick a valid way to encode it. Null might work, but realize you could have to reason for the value. Actually missing, or just not collected it recorded.

I concede there may be no difference in those meanings.