Specifying location

I want the visitor of my website to specify her address. Most of the
fields are text fileds while for country, state and city I want to
provide a drop down menu.
I can choose to define 3 tables like this:

  1. Country_mstr – having country code and country name
  2. state_mstr – having country code, state code and state name
  3. city_mstr – having country code, state code, city code and city

It could turn out to be a tideous job to find such geographical
information and populate in the tables. Could anybody suggest me any
plugin if it exists?