Re: On Formal IS-A definition

From: Reinier Post <rp_at_raampje.lan>
Date: 03 May 2010 21:49:29 GMT
Message-ID: <4bdf44e9$0$14117$703f8584_at_textnews.kpn.nl>


Tegiri Nenashi wrote:

>On Apr 29, 2:31 pm, r..._at_raampje.lan (Reinier Post) wrote:
>> Tegiri Nenashi wrote:
>>
>> [...]
>>
>> >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?
>>
>> No.  I've never seen this.  The naming of Carnivores2
>> is strange: it should name what each tuple stands for,
>> but a carnivore isn't always represented by a single tuple.
>
>Just to remove any confusion about Carnivores2 name origin:
>1. It is plural because of convention to name relations as sets of
>things
>2. The number two is version number designed to distinguish this
>relation from Carnivores1

I didn't comment on those points.

>Perhaps you are not comfortable with the idea than more than one tuple
>of Carnivores2 might represent each "entity"?

That's what I wrote, didn't I? It's strange. It's very unusual. It doesn't fit in with ER modelling, for instance.

>At this moment I can't
>suggest a convincing argument other than vague intuition that database
>theory should deviate from explicit mentioning tuples (and attributes,
>for that matter, either). All information should be presented in terms
>of constraints, expressed in relational algebra terms.

Thus far I can agree with you: naming isn't really part of the modelling mathematically, and using strange names doesn't make a model any more correct or incorrect in mathematical terms.

But this isn't my main argument against your interpretation of IS-A. THe main argument is the following.

>> Suppose we have
>>
>>  Herbivores = [Name Foodtype]
>>               deer  grass
>>               rabbit grass
>>               rabbit carrots
>>
>> and
>>
>>  Vegetables = [Foodtype]
>>               grass
>>               carrots
>>
>> Would you say that Herbivores IS-A Animals?
>> What about Herbivores IS-A Foodtype?  If not, why not?
>
>Wouldn't
>
>Vegetables = [Name]
> grass
> carrots
>
>be a more appropriate choice? Then, we can combine Animals and
>Vegetables into LivingThings. Attribute naming seems to be a tricky
>subject in Relational Model...

I was trying to sidestep the issue of attribute (re)naming here, because it is beside the main point of the example, which is that according to your definition, the same relation (Herbivores) has two different IS-A relations, one with Animals and one with Vegetables. I know multiple inheritance in programming languages tends to be used in just this kind of way (with "mixin classes" for instance) but I think with such a notion the name "IS-A" is just wrong. It's fine to have your proposed notion but give it a different name: call it a role or something. A Herbivore just isn't a Vegetable.

I know this is again an argument about naming, but this time it's about the name "is a" itself.

-- 
Reinier
Received on Mon May 03 2010 - 23:49:29 CEST

Original text of this message