Введение в системы БД (542480), страница 94
Текст из файла (страница 94)
Ниже приведено более точное изложение правил обновляемости представлений в соответствии со стандартом языка 81;>). (этот список взят из [4.19), хотя здесь он несколько упрощен). Стандартом языка БЯ) предполагается, что представление является обновляемым только в том случае, если выполнены все следующие условия.
1. Табличное выражение, определяющее область видимости представления, должно быть выражением выборки, т.е, в него не должны непосредственно входить такие ключевые слова, как ЛО?Н, ОН10Н,?НТЕНЯЕСТ и ЕХСЕРТ. 2. Предложение БЕЗВЕСТ в выражении выборки не должно непосредственно содержать ключевое слово 01БТ1НСТ.
3. Каждый выбираемый элемент в предложении БЕЕЕСТ (после любых требуемых расширений этого списка, заданных шаблоном "звездочка" (')) должен быть именем столбца (возможно, уточненным и при необходимости сопровождаемым фразой АБ), представляющим простую ссылку на столбец исходной таблицы (см. п. 5). 4.
Предложение РНОН в выражении выборки должно содержать ровно одну ссылку на таблицу. 5. Данная ссылка на таблицу должна задавать либо базовую таблицу, либо обновляемое представление. Заиечание. Таблица, которую задает ссылка, является единственной исходной таблицей для рассматриваемого обновляемого представления (см.
п. 3). б. Заданное выражение выборки не должно включать предложения ННЕНЕ с подзапросом, в котором содержится предложение РНОН, ссылающееся на ту же таблицу, что и основное предложение РВОМ, рассмотренное в п. 4. 7. Выражение выборки не должно включать предложения ОЕООР ВУ. 8. Выражение выборки не должно включать предложения НАР?НО. Сделаем пару замечаний к перечисленным правилам. 1. Подход к обновляемости представлений в языке 81)1. следует принципу "все или ничего". Это значит, что по отношению к любому представлению нее три операции, 1МЯЕНТ, ОРОАТЕ и ВЕДАЕТЕ, либо можно применять, либо нельзя.
Например, в языке 81)Б невозможна ситуация, когда к некоторому представлению допускается применение операции ОЕЬЕТЕ, но запрещено применять операцию 1МЯЕНТ (хотя отдельные коммерческие программные продукты такую возможность поддерживают). 2. В языке БО). операция ОРОАТЕ либо прииенииа к данному представлению, либо пепи Иначе говоря, в языке Я)1 недопустима ситуация, когда одни столбцы представления являются обновляемыми, а другие — нет (хотя некоторые коммерческие программные продукты в этом отношении пошли дальше стандарта). 382 Часть 11. Реляционная лгодель 9.7. Резюме Представление — это, по сути, именованное реляционное выражение. Представление можно рассматривать как производную виртуальную переменную-отношение.
Операции над представлениями обычно реализуются с помощью процедуры подстановки, состоящей в замене ссылки на имя представления тем выражением, которое это представление определяет. Процедура подстановки работает корректно благодаря свойству реляционной замкнутости.
Для операций выборки процесс подстановки корректно выполняется в !00'Ъ случаев (по крайней мере, теоретически, но необязательно на практике для существующих продуктов). Для операций обновления процесс подстановки корректно выполняется также в 100ьгь случаев'о (опять же, теоретически, но необязательно на практике). Однако для некоторых представлений (например, представлений, определяемых в терминах операции обобщения) попытка обновления обычно приводит к ошибке, поскольку нарушаются установленные в системе ограничения целостности.
В этой главе также рассматривался обширный набор принципов, которым должна удовлетворять схема обновления. Была подробно рассмотрена работа схемы обновления для представлений, определенных в терминах операций объединения, пересечения, вычитания, выборки, проекции, соединения и расширения. Для каждой из этих операций были описаны соответствующие правила вывода предиката (переменной-отношения). Также была затронута проблема представлений и логической независимости данных.
Существует два аспекта такой независимости: аспект роста и аспект реструктуризации. Среди других преимушеств представлений можно отметить их способность скрывать данные и, следовательно, обеспечивать определенный уровень защиты, а также их способность выступать в роли сокращенной записи и тем самым упрощать работу пользователей. Были рассмотрены два важных принципа: принцип взаимозаменяемости (из которого, в частности, следует, что представления должны быть обновляемы) и принцип относительности базы данных.
Отклонившись на некоторое время от основной темы, мы бегло обсудили использование моментальных снимков. И наконец в главе кратко были описаны те аспекты языка Я11., которые имеют отношение к обсуждаемой теме. Упражнения 9.1. Используя реляционное исчисление, предоставьте аналоги алгебраических определений представлений, приведенных в подразделе "Дополнительные примеры" раздела 9.1. 9.2. Дайте определение представления, содержащего номера поставщиков и номера деталей для тех поставщиков и деталей, которые размещены не в одном и том же гороле.
9.3. Дайте определение представления, содержащее кортежи для тех поставщиков, которые находятся в Лондоне. 9лй В контексте базы данных поставщиков, деталей и проектов переопределите переменную-отношение БР как представление на базе переменной-отношения ЯРд. гв Поскольку мы рассматриваем предсюавления как переменные-отношения, а люоые переменные всегда обновляемы по определению. 383 Глава 9.
Представления В контексте базы данных поставщиков, деталей и проектов определите представление, включающее данные обо всех проектах (атрибуты номера проекта и названия города), детали для которых поставляет поставщик с номером 'Я1' и в которых используется деталь с номером 'Р1'. Пусть имеется представление, определенное следующим образом. ЧАН НЕАЧХИЕ16НТ Ч1ЕИ ( ( Р НЕНАМЕ ИЕ16НТ АЯ ИТ, СОЬОН АЯ СОЬ ) ИНЕРЕ ИТ > ИЕ16НТ ( 14.0 ) ) ( Р$, ИТ, СОЬ ) 9.5.
9.б. Покажите преобразованную форму каждого из перечисленных ниже операторов после выполнения процедуры подстановки. а) РА := НЕАЧХИЕ16НТ ИНЕНЕ СОЬ = СОЬОН ( '6геел' ) б) НВ := ( ЕХТЕНН НЕАЧХИЕ16НТ АОО ИТ + ИЕ16НТ ( 5.3 ) АЯ ИТР ) ( Р(, ИТР ) в) ОРОАТЕ НЕАЧХИЕЬЯНТ ИНЕНЕ ИТ = ИЕ16НТ ( 18.0 ) СОЬ := 'Ийьте' ) г) ОЕЬЕТЕ НЕАЧХИЕ16НТ ИНЕНЕ ИТ < ИЕ16НТ ( 10.0 ) ) д) 1НЯЕНТ 1НТО НЕАЧХИЕ16НТ НЕЬАТ10Н ( ТНРЬЕ ( Р4 Р( ( 'Р99' ), ИТ ИЕ16НТ ( 12.0 ), СОЬ СОЬОН ( 'Рцгр1е ) ) ) ; Предположим, что приведенное в упр. 9.6 определение представления НЕАЧХИЕ16НТ изменено следующим образом.
ЧАН НЕАЧХИЕ16НТ Ч1ЕИ ( ( ( ЕХТЕНО Р Аоо ИЕ16НТ * 454 АЯ ИТ ) НЕНАНЕ СОЬОН АЯ СОЬ ) ИНЕНЕ ИТ > ИЕ16НТ ( 14,0 ] ) ( Р4, ИТ, СОЬ ) (Атрибут ИТ теперь содержит вес в граммах, а не в фунтах.) Выполните упр. 9.6 для этого случая. В главе 8 указывалось, что для представлений иногда желательно иметь возмож- ность объявления потенциальных ключей (или первичного ключа). Почему такая возможность может быть желательной? Какие расширения системного каталога, описанного в главах 3 и 5, необходимы для поддержки механизма представлений? Что можно дополнительно сказать по поводу моментальных снимков? 9.7. 9.8. 9.9.
В, такими, что объединение А ОН10Н В всегда эквивалентно исходному отношению Н, а пересечение А 1НТЕНЯЕСТ В всегда пустое. Достижима ли в этом случае логи- ческая независимость данных? 9Л $. а) Пересечение А 1НТЕНЯЕСТ В эквивалентно соединению А 0018 В (это соединение типа "один к одному", что ье совсси точно, поскольку в переменной- отношении А могут существовать кортежи, для которых нет соответствующих кортежей в переменной-отношении В, и наоборот). Совместимы лн с подобной эквивалентностью изложенные в разделе 9.4 правила обновления представлений, определенных посредством операций пересечения и соединения? 384 Часть П. Реляционная модель 9.!О.
Предположим, что базовая переменная-отношение Н была заменена выборками А и 9.12. 9.13. 9.16. Выполните упр. 9.2-9.5 с использованием языка Б( НЬ. 9.17. Еще раз обратитесь к определению реляционной модели, приведенному в конце раздела 3.2 в главе 3, и убедитесь, что теперь вы его понимаете полностью.
385 Глава 9. Представления 9.14. 9.15. б) Пересечение А 1МТЕЕЯЕСТ В также эквивалентно вычитанию А И1808 (А М1МЯЯ В) и вычитанию В И1МУЯ (В И1888 А). Совместимы ли с подобной эквивалентностью изложенные в разделе 9.4 правила обновления представлений, определенных посредством операций пересечения и вычитания? Один из принципов, изложенных в разделе 9.4, состоит в том, что операции 1МЯЕВТ и ВЕДАЕТЕ, насколько это возможно, должны быть противоположными одна другой. Следуют ли этому принципу изложенные в этом разделе правила обновления представлений, определенных посредством операций объединения, вычитания и пересечения? В разделе 9.2 (при рассмотрении проблемы логической независимости данных) обсуждалась возможность реструктуризации базы данных поставщиков и деталей посредством замены базовой переменной-отношения Я двумя проекциями этой переменной-отношения с именами БМС и ЯТ.
Там же отмечалось, что подобная реструктуризация не всегда тривиальна. Какой смысл имеет последнее замечание? Исследуйте любой доступный для вас Б()Ь-продукт и дайте ответы на следующие вопросы. а) Можно ли привести примеры каких-либо операций выборки данных из представлений, которые приведут к ошибке? б) Каковы правила обновления представлений для этого продукта? (Возможно, они окажутся менее строгими в сравнении с теми требованиями, которые были изложены в разделе 9.6.) Рассмотрим базу данных поставщиков и деталей, но лля простоты будем игнорировать наличие переменной-отношения деталей. Ниже сокращенно описаны два возможных варианта проекта базы данных поставщиков и поставок. а) Я ( 8$, ЯМАИЕ, ЯТАТ()8, С1ТУ ) ЯР ( Я((, Р((, ()ТТ ) б) ЯЯР ( 8((, БМАИЕ, БТАТЦБ, С1ТУ, Р((, ЦТУ ) ХЯЯ ( 81, БМАМЕ, БТАТЯЯ, С1ТУ ) Проект а можно считать обычным.
В проекте 6, напротив, переменная- отношение ЯЯР содержит кортеж для каждой поставки, включающий соответствующий номер детали, количество деталей и полную информацию о поставщике, тогда как переменная-отношение ХЯБ содержит информацию о тех поставщиках, которые вовсе не поставляют деталей. (Обратите внимание, что оба проекта информационно равносильны и, следовательно, зти проекты служат иллюстрацией принципа взаииозаиеияености.) Напишите определения представлений для выражения проекта 6 в виде представлений в составе проекта а и наоборот. Также предоставьте все необходимые ограничения базы данных для каждого нз вариантов проекта (см.
главу 8, если потребуется освежить в памяти материал об ограничениях базы данных). Имеет ли каждый из проектов какие-либо явные преимущества по сравнению с другим? Если да, то какие? Список литературы Ззб Часть 11. Реляционная модель 9.1. 9.2. 9.3. 9.4. Аде1Ьег8 В., Оагс[а-Майна Н., %1дош Е ТЬе ЗТК)Р Кц!е Бузгеш Гог Ей)с[ел!!у Ма[пгаш[пй Рага д Ргос. АСМ ЫОМОР 1пг. Сопй оп Мапайешепг оГ Ра!а.— Тцсзоп, Апг., Мау, 1997.