- •7.7.6. Определить общее количество поставщиков
- •7.7.7. Определить в поставках максимальное
- •7.7.8. Для каждой поставляемой детали указать номер и общий объем поставки в штуках
- •7.7.9. Указать номера всех типов деталей, поставляемых более чем одним поставщиком
- •7.7.10. Определить имена поставщиков детали с номером т2'
- •7.7.11. Определить имена поставщиков по крайней мере одной красной детали
- •7.7.12. Указать номера поставщиков, статус которых меньше текущего максимального статуса
- •7.7.13. Указать имена поставщиков детали с номером 'р2'
- •7.7.14. Выбрать имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.7.15. Определить имена поставщиков всех типов деталей
- •7.7.16. Определить номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком с номером 's2', либо и то, и другое
- •7.8. Резюме
- •8.2. Ограничения типа
- •8.3. Ограничения атрибута
- •8.4. Ограничения переменной-отношения
- •8.5. Ограничения баз данных
- •8.6. "Золотое правило"
- •8.7. Ограничения состояния и ограничения перехода
- •8.8. Ключи
- •3. Пусть r1 и r2 — ссылающаяся и ссылочная переменные-отношения соответственно.
- •8.9. Средства языка sql
- •8.10. Резюме
- •9.1. Введение
- •9.2. Для чего нужны представления
- •9.3. Выборка данных из представлений
- •9.4. Обновление данных в представлениях
- •9.5. Моментальные снимки
- •9.6. Поддержка представлений в языке sql
- •9.7. Резюме
- •Часть III
- •10.1. Введение
- •10.2. Основные определения
- •10.3. Тривиальные и нетривиальные зависимости
- •10.4. Замыкание множества зависимостей
- •10.5. Замыкание множества атрибутов
- •10.6. Неприводимые множества зависимостей
- •10.7. Резюме
- •Глава 1 1
- •I Переменные-отношения в знф I
- •11.2. Декомпозиция без потерь
- •11.3. Первая, вторая и третья нормальные формы
- •11.4. Сохранение зависимостей
- •11.5. Нормальная форма Бойса-Кодда
- •11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
- •11.7. Резюме
- •12.1. Введение
- •12.2. Многозначные зависимости и четвертая нормальная форма
- •12.3. Зависимости соединения и пятая нормальная форма
- •Соединение по комбинации атрибутов j#,s#
- •Исходное состояние spj
- •12.4. Общая схема процедуры нормализации
- •12.5. Денормализация
- •12.6. Ортогональное проектирование (небольшое отступление от темы)
- •12.7. Другие нормальные формы
- •12.8. Резюме
- •12.3. Brosda V., Vossen g. Update and Retrieval Through a Universal Schema Interface // acm tods. — December, 1988. — 13, № 4.
- •12.5. Date c.J. Will the Real Fourth Normal Form Please Stand Up? // c. J. Date and Hugh Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.
- •12.20.Kent w. The Universal Relation Revisited // acm tods. — December, 1983. — 8, № 4.
- •12.22.Maier d., Ullman j.D. Fragments of Relations // Proc. 1983 sigmod Intern. Conf. On Management of Data. — San Jose, Calif. — May, 1983.
- •12.24.Maier d., Ullman j.D. Maximal Objects and the Semantics of Universal Relation Databases // acm tods. — March, 1983. — 8, № 1.
- •Глава 13
- •13.1. Введение
- •13.2. Общий подход
- •Каждыи экземпляр сущности ности «Произведение"
- •13.3. Модель "сущность/связь"
- •13.5. Проектирование базы данных с помощью метода er-моделирования
- •13.6. Краткий анализ er-модели
- •13.7. Резюме
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).