процессором SQL). Процессор БД исполняет все необходимые действия
по извлечению и обработке данных. В результате формируется таблица с
выходными данными, которая возвращается клиенту в ответ на его за-
прос.
Запросы на выборку, которые необходимо выполнять регулярно, нет
смысла пересылать по сети и компилировать каждый раз, как только кли-
енту потребуется соответствующая выборка данных. Разумно постоянно
хранить в базе данных тексты таких запросов вместе с планами их испол-
нения.
Может возникнуть вопрос, зачем хранить исходные тексты запросов,
а не ограничиться только планами их исполнения? Дело в том, что при
наличии исходного текста имеется возможность перестройки плана ис-
полнения запроса, если старый план окажется уже не самым оптималь-
ным (во всяком случае, СУБД Oracle такую возможность поддерживает).
К сожалению, подробный анализ работы оптимизатора запросов не
входит в рамки настоящего курса. Самое главное, что требуется уяснить,
- то, что представление не содержит никаких данных, в отличие от табли-
цы, но с точки зрения клиентского приложения представление почти ни-
чем не отличается от таблицы. Точнее, представление является виртуаль-
ной таблицей, с которой в большинстве практических применений можно
работать так же, как с реально существующей на диске таблицей.
Сказанное означает, что во всех запросах на выборку SELECT мож-
но использовать имя представления везде, где можно использовать имя
таблицы (т.е. при формулировании запросов на выборку пользователь
может даже не знать, чем он пользуется – таблицей или представлением).
Более того, некоторые представления (но не все) можно использовать
даже в запросах INSERT, DELETE и UPDATE, при этом будут внесены
соответствующие изменения в реальные таблицы.
Использование представлений имеет глубокий смысл, который фор-
мулируется в правиле №7 Кодда для реляционных баз данных:
«База данных должна быть доступна конечным пользователям толь-
ко через представления».
Иными словами, механизм представлений позволяет предоставлять
каждому пользователю только ту часть базы данных, которая ему дейст-
вительно требуется для работы (внешнюю схему), скрывая от многочис-
ленных пользователей концептуальную схему, доступную только адми-
нистратору базы данных.
Для разработчика использование представлений упрощает разработ-
ку сложных SQL-запросов, которые можно строить на основе представ-
лений и отлаживать по частям.
Однако не следует злоупотреблять замечательными возможностями,
которые предоставляют представления. Не следует забывать, что для ма-