Скачиваний:
102
Добавлен:
02.05.2014
Размер:
2.3 Mб
Скачать

9.3. Выборка данных из представлений

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

Прежде всего, следует отметить, что любое заданное реляционное выражение можно рассматривать как функцию на множестве отношений. Иными словами, текущие значе­ния различных переменных-отношений, упоминаемых в выражении, представляют собой аргументы данного вызова этой функции, а результатом ее вычисления является другое отношение. Пусть D — это база данных (которая будет представлена в данном случае как множество переменных отношений), а V — это представление, определенное на множе­стве D, т.е. представление, определение которого является функцией X на множестве D.

2 См. обсуждение декомпозиции без потерь в разделе 11.2 главы 11. Здесь игнорируются любые представления, определенные пользователем, которые, как мы уже убедились, являются просто сокращенной записью некоторого выражения


V = X ( d )

Пусть R — операция выборки из представления V. Тогда очевидно, что R также является функцией на множестве отношений, а результат выборки будет иметь следующий вид.

R(V)=R(X(D))

Таким образом, результат операции выборки по определению совпадает с результа­том вычисления функции X на множестве D, т.е. овеществления копии отношения, яв­ляющегося текущим значением представления V, с последующим применением операции R к этой овеществленной копии. Однако на практике эффективнее использовать описан­ную выше процедуру подстановки (см. раздел 9.1). Эта процедура равносильна форми­рованию функции С, являющейся композицией R(X) функций X и R (именно в этом по­рядке), и вычислению результата применения функции С к множеству D. Но как бы то ни было, все-таки удобнее, по крайней мере концептуально, дать определение семантики операции выборки из представлений в терминах овеществления, а не подстановки. Дру­гими словами, подстановка допустима потому, что она гарантирует получение того же результата, который мог быть получен при использовании овеществления (и это, безус­ловно, гарантируется).

Все изложенное в предыдущем разделе должно быть, в основном, уже знакомо чита­телю. Тем не менее мы сочли необходимым еще раз привести этот материал здесь и вот по каким причинам.

  • Во-первых, он дает основу для аналогичного (но более глубокого) обсуждения операций обновления в разделе 9.4.

  • Во-вторых, становится очевидным, что овеществление представляет собой со­вершенно законный способ реализации представлений, по крайней мере в слу­чае операций выборки (хотя, возможно, довольно неэффективный). Однако этот способ, конечно же, не может быть использован при операции обновления, по­скольку смысл обновления представления заключается в применении указанной операции обновления именно к лежащим в основе представления базовым пе­ременным-отношениям, а не просто к некоторой материализованной копии их данных (раздел 9.4).

  • В-третьих, хотя, в принципе, процедура выполнения подстановки определений представления вполне понятна и теоретически отлично работает в ста процентах случаев, весьма огорчает тот факт, что в некоторых программных SQL-продуктах (на время написания книги) этот процесс не реализован. Иначе говоря, в подобных продуктах выборка данных из представлений может совершенно неожиданно за­вершиться ошибкой. Процедура подстановки не реализована в версиях стандарта SQL, выпущенных до 1992 года. Причиной, по которой в приложениях и стандар­тах языка SQL не работают операции выборки из представлений, является непол­ная поддержка ими свойства реляционной замкнутости (см. упр. 9.14).

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]