Базы данных Oracle - статьи

         

Эволюция типов


Использование типа позволяет пользователю развивать бизнес-логику, зафиксированную в поведении этого типа. Эволюция типов– это механизм, который позволяет пользователю изменять тип и распространять эти изменения на другие объекты схемы, которые ссылаются на модифицированный тип. К числу объектов схемы, которые могут ссылаться на тип, относятся другие типы, подтипы, объекты-строки, объекты-столбцы (column objects), программные блоки (пакеты, функции, процедуры), представления, функциональные индексы и триггеры.

Поддерживаемые операции эволюции типов:

  1. Операции над атрибутами типов:

    • добавление атрибута для типа;
    • удаление атрибута типа;
    • модификация типа атрибута (увеличение его длины, точности или масштаба).
    • Операции над методами типов:

      • добавление метода для типа;
      • удаление метода типа.
      • Изменение свойств INSTANTIABLE (абстрактный/не абстрактный тип – не допускает или допускает непосредственное порождение экземпляров объектов) и FINAL (терминальный/нетерминальный тип – нельзя создавать подтипы или можно) объектного типа SQL.
      • Поддержка явного распространения изменений типа на зависимые от него типы и таблицы.

      Эти изменения при эволюции типов являются либо структурными (structural), либо неструктурными (non-structural). Структурные изменения воздействуют на состояние объекта; это, например, добавление или удаление атрибута. Неструктурные изменения не затрагивают состояния объекта. Например, переименование атрибута или добавление метода.

      Рассмотрим следующий пример: CREATE TYPE address_t AS OBJECT ( street VARCHAR(100), zip_code NUMBER); CREATE TYPE person_t AS OBJECT ( first_name VARCHAR(50). last_name VARCHAR(50), age NUMBER, address address_t); CREATE TABLE person_tab OF person_t;

      В этом примере таблица person_tab создается со столбцом для каждого атрибута типа person_t, а также с одним столбцом для каждого атрибута адреса (тип address_t). Рассмотрим следующий пример изменения типа:

      ALTER TYPE address_t ADD ATTRIBUTE (country NVARCHAR(100), int_postal_code NVARCHAR(20)) CASCADE;

      Результатом этого изменения будет добавление двух столбцов к таблице person_tab, соответствующих только что добавленным атрибутам. Ключевое слово CASCADE распространяет изменения этого типа на зависимые типы и таблицы.



      Содержание раздела