# Re: NULLs: theoretical problems?

Date: Fri, 10 Aug 2007 10:47:04 -0000

Message-ID: <1186742824.096264.94440_at_q3g2000prf.googlegroups.com>

On 9 aug, 23:47, paul c <toledobythe..._at_oohay.ac> wrote:

*> David Portas wrote:
**> > "paul c" <toledobythe..._at_oohay.ac> 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?
*

The same thing, since 5NF generalizes 4NF. But als there the argument is of course complete nonsense.

- Jan Hidders