# Re: a union is always a join!

From: paul c <toledobythesea_at_oohay.ac>
Date: Wed, 07 Jan 2009 14:45:26 -0800

rpost wrote:
> paul c wrote:
>
```>> Criticisms, please (preferably ones based on some formal logic or other).
>>
>> It is inescapable that every relation is a join (eg., Heath's theorem).
```

>
> As Brian writes, this is one step too far. Every relation can be
> decomposed into smaller ones based on its nontrivial functional
> dependencies, but if it hasn't any - and the resulting relations don't -
> it is only a join of itself.
> ...

All relations have at least n+1 fd's, even if trivial, where n is the number of attributes. All relations with at least one attribute (all but 'Dee') are a join of at least two (non-empty) relations.

> Perhaps by join you mean something like the AND in Darwen's 'A New
> Relational Algebra' (thanks for giving its URL earlier), which has the
> join and and union of relational algebra as special cases. We can also
> decompose relations by writing them as the unions of other relations
> (someone I know wrote a PhD thesis about it), but Heath isn't about that.
> ...

<AND> or the equivalent in another algebra is the only way to understand what join and union really mean, ie., are actually capable of being interpreted as. Some 'unions' can only be expressed as the union of themselves and an empty relation. I think it is helpful to understand union from some formal definition that acknowledges the logical possibility that two relations may not be 'union' compatible, eg., the '<OR>' operation or equivalent. Understanding relation structure based on empty relations seems as pointless/useless to me as understanding relational complement as being 'simple' complement. In fact, I'd rather call simple complement the vague complement and relative complement the exact complement. Why eschew a more precise interpretation when it's staring us in the face?

> algebra join horizontally (it extends tuples with attributes and values),
> but when projecting these attributes away again, hasn't added anything).
> An insert can be expressed as a (relational algebra) union of the existing
> relation with the inserted tuples, but no nontrivial r.a. union is a
> r.a. join (and vice versa). Using the term 'join' for Darwen's AND
> operator, which combines r.a. union and join, doesn't change this.
>
> What are you trying to achieve?
> ...

Originally, the most potent axioms for an implementation language that follows McGoveran's suggestions, ie., ones that recognize relation structure as opposed to how a relation value may have been arbitrarily formed. The way most people talk of Codd's algebra is simplistic because they have typically not tried to interpret it, probably have never even read it, for example, in the above, what do horizontal and vertical coordinates have to do with anything relational?. This is faux technocracy, usually involving what de Bono called porridge words which in this case are additional lingo to disguise a lack of basic understand (and which is how I believe Codd's algebra is usually 'taught', or thought to be 'taught'. But more to the point, I continue to be amazed that people claim they can 'insert' a tuple to a relvar but cannot 'delete' that very tuple! (vice-versa too.) I think when they say they can't delete, what they are really saying is that they can't delete a tuple that  is not in the join! The same goes for asserting and retracting a proposition in general. I've no doubt that it might be difficult to retract a proposition that one has never asserted! In a way, this is no surprise to me and I still don't know why people think it is a problem, when all human affairs contain much mumbo-jumbo that is logically make-believe. Now that you mention it, another goal would be to prevent geometric interpretations of the basic algebraic structures! Sounds like tables or arrays are getting mixed up with relations. Received on Wed Jan 07 2009 - 16:45:26 CST

Original text of this message