If you are expecting a more-or-less 'contained' regionality (i.e. the city list is going to be small-ish), you could also try removing the 'city' by having your first table as:
id (PRIMARY KEY)
firstname
lastname
address
cityid (FOREIGN KEY)
phone
fax
and table 2 as
id (PRIMARY KEY)
cityname
But if you're looking at storing details from around the globe, it would take you a LONG time to enter all your 'city' vocabulary.