Тип STRING или элемент SSTRING для текстового поля в таблице? Плюсы и минусы - PullRequest
0 голосов
/ 23 марта 2020

Мне нужно создать таблицу Z для хранения причин изменения определенного пользовательского объекта.

В пользовательском интерфейсе пользователь выберет идентификатор причины и затем при необходимости заполнит текстовое поле. Таблица будет иметь более или менее поля ниже:

key objectID
key changeReasonID
    changedOn
    changedBy
    comments

Я сомневаюсь в поле комментариев. Я прочитал документацию об ограничениях STRING и SSTRING, но мне не ясно, имеет ли поле типа STRING, используемое в прозрачной таблице, ограниченную длину или нет.

Даже если длина не ограничена (по крайней мере, БД), я не уверен, будет ли хорошей идеей использовать этот подход или вы бы порекомендовали типы CHAR / SSTRING с фиксированной длиной вместо этого?

** Моя система работает база данных MS SQL.

1 Ответ

3 голосов
/ 23 марта 2020

Строки имеют неограниченную длину, как в структурах / таблицах ABAP, так и в базе данных.

Большинство баз данных будут хранить только указатель в этом столбце, который указывает на реальное значение CLOB, которое хранится в другой памяти сегмент. В результате они ограничивают использование этих столбцов и могут не позволить вам использовать их в качестве ключа или индекса.

Если я правильно помню, ABAP поддерживает максимум 16 строковых полей на структуру, что, естественно, ограничивает возможности использования. Также учтите, что структуры ABAP имеют максимальный размер.

Для вашего случая, если комментарий останется единственным длинным полем, и если вы действительно хорошо храните неограниченный ввод (-> ограничения безопасности?), Строка звучит как разумный вариант.

Если вы не уверены, что принесет будущее, или не уверены в безопасности, вы можете вместо этого выбрать sstring или просто длинный символ.

...