Re: How to normalize this?

From: <compdb_at_hotmail.com>
Date: Mon, 6 May 2013 14:44:04 -0700 (PDT)
Message-ID: <5bc91544-3df1-4ec4-86b4-e14dadec5dd1_at_googlegroups.com>


On Monday, May 6, 2013 8:18:38 AM UTC-7, Jan Hidders wrote:
> On 2013-05-06 12:26:10 +0000, Erwin said:

> > How can deliberate admission of "information differences" coexist with
> > "aims of being lossless" ?

It is called a "lossless" decomposition because if the components are projections of the original then they join to the original. Nb this assumes certain predicates for the components in terms of the original. (It has nothing per se to do with other predicates.) Nb this does not deal with appropriate constraints on the components or the original.

Compare to additionally being "dependency-preserving" where if given dependencies hold in the components then they hold in the original. So enforcing them in the components enforces them in the join. Although moving from 3nf to bcnf is not dependency-preserving, one can introduce suitable inter-component constraints. Nb other constraints are not dealt with by normalization.

> Well, "lossless" means nothing is lost, but, yes, something is allowed
> to be added, i.e., the new schema might be able to represent
> information that the old one could not.

Normalization does not "allow" this. What happens is people normalize, then they notice they really wanted a schema allowing more states (ie predicates that the normalization-generated predicates imply), which they didn't need to normalize to find, then they change to new the predicates for the components, giving a new predicate for their join, BUT in such a way that just happens to leave the new components properly normalizing the new join. They confuse this process with normalization and do not understand normalization's role in it.

> > I contend that the "lossless" in conventional normalization can be
> > upheld only for such a perverse and narrow meaning of the term that the
> > claim (of having "lossless" decompositions) becomes essentially
> > meaningless/futile/irrelevant/...

> That's an .. er .. interesting claim. :-)

Erwin is concerned with information-equivalent schemas and appropriate constraints. His error is in confusing "lossless" with this.  

Other than that he is correct. Received wisdom for use of normalization in the design process is confused. If you don't use the existential component predicates per my earlier message, ie the components are not projections of the original, then you are not using the design you normalized.

The reason why received-wisdom design process of normalizing one design but using a different one works is that if you decide to use new component predicates with the same dependencies and a new original that is their join (thus with a new predicate that is their conjunction) then this new decomposition of a new original into new components will also be in the same normal form. (Appropriate non-dependency constraints will have to be determined.)

Other predicates/variables on other subsets of the attributes remain unexplored. Normalization is neither sufficient nor necessary for that. You could just determine what predicates you want on what subsets of attributes and then normalize. But then the desired superset predicates tend to be obvious conjunctions of the subset ones. Thus Fabian's normalization-light designs per Erwin's earlier message.

philip Received on Mon May 06 2013 - 23:44:04 CEST

Original text of this message