A Relational Approach to Missing Information
Missing so much and so much
—Frances Cornford: To a Fat Lady Seen from the Train (1910)
The book Database Explorations: Essays on The Third Manifesto and Related Matters, by Hugh Darwen and myself (see Appendix G), describes a variety of approaches to the problem of missing information, all of which avoid the use of, or apparent need for, SQL-style nulls. The present appendix is based in part on a chapter from that book, and it describes one of those approaches in detail. The approach in question is known as the decomposition approach, because it involves decomposing, in a variety of ways, relvars that might appear to require nulls (or something like them) into ones that don’t. In other words, the emphasis is on designing the database in such a way as to avoid a perceived need for nulls. As a consequence, the approach:
Has no notion of null or any other construct that’s allowed to appear wherever a value is expected and yet isn’t itself a value;
Relies exclusively on classical two-valued logic (2VL), instead of three-valued logic (3VL) or, more generally, n-valued logic (nVL) for some n > 2;
Abides by The Information Principle—see Appendix A—in that, at all times, the database contains relations and nothing but relations; and
Is capable of dealing with missing information of any number of different kinds.
Note: Before going any further, I should mention that the approach I’m going to be describing is similar but not identical ...