Если это таблицы FK, используемые только для того, чтобы развернуть коды в описание или содержать другие атрибуты, тогда я НЕ использовал бы IDENTITY. Идентичность навсегда всегда вставляет пользовательские данные, таблицы метаданных обычно статичны. Когда вы развертываете обновление для своего кода, вы не хотите быть удивленным и иметь значение IDENTITY, отличное от ожидаемого.
Например, вы добавляете новое значение в таблицу «Языки», вы ожидаете, что идентификатор будет 6, но по какой-либо причине (разработка не синхронизирована, другой человек не реализовал свой следующий тип языка и т. Д.), следующий идентификатор, который вы получаете, отличается от другого. 7. Затем вы вставляете или конвертируете кучу строк, используя идентификатор языка = 6, которые все терпят неудачу, потому что он не существует (это 7 в таблице метаданных). Хуже того, все они активируют вставку или обновление, потому что значение 6, которое, по вашему мнению, было вашим, уже было в таблице medadata, и теперь у вас есть сочетание двух элементов, разделяющих одно и то же значение 6, и ваше новое значение 7 остается неиспользованным.
Я бы выбрал правильный тип данных в зависимости от того, сколько кодов вам нужно, как часто вам нужно будет смотреть на него (CHARs приятно смотреть на несколько значений, помогает с памятью).
, например, если у вас есть только несколько групп, и вы будете часто смотреть на необработанные данные, то символ (1) может быть хорошим:
GroupTypes table
-----------------
GroupType char(1) --'M'=manufacturing, 'P'=purchasing, 'S'=sales
GroupTypeDescription varchar(100)
однако, если есть много разных значения, то некоторая форма int (tinyint, smallint, int, bigint) может сделать это:
EmailTypes table
----------------
EmailType smallint --2 bytes, up to 32k different positive values
EmailTypeDescription varchar(100)