Программирование >>  Хронологические базы данных 

1 ... 115 116 117 [ 118 ] 119 120 121 ... 348


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



1 ... 115 116 117 [ 118 ] 119 120 121 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика