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

> 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,
My 0.02 €.