Re: Date's First Great Blunder
Date: Thu, 22 Apr 2004 18:18:12 GMT
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
(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.
> 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 - 20:18:12 CEST