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

From: vc <boston103_at_hotmail.com>
Date: 8 Dec 2005 08:30:25 -0800
Message-ID: <1134059425.424236.119570_at_g14g2000cwa.googlegroups.com>


Jon Heggland wrote:
> In article <1134049822.702505.277830_at_g43g2000cwa.googlegroups.com>,
> boston103_at_hotmail.com says...
> >
> > > I'll have to say that your scheme above seems to have all the flaws of
> > > Date's 2VL "special values" approach, *plus* extra complexity. YMMV.
> >
> > It's not my schema but rather Codd's.
>
> Not according to how I read the article we are arguing about.
>
> > That's how the SQL handles NULL (whatever NULL is assumed to mean).
>
> I am not convinced of that. Have you found the relevant passages in the
> standard?
>

In brief, the standard has this to say: there is an element/marker (NULL) that extends each domain, and the rules for using the element in those domains are such and such. The standard deals with the 3VL logic by defining the truth tables for AND/OR/NOT and providing an additional  truth vale (UNKNOWN). Codd's treatment is similar except the vague hint at uniformity. What I described, and you've called "[my] schema", is similar to what the SQL standard does.

> > > I'd say that what they mean---the semantics---is defined to a great
> > > extend by how their operators work.
> >
> > What truth values, as well as various markers (I use the word marker
> > in Codd's sense, not in Date's) represent is in the
> > designer(s)/modeller(s) mind.
>
> I meant NULLs generally, not truth values.

Right, ok then, NULL behaviour is defined by the rules in the domains other that the 3VL one.

>
> > > (And using numerals for both integers and floats is not the same thing.
> > > Tell me if you're interested. :)
> >
> > It's not entirely the same sure, due to the prominent role logic plays
> > in reasoning, but if one looks at the integers, rationals, 3VLs as
> > just algebraic structures with different rules of the game, the
> > analogy should be obvious.
>
> No, I think the way you used it was a bad analogy. From memory, you
> compared the use of NULL as (for example) zero for integers and as
> UNKNOWN for 3VL truth values with the use of 3 as integer and as
> rational. But the number 3 is the same value, the same concept,
> regardless of the declared type of the variable holding it.

That is not correct.

>Integer is a
> subdomain of rational.

That is not correct either. Mathematically speaking, integers form a commutative ring and rationals are a field. Besides, you cannot say that the rational 3 and the integer 3 are the same thing, because the former is an equivalence class [canonical] representative over integers which is surely not the same thing as the integer.

My point is, as it was before, that you can use the same label to denote different things as long as you are careful with what you are trying to say.

>Besides, '3' alone in programming languages
> typically signifies the integer; '3d' or '3f' are expressions of the
> same number in floating-point types. You can assign '3' to a FP
> variable, but that is because of implicit type conversion, not because
> the same symbol denotes both an integer and a FP number. (Of course, I'm
> assuming a strongly typed language.) None of this is analogous to the
> NULL question.
> --
> Jon
Received on Thu Dec 08 2005 - 17:30:25 CET

Original text of this message