From: | Albert Cervera Areny <albertca(at)hotpop(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Inheritance, Primary Keys and Foreign Keys |
Date: | 2006-05-14 10:53:41 |
Message-ID: | 200605141253.42229.albertca@hotpop.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
A Saturday 13 May 2006 08:33, Thomas Hallgren va escriure:
> Albert Cervera Areny wrote:
> > Of course, that's an option for my case. Just wanted to know if this
> > solution could be useful for PostgreSQL in general. Mainly because I'll
> > add some triggers to check what maybe PostgreSQL should do itself but
> > it's unimplemented.
> >
> > If that's not interesting or a proper solution for PostgreSQL I'll add it
> > using the existing DDL in my application and that's all.
> >
> > What do you think?
>
> I think that if you want the database to improve its current inheritance
> behavior, then this trigger set is too limited. You need triggers that
> maintain both unique and primary keys and triggers that maintain cascade
> behavior.
True. I think those triggers should be used for all unique indexes, not only
primary keys. What do you mean with triggers that maintain cascade behavior?
>
> In order to make it really good, you would also need to add some
> functionality to the mechanisms that maintain references. Today, they don't
> recognize inheritance at all.
Indeed, foreign keys should be inherited, as well as unique keys. And to look
for the reference they should SELECT FROM instead of SELECT FROM ONLY.
>
> Personally, I use Hibernate. It tries to compensate for the lack of these
> features but since it is a middle-tier (or client) solution, it's not
> ideal. Another client can still violate the rules and to maintain integrity
> in the client is negative from a performance standpoint. I think it would
> be great if PostgreSQL could provide a more complete set of features that
> would enable inheritance. A good start would be to extend it with the
> functionality needed to maintain references, cascade actions, and enforce
> unique constraints.
>
> On the other hand, inheritance is a tricky business and a good OO-RDB
> mapper will give you several choices of how it should be mapped. There's no
> "one size fits all". The best solution is probably if someone (you
> perhaps?) writes an external OO-RDB mapper module that executes in the
> backend. The author of such a tool would of course need some new nifty
> backend API's in order to do whats needed with references etc.
>
> I actually wrote something similar using Oracle a couple of years ago. It
> was based on type inheritance and views rather then tables and used
> 'instead of' actions on all views (Oracles own mechanisms where far to
> limited). In some respect, I think that is a better solution. Inheritance
> and all that comes with it is more a 'type' thing then a 'table' thing in
> my world. A view is then used to _map_ the types to persistent storage,
> i.e. the 'tables'.
The library I'm developing (http://kandau.berlios.de) aims for very easy
object persistency, and it offers a default O-R mapping schema. If the user
wants, she can write her own, but as I'm working with PostgreSQL, I wanted to
use the inheritance mechanism and extend it to fit the needs of this
application. I think that inheritance at the database level as it's
implemented in PostgreSQL is a very smart solution and I'd like it to be the
default for my application.
>
> Regards,
> Thomas Hallgren
Thanks for your comments
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Hallgren | 2006-05-14 11:15:45 | Re: Inheritance, Primary Keys and Foreign Keys |
Previous Message | Martijn van Oosterhout | 2006-05-14 10:15:49 | Re: Creating a SHELL type [Was: User Defined Types in Java] |