Re: NULLs: theoretical problems?

From: David Portas <>
Date: Fri, 17 Aug 2007 18:21:40 +0100
Message-ID: <>

"Hugo Kornelis" <> wrote in message


> Back to databases. A DB can't store a dash symbol for a missing
> proposition, since (a) a dash symbol is not part of each domain, and (b)
> the dash symbol might have a special meaning in a column (as in the
> rating column mentioned above). Instead, a DB uses NULL as a symbol with
> the same meaning aas the dash in ink-and-paper tables: "this space left
> empty intentionally".
> The DB table storing the above information would look like this:
> SSN | Name | DOB
> -------+---------------+------------
> 12345 | John Brown | 1960-08-31
> 90163 | Kate Wilson | NULL
> 55202 | Geoff T. Hurt | 1973-01-12
> and this is a faithful representation of these five true propositions:
> "The person identified by SSN 12345 goes by the name John Brown."
> "The person identified by SSN 90163 goes by the name Kate Wilson."
> "The person identified by SSN 55202 goes by the name Geoff T. Hurt."
> "The person identified by SSN 12345 was born on 1960-08-31."
> "The person identified by SSN 55202 was born on 1973-01-12."
> The NULL in the DOB column does not represent a sixth proposition; it
> just marks the absence of a proposition involving the SSN 90163 and the
> verb "was born on".
> I really fail to see how you can call this concept a "theoretical
> abhorrence".

If those are the ONLY propositions that you intend to represent with your database then you might have a point. The theoretical abhorrence arises as soon as we try to derive other propositions from such a database. Then three-value logic means that true propositions in the real world are no longer true and false ones are no longer false.

>>Or from a different angle you might want to consider that a relation
>>is a set of tuples. A tuple must contain a value in every position, or
>>it is not a valid tuple (not being a subset of the cartesian product
>>of the domains being considered). Hence an SQL-null is a theoretical
> Since NULL is part of any domain in an SQL database, a tuple with NULLs
> *is* a subset of the cartesian product of the domains being considered.

Since NULL is not a value it is not part of any domain.

David Portas
Received on Fri Aug 17 2007 - 19:21:40 CEST

Original text of this message