Re: Proposal: 6NF

From: David Cressey <dcressey_at_verizon.net>
Date: Thu, 12 Oct 2006 19:56:31 GMT
Message-ID: <P5xXg.9215$ms1.5031_at_trndny05>


"J M Davitt" wrote:

> There's a bit of a wrinkle here: NULL -- as found in those
> non-relational databases which claim to be relational -- is
> a marker that denotes several things, only one of which is
> absence of a value.

There is no data here... make of it what you will. The writer and the reader can invent, if they like, a convention about what any given message means. This includes the absence of a message.

What would Paul Revere have done if he had looked up to the old North church and seen no lanterns?
He probably had a fallback plan for that case, but Longfellow doesn't tell us what it was.

What's you've said below is just the reader making something of the absence of a message.

> It is because those NULLs have no clear
> genesis that one can't make sense of anything holding a NULL.
> We can say, "There's a NULL here because ___ or because ___
> or because ___ ..." In other words, it's impossible to know
> what any given NULL means. Consequently, it's impossible to
> construct declarative, conjunctive-only, quantifiable
> statements using some thing that holds one of those NULLs.
>
> Yes, Codd did make some proposals regarding NULLs.

More interesting than that is his rule that a relational system should have a systematic way of dealing with missing data.

> The point? The theory has been explored and refined for more
> than 30 years. Not everything ever written was correct and
> NULLs are a good example of a mistake.
>

NULLs may have been a mistake (although I don't think they were). But they weren't Codd's mistake.

> >>
> >>Since it has a different meaning in C, there is no point bringing C into
> >>play here.
> >>
>
> Actually, I wish that C had called the magic value NIL.

You might add the Lisp NIL. This is an even more interesting flavor of nothing.

> I suspect that it was familiarity with the ASCII NUL -
> which happens to represent the same value as C's NULL -
> that lead to the on-going confusion. But point that
> there is no point bringing C into the discussion is correct.

> Decomposition and normalization are not the only methods
> one can use to develop a normal design.

Good point. I was merely pointing out one method.

> If one wishes to denote a magic values in a type system which
> mean "ain't none" or "don't know" or "maybe," that's fine
> with most of the theory crowd.

Yes, but the SQL NULL isn't part of a type system.

> Actually, no: C's NULL is nothing more than a zero value
> which marks the end of a string of characters or, by convention,
> the end of a list of pointers or an uninitialized pointer or a
> field of reset bits. (There was some use of an empty string
> called NULL, but that was a horrible mistake.)

Confused. The ASCII character NULL is, indeed a string terminator in C. The end of a list of pointers is a very different animal, although it also has a zero representation. C is not strongly typed.

>
> In fact, other than use as an end-of-string marker, I suspect
> that most uses of NULL are just C-programmer conventions rather
> than a language feature. It certainly isn't anything as
> sophisticated as a systematic way of dealing with missing data.

I disagree. Received on Thu Oct 12 2006 - 21:56:31 CEST

Original text of this message