Re: So what's null then if it's not nothing?
Date: Thu, 1 Dec 2005 09:01:26 +0100
Message-ID: <MPG.1df8cc2ca0d9a2e898971e_at_news.ntnu.no>
In article <1133399157.887590.131540_at_g49g2000cwa.googlegroups.com>,
boston103_at_hotmail.com says...
> Jon Heggland wrote:
> > In article <1133365672.244152.260720_at_z14g2000cwz.googlegroups.com>,
> > boston103_at_hotmail.com says...
> > >
> > > Please read the original article I've referenced for justification and
> > > the debate beween Codd and Date on the issue of nulls:
> > > http://www.dbdebunk.com/page/page/1706814.htm.
> >
> > I found no justification in the original article; that's why I asked! I
> > have read the Codd/Date debate; it seems that Codd is confused about how
> > 3VL works.
>
> What specifically is he confused about with respect to 3VL ?
Tautologies, for one thing, as pointed out by Clement-Davies.
> That's a non sequitur -- you cannot know whether I agree or disagree
> with either.
Fair enough, though you have often enough tried to pin opinions on me with less justification than that.
> My point is that, if you cannot avoid using nulls for
> whatever reason, Codd's 3VL with all its defects appears better that
> other missing information handling alternatives.
I think a proper 3VL with a proper UNKNOWN truth value is better. Perhaps a 2VL scheme where NULLs are equal is even better.
> As an aside, if you
> agree with Date, then NULL and 3VL should not even exist in your
> toolset.
Sure. That doesn't mean I can't argue why Codd's NULL/3VL is bad. Quite the opposite, in fact.
> The 3VL equivalence is a logical operator (or connective) whose meaning
> is defined by a truth table in the same way as it is for the 2VL
> equivalence (sometimes called a biconditional). The equality operation
> is a predicate/relation defined over a set of values.
> I do not know why they call equivalence EQUALS.
Because the result of the the evaluation of equivalence and equality should be / is the same, perhaps? Or maybe it's just happy coincidence that it is in 2VL ... What practical (or indeed logical) consequences has such a separation of equality and equivalence for database theory? Do you think it is a good idea to define a system where 0 is equivalent to 0, but not equal to 0?
> > > He uses the same symbol (NULL) both to talk about the unknown as an
> > > unknown value and to talk about the unknown as a logical constant as
> > > you noticed earlier yourself. It's confusing, but one can easily
> > > deduce from the context what exactly he means. In order to avoid
> > > confusion, one can use NULL to represent only an unknown value and
> > > UNKNOWN to represent the additional [to TRUE/FALSE] logical constant.
> >
> > The problem is that NULL = NULL and thus UNKNOWN = UNKNOWN is not true,
>
> There is no 'thus', the problem is that you are missing the context.
Codd uses the same symbol, omega/null for both his 'value (of any type) at present unknown' and for the unknown truth value. Or do you claim that when null is encountered as a 3VL boolean (lukasiewiczian?), Codd says null = null should yield true?
> Now, we
> can consider a set consisting of three elements {TRUE, FALSE, UNKNOWN}.
> It's a trivial observation that we can define equality over such set
> where UNKNOWN = UNKNOWN evaluates to TRUE
We can define anything we want, I guess.
> (UNKNOWN does not have any special meaning, you could as well use
> QWERTY instead).
Just like you can use ASDFGH for TRUE and ZXCVBN for FALSE? What's your point?
> Further, you
> can use NULL instead of UNKNOWN, nothing really changes, you still
> have a three element set {TRUE, FALSE, NULL} where you can define
> equality so that NULL=NULL evaluates to TRUE. In other words, we
> establish different rules for say {0,1,2,3, ..., NULL} and {FALSE,
> TRUE, NULL}.
In which case it is a really, really stupid idea to use the same symbol.
To use the same argument, we can call the empty string NULL, and say
that in a string context, NULL = NULL is true. Or use NULL instead of
TRUE, and "nothing really changes". Possible? Yes. Practical? No.
But anyway, does Codd or SQL do this? If not, what is the point of your argument? That we can, if we want, design really horrendous formal systems? I won't dispute that.
> > I never claimed such a thing. I do claim that 0 = 0, 1 = 1 and 2 = 2,
> > though.
>
> See above.
Come on. Your argument above says essentially "we can define it to be if we want to". I'm asking why we (or Codd) wouldn't want to.
-- JonReceived on Thu Dec 01 2005 - 09:01:26 CET