a union is always a join!
Date: Mon, 05 Jan 2009 13:56:27 -0800
Criticisms, please (preferably ones based on some formal logic or other).
It is inescapable that every relation is a join (eg., Heath's theorem). So every relvar points to a join. If we can't 'delete' through a join, we can't delete from any relvar (my father, who thought a disk buffer was a polishing material could have concluded this - also, I surmise, we can't logically express some number of otherwise possible relations when we have some purpose besides defining a 'view').
The reason for every relation being a join has nothing to do with the expression that forms a join 'view'. I think it's a consequence of Codd's algebra that every relation that has more than one subset of attributes is a join of two or more relations. By Heath, there will always be two heading subsets (at least one of them having the same heading as the relation) that will determine the other possible pairs of heading subsets in a join. Because the join on all of a relation's attributes with any subset of them is algebraically equal to the relation, it looks to me that the number of possible and irreducible join expressions is at least equal to the number of subsets of attributes in a relation heading. (This is implicit. Explicit constraints may have a number of expressions that are fewer and still sufficient to express all the possible expressions.)
For the same reason, every 'insert' is through a join, even if the 'insert' is also to a 'view' formed by union. One can equally say that some relations involve union, but this doesn't change the fact that they are also joins, in other words, not all joins are algebraically equal to some union or other, ie., if a relation is formed by join, it is not always also a union.
If so, it should be far more productive to design a language based on axioms that are universal, the theorems that are always true, rather than on statements that are true only sometimes. Received on Mon Jan 05 2009 - 15:56:27 CST