к примеру, что вложенные таблицы нельзя использовать для моделирования объекта Customer, содержащего объекты Orders, которые, в свою очередь, содержат объекты Lines. Данные во вложенной таблице хранятся отдельно от родительской строки и, как во всякой таблице, в неупорядоченном виде.
Вложенная таблица может содержать любое число строк, иметь триггеры и индексы. Конечно, существует довольно простой способ, позволяющий частично обойти вышеупомянутое ограничение, однако вложенная таблица не может существовать вне контекста своей родительской строки. Помимо этого, у любого индекса, построенного для вложенной таблицы, к ключу добавлен идентификатор объекта (OID) родительской строки, поэтому прямой доступ к строке вложенной таблицы невозможен.
В следующем примере создается вложенная таблица назначений сотрудников:
CREATE OR REPLACE TYPE staff_assignment_t AS TABLE OF         staff_assignment_o;
CREATE TABLE projects
( proj_id      NUMBER        PRIMARY KEY
, proj_name    VARCHAR2(30)  NOT NULL
, manager     NUMBER       NOT NOLL REFERENCES project_members
, assignments  staff_assignment_t -- любое число назначений
, roi         BFILE   -- оставить таблицу на файловом сервере NESTED TABLE assignments STORE AS project_assignments;
Отметим, что фраза NESTED TABLE обязательна — по умолчанию никакого имени не изобретается, что необычно для Oracle.
Используя вложенные таблицы, а не VARRAY, мы можем обращаться с помощью SQL ко всем данным, но, чтобы привыкнуть к расширенному синтаксису, требуется некоторое время. Кроме того, эти расширения не поддерживаются еще большинством существующих инструментальных средств. Рассмотрим такой пример:
INSERT INTO THE
(SELECT assignments FROM projects WHERE proj_id = 555) VALUES {34, 'Ol-SEP-96', '30-SEP-961, 2000);
Как уже упоминалось, каждая операция над вложенной таблицей должна выполняться в контексте родительской строки. В данном случае новое ключевое слово SQL — THE — указывает на запрос, который идентифицирует родительскую строку.
Какой тип использовать?
Когда следует использовать наборы данных? Какой именно тип набора (VARRAY или вложенную таблицу) выбрать?
Если вам нужно выбрать родительскую строку на основании свойств ее дочерних строк, то вообще не стоит применять наборы. Индексный доступ
106	Oracle 8