›  ›  ›  › Терминология в коллекциях PL/SQL Oracle

Терминология в коллекциях PL/SQL Oracle

Концепции и терминология

Пояснения, которые приведены ниже помогут вам быстрее понять эти структуры данных.

Элементы и индексы. Коллекция состоит из множества элементов (фрагментов данных), причем каждый элемент находится в определенной позиции списка, то есть обладает определенным индексом. Иногда элементы называются «строками», а индексы — «номерами строк».

Тип коллекции. Каждая переменная, представляющая коллекцию в программе, должна быть объявлена на основании заранее определенного типа коллекции.

Коллекция, или экземпляр коллекции. Этот термин может иметь несколько значений:

  • переменная PL/SQL типа ассоциативного массива, вложенной таблицы или VARRAY;
  • столбец таблицы, где хранятся значения типа вложенной таблицы или массива VARRAY.

Независимо от конкретного использования коллекция всегда остается списком элементов.

Экземпляром коллекции называется экземпляр конкретного типа коллекции. Отчасти из-за синтаксиса и названий, которые были выбраны для поддержки коллекций Oracle, коллекции также иногда называются массивами и таблицами.

Однородные элементы. Все элементы коллекции должны относиться к одному типу, то есть коллекция является однородной. Впрочем, этот тип данных может быть составным; например, можно объявить коллекцию, состоящую из записей, то есть таблицу.

Одномерная коллекция. В каждой строке коллекции имеется всего одно поле, и с этой точки зрения она похожа на одномерный массив. Нельзя объявить коллекцию, на элементы которой можно было бы ссылаться следующим образом:

my_collection (10, 44)

Двумерные структуры в настоящее время напрямую не поддерживаются, однако вы можете создать многомерный массив, объявляя коллекцию коллекцией, — синтаксис будет примерно таким:

my_collection (44) (10)

Ограниченная и неограниченная коллекция. Коллекция называется ограниченной, если заранее определены границы возможных значений индексов (номеров) ее элементов. Если же верхняя или нижняя граница номеров элементов не указана, то коллекция называется неограниченной. Коллекции типа VARRAY (массивы переменной длины) всегда ограничены. При определении такой коллекции следует указать максимальное количество ее элементов (номер первого элемента всегда равен 1). Вложенные таблицы и ассоциативные массивы ограничиваются только теоретически.

Разреженные и плотные коллекции. Коллекция (или массив, или список) называется плотной, если все ее элементы, от первого до последнего, определены и каждому из них присвоено некоторое значение (таковым может быть и NULL). Коллекция считается разреженной, если отдельные ее элементы отсутствуют. Не обязательно определять все элементы коллекции и заполнять ее полностью. Массивы VARRAY всегда являются плотными. Вложенные таблицы первоначально всегда плотные, но по мере удаления некоторых элементов становятся разреженными. Ассоциативные массивы могут быть как разреженными, так и плотными в зависимости от способа их заполнения.

Разреженность — это очень ценное свойство, позволяющее добавлять элементы в коллекцию по первичному ключу или другим ключевым данным (например, номеру записи). Таким образом можно задать определенный порядок следования данных в коллекции или значительно ускорить их поиск.

Целочисленное индексирование. К любому элементу коллекции можно обратиться по номеру, который представляет собой целочисленное значение. Объявление ассоциативного массива явно выражает это требование условием INDEX BY, но правило действует и для других типов коллекций.

Строковое индексирование. В качестве индексов ассоциативных массивов можно использовать не только номера, но и символьные строки. Эта возможность не поддерживается ни для вложенных таблиц, ни для массивов VARRAY.

Внешняя таблица. Так называют таблицу, содержащую столбец типа вложенной таблицы или массива VARRAY.

Внутренняя таблица. Так принято называть коллекцию, содержащуюся в столбце таблицы.

Вспомогательная таблица. Физическая таблица, создаваемая Oracle для хранения внутренней таблицы (столбца, содержащего вложенную таблицу).

Метки: , .

Записи по теме

Добавить комментарий

Ваш адрес email не будет опубликован.