On 10/24/05 4:07 PM, "John Siracusa" <[EMAIL PROTECTED]> wrote:
> On 10/24/05, Sean Davis <[EMAIL PROTECTED]> wrote:
>> I am a new user (as of about 2 hours ago). I have two tables that have a
>> one-to-one relationship with a third (so, of course, there is a one-to-many
>> from the third to the other two). The code looks like below. However, I
>> get the following error message on compile and I do have foreign keys
>> present in the g_alias and g_refseq tables. I can't figure out what I am
>> doing incorrectly. Any help?
>
> First question: what version of RDBO are you using? Second question:
> can you post the db schema including all key definitions?
>
RDBO Version: 0.77
Schema:
create table g_main (
tax_id integer,
gene_id integer primary key,
symbol varchar,
locustag varchar,
chromosome varchar,
map_location varchar,
description varchar,
gene_type varchar,
symbol_from_nomenclature_auth varchar,
full_name_from_nomenclature_auth varchar,
nomenclature_status varchar,
discontinued boolean default false,
new_gene_id integer default NULL
) without OIDS;
comment on table g_main is 'Main Entrez Gene Table';
create table g_alias (
g_alias_id serial primary key,
gene_id integer references g_main(gene_id) on update cascade on delete
cascade deferrable,
synonym varchar
);
create table g_refseq (
gene_id integer references g_main(gene_id) on update cascade on delete
cascade deferrable,
refseq varchar primary key,
version integer,
refseq_gi integer,
status varchar
);
> For the error message, it looks like it couldn't auto-generate a name
> for the foreign key, which strikes me as a bug. But I'll need the db
> schema to figure it out for sure.
>
> In the meantime, regarding this:
>
>> package AnnoDB::Model::Gene::Alias;
>> use base qw(AnnoDB::Model);
>>
>> __PACKAGE__->meta->table('g_alias');
>> __PACKAGE__->meta->relationship
>> (
>> gene => {
>> type => 'one to one',
>> class => 'AnnoDB::Model::Gene::Main',
>> column_map => {gene_id => 'gene_id'},
>> },
>> );
>>
>> __PACKAGE__->meta->auto_initialize();
>
> The "__PACKAGE__->meta->relationship" line should be
> "__PACKAGE__->meta->relationships" with an "s"! :)
Oops. Thanks.
> That will actually create a corresponding "one to one" relationship
> behind the scenes (this behavior is documented, I believe), but more
> importantly, it's an accurate reflection of the underlying table. The
> rule of thumb (which I keep meaning to document) is:
Yes. That was what I understood. Therefore, I tried the same thing without
the relationships defined and got the same error.
> If the table has a foreign key, then define it with foreign_keys()
>
> Otherwise, feel free to use a "one to one" or "many to one" relationship.
I assume that auto_initialize will do this automatically--all except the
many-to-many?
Thanks,
Sean
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
Rose-db-object mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rose-db-object