# Re: On Formal IS-A definition

Date: Thu, 06 May 2010 10:10:32 -0300

Message-ID: <4be2bfc9$0$12433$9a566e8b_at_news.aliant.net>

Mr. Scott wrote:

> "Tegiri Nenashi" <tegirinenashi_at_gmail.com> wrote in message > news:0b2f71d0-34b5-4661-a8f6-21a40cdb9989_at_n37g2000prc.googlegroups.com... >

*>>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.

Clinton already settled this. Until you define what "IS-A" is, it's all just so much mental masturbation.

The relational model treats all relations the same: as relations (named or derived). It makes no artificial distinctions among different relations because doing so serves no useful purpose and, at best, reduces data independence while adding complexity.

If one is interested specifically in subtypes of supertypes, a proper subset of a type with a proper superset of operations is a proper subtype of that type. Thus, circle values are a subtype of ellipse values and ellipse variables are a subtype of circle variables.

For the specifics of subtypes of tuple types or relation types, see TTM. Received on Thu May 06 2010 - 08:10:32 CDT