Программирование >>  Реализация баз данных 

1 ... 101 102 103 [ 104 ] 105 106 107 ... 162


Занятие 2. Создание, модификация

и удаление представлений

Как вы узнали из материала мтия 1, представление - это проста мщийся в БД запрос SELECT, Представления соззаются так же, как и другие объекты базы данных. Созданные представления разрешено модифицировать и удалять. В этом занятии показано, как создавать представления (в том числе индексированные и секционированные), а

также модифицировать и удалять их.

Изучив материал этого занятия, вы сможете: D создавать простые, индексированные ровакные представления;

D модифицировать и удалять представления.

Продолжительность занятия - около 35 минут.

Создание представлений

Представления разрешается создавать только щей базе данных. Однако если новое представление определено на основе распределенных запросов, оно может ссылаться на таблицы и представления из других БД и даже расположенные на других серверах. Необхо-чтобы имя представления соответствовало правилам для идентификаторов и было уникальным для каждого пользователя. Кроме того, оно не должно совпадать с именем любой надлежащих этому пользователю. В основе представления могут лежать другие представления и в свою очередь, тоже могут ссылаться на представления. SQL Server 2000 поддерживает до 32 уровней вложенности представлений. При создании представлений ограничения:

с представлениями нельзя связывать правила и определения DEFAULT;

к представлению разрешено привязать триггеры INSTEAD OF, но не AFTER;

в запросах, определяющих представление, не должно быть конструкций ORDER BY, COMPUTE, COMPUTE BY и ключевых слов INTO;

на представлениях нельзя дава гь полнотекстовые индексы;

запрещено создание временные тавлений, как и представлений на основе временных

нельзя удалять таблицы или представления, задействованные в представлении, созданном с использованием укнии SCHEMABINDING, пока это представление не будет удалено или не перестанет быть привязанным к схеме (в результате изменения). Кроме того, запрещено выполнение оператора ALTER ТАВЕЕ для таблицы, :1алейство-ванной в представлении, которое привязано к схеме;

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

Необходимо явно задать имя каждого столбца представления, если хоть один из них

формируется на основе арифметического выражения, встроенной функции, константы, а

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

более таблиц, в которых есть столбцы с одинаковыми именами.)

Кроме того, если имена столбцов представления должны отличаться от имен столбцов, производными которых они являются, то следует явно задать имена для каждого стол-



бци представления (при этом столбцы в представлении могут быть переименованы). Стол-беп. представления наследует тип данных столбца, производным которого он является, независимо оттого, переименован ли он или нет. Обратите ;:инмание. что это (ираниче-ние не действует, представление создано на основе запроса с внешним соединением, поскольку в этом случае столбцы, не пустых значений, могут потерять

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

обязательно. SQL Server присваивает представления имена и типы данных стол-

бцов, заданных в определяющем представление запросе. Список выбора определяющего представления оператора - это полный или частичный перечень име адбцов базовых

таблиц.

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

По умолчанию, если в результате добавления или обновления данных через представление строки перестали соответствовать критерию определяющего представление запроса, они выходят из сферы видимости представления. Например, можно определить представление, которое извлекает все строки со сведениями о работниках, годовая зарплата которых не превышаем ООО. Если зарплата повышается до $32 000, то при последующих запросах представление не будет выводить строку для него, поскольку значение не соответствует установленному представлением критерию. Однако конструкция WITH CHECK OPTION устанавливает для всех модифицирующих данные представления операторов принудительное соответствие критерию, заданному оператором SELECT, определяющим представление. Эта конструкция запрещает модификации строк, которые выводят их из сферы видимости представления. Любые модификации, которые могут вызвать такую ситуацию, отменяются, и выводится сообщение об ошибке.

Примечание Конструкция WITH CHECK OPTION не действует, если модификация таблиц, в основе представления, совершается напрямую. Эта конструкция действует только на те модификации, которые совершаются через представление.

Определение представления разрешается зашифровать, однако после этого его не сможет получить никто, даже сам владелец представления.

Создание стандартных представлений

Существуют два способа создания представления: с помощью Enterprise Manager или на языке оператора CREATE В следующем примере опера-

тор CREATE VIEW используется для определения запроса на основе оператора SELECT, который возвращает данные из БД Northwind:

USE Northwind

CREATE VIEW Ct;stO(T)erOrders AS

SELECT o.OfderlD, c,CornpanyName, c.ContactName

FROM Orders 0 JOIN Customers с

ON o.Customerl!) = с, eustomerlD

Этот оператор создает представление erOrders в базе данных Northwind. Оператор SELECT, определяющий представление, с помощью соединения извлекает идентификатор заказа из а также название компании и имя контактного лица из таблицы Customers.



Создание индексированн1х представлений

Представления также называют виртуальными поскольку в общем случае пред-

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

В стандартном представлении издержки на динамическое построение результируюше-го набора для каждого на запроса возрастают при использо-

вании сложной обработки большого числа строк агрегирования множества

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

Примечание Индексированные представления разрешается создавать только в Microsoft SQL Server 2000 Enterprise Edition или Microsoft SQL Server 2000 Developer Edition.

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

При создании кластерного индекса данные представления сохраняются в том виде, в каком они существуют на момент создания индекса. Модификации в базовых таблицах после создания индекса автоматически отражаются как в индексированном представлении, так и в индексе базовой таблицы. Изменения данных базовгх таблиц отражаются в индексированном представлении по мере их внесения. Поскольку кластерный индекс представления должен быть уникальным, SQL Server более эффективно выполняет поиск строк индекса, измененных при модификации данных.

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

К представлению, на которое мается кластерный индекс, предъявляются следующие требования:

во время исполнения оператора CREATE параметры ANSI NULLS и QUOTED IDENT[FIER должны быть установлены (ON). Текущее значение этих параметров можно узнать посредством функции OBJECTPROPERTY через свойства Exec-

при исполнении всех операторов CREATE ТАВЕЕ, создающих базовые таблицы представления, необходимо установить (ON) параметр ANSINULLS;

представление не должна Т1>ся на другие таблицы, кроме базовых;

все базовыииы представления следует расположить в той же БД, что и само представление, а их владельцем необходимо назначить владельца представления;



1 ... 101 102 103 [ 104 ] 105 106 107 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика