Re: Which normal form is this violating?
Date: Mon, 6 May 2002 18:39:03 GMT
You got me. I realized the contradiction with horizontal partitioning the minute I hit the 'send' button. Obviously the predicate changes with partitioning based on the restrictions involved.
In terms of the desirability of having two tables with the exact same content, I concede that it 99.999% of all cases there probably exists no real good reason to have two tables that are exactly the same. And it certainly does not go well with the reason why Codd, et al. proposed and argued the merits of the relational model. And it certainly runs against the grain of good design principles.
However, I might give one real-world example where one would want the table definition and contents to be exactly the same, though it is a special case. Recently I completed a data conversion exercise from one vendor's implementation to another vendor implementation.
A very easy way to confirm that the tables forming the underlying relationships and data for user views were "exactly" the same after running through some complex pre-processing tasks used to isolate and record relationships of the original source data was to compare the tables once both systems ran through the processes. In this special case, we were in fact very pleased that the table contents were exactly the same, and we were even more pleased at the availability and ease of using relational operators as they are provided with SQL to perform these tasks.
"Jan.Hidders" <hidders_at_uia.ua.ac.be> wrote in message
> On Mon, 6 May 2002, Daniel Guntermann wrote:
> > Jan Hidders wrote:
> > >
> > > It is indeed true that a schema should not describe two tables
> > > that are logically the same, i.e., represent the same predicate,
> > > because then one table would be redundant.
> > This statement seems to imply any horizontal partitioning,
> > snapshots, materialized views, or several other types of conventions
> > used in databases are now invalidated.
> If you partition a table horizontally you get tables that represent
> different predicates (if the original predicate was P(x) then the new
> predicates are "P(x) AND x.city = 'Paris'" and "P(x) AND x.city =
> 'New-York'" et cetera). If you take a snapshot you also get a predicate
> different from P(x) : "P(x) holds at moment t". So you see that it is
> not so obvious that this will give you (in a useful way) two tables
> that represent exactly the same predicate.
> > Also, it seems that most textbooks I've come across, stress the fact
> > that the relational model does a great deal to "reduce" redundancy
> > (Maybe it says differently in Celko's book). They have never
> > claimed to say that redundany is entirely eliminated, nor do they
> > say that this is always desirable.
> Indeed. But what would be the point of having two tables in your schema
> that are always exactly the same?
> -- Jan Hidders
Received on Mon May 06 2002 - 20:39:03 CEST