• NULLs are a necessary evil, they are a reflection of the real world. I try to avoid them whenever I can but one cannot avoid them. They can be present whenever one uses outer joins, for example.

    Our problem is that the requirements engineers or the developers design the database and very often they don't really care. The database is somewhere where you dump data (as one of them told me). And so we end up with tables whose only non-null field is the primary key.

    We have a table that, amongst other things, assigns a specific value to a specific person and it can vary over time. It has also has many, many other columns.
    Those who designed the database could have made another table with the current value-person assignation, but no, it was easier to make a big table and create a new row when there was a new assignation. NULLs come in handy for those who want to build a database quickly and don't want to have to think about database design.