LAT написал(а):
Насколько мне известно, для полей, хранящих целочисленные неотрицательные значения и входящих в первичный ключ прозрачной таблицы, рекомендуется использовать не какой-то из типов INT*, а NUMC. Однако что-то не могу найти, что пишет САП на эту тему. Возможно, это устаревшие рекомендации, или же СУБД-зависимые, или же я ошибаюсь.
Подскажите, пожалуйста:
1. Есть ли у САП рекомендации, какой тип и в каких случаях лучше использовать для поля первичного ключа, хранящего целочисленные неотрицательные значения? И если есть – то какие?
2. Какие преимущества и недостатки при использовании для поля первичного ключа типа NUMC, по сравнению с использованием INT*?
Из того, что нашел по 2-у вопросу:
Преимущества NUMC:
1. При добавлении записей в запрос (объект TABU) можно указывать только значения ключевых полей, стоящих до INT*-поля.
2. Может быть использовано для записи бОльших значений
3. Удобнее для выполнения строковых операций (конкатенация и т.д.)
4. Удобнее для работы с экранными полями
Недостатки NUMC:
1. Следует не забывать о ведущих нулях
2. В поле могут быть записаны не только числа
Конкретных рекомендаций не помню.
Все таки, это зависит от задачи. У Вас смысловая нагрузка этого поля в чем заключается? Что с ним надо будет делать дальше? В общем случае это NUMC/CHAR. (Если надо различать значения 1 и 01 то только CHAR)
В целом, даже и не могу сходу вспомнить ситуаций когда в ключе понадобилось бы использовать обязательно INT.
По стандарту тоже, номера объектов, номера позиций, во многом char/numc
Недостатки NUMC:
1. Следует не забывать о ведущих нулях ---- используйте подпрограмму преобразования
2. В поле могут быть записаны не только числа ---- а что еще?
Если с точки зрения numc как числа, то:
По NUMC нельзя проводить вычисления
По NUMC соответственно ограничен в select в определенных функциях
А это надо в случае если поле в ключе?
Повторюсь преимущества и недостатки зависят от условий и нюансов задачи.