Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db-shpora.doc
Скачиваний:
14
Добавлен:
08.11.2018
Размер:
1.44 Mб
Скачать
  1. Представления. Применение представлений. Обновление представлений.

SQL-представление (SQL view) – это виртуальная таблица, составленная из дру­гих таблиц или представлений.

Представление не имеет своих собственных данных, а объединяет данные из таблиц или представлений, которые в него входят. Представления создаются с помощью операторов SELECT; единственное ограничение заключается в том, что они не могут включать в себя конструкцию ORDER BY. Сортировка должна обеспечиваться оператором SELECT, который обрабатывает уже само представление.

Например, следующий оператор определяет представление под названием CustomerNameView, базирующееся на таблице CUSTOMER:

CREATE VIEW CustomerNameView AS

SELECT Name AS CustomerName

FROM Customer;

Для получения отсортированного списка имен клиентов это представление можно обработать с помощью SQL-оператора:

SELECT *

FROM CustomerNameView

ORDER BY CustomerName;

Представления имеют множество применений:

  1. С помощью представлений можно скрывать от доступа отдельные столбцы или строки.

  2. Представления позволяют отображать вычисляемые столбцы

CREATE VIEW CustomerPhone AS

SELECT Name, ('(' + AreaCode + ')') + PhoneNumber) As Phone

FROM CUSTOMER;

  1. Представления позволяют скрывать сложные SQL-операторы, например, использующие соединение и группировку.

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

Листинг 34. Обеспечение уровня абстракции между данными, обрабатываемыми приложением и реальными таблицами

Рассмотрим следующее определение представления:

CREATE VIEW CustomerTable1 AS

SELECT *

FROM CUSTOMER;

Если источником данных о клиентах станет другая таблица, например, NEW_CUSTOMER, то переопределяем представление:

CREATE VIEW CustomerTable1 AS

SELECT *

FROM NEW_CUSTOMER;

В сущности, это представление присваивает таблице CUSTOMER псевдоним CustomerTable1. Представление CustomerTable1 можно обрабатывать точно таким же образом, как и таблицу CUSTOMER.

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

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

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

  1. Представления используются для предоставления различных прав доступа к одной и той же таблице.

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]