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
colnector (colnect.com)  
View profile
 More options 16 May, 17:29
From: "colnector (colnect.com)" <webmas...@colnect.com>
Date: Fri, 16 May 2008 09:29:27 -0700 (PDT)
Local: Fri 16 May 2008 17:29
Subject: Re: Simple Inheritance
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


    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