Как полагают многие, это вопрос удобства; но, возможно, более глубоко, это соглашение.
Как программист, мой первый инстинкт - использовать числовой ключ для идентификатора слоя, потому что так было всегда. Действительно, мне может даже не прийти в голову, по крайней мере на сознательном уровне, что я должен сделать это любым другим способом. Конечно, если есть техническая причина не использовать целые числа, скажем, есть ли вероятность того, что слоев будет больше, чем может быть сохранено в 32-битном формате (очень маловероятное предложение!), Или если для этого есть бизнес-причина, тогда будут рассмотрены альтернативы.
Есть также алгоритмические соображения с числовыми ключами. Сортировка и поиск в списке отсортированных значений в конечном итоге сводятся к сравнению двух чисел, даже если это список строк или сложных объектов; они просто превращаются в числа с функцией хеширования . Сказав это, на современных компьютерах поиск списка, скажем, 100 или даже 1000 элементов обычно такой же быстрый, как и в случае с грубой силой, с высоко оптимизированным алгоритмом. В случае слоев в ГИС я не вижу даже самых сложных карт, имеющих более 1000 или около того, и даже если бы это было так, другие связанные вычисления потребовали бы на порядки больше, чем любой небольшой выигрыш от оптимизированного поиск по короткому списку.
Целочисленные ключи «просто имеют смысл» для программиста, и, как говорит Брэд, в использовании нечисловых ключей требуется больше усилий. Может быть, не больше кода, но больше умственных усилий, и мы ленивые существа по привычке. Кроме того, ключ, который однозначно идентифицирует что-то вроде слоя в ГИС, считается «скрытым» от пользователя, чтобы он не связывался с ним и не нарушал код, основанный на его уникальности (несмотря на ключевые слова DB UNIQUE). Потому что, если вы дадите пользователю достаточно веревки, рано или поздно кто-то повесится с ним. Безусловно, применяйте уникальность в редактируемом пользователем поле, но базовая система должна предполагать, что ее ключ уникален и не изменен.