Программирование >>  Sql: полное руководство 

1 ... 110 111 112 [ 113 ] 114 115 116 ... 264


На рис. 14.1 изображено типичное представление. Оно называется repdata и определено в виде запроса к двум таблицам:

SELECT NAME, CITY, REGION, QUOTA, SALESREPS.SALES FROM SALESREPS, OFFICES WHERE REP OFFICE = OFFICE

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

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

Вывести список служащих, опережающих план, включая имя, город и регион.

SELECT NAME, CITY, REGION FROM REPDATA WHERE SALES > QUOTA

NAME

CITY

REGION

Mary Jones

New York

Eastern

Sam Clark

New York

Eastern

Dan Roberts

Chicago

Eastern

Paul Cruz

Chicago

Eastern

Bill Adams

Atlanta

Eastern

Sue Smith

Los Angeles

Western

Larry Fitch

Los Angeles

Western

Имя представления указывается в предложении from как имя обычной таблицы, а ссылка на столбцы представления в инструкции select осуществляется точно так же, как на столбцы таблицы. К некоторым представлениям можно применять инструкции insert, delete И update ДЛЯ изменения данных. Таким образом, представление можно использовать в инструкциях SQL так, как будто оно является обычной таблицей.

Как СУБД работает с представлениями

Когда СУБД встречает в инструкции SQL ссылку на представление, она отыскивает его определение, сохраненное в базе данных. Затем СУБД преобразует пользовательский запрос, ссылающийся на представление, в эквивалентный запрос к исходным таблицам представления, и выполняет этот запрос. Таким образом, СУБД Создает иллюзию существования представления в виде отдельной таблицы и в то же Время сохраняет целостность исходных таблиц.

Если определение представления простое, то СУБД формирует каждую строку Представления налету , извлекая данные из исходных таблиц. Если же определение Сложное, СУБД приходится материализовывать представление. Это означает, что -УБД выполняет запрос, определяющий представление, и сохраняет его результаты Во временной таблице. Из нее СУБД берет данные для формирования результатов



пользовательского запроса, а когда временная таблица становится ненужной, удаляет ее Но независимо от того, как СУБД выполняет инструкцию, являющуюся определением представления, для пользователя результат будет одним и тем же Ссылаться на представление в инструкции SQL можно так же, как если бы оно было реальной таблицей базы данных

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

Использование представлений в базах данньк различных типов может оказаться полезным в самых разнообразных ситуациях В базах данных на персональньтх компьютерах представления применяются для удобства и позволяют упрощать запросы к базе данных в промьииленных базах данных представления ифают главную роль в создании собственной структуры базы данньгх для каждого пользователя и обеспечении ее безопасности Основные преимущества представлений перечислены ниже

Безопасность Каждому пользователю можно разрешить доступ к небольшому числу представлений, содержащих только ту информацию, которую ему позволено знать Таким образом можно осуществить офаничение доступа пользователей к хранимой информации

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

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

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

Целостность данных Если доступ к данным или ввод данных осуществляется с помощью представления, СУБД может автоматически проверять, выполняются ли определенные условия целостности

Недостатки представлений

Наряду с перечисленными выше преимуществами, представления обладают и двумя существенными недостатками

Производительность Представление создает лишь видимость существования соответствующей таблицы, и СУБД приходится преобразовывать запрос к представлению в запрос к исходным таблицам Если представление отображает многотабличныи запрос, то простой запрос к представлению становится сложным объединением и на его выполнение может пофебоваться много времени

Ограничения на обновление Когда пользователь пытается обновить строки представления, СУБД должна установить их соответствие сфокам исходных таблиц, а также обновить последние Это возможно только для простых представлений, сложные представления обновлять нельзя, они доступны только для выборки Указанные недостатки означают, что не стоит без разбора применять представления вместо исходных таблиц В каждом конкретном случае необходимо учитывать перечисленные преимущества и недостатки представлений



Создание представлений (инструкция CREATE VIEW)

Инструкция create view, синтаксическая диаграмма которой изображена на рис 14 2, используется для создания представлений В ней указываются имя представления и запрос, лежащий в его основе Для успешного создания представления необходимо иметь разрешение на доступ ко всем таблицам, входящим в запрос

CREATE VIEW имя предстевления

AS запрос -

- ( имя столбца j ) -

Рис 14 2 Синтаксическая диаграмма инструкции CREATE VIEW

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

Хотя все представления создаются одинаковым образом, на практике представления различных типов, как правило, используются для разных целей В нескольких последующих парафафах рассмафиваются типы представлений и приводятся примеры инсфукций create view

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

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

Создать представление, показывающее информацию о служащих восточного региона

CREATE VIEW EASTREPS AS SELECT *

FROM SALESREPS WHERE REP OFFICE IN (11, 12, 13)

Создать представление, показывающее информацию о служащих западного региона

CREATE VIEW WESTREPS AS SELECT *

FROM SALESREPS WHERE REP OFFICE IN (21, 22)



1 ... 110 111 112 [ 113 ] 114 115 116 ... 264

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