#!/usr/bin/perl use strict; use warnings; package MyCDBI; use base 'Class::DBI::mysql'; __PACKAGE__->connection('dbi:mysql:cdbi', 'gryphon', 'PASSWORD'); package MyCDBI::Org; use base 'MyCDBI'; __PACKAGE__->set_up_table('org'); __PACKAGE__->has_many('PartTypes' => 'MyCDBI::PartType', 'typeid'); package MyCDBI::PartType; use base 'MyCDBI'; __PACKAGE__->set_up_table('parttype'); __PACKAGE__->has_a('orgid' => 'MyCDBI::Org'); __PACKAGE__->has_many('PartTypes' => 'MyCDBI::OrgPart', 'typeid'); package MyCDBI::OrgPart; use base 'MyCDBI'; __PACKAGE__->set_up_table('orgpart'); __PACKAGE__->has_a('typeid' => 'MyCDBI::PartType'); package main; my $org = MyCDBI::Org->create({ orgid => 1 }); my $pt1 = MyCDBI::PartType->create({ typeid => 1, orgid => $org }); my $pt2 = MyCDBI::PartType->create({ typeid => 2, orgid => $org }); my $op1 = MyCDBI::OrgPart->create({ typeid => 1, typeid => $pt1 }); my $op2 = MyCDBI::OrgPart->create({ typeid => 2, typeid => $pt1 }); my $op3 = MyCDBI::OrgPart->create({ typeid => 3, typeid => $pt2 }); my $op4 = MyCDBI::OrgPart->create({ typeid => 4, typeid => $pt2 }); $org->delete;