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

Original text of this message