I'd think you could use Class::DBI pretty easily for this. It gives you all the methods for traversing the relationships. If you have to do custom sql (for big joins for example) it has a facility for that too. Ps just call them Company---CompanyBuilding---Building Get rid of the "rlt" and it makes more sense Jay