С точки зрения логики движка (и в дальнейшем при определении координат) поселки и города лучше держать в одной таблице. Так как это населенные пункты. Можно просто переименовать поле город в населенный пункт, тогда будет логично. Но если сильно хочется, тогда добавить новый справочник
И потом нужно самостоятельно программировать всю логику по поиску (и геокодирование не факт что будет работать верно) http://www.etown.ru/s/topic/241-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8F-%D0%B2-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-template-search-%D0%B8-%D0%B4%D1%80/ Имхо лучше первый вариант.