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?