Зачем доводить до абсурда? С таким же успехом для id государств нужно выбирать не TINYINT UNSIGNED, а INT UNSIGNED. А ещё надежнее BIGINT UNSIGNED.
Если добавятся космическое корабли, то TINYINT можно заменить на INT в уже существующей таблице, а ENUM точно также можно заменить другим ENUM. Но даже это не важно, так как других значений для поля "Ограничение скорости" не будет точно!
Если такую возможность представляет сама СУБД, то я лучше буду пользоваться ей, чем кодом. Во-первых, скорей всего это будет производительнее. А во-вторых, это снижает степень зависимости БД от приложения.
Спасибо за решение.
Но, как я понимаю, каждый раз пытаться делать INSERT в таблицу Address – это лишние затраты времени. Можно ли организовать по такой логике: если при попытке сделать запись в основную таблицу возникает ошибка "невозможное значение внешнего ключа", делается запись в таблицу-справочник, а затем уже делается запись в основную таблицу?
Если добавятся космическое корабли, то TINYINT можно заменить на INT в уже существующей таблице, а ENUM точно также можно заменить другим ENUM. Но даже это не важно, так как других значений для поля "Ограничение скорости" не будет точно!