Я предполагаю, что набор городов является фиксированным, относительно небольшим и вряд ли будет обновлен (для правописания вы всегда можете добавить новые). В этом случае предоставьте возможность выбрать города из выпадающего списка, который подается из файла XML, и сохранить выбранное значение в базе данных в столбце. Я бы не использовал вводимые пользователем данные из-за шансов неправильного ввода.
Если у вас есть более иерархическая структура, в которой города находятся в округах, которые находятся в штатах, то подход на основе таблиц может быть более уместным, поскольку у вас могут быть города с одинаковым названием в нескольких местах. В этом случае я думаю, что каскадными выпадающими списками легче управлять с помощью запросов к базе данных, чем с помощью XML.
Примечание: вероятно, нет "правильного" ответа, поскольку он сильно зависит от ваших обстоятельств.