[Nitro] nice post
richard at protea-systems.com
Tue Aug 1 20:15:17 EDT 2006
I've got a couple of question regarding Og.
I've written something very similar in Perl called Oryx (it's up on
CPAN). Oryx ended up doing what Og does with automatic schema creation
and evolution (admittedly Perl is more verbose, though). In the process
I also ran into inheritance and abstract classes and what these concepts
could mean to an ORM system. So when reading through some docs on Og, I
found some mention of what looked like a unsolved inheritance issues.
What happens when persistent classes inherit from one another?
Basically there are 3 ways of modeling this (which I'm sure you're aware
of, but it's hard to ask the question without scoping it out).
The simplest is to put all classes in the inheritance chain in a single
table (which is what Tangram does). Another way is to duplicate the
table for the subclass with the same columns as the super class and then
add columns to this new table for the new attributes defined in the
subclass. However, the most natural for me was to create a new table
with only the newly added attributes for the subclass and join on the
table of the superclass. Some tricks are needed to keep track of which
columns should be delegated to the superclass for inserts, updates and
deletes. This isn't too hard though.
So, I guess my questions regarding inheritance are: which model does Og
use, and is inheritance still considered "dangerous" and not recommended
(because stuff ends up going into the wrong tables)?
George Moschovitis wrote:
> have a look at this nice post:
> as always, your comments are welcome!
More information about the Nitro-general