# Re: Declaring super types

From: Tegiri Nenashi <tegirinenashi_at_gmail.com>
Date: Thu, 22 Apr 2010 17:02:17 -0700 (PDT)

On Apr 22, 2:26 pm, r..._at_raampje.lan (Reinier Post) wrote:
>
> [I've removed some empty lines]
>
>
>
> >On Apr 20, 3:03 pm, r..._at_raampje.lan (Reinier Post) wrote:
> >> >Are you saying
> >> >"R is a S"
> >> >is eqivalent to
> >> >"R join S = R"?
>
> >> Hmmm ... that seems a nice shorthand for the first and third clause,
> >> but it doesn't imply the second one.
>
> >Well, let's approach this question from math perspective. I suggest
> >the "is a" is some [partial] order between a pair of relations, so it
> >has to honor 3 laws:
>
> >R < R
> >R < S & S < R -> R = S
> >R < S & S < T -> R < T
>
> >One can prove that the order defined via join satisfies all them.
>
> Certainly.  But these properties don't uniquely determine the order.
> I haven't checked it, but I bet the definition obtained by
> adding the second clause satisfies them as well.
>
> [...]
>
> >However, there is the strong reason to suspect that the order defined
> >by join is the most important one (and, therefore, is candidate to
> >represent "is a"). This is because the order introduced via
> >generalized union (or relational algebra projection) coinsides it!
>
> Not strong enough.  Without the second clause, you're talking about
> aggregation, or in Silberschatz et al.'s terms, a weak entity: an entity
> (the "whole") being used to identify another (the "part").
> The "is a" relationship is more restricted in that the "whole"-"part"
> relationship is one-to-at-most-one.
>
> >So, you are suggesting that your definition gives rize to yet another
> >order relation? Can you prove its three defining properties?
>
> I gave the three defining properties.
> I'm not sure why you're asking for an alternative.

I have meant proving reflexivity, symmetry and transitivity. However in the followup message I figured that out, so your "is-a" relation is indeed an order. More importantly, I don't quite follow your definition. Suppose you have two relations

```            0        0       10
10      0       20
```

;

Ellipses = [centerX centerY axisX axisY]

```            0        0       10       10
10      0       20       20
0       10      10       50
```

;

Original text of this message