Good work getting this info into your db. There is one part of this that you will need to update though in order to make use of this info. Instead of having separate tables in your db for each zone you should have this info in a single table. There should be an extra column in this table to hold the zone though.
So this table in the end will list all of the cities available to ship to, then for each city there will be a zone listing. This way when the user checks out and they enter the name of their city in the form you can do a lookup for the zone by searching this table for the matching city. I hope that makes sense.
When you get this part worked out let us know and I can cover some examples of using this information in your shipping rule to return the proper value. Please also post back with some more info about how you calculate the dimensional weight, weather this is done on a per item basis then accumulated or done for the whole cart at once and any other details that you can think of.