21 декабря 2012, 21:53

База стран и городов мира

Эта статья существовала и на старом моём сайте, и, судя по статистике посещений, была самой полезной его частью. Удалять не стал, хотя информация и устарела порядком.

Иногда бывает нужно в проект добавить базу стран и городов мира, чтобы пользователь мог выбрать своё место жительства.

Если база будет неполной, придётся разрешить пользователям вводить названия городов вручную, а это нежелательно, потому что пользователям свойственно ошибаться. В результате таких ошибок в базе появляется куча дубликатов, отличающихся буквально в одном символе (например, Железногорск-Илимский и Железногорск-Ильимский).

В общем, нужна более-менее полная база стран и городов мира.

Однажды подобная задача встала и передо мной. Вы можете скачать базу стран, регионов и городов с моего сайта.

Скачать базу стран и городов — SQL-файл в архиве RAR, 77 кбайт.

Формат базы

База представляет собой заархивированный файл с набором SQL-инструкций для PostgreSQL. В базе используется три таблицы.

Таблица стран (countries)

country_id   SMALLINT  PRIMARY KEY
title        VARCHAR

Таблица регионов (regions)

region_id    SMALLINT  PRIMARY KEY
country_id   SMALLINT  FOREIGN KEY
title        VARCHAR

Таблица городов (cities)

city_id      SMALLINT  PRIMARY KEY
region_id    SMALLINT  FOREIGN KEY
country_id   SMALLINT  FOREIGN KEY
title        VARCHAR

Замечания

Если нужно импортировать записи в СУБД отличную от PostgreSQL, создайте в своей базе данных такую же структуру, а затем выполните все INSERT-запросы из файла.

Дублирование поля country_id в таблице citites мне было необходимо. Вы можете удалить его, если хотите сэкономить немного свободного места.

Индексы в таблицах создавайте самостоятельно в соответствии со своими потребностями.