Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_БД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.03 Mб
Скачать
  1. Представления

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

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

Так говорит стандарт SQL-92. Тем не менее, Oracle и (при определенных условиях) SQL Server допускают конструкцию ORDER BY в определении представления.

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

Листинг 35

CREATE VIEW CustomerNameView AS

SELECT Name AS CustomerName

FROM Customer;

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

Листинг 36

SELECT *

FROM CustomerNameView

ORDER BY CustomerName;

    1. Применение представлений

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

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

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

Листинг 37. Отображение вычисляемых столбцов

CREATE VIEW CustomerPhone AS

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

FROM CUSTOMER;

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

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

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

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

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, без проблем будет работать с новым источником данных.

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

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

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

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

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

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

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