It seems to me that as a persistence module Class::DBI has many more features than yours does. The main thing that makes your module interesting is the automatic setup. There are two approaches to that with Class::DBI right now, one being the use of Class::DBI::Loader (and setup_table calls), and the other being code generation with SQL::Translator. I think the most useful thing would be to fold some of what you did into one of these. Perhaps you could add things to Class::DBI::mysql, like a "guess_foreign_keys" method. At the moment, I'm using Class::DBI::mysql and it does a good job of setting up everything else, making the persistence section of my classes only a couple of lines long.
By the way, how do you clean up the hash that hold all the data in the superclass? Does it just grow forever, or do you have some way of doing reference counts to clean it up when objects go out of scope?