Нет. Нет, нет, нет, нет и нет.
Ключи не являются данными. Ключи не имеют значения. Таким образом, когда значение меняется, ключи не меняются.
Ключи не имеют значения в кодировке . Кодированное значение даже потенциально не может быть полезным, если у вас нет алгоритма его декодирования.
Поскольку нет способа перейти от «admn» к «Aministrator» без поиска, и поскольку настоящее значение «Администратор» находится прямо рядом с «полезным» ключом SEKRET ENKODED, зачем мне смотреть на этот ключ? вместо реальных данных прямо рядом с ними в таблице?
Если вам нужна сокращенная форма, имя, подобное перечислению, или что у вас есть, тогда назовите его и поймите, что это data . Это совершенно приемлемо. create table( id int not null primary key, abbv char(4), name varchar(64));
Но это не ключ, он не хешируется как целочисленный ключ, он требует четырехсимвольного сравнения и поиска нулевого терминатора, чтобы сравнить его с «edtr», в отличие от одного вычитания для сравнения двух целых чисел. Не существует достойного способа генерировать следующий ключ: что будет дальше в последовательности ('admn', 'edtr',?)?
Таким образом, вы потеряли возможность генерации, простое сравнение, возможно, размер (если вы могли бы использовать, день, tinyint в качестве ключа) и все для произвольного значения, которое не имеет реального использования.
Используйте синтетический ключ. Если вам действительно нужно сокращение, сделайте это столбцом атрибута.