Subject Re: [IB-Architect] Table Inheritance
Author Nando Dessena
Jim,

> Question 1: Does table inheritance simply mean attribute (fields,
> triggers, primary keys, indexes) inheritance, or does it mean a
> a unified semantic model? We could, of course, have both, but
> for the sake of elegance, lets assume one or the other.

I would go with simple inheritance, at least at the beginning, to solve
common problems and leave out the many concerns that a full semantic
implementation raises.
Unless adopting one way can preclude us the other, but I can't see how.

> Question 2: Are primary key inherited? Choices: a) yes, b) no,
> c) declared primary key of extension table appended to primary
> key of base table (problem is that uniqueness of base table is
> problematic).

I think everything put on a "base" table should be inherited. I must
admit that, in my view, I see those base tables much more like abstract
classes that concrete ones.
In this view, I would just not consider uniqueness in the base table, so
I wouldn't put a PK on it. If we were to mimic an OO system, though, the
problems would be real (and I have not a clue how to solve them, at the
moment). It seems to me that question 2 can be incorporated into
question 1.

> Question 3: Is multiple inheritence necessary? Most language
> designers would say that multiple inheritence is mother natures
> way of telling you that your design is screwed up. Multiple
> inheritence in C++ is moby complicated and usually does the
> wrong thing. Java dump it in favor of single inheritance
> plus implementation of interfaces (polymorphism without
> representation). What is the minimal feature set we can live
> with?

Personally, I would love to be able to compose tables by putting
together pieces (base table definitions complete with triggers and
whatever) as building blocks, much like I do when I create a domain (a
base table can be viewed, under this respect, like a multi-column
domain). In this situation, being able to "derive" from more than one
"class" would be absolutely useful. Also, I cannot see the difference
from multiple inheritance and the use of interfaces in the simple
inheritance model (I can see how they differ in the full semantic model,
though).
My 0.02 €.
--
____
_/\/ando