Скачиваний:
32
Добавлен:
01.04.2014
Размер:
418.3 Кб
Скачать

17.3. Определение данных

Общий синтаксис инструкции определения представления CREATE VIEW выглядит следующим образом:

CREATE VIEW имя AS выражение ;

В приведенном выражении имя обозначает имя представления, а выражение (выражение реляционной алгебры или реляционного исчисления) является определе­нием представления. Аналогично инструкция CREATE VIEW комбинирует функцию внешней схемы и функцию концептуальной схемы (использована терминология ANSI/SPARC из главы 2), так как эта инструкция определяет вид внешних объектов и их отображение на концептуальном уровне.

Ниже приведены примеры, записанные для определенности в синтаксисе реляци­онной алгебры.

1. CREATE VIEW REDPARTS AS

((P WHERE COLOR ='Red') [P#,PNAME,WEIGHT,CITY])

RENAME WEIGHT AS WT;

Вычисление этого выражения приведет к созданию представления REDPARTS, которое содержит кортежи с данными о деталях только красного цвета. Эти кор­тежи обладают четырьмя атрибутами: Р#, PNAME, WT и CITY, которые соответ­ствуют атрибутам Р#, PNAME, WEIGHT и CITY исходного отношения Р.

Замечание. Атрибут WEIGHT переименован в примере только ради демонстрации такой возможности, явной необходимости в этом не было.

2. CREATE VIEW PQ AS

SUMMARIZE SP BY( P# )ADD SUM ( QTY ) AS TOTQTY ;

В отличие от предыдущего примера (с представлением REDPARTS), представле­ние в данном примере не является простым подмножеством исходного отношения (например, выборкой или проекцией). Это представление можно рассматривать как статистический итог или сжатие исходного отношения.

3. CREATE VIEW CITY_PAIRS AS

( ( S RENAME CITY AS SCITY ) JOIN SP JOIN

( P RENAME CITY AS PCITY ) ) [ SCITY, PCITY ] ;

Данное представление было описано выше в этой главе. Как уже упоминалось, пара имен городов (х, у) появляется в представлении тогда и только тогда, когда поставщик, находящийся в городе х, поставляет детали, которые хранятся в городе у. Например, поставщик S1 поставляет детали Р1; поставщик S1 расположен в Лондоне и поставляемые им детали хранятся в Лондоне. Таким образом, пара имен (Лондон, Лондон) появляется в представлении.

4. CREATE VIEW LONDON_REDPARTS AS

REDPARTS WHERE CITY = 'London' ;

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

Инструкция DESTROY VIEW имеет следующий синтаксис:

DESTROY VIEW имя ;

В результате вычисления этого выражения представление с именем имя будет уничтожено (т.е. его определение будет удалено из системного каталога). Ниже при­веден пример использования такой операции:

DESTROY VIEW REDPARTS ;

В главе 4 показано, что операция destroy base relation завершится неудачей, если существует хотя бы одно определение представления (или снимка (snapshot)), в котором используется удаляемое отношение. Аналогично, операция destroy view завершится не­удачей, если определение какого-либо представления (или снимка) ссылается на удаляе­мое представление. Дополнительно в инструкции create view (и create snapshot) можно использовать инструкции restricted или cascades. Инструкция restricted означает, что попытка удалить исходные отношения потерпит неудачу, a cascades — что подобная по­пытка будет завершена успешно, после чего "по каскаду" будут удалены все представле­ния (и снимки данных///). Инструкция restricted применяется по умолчанию.

///////// Стандарт SQL [8.1] не поддерживает инструкций RESCTRICTED и CASCADES; эти инструкции включены в DROP TABLE и DROP VIEW (соответственно инструкциям DESTROY BASE RELATION и DESTROY VIEW). Но инструкция CREATE VIEW не поддерживает инструкций RESTRICTED и CASCADES. Для них в стандарте SQL не предусмотрено значения по умолчанию и нужно явно указывать одну из инструкций.///////

Соседние файлы в папке Дейтл Введ в БД