# Re: On Formal IS-A definition

Date: Thu, 6 May 2010 16:02:28 -0400

"Erwin" <e.smout_at_myonline.be> wrote in message news:88f215e4-8651-44cb-8d58-07b8dbea4a08_at_37g2000yqm.googlegroups.com... On 6 mei, 14:51, Erwin <e.sm..._at_myonline.be> wrote:
> On 6 mei, 14:14, "Mr. Scott" <do_not_re..._at_noone.com> wrote:
>
>
>
>
>
> > <<QUOTE"Erwin" <e.sm..._at_myonline.be> wrote in message
>
> > On 6 mei, 09:00, "Mr. Scott" <do_not_re..._at_noone.com> wrote:
>
> > > "Tegiri Nenashi" <tegirinena..._at_gmail.com> wrote in message
>
>
> > > > Given the two relations R and S, the R is a subtype of S or simply
> > > > "R
> > > > is an S" (was this the source of Reinier blunder?-) iff the two
> > > > conditions hold:
>
> > > > 1. R ^ S = R (where the ^ is natural join operation). This can be
> > > > expressed succinctly as R < S with generalized subset constraint
> > > > "<".
>
> > > > The immediate consequence is that the attributes of S are the subset
> > > > of attributes R (formally: R ^ [] < S ^ [] where the "[]" is the
> > > > relation with empty set of attributes and empty set of tuples, aka
> > > > DUM). Then, one may add second requirement that
>
> > > > 2. Attributes of S form a key in relation R.
>
> > > > My question is if the condition #2 is really necessary. Consider the
> > > > two relations:
>
> > > > Animals = [Name]
> > > > bear
> > > > sheep
> > > > wolf
> > > > ;
>
> > > > Carnivores1 = [Name FavoritePrey]
> > > > bear deer
> > > > wolf sheep
> > > > ;
>
> > > > They satisfy both conditions so that informally we say "Carnivores1"
> > > > IS-A "Animals".
>
> > > > Contrast this with
>
> > > > Animals = [Name]
> > > > bear
> > > > sheep
> > > > wolf
> > > > ;
>
> > > > Carnivores2 = [Name Prey]
> > > > bear deer
> > > > wolf sheep
> > > > wolf deer
> > > > ;
>
> > > > I suggest that we still have "Carnivores2" IS-A "Animals". Do you
> > > > agree?
>
> > > There is a problem here. Which scheme is better?
>
> > > Employees{taxid,name,startdate} KEY{taxid},
> > > ContractEmployees{taxid,name,startdate,enddate} KEY{taxid},
> > > ContractEmployees[taxid,name,startdate] is a subset of
> > > Employees[taxid,name,startdate]
>
> > > or
>
> > > Employees{taxid,name,startdate} KEY{taxid},
> > > ContractEmployees{taxid,enddate} KEY{taxid},
> > > ContractEmployees[taxid] is a subset of Employees[taxid]
>
> > > Clearly the second scheme is equivalent to the first with respect to
> > > information content, so if a ContractEmployee is an Employee in the
> > > first
> > > scheme, then it must also be in the second, but in the second scheme,
> > > the
> > > set of attributes for Employees is not a subset of the set of
> > > attributes
> > > for
> > > ContractEmployees. I think the effect of the foreign key constraint,
> > > namely, that the components of the referenced tuple are effectively
> > > 'included' with the referencing tuple, must be taken into account.-
> > > Tekst
> > > uit oorspronkelijk bericht niet weergeven -
>
> > > - Tekst uit oorspronkelijk bericht weergeven -
>
> > The first is a violation of BCNF.
>
> > >>QUOTE
>
> > No, it's not. Both schemes are in BCNF.
>
> > <snip>- Tekst uit oorspronkelijk bericht niet weergeven -
>
> > - Tekst uit oorspronkelijk bericht weergeven -
>
>
> Employees{taxid,name,startdate} KEY{taxid},
> ContractEmployees{taxid,name,startdate,enddate} KEY{taxid},
> ContractEmployees[taxid,name,startdate] is a subset of
> Employees[taxid,name,startdate]
>
> This tells me that within the Employees relvar, the FD
> taxid->{name,startdate} holds.
>
> And within ContractEmployees, the FD taxid->{name,startdate,enddate}
> holds.
> And the subset constraint tells me that the name and startdate
> associated with any given ContractEmployees.taxid must be equal to the
> name and startdate associated with the corresponding Employees.taxid.
>
> Meaning that those two attributes are redundant in ContractEmployees.
>
> Not a violation of BCNF ? My foot.- Tekst uit oorspronkelijk bericht niet
> weergeven -
>
> - Tekst uit oorspronkelijk bericht weergeven -

<<QUOTE
Or let me put it differently.

If it is indeed true that the given example satisfies BCNF, then I must conclude that normalization as the-formal-method-as-we-know-it, fails to detect and eliminate this kind of redundancy.

And if normalization as a formal method fails to detect and eliminate this kind of redundancy, then it is pretty darn useless and we can just as well stop teaching it.
>>QUOTE
Well that argument is just plain stupid. Should you stop wearing your seatbelt just because some collisions are so severe that people are seriously injured or die even though they are wearing one? Received on Thu May 06 2010 - 22:02:28 CEST

Original text of this message