| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: Date's First Great Blunder
Actually, Boolean logic does not match reality as humans perceive it. 3VL
and 4VL do a better job. The main reason computers depend so strongly on
Boolean logic is that the hardware guys decades ago decided to run with the
simple circuitry of 2VL. In the world of theory, 2VL is strong because the
Ancient Greeks promoted it. If computers had 'trits' instead of 'bits' and
if our modern school of thought had descended from the Incans instead of
from the Greeks, we'd take 3VL [true, false, unknown] for granted.
Honestly, I am not familiar with a culture that developed 4VL [true, false,
unknown, unknowable], but I believe that such 4VL is the only complete way
to address all possible predicates.
NULLs are evil, because by saying *nothing* they can mean *anything*. However, the precision provided by 2VL is counteracted by the inconvenience of decomposing a database into a greater number of smaller relations to deal with missing information. Then, in a recomposed derived relation, you again have to deal with NULLs in some way or another (like with EXTEND).
Incidentally, the reason that UNAVAILABLE equals UNAVAILABLE by default in
today's implementations is due to the limitations of 2VL. In proper 4VL,
(UNKNOWN ?= UNKNOWN) = UNKNOWN
and
(UNAVAILABLE ?= UNAVAILABLE) = UNAVAILABLE
so John's age is not equal to Mary's age. This can be implemented without
much difficulty in Dataphor. Granted, it is tough (impossible?) to sort on
an attribute that has such a quaternary. However, an overriding factor is
what you want to do with your data. In a given context, it might behoove
you to treat UNAVAILABLE as equal to UNAVAILABLE.
I do agree with Date that MVL does undermine the Relational Model as currently defined...and I'm not in the mood to rewrite the RM while there are bigger fish to fry (like dealing with the insanity of the whole computing field). Besides, nobody until recently had even given the RM a try in implementation. I'm hoping it finally catches on.
--Senny
Neo wrote:
> Suppose you have the special values "UNKNOWN", "UNAVAILABLE", etc.
> If john's age is the special value "UNAVAILABLE"
> and mary's age is the special value "UNAVAILABLE"
> is john's age equal to or not equal to mary's age?
> Since the values are the same, some would say they are equal.
> Since the values indicate unavailable, others would say the answer is
> unknown, thus resulting in 3VL.
>
> Per Date, Intro to Db Sys, "3VL suffers from the very serious
> ('showstopper') problem that it does not match reality - that is,
> results that are correct according to 3VL are sometimes incorrect in
> the real world. NULLs and 3VL undermine the entire foundation of the
> relational model."
Received on Thu Apr 22 2004 - 13:18:12 CDT
![]() |
![]() |