Как лучше хранить страны и их города?

133
06 сентября 2019, 13:20

Разрабатываю продукт. Тут присутствуют страны и их города. И собственно вопрос - как лучше такое хранить? стран около 250 штук, а вот городов больше, при чем в разы. + ко всему требуется перевод каждой страны и города.

Один вариант это бд с двумя таблицами. Но вот как в этой ситуации бить с переводами? добавлять колонки под каждый язык - ну такое мне кажется.

Можно хранить в файлах, а при старте приложения считывать в память... но такое.

Что скажете по этому поводу?

Answer 1

Смотря сколько вариантов языка. Если 2-3, то в 2-х базах с колонками типа name_ru, name_en... Так же и города. Если локализаций намного больше - выносить в отдельные БД. Но ври любом раскладе из фа читаться будет значительнее медленнее.

Кстати, существует уже много примеров, может взять уже готовую БД и не изобретать велосипед?

Answer 2

Как вариант можно хранить это в трех таблицах:

Таблица Country:

id,
country_name,
lang_id

Таблица Cities:

id,
cities_name,
lang_id,
country_id

Таблица Language:

id,
language_name

Пример:

SELECT COUNTRY_NAME,
       CITIES_NAME,
       LANGUAGE_NAME
  FROM COUNTRY
    LEFT JOIN CITIES
      ON COUNTRY.ID = CITIES.COUNTRY_ID
    LEFT JOIN LANGUAGE
      ON LANGUAGE.ID = COUNTRY.LANG_ID
  WHERE LANGUAGE_NAME IN ('EN'); --EN, RU, UK

Результат:

READ ALSO
Проблемы с установкой MySQL Server

Проблемы с установкой MySQL Server

При попытке установить Server MySQL 80

105
MySQL - OR WHERE

MySQL - OR WHERE

Есть такой запросНа самом деле он больше но я упростил

118
Поиск по частичным совпадениям

Поиск по частичным совпадениям

Я храню в БД адреса компаний:

151
PHPMyAdmin non-numeric value encountered

PHPMyAdmin non-numeric value encountered

После установки PHPMyAdmin, при заходе на сайт выскакивают ошибки:

143