package My::User; use base 'My::ClassDBI'; __PACKAGE__->table ('user'); __PACKAGE__->columns ( All => qw( uid name login ) ); __PACKAGE__->has_many( 'capabilities', 'My::UserCapability' => 'user' ); ### package My::Capability; use base 'My::ClassDBI'; __PACKAGE__->table ('capability'); __PACKAGE__->columns ( All => qw( capid name default ) ); __PACKAGE__->has_many( 'users', 'My::UserCapability' => 'capability' ); ### package My::UserCapability; use base 'My::ClassDBI'; __PACKAGE__->table ('user_capability'); # note the added primary key idx __PACKAGE__->columns ( All => qw( idx user capability ) ); __PACKAGE__->has_a( 'user' => 'My::User' ); __PACKAGE__->has_a( 'capability' => 'My::Capability' );