это интересный вопрос.Определенно вы должны принять во внимание цели производительности здесь.Если вы не хотите идти на скорости, Int является обязательным.База данных может индексировать целые числа немного лучше, чем строки, хотя я должен сказать, что это вовсе не плохая потеря производительности.
В качестве примера можно привести саму базу данных Oracle, где они могут позволить себе делать большие заглавные буквы в виде строк в своей системе.столы.Такие вещи, как USER_ALLOCATION_TYPE или подобные, являются нормой.Как вы говорите, строки могут быть более «расширяемыми» и более читаемыми, но в любом случае в коде вы получите:
Static final String USER_ALLOCATION_TYPE = "USER_ALLOCATION_TYPE";
вместо
Static final int USER_ALLOCATION_TYPE = 5;
Поскольку вы либо сделаете это, вы в конечном итоге получите все эти строковые литералы, которые просто жаждут кого-то пойти туда и потерять символ!:)
В моей компании мы используем таблицы с целыми числами первичных ключей;все таблицы имеют серийный первичный ключ, потому что даже если вы не думаете, что он вам нужен, рано или поздно вы пожалеете об этом.
В случае, если вы описываете, что мы делаем, у нас естьтаблица с (PK Int, Description String), а затем мы выполняем просмотры над мастер-таблицами с объединениями, чтобы получить описания, таким образом, мы получаем возможность видеть описания объединенных полей, если должны, и мы поддерживаем производительность.
Кроме того, с отдельной таблицей описания вы можете получить ДОПОЛНИТЕЛЬНУЮ информацию о тех идентификаторах, о которых вы никогда не подумаете.Например, предположим, что пользователь может иметь доступ к некоторым полям в поле со списком, если и только если у него есть такое свойство и так.Вы можете использовать дополнительные поля в таблице описания, чтобы сохранить их вместо специального кода.
Мои два цента.