Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> comp.databases.theory -> Re: So what's null then if it's not nothing?

Re: So what's null then if it's not nothing?

From: vc <>
Date: 30 Nov 2005 17:05:57 -0800
Message-ID: <>

Jon Heggland wrote:
> In article <>,
> says...
> >
> > Please read the original article I've referenced for justification and
> > the debate beween Codd and Date on the issue of nulls:
> >
> 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 ? His truth tables are the same as Lukasiewicz's (for the logical operations he talks in the article). His 3VL is not complete without the implication, but perhaps he does not need it.

> But if we're just going to discuss like this, let's just say
> that I agree with Date and you with Codd, and leave it at that.

That's a non sequitur -- you cannot know whether I agree or disagree with either. 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. As an aside, if you agree with Date, then NULL and 3VL should not even exist in your toolset.

> > You are confusing the logical equivalence connective (<=>) with the
> > equality (=)predicate/relation. They are not the same thing,
> > naturally.
> Indeed? Seems silly to call it EQUALS, then. But please explain.

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.

> > 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. If NULL represents a 'missing value', the equality predicate over some set of values extended so that it includes a special element NULL is defined in such a way that NULL = NULL evaluates to UNKNOWN. 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 (UNKNOWN does not have any special meaning, you could as well use QWERTY instead). 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}.
> whereas in a consistent logical system, UNNOWN = UNKNOWN is true, just
> like TRUE = TRUE and FALSE = FALSE is.

See above.

> > No, it is not. Similarly, Lukasiewicz uses 0,1,2, but you would not
> > claim that 2 is an integer in the context, would you ?
> I never claimed such a thing. I do claim that 0 = 0, 1 = 1 and 2 = 2,
> though.

See above.

> > > Do you know how Codd defines implication in his 3VL?
> >
> > He does not, at least not in the article I've refered to.
> Well, AND, OR and NOT (that he does define) are not sufficient to
> produce all functions in 3VL (unlike in 2VL), afaik. His theory has some
> holes.

That is correct.

> --
> Jon
Received on Wed Nov 30 2005 - 19:05:57 CST

Original text of this message