Как лучше хранить список городов России и мира? Делаем список доступных для доставки городов интернет-магазина. Все заполняем вручную, т к города осваиваем постепенно.
Думаем создать таблицу cities с такой структрой:
id | full_name | short_name
например:
1 | Крыжополь, Винницкая область, Украина | Крыжополь
full_name сделали т. к. иногда встречаются города с одинаковыми названиями. Или нам лучше создать несколько таблиц для городов, стран, регионов и т д?
Нужен город - берете только city, нужен full_name - три столбца.
Можно использовать и последний ваш вариант с тремя таблицами и внешними ключами, но это, по сути, не нужно, если в итоге вы будете активно работать лишь с одной, а на остальные будут идти дополнительные запросы, имхо.
Федеративное устройство разных стран сильно отличается.
Я бы хранил раздельными полями страна - область - район - тип населенного пункта - название.
стоит ли приводить эту таблицу к 3нф или хранить денормализированно - прямо зависит от того сколько у вас этих пунктов и как оперативно вы новые подключаете.