У меня есть таблица базы данных MySQL для маркировки элементов в базе данных с помощью двухзначных (ISO 3166-1) кодов стран (например, США = США).
Я подумываю об использовании ENUM для столбца тегов кодов стран, поскольку коды стран не сильно меняются, и их около 200 или около того. Кроме того, эта таблица может содержать много строк, поэтому я полагаю, что использование ENUM поможет ей работать эффективно.
Я слышал о людях, использующих ENUM с кодами стран в других ситуациях на SO, но я не уверен, разумно ли это делать при использовании MySQL.
Как вы думаете, является ли в моем случае хорошей идеей использование ENUM для двухзначных кодов стран в MySQL? Или я буду сожалеть об этом решении?
Я использую MySQL 5.6 и PHP 5.5.
Типы данных ENUM обычно используются для очень простых и неизменяемых значений, таких как настраиваемые логические значения (T / F, 0/1, Heads / Tails) или для очень небольшого подмножества значений, которые не изменятся, как ответы с множественным выбором (A, b, C, D, E).
Если значения вообще изменятся, я бы не рекомендовал тип данных ENUM (что имеет место в нашем изменчивом мире меняющихся границ). Требуется обновить схему таблицы, когда вам нужно добавить или еще хуже — удалить значение из списка значений ENUM. Типы данных ENUM идеально подходят для тех полей, в которых необходимо убедиться, что это только одно из значений в определенном поле, и нужна проверка ошибок при попытке получить значение вне списка.
Я бы порекомендовал в зависимости от того, как вы представляете код страны, очень простое переменное двухсимвольное поле (A2 ISO или A3 UN), маленькое целое число (NUM UN).
Используйте отдельную таблицу поиска (объединение в запросах), чтобы выполнить расширение кода и другие связанные данные страны (курсы валют, континент проживания и т. Д.)
Других решений пока нет …