Re: Dawn doesn't like 1NF
Date: Thu, 7 Oct 2004 08:48:55 -0400
Message-ID: <pI2dncO9sK7WpvjcRVn-uQ_at_comcast.com>
> In regards to Dawn's comments that there is no basis for 1NF in
mathematics,
> I disagree with that even more vehemently. There exists a basis in both
> logic, philosophy, and mathematics. Show me the alternative to relations,
> domains, tuples, and cartesian products across values using nested values
in
> relations, and I might defer. I'd actually enjoy being
convinced...perhaps
> with even a proof.
First off, I agree with you that relations, domains, tuples, and cartesian products are the basis of much coherent thought in the area of "describing reality", which is what databases are ultimately all about. And the fact that Codd developed the theory of database systems on a logical basis, complete with axioms and theorems, was the basis for much of its strength. The rest of IT tends to go with "we tried this, and it worked, so we'll try it again."
Having said that, there is a fundamental divergence beween relational calculus and first normal form as described by Codd in his 1970 paper. If you reread the 1970s paper carefully, you'll see that 1NF consists of two parts: the first rule is "no duplicates allowed". The second part is "no complex attributes". Codd had reasons for making this divergence, but that's another discussion.
The first rule follows precisely from the mathematics of relations. If duplicate "rows" (to use SQL terminology) are not only allowed, but assert a different "fact" for each instance, then there is non relational information being conveyed, and the relational mathematics are an unreliable guide to the performance of the resulting system. In other words, duplicate rows are either useless, or they are harmful. so far, so good.
But the limitation to simple attributes has no such counterpart in the mathematics of relations. In particular, a domain can be a domain of relations in math. Not in the relational data model of 1970.
When the commercial "relational DBMS" systems came out in the 1980s, all of them required that table columns be "simple". Even a blob is "simple" from the point of view of the DBMS. From the DBMS point of view, it's just a string bytes with no discernable substructure. Sometime since 1990, both the theory and the products have relaxed this rule. But it was definitely there when I began to work with relational databases. Dawn can speak for Dawn. Received on Thu Oct 07 2004 - 14:48:55 CEST