In the first order predicate calculus, propositions can be true or false. The rows of a relational table correspond to logical propositions that evaluate to TRUE (see How Relational Databases Are Built from Logical Propositions), because false propositions are excluded from the database by means of integrity constraints.
- The initial set of rows represents only true propositions.
- All operations on a relation that contains tuples corresponding to these true propositions obey the formal inference rules of bivalent logic.
If either statement is false, the correctness (truth of the derived propositions) of any query made against the data cannot be guaranteed. Because SQL nulls represent data values that cannot be asserted, you cannot know whether rows that contain nulls represent true propositions, so the tables that contain those rows are not true relations in the mathematical sense.
A frequently provided justification for using nulls is that maintaining rows with missing values is often necessary and useful in the real world. Pascal asks why recording "partial nothings" in the database is useful if maintaining "full nothings" is nonsensical. Pascal uses the following extreme example to support his case against nulls.