Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!cimshop!davidm From: cimshop!davidm@uunet.UU.NET (David S. Masterson) Newsgroups: comp.databases Subject: Re: Outerjoin implementation? Message-ID: Date: 25 Sep 90 17:58:57 GMT References: <5803@plains.NoDak.edu> Sender: davidm@cimshop.UUCP Distribution: comp Organization: Consilium Inc., Mountain View, California. Lines: 48 In-reply-to: pcg@cs.aber.ac.uk's message of 24 Sep 90 14:29:20 GMT In article pcg@cs.aber.ac.uk (Piercarlo Grandi) writes: davidm> Using default values, though, has always had the problem of davidm> finding a default value that will *never* be used as a live davidm> value. Only if you use in-band default values (I mean, default values that are not specifically tagged as being default). Isn't an "out-band" default (at least part of) the definition of a NULL? Even using in-band default values is not too bad, because in virtually all the applications where they would be used, in practice you need to define an in-band value as default, otherwise you get the equivalent of "dangling pointers", i.e. referential integrity is violated. How would "in-band" defaults be recognized by constraints for the enforcement of referential integrity? One of the reasons for which NULLs are a bogosity is that they are in essence unspecified value and type defaults -- this creates a lot of special casing, because it violates domaining. They thus introduce a flavour of pointerdom into a flat model, a model that only manipulates values, not their absence. NULLs introduce all the problems of references found in some OO languages, while the relational model has not been designed for references. You'll have to explain this more, I don't catch the point yet. Three and four valued logic seem to be a part of the relational model according to Codd (see "The Relational Model for Database Management Version 2"). davidm> In fact, this is the method documented by Ingres for doing outer davidm> joins in Quel. There are those who like Quel, and those who like trouble and use SQL :-). No doubt about SQL, but there's always been a bit of trouble in the "outerjoin implementation" in Quel to the point that Ingres had documented the workaround in a special appendix. ;-) -- ==================================================================== David Masterson Consilium, Inc. uunet!cimshop!davidm Mtn. View, CA 94043 ==================================================================== "If someone thinks they know what I said, then I didn't say it!"