Обсуждение: how to reference polymorphic objects

Поиск
Список
Период
Сортировка

how to reference polymorphic objects

От
Markus Wagner
Дата:
Hi,

I recently noticed some problems using inheritance in pg.

assume the following data model:

create table Person
(
 idx serial primary key,
 Name text not null
);

create table Physician
(
 expertise text
)
inherits (Person);

create table Programmer
(
 skills text
)
inherits (Person);

create table Project
(
 idx serial primary key,
 Name text not null,
 Leader int references Person (idx)
);

-----

Ok, when inserting data into the tables Person, Physician and Programmer, the
primary keys (idx) will be always disjunct, but only if the model above was
created using pgaccess (which inserts some additional sequence stuff).

The other thing is the more serious one:

When inserting data into Projects, you may only insert objects which belong to
the table Person. You may not reference rows from derived tables (Physician,
Programmer).

Some Questions: Can we expect to have all of the benefits of object-oriented
programming in the future? Is there a specification on what features can be
expected from ORDBMS in general?

Thank you very much,
Markus Wagner


Re: how to reference polymorphic objects

От
Stephan Szabo
Дата:
On Wed, 16 Apr 2003, Markus Wagner wrote:

> Ok, when inserting data into the tables Person, Physician and Programmer, the
> primary keys (idx) will be always disjunct, but only if the model above was
> created using pgaccess (which inserts some additional sequence stuff).
>
> The other thing is the more serious one:
>
> When inserting data into Projects, you may only insert objects which belong to
> the table Person. You may not reference rows from derived tables (Physician,
> Programmer).

Yes, the reference is only to the named table.  This really needs to go
into the FAQ if it's not there (along with the fact that primary keys
don't inherit meaningfully currently) since it gets asked alot.

> Some Questions: Can we expect to have all of the benefits of object-oriented
> programming in the future? Is there a specification on what features can be

Probably, but someone's got to do the legwork at least in dealing with it
(see the archives for past discussions on the subject).