Классификатор стран с флагами 2.0 - insbor.ru
insbor.ru

insbor.ru

Привет, это я

Читаю, пишу, перечитываю и исправляю.


Что здесь происходит


Предыдущие записи


Классификатор стран с флагами 2.0

Опубликовано :   |  Кем :   |  Категория :  Классификаторы

Обновлю пост 2011-го года. На этот раз роль PK в таблице играет код Alpha-2. Очень удобно, в связанных таблицах сразу видно, о какой стране идёт речь. Что касается расхода памяти на столбец country_id, то для 99.9% проектов это совершенно не важно. Флаги стран мира названы по Alpha-2, так что нужда в отдельном поле flag пропала.

Таблица содержит коды стран Aplpha-2 (Primary key), Alpha-3, код ГОСТ, телефонный код, доменную зону. Телефонный код добавлен очень условно, т.к. +7 может быть и в России, и в Казахстане. Если с ним реально нужно работать, то придётся писать в это поле массив допустимых первых 1-4 цифр в номерах телефонов. Посмотреть полные данные по кодам телефонов можно тут и тут.

Структура таблицы (PostgreSQL):

CREATE TABLE countries
(
    id VARCHAR(2) PRIMARY KEY NOT NULL,
    id3 VARCHAR(3) NOT NULL,
    name VARCHAR(255) NOT NULL,
    full_name VARCHAR(255) NOT NULL,
    name_en VARCHAR(255) NOT NULL,
    code VARCHAR(3) NOT NULL,
    phone_code VARCHAR(8) NOT NULL,
    domain VARCHAR(2),
    "order" SMALLINT DEFAULT '0'::smallint NOT NULL,
    deleted_at TIMESTAMP(0)
);
CREATE UNIQUE INDEX countries_id3_unique ON countries (id3);
CREATE UNIQUE INDEX countries_name_unique ON countries (name);
CREATE UNIQUE INDEX countries_full_name_unique ON countries (full_name);
CREATE UNIQUE INDEX countries_name_en_unique ON countries (name_en);
CREATE INDEX countries_id_index ON countries (id);
CREATE INDEX countries_code_index ON countries (code);
CREATE INDEX countries_phone_code_index ON countries (phone_code);
CREATE INDEX countries_domain_index ON countries (domain);
CREATE INDEX countries_order_index ON countries ("order");

Переделать под MySQL не составит труда.

В комплект к справочнику стран добавим справочник регионов стран. Я его заполнил только регионами Беларуси, Казахстана, России и Украины.

CREATE TABLE states
(
    id INTEGER DEFAULT nextval('states_id_seq'::regclass) PRIMARY KEY NOT NULL,
    name VARCHAR(255) NOT NULL,
    country_id VARCHAR(2) NOT NULL,
    time_zone SMALLINT DEFAULT '0'::smallint NOT NULL,
    "order" SMALLINT DEFAULT '0'::smallint NOT NULL,
    CONSTRAINT states_country_id_foreign FOREIGN KEY (country_id) REFERENCES countries (id)
);
CREATE UNIQUE INDEX states_name_country_id_unique ON states (name, country_id);

Поле time_zone содержит смещение местного времени в часах, относительно московского.

Скачать дампы (.zip 20.5Kb) таблиц и сидеры для Eloquent.

Как и в прошлый раз, добавлю флаги стран мира, названные по Alpha-2 коду страны в нижнем регистре. Как и в прошлый раз, в комплект к флагам стран идут флажки некоторых международных организаций, государств Великобритании и т.п.

Скачать флаги стран мира (.zip 1.33Мб).