The logic on which the relational model is based is a two valued logic (2VL). In its attempt to deal with the so called “missing information” problem, however, SQL—more specifically, SQL’s support for “nulls”—is based on a three valued logic (3VL) instead. This session explains in detail why any such approach is doomed to failure. More specifically, it shows why 3VL (a) doesn’t solve the problem, (b) isn’t useful, and (c) can actually be dangerous.
The presentation is divided into three modules. Module I reviews conventional two-valued logic (2VL), examines some of the most immediate differences between it and three-valued logic (3VL), and shows how 3VL inevitably gives rise to errors. Module II goes into more depth on why such errors are inevitable. It also considers the question: Which 3VL are we talking about, anyway? Module III then considers many-valued logics in general, and four-valued logic (4VL) in particular, and discusses a variety of further related points. It also briefly describes an approach to missing information based on 2VL and classical relational theory.