Re: NULLs: theoretical problems?

From: David Portas <REMOVE_BEFORE_REPLYING_dportas_at_acm.org>
Date: Fri, 17 Aug 2007 18:21:40 +0100
Message-ID: <6OCdnV108uG4RFjbnZ2dnUVZ8tyqnZ2d_at_giganews.com>


"Hugo Kornelis" <hugo_at_perFact.REMOVETHIS.info.INVALID> wrote in message news:3vf9c351l07qa5jf0mui4lmccp8oetkonr_at_4ax.com...

<snip>

>
>
> 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
>>abhorrence.
>
> 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