Google Groups Home
Help | Sign in
Message from discussion Simple Inheritance
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
Alex  
View profile
 More options 16 May, 17:36
From: Alex <outroa...@gmail.com>
Date: Fri, 16 May 2008 13:36:52 -0300
Local: Fri 16 May 2008 17:36
Subject: Re: [doctrine-user] Re: Simple Inheritance

My question is this: how tricky do migrations become if I have X concrete
inherited tables. Would altering the base class alter all below it?

On Fri, May 16, 2008 at 1:29 PM, colnector (colnect.com) <

webmas...@colnect.com> wrote:

> You can look at the space wasted in percentages.
> Also, every query will have to check the type field.

> IMHO, column aggregation should be considered only if you have many
> different inherited classes with small tables (up to a few thousands
> of rows). In your case, concrete seems more convenient.

> Cheers

> 2008/5/15 Alex:
>     Well, you only get an additional 2 columns, one tinyint and one
> integer, per row. Is that such a waste?

>    For some reason duplicating the same table structure twice seems
> icky, though it might not be.

>     On Wed, May 14, 2008 at 8:40 PM, colnector wrote:

>        Doesn't this create comment_id and item_id in the same votes
> table?
>        How is that better than using 'concrete inheritance' where
> different
>        tables are created?
>        One should always consider what's going on behind the scenes
> in the
>        DBMS. It seems to me that using column aggregation as
> presented here
>        is wasteful of both time and space.

> On May 14, 9:13 pm, Alex <outroa...@gmail.com> wrote:
> > How does this look?

> > Vote:
> >   tableName: votes
> >   actAs:
> >     Timestampable:
> >       created:
> >         name: created_at
> >         type: timestamp
> >         format:Y-m-d H:i:s
> >       updated:
> >         disabled: true
> >   columns:
> >     id:
> >       unsigned: 0
> >       primary: true
> >       notnull: true
> >       autoincrement: true
> >       type: integer
> >     user_id:
> >       unsigned: 0
> >       primary: false
> >       notnull: false
> >       autoincrement: false
> >       type: integer
> >     vote_type_id:
> >       unsigned: 0
> >       primary: false
> >       notnull: false
> >       autoincrement: false
> >       type: integer
> >   relations:
> >     sfGuardUser:
> >       local: user_id
> >       foreign: id
> >       type: one

> > VoteItem:
> >   inheritance:
> >     extends: Vote
> >     type: column_aggregation
> >     keyField: type
> >     keyValue: 1
> >   columns:
> >     item_id:
> >       type: integer

> > VoteComment:
> >   inheritance:
> >     extends: Vote
> >     type: column_aggregation
> >     keyField: type
> >     keyValue: 2
> >   columns:
> >     comment_id:
> >       type: integer

> > Advantage is that it maintains FK restrictions.

> > On Wed, May 14, 2008 at 2:07 PM, Jonathan Wage <jonw...@gmail.com>
> wrote:
> > > Just having a model with record_type and record_type_id, and you would
> set
> > > the fields yourself?

> > > - Jon

> > > On Wed, May 14, 2008 at 12:02 PM, Alex <outroa...@gmail.com> wrote:

> > >> What would be an alternate solution?

> > >> - alex (from iphone)

> > >> On 14-May-08, at 1:43 PM, "Jonathan Wage" <jonw...@gmail.com> wrote:

> > >> I think that column aggregation is the best solution right now.

> > >> - Jon

> > >> On Wed, May 14, 2008 at 11:20 AM, Alex < <outroa...@gmail.com>
> > >> outroa...@gmail.com> wrote:

> > >>> But with column aggregation I also have to define an additional
> column
> > >>> manually. It generates a TYPE column, but then I also need to create
> a
> > >>> TYPE_ID column so that the vote corresponds to the right item or
> topic.

> > >>> What's the ideal solution?

> > >>> - alex (from iphone)

> > >>> On 14-May-08, at 11:51 AM, "Jonathan Wage" < <jonw...@gmail.com>
> > >>> jonw...@gmail.com> wrote:

> > >>> Simple inheritance is one table with all columns on the parent.

> > >>> You want something like column aggregation inheritance it sounds
> like.

> > >>> - Jon

> > >>> On Tue, May 13, 2008 at 5:17 PM, Alex < <outroa...@gmail.com><
> outroa...@gmail.com>
> > >>> outroa...@gmail.com> wrote:

> > >>>> What exactly is simple inheritance? With what I have below, it
> doesn't
> > >>>> create any addiotional tables. How will I be able to query only
> votes
> > >>>> for Items?

> > >>>> Thanks!

> > >>>> Vote:
> > >>>>  tableName: votes
> > >>>>  actAs:
> > >>>>    Timestampable:
> > >>>>      created:
> > >>>>        name: created_at
> > >>>>        type: timestamp
> > >>>>        format:Y-m-d H:i:s
> > >>>>      updated:
> > >>>>        disabled: true
> > >>>>  columns:
> > >>>>    id:
> > >>>>      unsigned: 0
> > >>>>      primary: true
> > >>>>      notnull: true
> > >>>>      autoincrement: true
> > >>>>      type: integer
> > >>>>    user_id:
> > >>>>      unsigned: 0
> > >>>>      primary: false
> > >>>>      notnull: false
> > >>>>      autoincrement: false
> > >>>>      type: integer

> > >>>> VoteItem:
> > >>>>  inheritance:
> > >>>>    extends: Vote
> > >>>>    type: simple

> > >>>> VoteComment:
> > >>>>  inheritance:
> > >>>>    extends: Vote
> > >>>>    type: simple

> > >>> --
> > >>> Jonathan Wage
> > >>> <http://www.jwage.com> <http://www.jwage.com>http://www.jwage.com
> > >>>  <http://www.centresource.com> <http://www.centresource.com>
> > >>>http://www.centresource.com

> > >> --
> > >> Jonathan Wage
> > >> <http://www.jwage.com>http://www.jwage.com
> > >> <http://www.centresource.com>http://www.centresource.com

> > > --
> > > Jonathan Wage
> > >http://www.jwage.com
> > >http://www.centresource.com

> > --

> > - Alex

--

- Alex


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2008 Google