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

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Fri, 9 Dec 2005 23:10:42 +0100
Message-ID: <MPG.1e041f51433e5a8898973a_at_news.ntnu.no>


In article <1134060103.915048.159540_at_g14g2000cwa.googlegroups.com>, boston103_at_hotmail.com says...
>
> > ... unless he by '=' means equivalence!
>
> I don't know about a single example of him using '=' as equivalence in
> the logical domain. Could you provide one ?

Something like "NOT(F) = T; NOT(w) = w; NOT(T) = F", you mean?

Apart from that, he uses '=' a lot---calling it a "binary relation"--- and he defines his theta-select and theta-join using it. He also wants to (be able to) store truth values in the database, and he does not say that '=' should mean anything else if that is the case. Based on this, I think it is very likely that he means equivalence in all cases. Although you complained of my calling equivalence a relation ... Is Codd at fault too, or is there another common interpretation of '=' that can safely be called a relation?

> > I don't suggest to redefine equality for anything. I don't think Codd
> > does either.
>
> But he does, what else 'null = 7--> unknown' is if not a redefinition
> ?

A redefinition of equivalence, not equality. I don't think this equality enters into the discussion at all, actually.

> > Fair enough. And this doesn't mean that arithmetic has "ceased to
> > exist" in SQL due to a redefinition of equality of numbers, because
> > arithmetic doesn't depend on comparing truth tables?
>
> I do not understand the bit about arithmetic.

Me neither. :) I'll rephrase: You say (if I understand you correctly) that to claim that NULL = NULL is UNKNOWN even for "truth value NULLs" constitutes a redefinition of equality, which renders logic useless/unusable. I'm wondering why a similar disaster doesn't happen to arithmetic / number theory when we say that NULL = NULL is UNKNOWN for "integer NULLs".

> > What's so unclear about it? The very same examples I have used several
> > times earlier. "select * from Foo where (a < 16) = (b > 7)" if a and b
> > are numbers; "select * from Bar where a = not b" if a and b are truth
> > values.
>
> I thought we'd covered that earlier. The most likely interpretation is
> '=' is a biconditional.

I thought so too. But I don't really understand your position here. We are discussing what Codd's "[W]hat is the truth value of x = y if x or y or both are null? An appropriate result in each of these cases is the unknown truth value, rather than true or false" means, right?

The "null = null is UNKNOWN" statement is a special case of the quote above. I believe Codd meant this to hold even for the truth value kind of null/w. I also believe that Codd meant '=' to signify equivalence, not equality; and this is all consistent if he used Kleene's 3VL.

If I understand you correctly, you believe that '=' means equality in the quote, and that therefore Codd implicitly meant it to not apply to truth value null/w, because that would break logic. That seems a very convoluted reading to me, especially when we seem to agree that '=' means equivalence everywhere else. If we just leave equality out of it, everything falls into place!

> > A relational algebra or calculus expression---but we have to use a
> > textual language anyway, so it doesn't really matter.
>
> Please provide an example of such expression.

Never mind; SQL is adequate for this. It makes no difference.

-- 
Jon
Received on Fri Dec 09 2005 - 23:10:42 CET

Original text of this message