# On Formal IS-A definition

From: Tegiri Nenashi <tegirinenashi_at_gmail.com>

Date: Thu, 29 Apr 2010 12:38:33 -0700 (PDT)

Message-ID: <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:

Date: Thu, 29 Apr 2010 12:38:33 -0700 (PDT)

Message-ID: <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:

- 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? Received on Thu Apr 29 2010 - 14:38:33 CDT