Re: 1 NF

From: paul c <toledobythesea_at_oohay.ac>
Date: Sat, 03 Mar 2007 19:31:36 GMT
Message-ID: <s2kGh.1209871$5R2.691129_at_pd7urf3no>


I'm now wondering if my previous comment about throwing the term "1NF" in the garbage was a bit too shallow (and, I hate to say, whether Celko was on a useful track, even though as usual he didn't give pertinent reasons). IIRC, in another thread Bob B mused about implicit conversions of singleton sets which also got me to wondering and made me start to look at TTM's suggestions about inheritance for the first time.

Codd being the terse guy he was, I find it easy to fall into the trap of   reacting to his words as if he meant them to be all-inclusive. For example in the 1970 paper he said "A relation whose domains are all simple can be represented in storage by a two-dimensional column-homogeneous array of the kind discussed above." I don't think this means that a relation is necessarily two-dimensional. He continues with "...the possibility of eliminating nonsimple domains appears worth investigating ... There is, in fact, a very simple elimination procedure, which we shall call normalization." He gives some reasons such as avoiding pointers and then says "If the user’s relational model is set up in normal form, names of items of data in the data bank can take a simpler form than would otherwise be the case."

Maybe I should have qualified my example of the relation that shows the sets of all parts that have been shipped in any shipment. While Codd intended that one relation could be shared by many applications whether it would have the same purpose in those applications is something I'm not sure he went into detail about. Here, I mean the purpose of the relation, not of the applications which would of course have complementary purposes. Ie., for one purpose, that relation is in a normal form but for another it isn't. For example, if the purpose is to talk about combinations of parts, the relation is in a normal form whereas if the purpose is to talk about individual parts, it isn't. I worry that this sounds almost so obvious as to be the same as saying nothing, but so be it. I wouldn't argue if someone said "any idiot can see that a relation that talks about one thing might have a different purpose from one that talks about a different thing"!

He also says "If normalization as described above is to be applicable, the unnormalized collection of relations must satisfy the following conditions : (1) The graph of interrelationships of the monsimple domains is a collection of trees." From that I take it that he would say my relation is normalizable. Whereas I think that if we're talking about combinations, we can certainly express it without additional attributes but following the Information Principle there is no way to write it down/display it as a "table" without some set notation or an additional attribute. Codd's normalization method seems to proceed by eliminating attributes from one relation and adding them to additional relations, not adding them to the original relation.

I think among other things, Codd meant that if you can't display a relation as a table, it isn't in a normal form. He didn't mean if you can display it that it is necessarily normalized. I'm pretty sure he meant that the relation I have in mind is actually out-of-bounds but I find it hard to believe that as smart as he was, he didn't think of such relations.

Secondly, if the purpose is to talk about individual parts that have ever been shipped, I wonder if it is really necessary to dispense with sets, ie., to talk of individuals. If I have a relation that is made up of nothing but individual part numbers and the operators I use can all be expressed with operands that stand for different values of that same relation and all possible resulting relations can be projected or joined to get a value of the same relation, is it not overly pedantic/unnecessary to treat this as anything different from a relation that is made up of singleton sets of individual part numbers?

If I recall correctly, Fabian Pascal has stated that a relation is fully normalized if it talks about (states one kind of fact about) one thing ("entity"). I find some comfort in this. Note he doesn't mean that such a relation has only one attribute.

I recognize that a type that is a set of sets for values should be treated as being different from a type is a set of values, otherwise we must implement exceptions that could be tricky. So I would like to take display issues out of the picture and suggest that we can express, if not tabularize, everything we want about a particular type if the most basic normal form of a relation is a singleton set, ie., a set of one individual of that type.

Another reason I'm wondering about taking that as a starting point, ie., dispense with any provision for tabular presentation is a vague one, not so much to make anything tidier, eg., find a home for the 1NF term, rather to see if that gets me some leverage for questions that are more vague to me at the moment or may seem silly to some. Just academic reasons, really. For example, I don't know how to look at an individual as a sub-type of a set whereas I gather a singleton set could be looked at that way, maybe to explore whether some aspects of type theory, eg., most-specific-types, give leverage against other questions, who knows what else.

Above, I've written a lot about not much, just want to see if it strikes any chords and crossing my fingers that it doesn't look like what Dawn would post. Just in case, I'll try to make up by closing with a joke - usually, talk about "what's 1NF?" reminds me of Professor Smart who was on black and white TV when I was a kid - asked "what's matter?", he would reply "why, nothing is the matter".

p Received on Sat Mar 03 2007 - 20:31:36 CET

Original text of this message