Re: NULLs: theoretical problems?

From: paul c <>
Date: Thu, 09 Aug 2007 21:47:21 GMT
Message-ID: <JXLui.45171$rX4.26997_at_pd7urf2no>

David Portas wrote:
> "paul c" <> wrote in message
> news:vnIui.42734$_d2.2251_at_pd7urf3no...

>> Hugo Kornelis wrote:
>>> On Wed, 08 Aug 2007 20:42:52 GMT, paul c wrote:
>>>> Hugo Kornelis wrote:
>>>>> ...
>>>>> The ANSI standard defines NULL as follows:
>>>>>   "null value: A special value that is used to indicate the
>>>>>    absence of any data value."
>>>>> Thus, the only concept collapsed into NULL is that of "no value here".
>>>>> ...
>> ...
>>> <nitpicking>
>>> The ANSI text doesn't define "the null value" (as they call it) as a
>>> value that conveys that the value is not _a_ value, but as a _special_
>>> value that conveys that there is no _data_ value.
>>> </nitpicking>
>>> Personally, I never call NULL a value, and I prefer to describe NULL as
>>> a "marker that indicates the absence of any value". But I couldn't
>>> really write that and still claim to be citing ANSI, eh?
>>> ...
>> I noticed in your blog you said that the table with a null-able birthday 
>> column was in 2NF.  If saying that is right, I suppose we must be careful 
>> to regard functional dependencies as determining values sometimes and 
>> non-values other times.

> But Hugo is not right. From the Alice Book, p163:
> "A relation I over U satisfies X -> Y, if for each pair s, t of tuples in I,
> s{X} = t{X} implies s{Y} = t{Y}."
> Since null = null is not true, no attribute with nulls satisfies any FD, not
> even the trivial one {A}->{A}!
> Furthermore, no relation with nulls satisfies any join dependency since join
> dependency requires a natural join and a natural join involving nulls will
> exclude some tuples. Chris Date this time:
> "Let A1, A2,., An be subsets of the heading of relvar r. Then r satisfies
> the join dependency (JD) *{A1,A2,.,An} if and only if every relation that's
> a legal value for R is equal to the join of its projections on A1, A2,.,
> An."
> Naturally enough it follows that any relation hypothetically containing null
> values ought to be decomposed so as to eliminate them, ie. 5NF.

Thanks. That seems quite a forceful argument to throw in the face of 5NF devotees who happen to also admire nulls! What to say to the 4NF fans?

(even though I'm not sure in "s{X} = t{X} implies s{Y} = t{Y}" whether "implies" stands for logical implication.)

p Received on Thu Aug 09 2007 - 23:47:21 CEST

Original text of this message