|
Программирование >> Хронологические базы данных
9.7. Резюме Представление - это, по сути, именованное реляционное выражение. Представление можно рассматривать как производную виртуальную переменную-отношение. Операции над представлениями обычно реализуются с помощью процедуры подстановки, состоящей в замене ссылки на имя представления тем выражением, которое это представление определяет. Процедура подстановки работает корректно благодаря свойству реляционной замкнутости. Для операций выборки процесс подстановки корректно выполняется в 100% случаев (по крайней мере, теоретически, но необязательно на практике для существующих продуктов). Для операций обновления процесс подстановки корректно выполняется также в 100% случаев* (опять же, теоретически, но необязательно на практике). Однако для некоторых представлений (например, представлений, определяемых в терминах операции обобщения) попытка обновления обычно приводит к ощибке, поскольку нарущаются установленные в системе ограничения целостности. В этой главе также рассматривался обширный набор принципов, которым должна удовлетворять схема обновления. Была подробно рассмотрена работа схемы обновления для представлений, определенных в терминах операций объединения, пересечения, вычитания, выборки, проекции, соединения и расширения. Для каждой из этих операций были описаны соответствующие правила вывода предиката (переменной-отношения). Также была затронута проблема представлений и логической независимости данных. Существует два аспекта такой независимости: аспект роста и аспект реструктуризации. Среди других преимуществ представлений можно отметить их способность скрывать данные и, следовательно, обеспечивать определенный уровень зашиты, а также их способность выступать в роли сокращенной записи и тем самым упрощать работу пользователей. Были рассмотрены два важных принципа: принцип взаимозаменяемости (из которого, в частности, следует, что представления должны быть обновляемы) и принцип относительности базы данных. Отклонившись на некоторое время от основной темы, мы бегло обсудили использование моментальных снимков. И наконец в главе кратко были описаны те аспекты языка SQL, которые имеют отношение к обсуждаемой теме. Упражнения 9.1. Используя реляционное исчисление, предоставьте аналоги алгебраических определений представлений, приведенных в подразделе Дополнительные примеры раздела 9.1. 9.2. Дайте определение представления, содержащего номера поставщиков и номера деталей для тех поставщиков и деталей, которые размещены не в одном и том же городе. 9.3. Дайте определение представления, содержащее кортежи для тех поставщиков, которые находятся в Лондоне. 9.4. В контексте базы данных поставщиков, деталей и проектов переопределите переменную-отношение SP как представление на базе переменной-отношения SPJ. Поскольку мы рассматриваем представления как переменные-отношения, а любые переменные всегда обновляемы по определению. 9.5. В контексте базы данных поставщиков, деталей и проектов определите представление, включающее данные обо всех проектах (атрибуты номера проекта и названия города), детали для которых поставляет поставщик с номером S1 ив которых используется деталь с номером Р1. 9.6. Пусть имеется представление, определенное следующим образом. VAR HEAVYWEIGHT VIEW ( ( Р RENAME WEIGHT AS WT, COLOR AS COL ) WHERE WT > WEIGHT ( 14.0 )){ Pt, WT, COL } ; Покажите преобразованную форму каждого из перечисленных ниже операторов после выполнения процедуры подстановки. а) RA := HEAVYWEIGHT WHERE COL = COLOR ( Green ) ; б) RB := ( EXTEND HEAVYWEIGHT ADD WT + WEIGHT ( 5.3 ) AS WTP ) { Pt, WTP } ; в) UPDATE HEAVYWEIGHT WHERE WT = WEIGHT ( 18.0 ) COL := White ; r) DELETE HEAVYWEIGHT WHERE WT < WEIGHT ( 10.0 ) ; д) INSERT INTO HEAVYWEIGHT RELATION { TUPLE { Pt Pt ( P99 ), WT WEIGHT ( 12.0 ), COL COLOR ( Purple ) } } ; 9.7. Предположим, что приведенное в упр. 9.6 определение представления HEAVYWEIGHT изменено следующим образом. VAR HEAVYWEIGHT VIEW ( ( ( EXTEND Р ADD WEIGHT * 454 AS WT ) RENAME COLOR AS COL ) WHERE WT > WEIGHT ( 14.0 )){ Pt, WT, COL } ; (Атрибут WT теперь содержит вес в граммах, а не в фунтах.) Выполните упр. 9.6 для этого случая. 9.8. В главе 8 указывалось, что для представлений иногда желательно иметь возможность объявления потенциальных ключей (или первичного ключа). Почему такая возможность может быть желательной? 9.9. Какие расширения системного каталога, описанного в главах 3 и 5, необходимы для поддержки механизма представлений? Что можно дополнительно сказать по поводу моментальных снимков? 9.10. Предположим, что базовая переменная-отношение R была заменена выборками А и В, такими, что объединение А UNION В всегда эквивалентно исходному отношению R, а пересечение А INTERSECT В всегда пустое. Достижима ли в этом случае логическая независимость данных? 9.11. а) Пересечение А INTERSECT В эквивалентно соединению А JOIN В (это соединение типа один к одному , что не совсем точно, поскольку в переменной-отношении А могут существовать кортежи, для которых нет соответствующих кортежей в переменной-отношении В, и наоборот). Совместимы ли с подобной эквивалентностью изложенные в разделе 9.4 правила обновления представлений, определенных посредством операций пересечения и соединения? б) Пересечение А INTERSECT В также эквивалентно вычитанию А MINUS (А MINUS Б) и вычитанию Б MINUS (В MINUS А). Совместимы ли с подобной эквивалентностью изложенные в разделе 9.4 правила обновления представлений, определенных посредством операций пересечения и вычитания? 9.12. Один из принципов, изложенных в разделе 9.4, состоит в том, что операции INSERT и DELETE, насколько это возможно, должны быть противоположными одна другой. Следуют ли этому принципу изложенные в этом разделе правила обновления представлений, определенных посредством операций объединения, вычитания и пересечения? 9.13. В разделе 9.2 (при рассмотрении проблемы логической независимости данных) обсуждалась возможность реструктуризации базы данных поставщиков и деталей посредством замены базовой переменной-отношения S двумя проекциями этой переменной-отношения с именами SNC и ST. Там же отмечалось, что подобная реструктуризация не всегда тривиальна. Какой смысл имеет последнее замечание? 9.14. Исследуйте любой доступный для вас SQL-продукт и дайте ответы на следующие вопросы. а) Можно ли привести примеры каких-либо операций выборки данных из представлений, которые приведут к ошибке? б) Каковы правила обновления представлений для этого продукта? (Возможно, они окажутся менее строгими в сравнении с теми требованиями, которые были изложены в разделе 9.6.) 9.15. Рассмотрим базу данных поставщиков и деталей, но для простоты будем игнорировать наличие переменной-отношения деталей. Ниже сокращенно описаны два возможных варианта проекта базы данных поставщиков и поставок. а) S { SI, SNAME, STATUS, CITY } SP { S#, P#, QTY } б) SSP { SI, SNAME, STATUS, CITY, P#, QTY } XSS { Si, SNAME, STATUS, CITY } Проект a можно считать обычным. В проекте б, напротив, переменная-отношение SSP содержит кортеж для каждой поставки, включающий соответствующий номер детали, количество деталей и полную информацию о поставщике, тогда как переменная-отношение XSS содержит информацию о тех поставщиках, которые вовсе не поставляют деталей. (Обратите внимание, что оба проекта информационно равносильны и, следовательно, эти проекты служат иллюстрацией принципа взаимозаменяемости.) Напишите определения представлений для выражения проекта б в виде представлений в составе проекта а и наоборот. Также предоставьте все необходимые ограничения базы данных для каждого из вариантов проекта (см. главу 8, если потребуется освежить в памяти материал об ограничениях базы данных). Имеет ли каждый из проектов какие-либо явные преимущества по сравнению с другим? Если да, то какие? 9.16. Выполните упр. 9.2-9.5 с использованием языка SQL. 9.17. Еще раз обратитесь к определению реляционной модели, приведенному в конце раздела 3.2 в главе 3, и убедитесь, что теперь вы его понимаете полностью.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |