Обсуждение: Inheritance (general hints wanted)

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

Inheritance (general hints wanted)

От
Achilleus Mantzios
Дата:
Hi,

I think i have reached a point in my PgSQL years
that i am seriously thinking of using inheritance.

The situation is simple: An new entity (tanker vessels crew)
is about to be modeled, and i suspect
there will be a future need to include
the rest of 'workers' besides 'sailors',
IOW i suspect a future need to generalize.

So i am thinking of a two-level tree hierarchy,
where there is a simple table emp (employee),
and a direct child 'tankerscrew'. Later
there may be 'masons', 'office_employees'
and so on.

The problem is that while i find this approach
attractive, i have never used PostgreSQL
inheritance exhaustively and in production scale.

Furthermore, i also feel that not many
people have used inheritance in a massive fashion
(besides playing with a test db).

Of course i can do it with separate uncoupled tables,
that can be later related with some views.

So that leads to the final question:
-What are the main PROs of inheritance that cant be beat
by other solutions, and 
-Are there any traps someone must have in mind when he
prepares for such a design?

Thanx in advance.
-- 
-Achilleus



Re: Inheritance (general hints wanted)

От
"thomas.silvi"
Дата:
Hi, I am not an expert but in object conception, a design pattern exists for the case you describe.  I don't
rememberwhich 
one. The idea is to add an attribute that references the job
of the employee. The inheritance is not on the side of the
employee but on the side of the job. So if the job of the
employee changes, it easy to do it.

an example in pseudo-code

class basic_job    string      name

class sailor_job inherit basic_job

class employee    string      name    basic_job   job

 Hope it helps,
     Regards,         Thomas
>
> Hi,
>
> I think i have reached a point in my PgSQL years
> that i am seriously thinking of using inheritance.
>
> The situation is simple: An new entity (tanker vessels crew)
> is about to be modeled, and i suspect
> there will be a future need to include
> the rest of 'workers' besides 'sailors',
> IOW i suspect a future need to generalize.
>
> So i am thinking of a two-level tree hierarchy,
> where there is a simple table emp (employee),
> and a direct child 'tankerscrew'. Later
> there may be 'masons', 'office_employees'
> and so on.
>
> The problem is that while i find this approach
> attractive, i have never used PostgreSQL
> inheritance exhaustively and in production scale.
>
> Furthermore, i also feel that not many
> people have used inheritance in a massive fashion
> (besides playing with a test db).
>
> Of course i can do it with separate uncoupled tables,
> that can be later related with some views.
>
> So that leads to the final question:
> -What are the main PROs of inheritance that cant be beat
> by other solutions, and
> -Are there any traps someone must have in mind when he
> prepares for such a design?
>
> Thanx in advance.
> --
> -Achilleus
>
>
> ---------------------------(end of
broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>
A+   Tom

Accédez au courrier électronique de La Poste : www.laposte.net ;
3615 LAPOSTENET (0,34€/mn) ; tél : 08 92 68 13 50 (0,34€/mn)





Re: Inheritance (general hints wanted)

От
Achilleus Mantzios
Дата:
O Achilleus Mantzios έγραψε στις Sep 20, 2005 :

> 
> Hi,
> 
> I think i have reached a point in my PgSQL years
> that i am seriously thinking of using inheritance.
> 
> The situation is simple: An new entity (tanker vessels crew)
> is about to be modeled, and i suspect
> there will be a future need to include
> the rest of 'workers' besides 'sailors',
> IOW i suspect a future need to generalize.
> 
> So i am thinking of a two-level tree hierarchy,
> where there is a simple table emp (employee),
> and a direct child 'tankerscrew'. Later
> there may be 'masons', 'office_employees'
> and so on.

Each table may be managed by its own applications,
whereas the accounting software will only need to read
and *update* the generic top level 'employee' table.

That would be great but unfortunately it isnt how
it works in PostgreSQL currently...

If PRIMARY KEYS were to be shared, a great
future (real) feature would be a
"isinstanceof" -like function on the PRIMARY KEY,
which tells if a row of the specific PK is from a certain table
in the hierarchy.

> 
> The problem is that while i find this approach
> attractive, i have never used PostgreSQL
> inheritance exhaustively and in production scale.
> 
> Furthermore, i also feel that not many
> people have used inheritance in a massive fashion
> (besides playing with a test db).
> 
> Of course i can do it with separate uncoupled tables,
> that can be later related with some views.
> 
> So that leads to the final question:
> -What are the main PROs of inheritance that cant be beat
> by other solutions, and 
> -Are there any traps someone must have in mind when he
> prepares for such a design?
> 
> Thanx in advance.
> 

-- 
-Achilleus



Re: Inheritance (general hints wanted)

От
Achilleus Mantzios
Дата:
Judging from the replies i got, it seems that
inheritance is even less used than i initially thought.

I think that the OO term is a little too much advertised
in pgsql advocacy various acts, than actually engineered.

However, OO in pgsql besides being a traditionally cool
acronym, it also *could* prove to be extremely useful
when dealing with real problems.

Just a question, to all those who have implemented
inheritance in pgsql:

Are there any plans for dealing with the current problems?
Is it foundamentally hard to fix these problems?


-- 
-Achilleus



Merry Xmas and a Happy New Year

От
Achilleus Mantzios
Дата:
to All!

-- 
-Achilleus



Re: Merry Xmas and a Happy New Year

От
Terry Lee Tucker
Дата:
Merry Christmas to you.

On Friday 23 December 2005 09:16 am, Achilleus Mantzios saith:
> to All!
>
> --
> -Achilleus
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq