How to deal with this kind of node references, when creating a new instance of a content type? I'm new using Drupal, and I'm trying creating a database driven website in Drupal. I don't know what is the best way of doing the following:

I need to have three types of 'entities' (content types):  


Worker
City
State


Every Worker lives in one and only one City, and every City is in one and only one State.

I could create those three contet types:  


State  
City, that will have a node reference to State  
Worker, that will have a node reference to City  


But...

When I someone creates a new Worker, I don't want Drupal to show a list with all the cities (because there could be cities with the same name in different states).

How could I add the feature of selecting first the State, and then the City, when creating a new Worker, or something like that that allows the user to differentiate?

Edit:

The module Dependent Fields would work in this case, but it forces me to add another field to the Worker content: A State. I don't want this, because it could be kind of redundant information (knowing the city of the worker, I can also know the state). Do you know what I mean?
I would create a taxonomy hierarchy that has nested State -> Cities. You can then provide a way for them to choose a state, and filter a drop-down by the parent taxonomy. 

Hierarchical Select will do this for you.

If you need to create a content type for city, just apply the same taxonomy term to link the two together.

Kim