Текст
                    Д.Мейер
Теория
реляционных
баз данных
Издательство «Мир»


The Theory of Relational Databases David Maier Oregon Graduate Center Computer Science Press
Д. Мейер Теория реляционных баз данных Перевод с английского М. К· Валиева, С. М, Ефимовой и И. С. Захаревича под редакцией М. Ш. Цаленко Москва «Мир» 1987
ББК 32.973 . М45 УДК 681.3 Мейер Д. М45 Теория реляционных баз данных: Пер. с англ.—М.: Мир, 1987. — 608 с, ил. Монография американского специалиста, содержащая систематическое изложение теоретических результатов по математическому моделированию баз данных. В ней отражены современные направления исследований по реляционным базам данных: базы данных с частичной информацией, их семантика, зависимость данных. Имеется много специально подобранных примеров и упражнений. Для математиков-прикладников, специалистов по информатике, разработчиков баз данных, преподавателей, аспирантов и студентов вузов. „ 1702070000—413 Μ 041 (01)_87 41~87' ч· ! ББК 32·973 Редакция литературы по математическим наукам Монография Давид Мейер ТЕОРИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ Ст. научн. ред. И. А. Маховая. Мл. научн. ред. Л. А. Королева. Мл. научн. ред. Р. И. Пяткина. Художник В. А. Медников. Художественный редактор В. И. Шаповалов. Технический редактор Е. В. Алехи/а. Корректор С. А. Денисова. ИБ № 5943 Сдано в набор 12.12.86. Подписано к печати 15.08.87. Формат 60Χ907ιβ· Бумага книжн.-журн. Печать высокая. Гарнитура литературная. Объем 19.00 бум. л. Усл. печ. л. 38 00. Усл. кр.-отт. 38 00. Уч.-изд. л. 36.05. Изд. № 1/4728. Тираж 14000 экз. Зак. 2801. Цена 2 р. 80 к. ИЗДАТЕЛЬСТВО «МИР» 129820, ГСП, Москва, И-110, 1-й Рижский пер., 2 Отпечатано с набора Ленинградской типографии № 6 ордена Трудового Красного Знамени Ленинградского объединения «Техническая книга» им Евгении Соколовой Союз- полиграфпрома при Государственном комитете СССР по "делам издательств, полиграфии и книжной торговли» 193144, г. Ленинград, ул. Моисеенко, 10 в- Ленинградской типографии № 4 ордена Трудового Красного Знамени Ленинградского объединения «Техническая книга» им. Евгении Соколовой Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и книжной торговли. 191126, Ленинград, Социалистическая ул., 14. © 1983 Computer Science Press, Inc. © перевод на русский язык, с дополнением, «Мир», 1987
ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА С начала семидесятых годов слова «реляционная модель данных», «реляционная база данных», «реляционная алгебра» и «реляционное исчисление» стали общепринятыми терминами, употребляемыми в теории, методологии проектирования и использования автоматизированных банков данных. Самый общий термин — реляционный подход — обозначает определенную идеологию создания баз данных и баз знаний, идеологию, которая была объявлена основной в японском проекте ЭВМ пятого поколения (1980 г.). Создатель реляционной модели данных Э. Ф. Кодд в 1981 г. получил за ее разработку премию Тьюринга Американской ассоциации по вычислительной технике. Быстрому распространению идей реляционного подхода способствовали в основном два фактора. Во-первых, база данных представляется на внешнем, не зависящем от структуры ЭВМ уровне как совокупность повседневно встречающихся в человеческой практике двумерных таблиц, поиск и обработка информации в которых не зависят от организации хранения данных в памяти ЭВМ: Это представление значительно упрощает взаимодействие пользователя с банком данных и значительно повышает производительность его труда. Во-вторых, реляционная база данных с математической точки зрения — это конечный набор конечных отношений различной арности между заранее определенными множествами элементарных данных. Другими словами, реляционная база данных (точнее, любое ее состояние) — это конечная модель в смысле математической логики. Над отношениями модели можно осуществлять различные алгебраические операции. Тем самым теория реляционных баз данных становится областью приложений математической логики и современной алгебры и опирается на точный математический формализм. Следует подчеркнуть, что математическая логика и современная алгебра в настоящее время стимулируют развитие теорети-
6 Предисловие редактора перевода ческого программирования (введение абстрактных типов данных, появление логического программирования) и исследования по искусственному интеллекту. Подобное совпадение неслучайно, оно отражает тот факт, что логика и алгебра становятся такими же «прикладными» разделами математики, как математический анализ и теория вероятностей. За последние пять-шесть лет на русском языке появилось довольно много переводных и оригинальных книг, посвященных принципам построения банков данных. Однако на сегодняшний день во всей мировой монографической литературе предлагаемая вниманию читателя книга Д. Мейера является единственным произведением, целиком посвященным теории реляционных базданных. По этой книге можно ознакомиться с постановкой основных задач теории и полученными в данной области важными результатами. Изложение прекрасно иллюстрировано примерами, проясняющими суть дела. У читателя предполагается минимум предварительных знаний по теории множеств и математической логике. Однако у него должны быть определенные навыки чтения математической литературы, так как доказательства отдельных теорем достаточно сложны. Основные темы книги — соотношение между теориями и их моделями, или между схемами баз данных и их состояниями; совпадение истинности и выводимости и построение алгоритмов проверки того, что некоторое логическое условие является следствием заданного множества условий; трансляция непроцедурных логических исчислений в процедурные алгебраические языки; оптимизация алгебраических выражений. Хотя книга не покрывает всех полученных теоретических результатов, она дает возможность свободно обращаться к свежим журнальным публикациям за дополнительной информацией. Таким образом, проведение научных исследований в теории баз данных, по-видимому, весьма затруднительно без знакомства с монографией Д. Мейера. Разумеется, книга, написанная одним из активных участников разработки теории реляционных баз данных в разгар интенсивных исследований, не свободна от отдельных неточностей; они были либо исправлены без оговорок, либо снабжены примечаниями переводчиков. В книге не нашли отражения результаты советских авторов, в частности, по теории нормализации и по строению реляционных алгебр. С обзором этих результатов можно ознакомиться по дополнительной литературе, указанной в конце перевода. Можно надеяться, что появление русского перевода монографии Д. Мейера будет способствовать интенсификации исследований в СССР в одном из центральных направлений информатики. М. Ш. Цаленко
Преподобному Джеймсу П. Мейеру (1899—1980) и Люку Дэвиду Мейеру (род. 1982). Я сожалею, что они не встретились. ПРЕДИСЛОВИЕ Книга представляет собой пересмотренные и дополненные конспекты по курсу теории реляционных баз данных, написанные для семинара, который я вел в Университете Стони Брук, Нью- Йорк. Целью курса было изложение основ теории реляционных баз данных в объеме, достаточном для понимания текущих исследований в этой области. Я не стремился дать исчерпывающий анализ всех результатов в теории реляционных баз данных: область исследований стала слишком обширной для того, чтобы это было возможно. Вместо этого я попытался в пределах одной книги описать все ведущиеся сейчас исследования в этом направлении: книга должна дать студентам возможность читать современные работы по реляционной теории. Большая часть представленных в книге результатов излагалась ранее, однако в ней есть и новое, в частности кольцевые покрытия и материал в главе о семантике баз данных. Мне пришлось объединить в единое целое материал, содержащийся в большом числе отдельных статей. Эта работа потребовала перевода многих результатов в стандартные обозначения, изменения некоторых определений, а иногда и построения новых доказательств ранее известных теорем. Книга задумана как курс по базам_данных повышенного типа, предположительно для старшекурсников-и, возможно, для наиболее способных студентов младших курсов. Знакомство с вводным курсом по системам управления базами данных для чтения книги не обязательно, однако оно, несомненно, желательно для более глубокого понимания отдельных доказательств и понятий, представленных в книге. У читателя не предполагается знаний по какому-либо специальному курсу математики: необходимо лишь знакомство с теорией множеств и началами формальной логики. Некоторые из упражнений требуют сложных комбинатор-
8 ПредиОЛобие ных рассуждений, однако они не играют решающей роли в изложении и включены исключительно ради оживления текста. Особенно трудные упражнения помечены звездочкой. Естественно, я надеюсь, что книга окажется полезным пособием для исследователей, работающих в этой области. Библиография доведена до октября 1981 г. С тех пор некоторые технические отчеты, возможно, появились в виде статей в журналах и трудах конференций. Я благодарен Джефу Ульману за предварительный экземпляр библиографии ко второму изданию «Основ баз данных». Благодарности Интерес к теории реляционных баз данных у меня возник на последнем семестре обучения в Принстоне. С тех пор я постоянно вдохновлялся идеями, полученными от людей, которых там встретил. Среди них: К. Бири, П. Хонимэн, X. Корт, А. Мендельсон, Ф. Садри, И. Сэджив, Э. Счиоре, М. Янакакис, Д. Ульман и косвенно А. Ахо. Мои студенты в Стони Брук мужественно испытали на себе изложение проекта первых восьми глав. А. Кроукер оказался непревзойденным по части обнаружения опечаток. За остальной рукописью в основном проследил Б. Голдштейн. Многими предложениями, в особенности для MV- и J-зависимостей, я обязан Р. Фэйджину. Руководители двух курсов, использовавших мои заметки, сообщили свои замечания. Один из них вела К. Чэйз в Пенсильвании, другой — Дж. Фридмэн и С. Толкен в Мичигане. Дж. Фридмэн также отредактировала рукопись. Я с удовольствием беседовал и советовался со специалистами по семантике данных из Стони Брук: Д. Розенштейном, Ш. Сальветером, Я. Штейном и Д. Уорреном. Во все время написания книги меня терпеливо ободряла моя жена К. ван Фалькенбург. Наконец, я испытываю чувство огромной благодарности к Б. Нитвайс, многократно перепечатавшей большую часть рукописи. Д. Мейер Стони Брук апрель 1982 г.
Глава 1 Отношения и схемы отношений Одним из основных преимуществ реляционной модели является ее однородность. Все данные рассматриваются как хранимые в таблицах, в которых каждая строка имеет один и тот же формат. Каждая, строка в таблице представляет некоторый объект реального мира или соотношение между объектами. Действительно ли обладают соответствующие сущности в реальном мире однородностью, которую им приписывает реляционная модель, является вопросом, на который должен ответить пользователь модели. Это вопрос о пригодности модели для предполагаемого применения. Нас не будет интересовать, соответствует ли реляционная модель некоторому конкретному множеству данных о реальном мире. Существует масса примеров, когда реляционная модель является подходящей, и мы всегда допускаем, что имеем дело с такими примерами. 1.1. СУТЬ ПРОБЛЕМЫ Оставим философские вопросы в стороне и рассмотрим пример. Расписание рейсов * самолетов несомненно обладает регулярной структурой. Каждый включенный в расписание рейс имеет определенные характеристики, а именно: пункт отправления, пункт назначения, время вылета, время прибытия, номер рейса. Фрагмент расписания может быть представлен в виде таблицы. Что интересного в этом расписании? Каждый полет представлен совокупностью значений, взятых по одному из каждого столбца таблицы. Имеются ограничения на те данные, которые могут появиться в определенном столбце. Столбец с именем ПУНКТ- ОТПРАВЛЕНИЯ содержит названия аэропортов, обслуживаемых данцой авиалинией, столбец ВРЕМЯ-ПРИБЫТИЯ содержит
10 Гл. 1. Отношения и схемы отношений Таблица 1.1. РЕЙСЫ (расписание авиалинии) НОМЕР 83 84 * 109 213 214 ПУНКТ- ОТПРАВЛЕНИЯ Нью-Йорк Чикаго Нью-Йорк Нью-Йорк Бостон ПУНКТ- НАЗНАЧЕНИЯ Чикаго Нью-Йорк Лос-Анджелес Бостон Нью-Йорк ВРЕМЯ- ВЫЛЕТА 11.30 15.00 21.50 11.43 14.20 ВРЕМЯ- ПРИБЫТИЯ 13.43 17.55 2.52 12.45 15.12 моменты времени суток. Информационное содержание отдельной строки не зависит от порядка столбцов. Столбцы ВРЕМЯ-ВЫЛЕТА и ВРЕМЯ-ПРИБЫТИЯ можно было бы переставить местами без изменения смысла. Наконец, так как каждый рейс имеет единственный номер, то каждый рейс представляется одной строкой. Расписание в табл. 1.1 представляет собой пример отношения типа РЕЙСЫ. Формат отношения определяется множеством имен (меток) столбцов {НОМЕР, ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ, ВРЕМЯ-ВЫЛЕТА, ВРЕМЯ-ПРИБЫТИЯ}. Эти метки называются именами атрибутов. Каждому имени атрибута ставится в соответствие множество допустимых для соответствующего столбца значений. Это множество называется доменом данного имени атрибута. Доменом атрибута НОМЕР могло бы быть множество всех одно-, двух-, трехзначных целых чисел. Каждая строка отношения является множеством значений, взятых по одному из домена каждого имени атрибута. Строки отношения называются' кортежами, в данном примере строки отношения РЕЙСЫ суть 5-арные кортежи. Кортежи отношения образуют множество, так как строки не дублируются. В множестве имен атрибутов отношения существует такое подмножество, что кортежи отношения могут быть однозначно определены значениями соответствующих атрибутов подмножества. Такое подмножество называется ключом этого отношения. Для отношения, описанного в табл. 1.Г, {НОМЕР} является ключом. 1.2. ФОРМАЛИЗАЦИЯ ОТНОШЕНИЙ Теперь придадим точный смысл определениям предыдущего раздела и добавим пару новых определений/ Схемой отношения R называется конечное множество имен атрибутов \АЪ А2, ..., Ап\. Каждому имени атрибута At ставится в соответствие множество Du называемое доменом атрибута Аь 1 < i < п. Домен атрибута At будем также обозначать как dom (Aij! Именэ атрибутов иногда называются в литературе символами атрибутов или просто атрибутами, особенно в аннотациях и рефератах. Домены являются
1.2. Формализации отношений 11 произвольными непустыми конечными или счетными множествами. Пусть D = Di U ^2 U ··■ U On· Отношение г со схемой R — это конечное множество отображений {tl9 t2, ..., tp} из R в D; причем каждо.е отображение t £ г должно удовлетворять следующему ограничению: ί (At) принадлежит Dif 1 < / < п. Эти ото-г бражения называются кортежами. Пример 1.1. В табл. 1.1 схемой отношения является множество РЕЙСЫ - {НОМЕР, ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ- НАЗНАЧЕНИЯ, ВРЕМЯ-ВЫЛЕТА, ВРЕМЯ-ПРИБЫТИЯ}. В качестве доменов могут выступать следующие множества: 1. dom (НОМЕР) = множество одно-, двух-, трехзначных целых чисел. 2. dom (ПУНКТ-ОТПРАВЛЕНИЯ) = dom (ПУНКТ-НАЗНАЧЕНИЯ) = {Нью-Йорк, Чикаго, Лос-Анджелес, Бостон, Атланта}. 3. dom (ВРЕМЯ-ВЫЛЕТА) - dom (ВРЕМЯ-ПРИБЫТИЯ) - = множество моментов'времени в течение суток. Отношение в табл. 1.1 имеет пять кортежей: Один из них, обозначаемый f, определен как t (НОМЕР) = 84, t (ПУНКТ- ОТПРАВЛЕНИЯ) - Чикаго, t (ПУНКТ-НАЗНАЧЕНИЯ) = - Нью-Йорк, t (ВРЕМЯ-ВЫЛЕТА) - 15.00, t (ВРЕМЯ-ПРИБЫТИЯ) - 17.55. Откуда возникли эти отображения? Что произошло с таблицами и строками? Мы пользуемся отображениями в нашей формализации для того, чтобы избежать любого упорядочения имен атрибутов в схеме отношения. Как отмечалось в предыдущем разделе, такое упорядочение ничего не добавляет к информационному содержанию отношения. Мы расширяем традиционное понимание кортежа как последовательности значений, заданной в определенном порядке. Под кортежем будем понимать множество значений, взятых по одному для каждого имени атрибута из схемы отношения г). Отображения, которые определены, являются не чем иным, как соответствиями этого типа. Теперь, когда формально устранено любое явное упорядочение в отношениях, почти в каждом случае для обозначения отношения будем записывать атрибуты в некотором порядке, а кортежи представлять списками в том же порядке. Так или иначе, имеет смысл обсудить конкретное значение кортежа t на атрибуте Л, которое назовем Α-значением кортежа t. Если t рассматривается как отображение, то Л-значение t обозна- г) Фактически кортеж может быть мультимножеством (множеством с дубликатами) значений, если домены для различных имен атрибутов пересекаются. — Прим. ред.
12 Гл. 1. Отношений и Схемы отношений чается как t (А). Если же интерпретировать t как строку таблицы, то Л-значение кортежа t является входом кортежа t в столбец, озаглавленный именем А. Так как t является отображением, то можно ограничивать область определения кортежа t. Пусть X — подмножество R. Обычным обозначением для отображения t, ограниченного на X, является t\ χ. Мы отойдем от обычного обозначения и будем записывать это ограничение как t (X) и называть его Х-значением кортежа t. Формально t (А) и /({Л}) являются различными объектами, но, придерживаясь путаных традиций теории реляционных баз данных, мы часто обозначаем буквой А одноточечное множество \А\. Тем самым скрывается различие между t (А) и t ({А}), хотя одно является просто значением, а другое — отображением из А в это значение. Предполагается также, что существует некоторое значение λ, такое, что t (0) = λ для любого кортежа t. Таким образом, tx (0) = t2 (0) для любых кортежей tx и t2. Пример 1.2. Пусть t является кортежем, определенным в примере 1.1. |ПУНКТ-ОТПРАВЛЕНИЯ}-значением кортежа t является t (ПУНКТ-ОТПРАВЛЕНИЯ) - Чикаго. {ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ}-значением t является кортеж *', для которого Г (ПУНКТ-ОТПРАВЛЕНИЯ) = Чикаго, Г (ПУНКТ-НАЗНАЧЕНИЯ) = Нью-Йорк. Этот кортеж обозначается как (Чикаго: ПУНКТ-ОТПРАВЛЕНИЯ, Нью-Йорк: ПУНКТ-НАЗНАЧЕНИЯ) или просто (Чикаго, Нью-Йорк) в тех случаях, когда порядок атрибутов понятен. До сих пор отношения рассматривались как статические объекты. Однако отношения предназначены дйя отражения некоторой части реального мира, а эта часть мира может изменяться во времени. Поэтому и отношения изменяются во времени, т. е. кортежи могут добавляться, удаляться или изменяться. В табл. 1.1 рейсы могут добавляться или удаляться или моменты времени, характеризующие их, могут изменяться. Тем не менее предполагается, что схема отношения инвариантна во времени. С этого момента отношение будет восприниматься как некоторая последовательность уже определенных отношений, или в некоторых случаях, как множество потенциальных последовательностей, которые отношение может пробегать, т. е. как множество возможных состояний, которые может принимать отношение. Теперь обсудим ограничения на состояния, которым отношение может удовлетворять. Почти все эти ограничения не будут требовать памяти: они будут зависеть только от конкретного текущего состояния отношения, а не от истории его предшествующих состояний.
1.3. Ключи 13 1.3. КЛЮЧИ Ключ отношения г со схемой R является подмножеством К = = \ВЪ В2, ..., Вт\ ^ R со следующим свойством. Для любых двух различных кортежей t± и t2 в г существует такое В ζ К, что tx (В) Φ t2 (В). Другими словами, не существует двух кортежей, имеющих одно и то же значение на всех атрибутах из /(. Это условие можно записать так: t1(K) Φ- t2 (К)- Таким образом, достаточно знать /(-значение кортежа, чтобы идентифицировать кортеж однозначно. Пример 1.3. В табл. 1.1 множества {НОМЕР} и {ПУНКТ- ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ} являются ключами. Договоримся о некоторых обозначениях для отношений, схем и ключей. Условимся использовать начальные заглавные буквы латинского алфавита для имен атрибутов х), последние заглавные буквы латинского алфавита для схем отношений и строчные буквы для отношений. Схема отношения R = \АЪ Л2, ..., Ап\ обозначается как R [Аъ А2, ... Ап], или иногда АгА2 ... Ап, когда имя схемы несущественно. (Еще одна запутывающая традиция в теории реляционных баз данных состоит в том, что используется конкатенация имен атрибутов для обозначения множества этих атрибутов.) Отношение г со схемой R записывается как г (R) или как г (АгА2 ... Ап). Для обозначения ключа отношения подчеркиваются имена атрибутов ключа. Отношение г со схемой A BCD с ключом АС записывается как г (ABCD). Можно также включить ключ в схему отношения: R [ABCD]. Любое отношение г (R) ограничено тем, что имеет АС в качестве ключа. Пример 1.4. Схему для отношения, указанного в табл. 1.J, можно записать как РЕЙСЫ [НОМЕР ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ]. Если нужно указать более одного ключа для схемы или отношения, то необходимо перечислить эти ключи отдельно, так как подчеркивание в этом случае ничего не дает. Ключи, явно перечисленные вместе с реляционной схемой, называются выделенными ключами. Могут быть ключи, отличные от выделенных, они называются неявными ключами <с) (т. е. явно не указанными). Иногда один из выделенных ключей объявляется первичным. Данное выше определение ключа является слишком широким. Если отношение г (R) имеет ключ К' и /С' ^ К s R, то К также г) Они уже были введены неявно. — Прим. ред. 2) Иногда они называются возможными ключами. — Прим. ред.
14 Гл. 1. Отношения и схемы отношений является ключом для R: для кортежей t± и t2 в г из tx (К!) φ t2 (К') следует, конечно, tx (К) φ ί2 СЮ· Слегка уточним определение ключа. Определение 1.1. %люя отношения г (R) является подмножеством К s R, таким, что для любых различных кортежей tx и t2 из г выполняется tx (К) φ U (К), и ни одно собственное подмножество К' с= К не обладает этим свойством. Множество К является суперключом отношения г, если К содержит ключ отношения г. Новое определение суперключа совпадает с предыдущим определением ключа. Старое определение ключа будет относиться к выделенным ключам, т. е. выделенный ключ может быть суперключом. Пример 1.5. В табл. 1.1 {НОМЕР} является ключом (и суперключом), а {НОМЕР, ПУНКТ-ОТПРАВЛЕНИЯ! является суперключом, но не является ключом. Отметим некоторые тонкости, связанные с понятием ключа. В предыдущем разделе указывалось, что рассматриваются отношения, зависящие от времени. Для каждого данного состояния отношения можно определить ключи и супер ключи. Различные состояния отношений могут иметь различные ключи. Однако схемы отношений должны быть инвариантными во времени, и хотелось бы, чтобы ключи, заданные в реляционной схеме, не изменялись. Таким образом, желая определить ключи для схемы отношения, мы должны просмотреть все состояния отношения с этой схемой. Ключи должны оставаться ключами во всех допустимых состояниях. Пример 1.6. В табл. 1.1 {ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ- НАЗНАЧЕНИЯ} является ключом отнощения. Однако вполне возможно, что могут быть два рейса между одними и теми же пунктами отправления и назначения, хотя^они несомненно должны осуществляться в разное время. Следовательно, {ПУНКТ-ОТПРАВЛЕНИЯ, ПУНКТ-НАЗНАЧЕНИЯ, ВРЕМЯ-ВЫЛЕТА} является ключом схемы отношения РЕЙСЫ. В основном мы будем изучать ключи и суперключи схем отношений, учитывая все допустимые состояния отношений с данной схемой. В конечном счете определение ключей — это вопрос семантики отношения. 1.4. ОБНОВЛЕНИЕ ОТНОШЕНИЙ Теперь, когда у нас имеются отношения, возникает вопрос: а что с ними можно делать? Как уже отмечалось, содержимое отношения изменяется во времени. Рассмотрим, кац оно изменяется.
1.4. Обновление отношений 15 Предположим, что нужно поместить дополнительную информацию в отношение. Для этого вводится операция добавление, которая для отношения г (АгА2 ... Ап) имеет вид ADD (г; Аг = аъ А2 = d2i ..., Ап = dn). Пример 1.7. Присвоив отношению в табл. 1.1 имя расписание, можно совершить обновление: ADD {расписание; НОМЕР = 117, ПУНКТ-ОТПРАВЛЕНИЯ = Атланта, ПУНКТ-НАЗНАЧЕНИЯ = = Бостон, ВРЕМЯ-ВЫЛЕТА = 22.05, ВРЕМЯ-ПРИБЫТИЯ = 0.43). Когда фиксирован порядок имен атрибутов, допустима более короткая запись ADD (г; аъ d2i ..., dn). Пример 1.8. Короткая запись примера 1.7 имеет вид ADD (расписание; 117, Атланта, Бостон, 22.05, 0.43) Цель операции добавление ясна — добавить описанный кортеж в определенное отношение. Результат операции может быть не согласован с целями операции по следующим причинам: 1. Добавляемый кортеж не соответствует схеме определенного отношения. 2. Некоторые значения кортежа не принадлежат соответствующим доменам. 3. Описанный кортеж совпадает по ключу с кортежем, уже находящимся в отношении. В^ каждом из этих случаев операция ADD (г; аъ d2i ..., dn) оставляет отношение г неизменным и некоторым образом сообщает об ошибке. Пример 1.9. Если расписание — это отношение, заданное табл. 1.1, то операция ADD (расписание; НОМЕР- 117, ПУНКТ-ОТПРАВЛЕНИЯ = Атланта, ПУНКТ-НАЗНАЧЕНИЯ = = Бостон, ДАТА = 4 марта) не допускается по причине 1. Операция ADD (расписание; НОМЕР - 84, ПУНКТ-ОТПРАВЛЕНИЯ = Чикаго, ПУНКТ-НАЗНАЧЕНИЯ = - Нью-Йорк, ВРЕМЯ-ВЫЛЕТА - 25.12, ВРЕМЯ-ПРИБЫТИЯ = 18.00)
16 Гл. 1. Отношения и схемы отношений не допускается по причинам 2 и 3 (см. атрибуты ВРЕМЯ-ВЫЛЕТА и НОМЕР). Операция удаление вводится для того, чтобы уничтожить сделанное. Для отношения г, введенного выше, операция удаления имеет вид DEL (г; А± =± аъ А2 = d2, ..., Ап = dn). В тех случаях, когда считается, что имена атрибутов упорядочены, снова возможна сокращенная запись: DEL (г; dlt d2, ..., dn). Пример 1.10. Если*расписание является отношением, заданным в табл. 1.1, то можно применить операцию DEL (расписание; НОМЕР = 83, ПУНКТ-ОТПРАВЛЕНИЯ = Нью-Йорк, ПУНКТ-НАЗНАЧЕНИЯ = -Чикаго, ВРЕМЯ-ВЫЛЕТА = 11.30, ВРЕМЯ- ПРИБЫТИЯ = 13.43) с сокращенным вариантом DEL (расписание; 83, Нью-Йорк, Чикаго, 11.30, 13.43). В действительности нет необходимости задавать так много информации, чтобы однозначно определить кортеж, который надо удалить. Достаточно определить значения некоторого ключа. Если К = \ВЪ В2, ..., Вт\ является ключом, то можно использовать следующую форму записи: DEL (г; βχ = el9 B2 = е2, ..., Вт = ет). Пример 1.11. Сокращенный вариант операции удаления из примера 1.10 имеет вид DEL (расписание; ПУНКТ-ОТПРАВЛЕНИЯ = Нью-Йорк, ПУНКТ-НАЗНАЧЕНИЯ = Чикаго, ВРЕМЯ-ВЫЛЕТА - 11.30). Если имеется первичный выделенный ключ, такой, как {НОМЕР}, то можно сократить эту форму записи до DEL (расписание] 83). Результат операции удаления не обманывает ожиданий. Заданный кортеж удаляется из отношения, за исключением тех случаев, когда этот кортеж в отношении отсутствует. В этом случае отношение остается неизменным и сообщается об ошибке условия. Ограничение на удаление последнего кортежа из отношения не накладывается; пустое отношение допускается,
1.4. Обновление отношений 17 Вместо того чтобы добавлять или удалять целый кортеж из отношения, можно изменить только часть кортежа. Модификация достигается с помощью операции изменение. Для отношения г, введенного выше, при {С1} С2, ..., Ср\ s \Al9 Л2, ..., Ап\ операция изменения имеет вид Cri \Г\ Αι = αχ, Л2 = α2, ..., Αη = ап] Ci = ^i, С»2 = #2» ···> ^р == ^р/· Если /С = {-Si, S2, ..., Вт\ является ключом, то запись может быть сокращена до СН (г; В± = db B2 = d2, ..., Sm = dm] Cj == ^i, C2 — ^2, ..., Cp = £p). Пример 1.12. Для отношения расписание, заданного табл. 1.1, операция изменения может иметь вид СН {расписание-, НОМЕР - 109, ПУНКТ-ОТПРАВЛЕНИЯ = Нью-Йорк, ПУНКТ-НАЗНАЧЕНИЯ = Лос- Анджелес, ВРЕМЯ-ВЫЛЕТА = 21.50, ВРЕМЯ-ПРИБЫТИЯ = 2.52; ВРЕМЯ-ВЫЛЕТА - 21.40, ВРЕМЯ- ПРИБЫТИЯ = 2.42) с сокращенным вариантом СН (расписание] НОМЕР - 109; ВРЕМЯ-ВЫЛЕТА - 21.40, ВРЕМЯ-ПРИБЫТИЯ = 2.42). Операция изменения является наиболее удобной. Тот же результат может быть получен с помощью операции удаления, следующей за операцией добавления. Таким образом, все возможные ошибки операций добавления и удаления присущи и операции изменения: указанный в операции кортеж не существует, изменения имеют неправильный формат или используемые значения не принадлежат соответствующему домену, или измененный кортеж имеет тот же ключ, что и кортеж, уже принадлежащий отношению. Пример 1.13. Результат применения операций 1. ADD (расписание; 117, Атланта, Бостон, 22.05, 0.43),| 2. DEL (расписание] ПУНКТ-ОТПРАВЛЕНИЯ = Нью-Йорк, ПУНКТ-НАЗНАЧЕНИЯ = Чикаго, ВРЕМЯ-ВЫЛЕТА - 11.30), 3. СН (расписание] НОМЕР = 109; ВРЕМЯ-ВЫЛЕТА- = 21.40, ВРЕМЯ-ПРИБЫТИЯ = 2.42) К табл. 1.1 приведен в табл. 1.2.
18 Гл. 1. Отношения и схемы отношений Таблица 1.2. Новая версия отношения расписание (РЕЙСЫ) НОМЕР ПУНКТ- ПУНКТ- ВРЕМЯ- ВРЕМЯ- ОТПРАВЛЕНИЯ НАЗНАЧЕНИЯ ВЫЛЕТА ПРИБЫТИЯ 84 109 117 213 214 Чикаго Нью-Йорк Атланта Нью-Йорк Бостон Нью-Йорк Лос-Анджелес Бостон Бостон Нью-Йорк 15.00 21.40 22.05 11.43 14.20 17.55 2.42 0.43 12.45 15.12 1.5. УПРАЖНЕНИЯ 1.1. (а) Пусть дана схема отношения R = {СЛУЖАЩИЙ, УПРАВЛЯЮЩИЙ, ДОЛЖНОСТЬ, ЗАРПЛАТА, СТАЖ}, где атрибуты СЛУЖАЩИЙ и УПРАВЛЯЮЩИЙ в качестве значений имеют фамилии, ДОЛЖНОСТЬ — названия должностей, ЗАРПЛАТА —числа, выражающие годовую зарплату служащих, СТАЖ— количество полных лет, которые проработал служащий на должности. Постройте отношение со схемой R, основываясь на следующей информации: I. Роберте, Раскин и Рафаэль — агенты по продаже билетов. II. Рейберн принимает багаж. III. Райе—авиамеханик. IV. Прайс управляет всеми агентами по продаже билетов. V. Пауэлл управляет Рейберном. VI. Портер управляет Райсом, Прайсом, Пауэллом и самим собой. VII. Пауэлл — начальник наземных служб, а Портер — начальник по эксплуатации. VIII. Каждый служащий получает 10 %-ную надбавку за каждый полный проработанный год. IX. Роберте, Раскин, Рафаэль и Рейберн начали с оклада 12 00Д. Роберте только приступил к работе, Раскин и Рафаэль работают полтора года, а Рейберн работает два года. X. Райе начал с оклада 18 000 и сейчас получает 21 780. XI. Прайс и Пауэлл начали с оклада в 16 000; оба работают три года. XII. Портер начал с оклада в 20 000 и проработал по крайней мере на два года больше, чем любой из них. (Ь) Задайте подходящие операции обновления для следующих изменений в отношении из п. (а): I. Раскин и Рафаэль проработали полных два года. II. Райе увольняется. III. Рэндольф нанимается на должность агента по продаже билетов. 1.2. Рассмотрим схему отношения Я= {НОМЕ Ρ -РЕЙСА, АЭРОПОРТ- НАЗНАЧЕНИЯ, ГАЛЕРЕЯ, ДАТА, ВРЕМЯ}. Кортеж {d^d^d^) отношения г (R) означает, что «посадка на рейс dlt вылетающий в пункт назначения d2, осуществляется через галерею ds\ дата отправления d4*> время отправления d&. Что является ключами схемы Ю 1.3. Пусть t— кортеж отношения г (R), и пусть X и F— подмножества R. Когда выражение t (Χ) (Υ) имеет смысл? Как его можно упростить в тех случаях, когда оно имеет смысл? 1.4. (а) Может ли объединение двух ключей быть ключом? (Ь) Обязательно ли пересечение двух суперключей является ключом?
1.6. Библиография и комментарии 19 1.5*. Каково максимальное число ключей, которое может иметь данная схема отношения R [АгА2 ... Ап]7 Каково максимальное число супер ключей? 1.6. Что' можно сказать об отношении с ключом К = 0? 1.7. Пусть К = {Въ В2, ..., Вт} — ключ схемы отношения R [АгА2 ... Ап], и пусть г — отношение со схемой R. Рассмотрим операцию Ί СН (г; Аг = аъ А2 = d2, ..., Ап = dn\ Вг = еъ В2 = в2, ..., Вт = ew). Предположим, что в отношении г нет кортежа с /(-значением {еге2... ет), есть кортеж {d^ ... dm) и в^ g dom(Bi), 1 ^ i ^ m. Законна ли рассматриваемая операция изменения? . 1.8. Пусть Σ — последовательность операций обновления, которые нужно применить к отношению г. Если изменить порядок операции в Σ, то обязательно ли результат остается тем же самым при том условии, что Σ состоит из (a) только из операций добавления; (b) только из операций удаления; (c) из операций добавления и удаления; (d) из операций добавления и изменения; (e) только из операций изменения? 1.6. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Реляционная модель первоначально была изложена в серии статей Codd [1970, 1971а, 1971b, 1972a]. Основы систем баз данных и место реляционной модели в них читатель может найти в книгах Cardenas [1979], Date [1981], Tsichritzis, Lochov- sky [1977], Ullman [1980], Wiederhold [1977].
Глава 2 Реляционные операторы Операции обновления, определенные в предыдущей главе, — это операции не над отношениями, а над кортежами. В этой главе вводятся операторы, которые включают в себя целое отношение. Во-первых, будет показано, как обычные булевы операции над множествами применяются к отношениям, и, во-вторых, будут определены три специальных оператора над отношениями: выбора, проекции и соединения. 2.1. БУЛЕВЫ ОПЕРАЦИИ Два отношения с одной и той же схемой могут быть рассмотрены как множества одного и того же универсума — множества всех возможных кортежей с этой схемой. К таким двум отношениям могут быть применены булевы операции. Если г и s — отношение со схемой R, то г Π s, г [) s и г — s также являются отношениями со схемой R. Множество г f] s — это отношение q (/?), содержащее все кортежи, которые принадлежат одновременно г и s; г U s — это отношениеq (R)> содержащее веете кортежи, которые принадлежат или г, или s; г — s — это отношение, содержащее те кортежи, которые принадлежат г, но не принадлежат s. Заметим, что пересечение может быть определено как разность множеств: г П s = г — (г — s). Пусть dom (R) — множество всех кортежей над атрибутами схемы R и их доменами. Дополнение отношения г (R) можно определить как разность г = dom (R) — г. Однако, если какой-либо атрибут А в R имеет бесконечный домен, г также будет бесконечным и не будет отношением в нашем понимании. Модифицированная версия дополнения, называемая активным дополнением, всегда дает отношение. Определим его. Если г (AtA2 ... Ап) — отношение и D(f dom (At), 1 < ί < η, то активным доменом Α·χ относи-
2.1. булевы операций 21 тельно г называется множество adorn (Ai9 r) = \d £ Di\ и существует t £ г с t (At) = d\. Пусть a dom (Rf г) -т- множество всех j кортежей над атрибутами из R и их активными доменами относи тельно г. Активным дополнением г является г = adorn (/?, г) — г. Заметим, что г — всегда отношение. Пример 2.1. Пусть г и s — два отношения со схемой ABC' г(А В С) s(A В С) а{ bx c{ <*i Ь2 с{ а{ Ъ2 ci a2 b2 с{ а2 Ьх с2 а2 Ъ2 с2 Результаты операций г (Is, г [] s и г — s показаны ниже. rCis = (А В С) г U s = (А В С) г - * = (А В С) а{ Ь2 с{ а{ Ь{ с{ ах Ъх с{ ах Ъ2 с{ а2 Ь{ с2 а2 Ьх с2 а2 Ь2 с{ а2 Ъ2 с2 Для \аъ а2\, \ЬЪ b2f b3\ и \cl9 с2\ как доменов атрибутов Л, β и С домен схемы R и дополнение отношения г, выведенное из домена схемы R, показаны ниже. dom(R) = (A В С) 7= dom(R) - г = (А В С) ах Ъх а{ Ъх ах Ъ2 а{ Ь2 αϊ Ь3 ах Ь3 а2 b{ а2 b{ а2 Ъ2 о2 Ь2 02 ЪЪ ^2 Ь3 Cl с2 Cl С2 С\ С2 С\ с2 С\ С2 С\ с2 01 «1 «ι «1 а2 а2 о2 о2 о2 *1 с2 Ъ2 с2 *з сх Ьз с2 Ь\ с{ Ь2 с{ Ъ2 с2 *3 ^1 *з с2 Чтобы ввести активное дополнение отношения г (которое есть г), заметим, что активный домен В в отношении г не содержит Ь3.
22 Гл. 2. Реляционные операции Активным доменом отношения г и активным дополнением отношения г являются adom(R) = (A В С) *r = adom(R) - г = (А В С) <*1 βι «1 «1 «2 «2 «2 <*2 *1 *1 *2 *2 *1 *1 62 *2 <?1 ^2 Cl С2 <?1 ^2 сг ^2 «1 «1 α2 θ2' α2 *ι *2 *1 ь2 b2 сг сг с\ с\ сг Трудно представить естественную ситуацию, где бы дополнение отношения полностью имело бы смысл, за исключением, быть может, унарного отношения (т. е. отношения с одним атрибутом), Активное дополнение может возникнуть естественно. Положим, что компания имеет программу подготовки, которая рассчитана на работу каждого служащего в течение двух недель в каждом из нескольких отделов. Информация о том, кто и в каком отделе успешно завершил программу подготовки, могла бы храниться в отношении специалист (СЛУЖАЩИЙ, ОТДЕЛ). Отношение специалист сообщило бы, кто и в каком отделе не завершил под-ч готовку при условии, что каждый служащий, проходящий подготовку, и каждый отдел упомянуты в отношении специалист. Активное дополнение может быть также использовано как устройство сжатия памяти, когда активное дополнение отношения имеет меньше кортежей, чем само отношение. Множество отношений с данной схемой замкнуто относительно операций объединения, пересечения, теоретико-множественной разности и активного дополнения. Однако не все эти операции сохраняют ключ (см. упр. 2.3). 2.2. ОПЕРАТОР ВЫБОРА Выбор — это унарная операция над отношением. Результатом ее применения к отношению г является другое отношение, которое представляегтобой подмножество кортежей отношения г с определенным значением в выделенном атрибуте. Пусть г — отношение со схемой R, А — атрибут в R и а — элемент из dom (А). Тогда ол=а (ή — обозначение операции выбора («выбрать в г кортежи, в которых значение А равно а»). Рассматривая кортежи как отображения, можно записать, что г' (R) = {t £ r\ t (А) = а]. Пример 2.2. В табл. 2.1 продублировано отношение из табл. 1.2.
2.2. Оператор выбора Таблица 2.1. Новая версия отношения расписание (РЕЙСЫ) 23 расписание /(НОМЕР ПУНКТ - \ 84 109 117 213 214 ОТПРАВЛЕНИЯ Чикаго Нью-Йорк Атланта Нью-Йорк Бостон ПУНКТ- НАЗНАЧЕНИЯ Нью-Йорк Лос-Анджелес. Бостон Бостон Нью-Йорк ВРЕМЯ- ВЫЛЕТА 15.00 21.40 22.05 11.43 14.20 ВРЕМЯ- \ ПРИБЫТИЯ / « 17.55 2.42 0.43 12.45 15.12 В табл. 2.2 приведен результат применения операции огпункт-отправления=нью-йоРк к отношению расписание. Таблица 2.2. Результат применения сПУНКТ-отПРАВЛЕНИЯ=Нью-йорк к отношению расписание (ПОЛЕТЫ) σπνΗΚΤ {расписание) = НОМЕР ПУНКТ- ПУНКТ- ВРЕМЯ- ВРЕМЯ- отправ- ОТПРАВ- НАЗНА- ВЫЛЕ- ПРИБЫЛЕН*^ ЛЕНИЯ ЧЕНИЯ ТА ТИЯ Нью-Йорк 109 Нью-Йорк Лос-Андже- 21.40 2.42 лес 213 Нью-Йорк Бостон 11.43 12.45 Операторы выбора коммутируют относительно их композиции. Пусть г (R) — отношение, А и В — атрибуты в /?, и пусть α ζ £ dom (Л), b ζ dom (£?)· Тождество ОА=а (GB=b (Г)) = ав=ь(ОА=а (Ό) всегда имеет место. Это свойство легко следует из определения оператора выбора: ОА=а (?В=Ь (ή) = Ол=а (\t £ Г \ t (В) = &}) = = {*' € {t ζ r\t(B) = Ь)\Г (А) = а\ = \t £ r\t(A) = а и t(B) = b(={t''e\t£r\t(A)^}\t'(B) = b\=oB=b(aA=a(r)). Так как порядок выбора неважен, то ол-а ° <*в=ь может быть записано как σΑ=α, в=ь, а ол1^а1 ° °А2=а2 ° · · · ° о α =αΊ — как ν>ΑΛ=αΛ, α =α0 а =а (А{ не обязательно различны (см. упр. 2.4)). Если X — множество атрибутов и χ есть Х-значение, то ох=х также является правильным обозначением, если X интерпретируется как последовательность значений, а не как отображение. Оператор выбора дистрибутивен относительно бинарных булевых операций:
24 Гл. 2. Реляционные операции где γ = Π у U или —» а г и s — отношения над одной и той же схемой. Докажем, что σΑ=α (г f| s) = <*л=а Μ Π °л=а (s): Действительно, σ^=-α (г Π s) = ал=а (If I / £ ' и / £ s}) = = {*' 6 {ί 11 e г и t e s] \t' (A) - a\ = = {f Ι ί G г и t (A) = а] П \t \t £ s и t (A) = a} - = <*A=a (\t\t € Г\) П <УА=а ({ ί | ί 6 δ}) = σ^=α (г) П ^=α (δ). Порядок выбора и дополнения порождает различие в результате (т. е. выбор и дополнение не коммутируют), см. упр. 2.5. 2.3. ОПЕРАТОР ПРОЕКЦИИ Оператор! проекции также является унарным оператором на отношениях. Но если оператор выбора выбирает подмножество строк в отношении, то оператор проекции выбирает подмножество столбцов. Пусть г — отношение со схемой R и X — подмножество из,/?. Проекция г на X, записанная как пх (г), есть отношение г' (X), полученное вычеркиванием столбцов, соответствующих атрибутам в R — X, и исключением из оставшихся столбцов повторяющихся, строк. Рассматривая кортежи как отображения, пх (г) можно записать в виде г' (X) == \t (X) \ t ζ г}.__ . Если две проекции выполняются последовательно и вторая из них — собственная, то она поглощает первую: если πγ применяется к πχ (г), то результат будет тем же самым, как при применении πγ непосредственно к г, если первоначальное применение яу было собственным. Более точно, для данного г (R) иУеХд ^ R справедливо πγ (πχ (г)) = πγ (г). Аналогичное утверждение справедливо для последовательности проекций: если Хг^Х2^ ... ... <= Хт с= R, то πΧι (πλ2 (...(πΧ/η (г) )...)) =- nXl (r). Пример 2.3. Следующие проекции для отношения расписание, данного в табл. 2.1: 1. π время- время- χ {расписание), (вылета, прибытия! 2. явремя- ι я время- время- х {расписание) = ВЫЛЕТА, 1ВЫЛЕТА, ПРИБЫТИЯ) ==явремя- {расписание), ВЫЛЕТА 3. Япункт- {расписание)^ ОТПРАВЛЕНИЯ
2.4. Оператор Соединения 25 являются отношениями, показанными ниже: 1. π время- время х (расписание) = I ВЫЛЕТА, ПРИБЫТИЯ/ = (ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ) 15.00 17.55 21.40 2.42 22.05 0.43 11.43 12.45 14.20 15.12 2. явремя- (расписание) = ВРЕМЯ-ВЫЛЕТА ВЫЛЕТА ГбТОб 21.40 22.05 11.43 14.20 3. япункт- (расписание) = ПУНКТ-НАЗНАЧЕНИЯ отправления Чикаго Нью-Йорк Атланта Бостон Проекция коммутирует с выбором, когда атрибут или атрибуты для выбора находятся среди атрибутов множества, на которое осуществляется проекция. Если А £ X, X ^ R и г — отношение со схемой R, то π* (σΑ=α (г)) = nx({t£r\t (А) = а\) = = \t'{X)\t' £\t£r\t(A) = a\\ = = \t(X)t £ г и t(A) = a\ = = σΑ=α ({t (X)\t£ r\) = aA=a (nx (r)). Установленное тождество может не выполняться, когда А не является элементом X (см. упр. 2.7). Связь между проекцией и булевыми операциями рассмотрена в упр. 2.8 и 2.9. 2.4. ОПЕРАТОР СОЕДИНЕНИЯ Соединение — это бинарный оператор для комбинирования двух отношений.^Проиллюстрируем его выполнение на прямере. Допустим, что в базе данных о гипотетической авиалинии находятся два списка: список типов самолетов, которые могут быть использованы в каждом рейсе, и список типов самолетов, которыми каж* дый пилот имеет право управлять. Эти списки хранятся в виде
26 Гл. 2. Реляционные операций Таблица 2.3. Возможные состояния отношений пригодность (РЕЙС ТИП-САМОЛЕТА) и право (ПИЛОТ ТИП-САМОЛЕТА) пригодность (РЕЙС 83 83 84 84 109 ТИП-САМОЛЕТА) 727 747 727 747 707 право (ПИЛОТ ТИП-САМОЛЕТА) Симоне 707 Симоне 727 Барт 747 Хилл 727 Хил л 747 Таблица 2.4. Отношение варианты со схемой {РЕЙС, ТИП-САМОЛЕТА, ПИЛОТ} варианты (РЕЙС 83 83 83 83 84 84 84 84 109 Таблица 2.5. Вычислен] Я{рейс, пилот} {βαρί ТИП-САМОЛЕТА 727 727 747 747 727 727 747 747 707 ие проекции я,рЕЙС шнты) = (РЕЙС 83 83 83 84 84 84 109 ПИЛОТ) Симоне Хилл Барт Хилл Симоне Хилл Барт Хилл Симоне , пилот} (*αΡ»α*™*) ПИЛОТ) Симоне Хилл Барт Симоне Хилл Барт Симоне отношений пригодность (РЕЙС ТИП-САМОЛЕТА) и право (ПИЛОТ ТИП-САМОЛЕТА). В табл. 2.3 показаны их возможные состояния. Для того чтобы иметь список, показывающий, какие пилоты могут быть использованы для каждого рейса, сначала создадим отношение варианты со схемой {РЕЙС, ТИП-САМОЛЕТА, ПИЛОТ) из отношений пригодность и право комбинированием строк с одним и тем же значением для ТИП-САМОЛЕТА. Отношение варианты, являющееся соединением отношений пригодность и право, показано в табл. 2.4. Так как значения атрибута ТИП-САМОЛЕТА не входят в требуемый список, то вычисляем отношение Я{РЕЙС пилот\ (варианты), которое показано в табл. 2.5.
2.5. Свойства соединения 27 Έ общем случае оператор соединения комбинирует два отношения по всем их общим атрибутам. Рассмотрим два отношения г (R) и s (S) и положим RS = Τ г). Соединением отношений г и s, записываемым как rixis, является отношение q (T), содержащее все кортежи t над Т, такие, что существуют кортежи tr £ г и ts ζ s с tr = t (R) и ts = t (S). (R Π «S является подмножеством обоих R и S, как следствие определения /г (# Π S) = ts (R f| S).) Таким образом, каждый кортеж в q является комбинацией кортежа из г ц кортежа из s с равными (R f| 5)-значениями. Легко видеть, что для табл. 2.4 справедливо равенство: варианты^ пригодность >< право. В определении соединения не требуется, чтобы R и S имели непустое пересечение. Если R (] S = = 0, то rxs — это декартово произведение г и s. Обычно под декартовым произведением двух отношений понимается множество упорядоченных пар кортежей. Здесь же под декартовым произведением понимается изоморфное множество ^S-кортежей. Пример 2.4. Пусть г и s таковы: г (А В) s(C D) аг &1 сг dx а2 bi c2 d1 с2 а2 Тогда можно проверить, что rxs будет r><S4=(A В С D) О-Х аг % а2 аг аг h Ьг h h h К Οχ Сг С* Οχ Сг с2 d, dx d2 dx dx d2 2.5. СВОЙСТВА СОЕДИНЕНИЯ У соединения имеется больше свойств, чем мы можем перечислить. Приведем только некоторые из них, другие используем для упражнений, а остальные оставим открывать читателю. Операцию соединения можно использовать для имитирования выбора. Положим, что для данного r(R) нужно найти ол=а (/*). Определим сначала новое отношение s (А) с единственным корте- х) Напомним, что RS обозначает R\JS. — Прим. ред.
28 Гл. 2. Реляционные операции жем t, таким, что t (Л) = а. Тогда rxs есть то же самое, что и Ол=а (/")· Действительно, пересечение R и Л есть Л, поэтому rxs = {t\ существуют tr £ г и t$ £ s, такие, что /r = t (R) и 4 = ί (Л)} = {/1 существуют tr ζ г с tr = t (R) и ί (Л) = α} = = {t£r\t(A) = a} = <JA=a(r). Используя соединение, можно также сконструировать обобщенную операцию выбора. Для этого введем отношение s (Л) с k кортежами tl9 ί2, ..., th% где tt (Л) = atn at ^dom (Л), 1 <: i < k. Тогда r><S = GA=ai (r) (J 0A~a2 (Ο U · · · U °A=ak (г). Если выбрать два атрибута Л и β из R и взять в качестве s отношение s (Ли) с единственным кортежем t, таким, что t (Л) = а и ί (S) = 6, то r\><3S = 0A=a, В=Ь (Г). Существуют другие варианты выбора, которые могут быть получены прибавлением столбцов и кортежей ks. Из симметрии в определении следует, что оператор соединения коммутативен. Он также ассоциативен. Для данных отношение q, r и s (q><r)xs = q ъ< (г χ s) (см. упр. 2.11). Следовательно, можем записывать бесскобочную последовательность соединений, не внося разночтения. Введем некоторые обозначения для многократных соединений. Пусть 5Х (Si), s2 (S2), ..., sm(Sm) — отношения, R = S± (J S2 [} ... ... U Sm и S — последовательность Sl9 S2, ..., Sm. Далее, пусть tl9 t2, ..., tm — последовательность кортежей, в которой U € Si, l <: i < т. Говорят, что кортежи tl9 t2, ..., tm соединимы на S, если существует кортеж t на R, такой, что tt = t (Si), 1 <: <: i < т. Кортеж t является результатом соединения кортежей Пример 2.5. Кортежи (аА), (&iC8) и (агс2) из отношений slf 5χ (Л β) s2 (β С) s3Q4 С) αχ Ьх Ьх с2 аг с2 аг b2 Ь2 сг а2 с2 а2 Ъх соединимы с результатом (аф^), а кортежи (oibi), (Ь^) и (о^*) соединимы с результатом (a2IV2):
2.5. Свойства соединения 29 sx >< s2 >< s3 = (А В С) ax bx c2 a2 bx c2 Если в определении; данном выше, т = 2 и если кортежи tx и 4 соединимы на S = Sx, S2 с результатом t, то tx = t (Sx) и t2 = = ί (S2). Из определения соединения следует, что кортеж ί должен принадлежать sx t><i s2. Обратно, если t—кортеж в sx >< s2, то должны существовать такие кортежи txn t2B sxu s2 соответственно, что tl9 t2 соединимы на S с результатом t. Следовательно, sx\><s2 состоит из тех кортежей t, которые являются результатом соединения двух соединимых на S кортежей tl9 t2. Пользуясь ассоциативностью соединения и индукцией, можно непосредственными, но громоздкими выкладками доказать следующий результат. Лемма 2.1. Отношение sx t><i s2 ιχι ... ><ι sm состоит из всех кортежей t, которые являются результатом соединения соединимых на S = Sx, S2, ..., Sm кортежей tx, t2, ..., tm, принадлежа- щих соответственно Sx, S2, ..., Sm. He каждый кортеж каждого отношения может войти в соединение. Отношения sl9 s29 ..., sm полностью соединимы, если каждый кортеж в каждом отношении является членом некоторого списка соединимых на S кортежей. Пример 2.6. В примере 2.5 показано соединение трех не полностью соединимых отношений. Например, кортеж (ахЬ2) из sx и кортеж {Ъ2сг) из s2 остаются вне соединения. Если к отношению s3 добавить кортеж (ахсх), то отношения становятся полностью соединимыми, как показано ниже. sx (Л В) s2 (В С) s3(A С) sx >< s2 \><s3=[A r Q ах bx bx с2 ах сх ! Ьх с2 - ах Ъ2 Ь2 сх ах с2 · ах Ъ2 сх а2 Ъх . а2 с2 а2 Ьх с2 Операторы соединения и проекции, х^тя и не являются взаимно обратными, образуют дополнительные хфункции. Пусть г (К) и s (S) — отношения, q = r ><s и RS — схема отношения q. Положим г' = πβ (q). Есть ли какая-нибудь связь между г и г'? Да, г' s г, так как для любого кортежа / из q проекция t (R) должна быть кортежем г, а г' = \t KR)\ t ζ q\.
30 Гл. 2. Реляционные операции Пример 2.7. Указанное включение иногда является собственным (гг а г). г (А В) s(B С) rxs = q(A В С) a b be a b с а >' Пав (Я) = г' (А В) a b Ниже показан случай, когда имеет место равенство (г = г) г {А В) s(B С) г ><<s = q(A В С) а Ьх be a b с а V V с' а V с' ^ав (?) = г' (А В) a b а V Включение становится равенством, когда для каждого кортежа tr £ г существует кортеж ts £ s с tr (R f| S) = ts (R f| 5). Включение может также стать равенством и без того, чтобы г и s были полностью соединимы (см. упр. 2.14). Однако если s' = π5 (#), то условия «г = г',s =s' означают в точности то же самое, что и условие «г и s полностью соединимы». Этот результат обобщается более чем на два отношения (см. упр. 2.15). Что произойдет, если поменять порядок проекции и соединения? Пусть q — отношение со схемой RS и г = nR (q) и s = ns (q). Положим q = г >< s. Если t — кортеж из q, то t (R) принадлежит г, a t (S) принадлежит s, следовательно, t принадлежит q\ Поэтому q' 3 q. Если q = qy то говорят, что отношение q разложимо без потерь на схемы R и S. Разложение без потерь на более чем два отношения рассматривается в гл. 6. Пример 2.8. Отношение q во второй части примера 2.7 разложимо без потерь на АВ и ВС. Можно продвинуться еще на один шаг. Пусть г' = πκ (qf), s' = n,s (qf) и q" = r' >< s'. Для того чтобы получить q", к ^ дважды применяется процедура проекция-соединение. Пусть Τ — пересечение R и S; тогда πτ (г) = nT(nR (q)) = nr (q) = πτ (ns (q)) = = κτ (s). Следовательно, г и s полностью соединимы, так как для любого кортежа tr в г должен существовать такой кортеж ts в s, что tr (Τ) = tb (Τ), и обратно. Таким образом, г= г' и s = s', следовательно, д' и q" должны совпадать. Отсюда вытекает, что
2.6. Упражнений 51 процедура проекция-соединение идемпотентна: результат первого ее применения совпадает с результатом второго ее применения. Эта процедура более подробно рассматривается в гл. 8. Наконец, изучим связь с объединением. Пусть гиг' — отношения со схемой R и s — отношение со схемой S. Утверждается, что (г U г') >< s = (г >< s) U (г' >< s). Обозначим левую часть уравнения буквой q, а правую — q*. Для данного кортежа t £ q должны существовать кортежи tr и t8> которые соединимы с результантом t, причем tr лежит в г или г', a /s £ s. Если tr £ г, то t принадлежит г >< s, в противном случае t принадлежит г' >< s. Тем самым показано, что q s q''. Чтобы установить обратное включение q^q', выберем t из q'u Тогда i принадлежит г >< s или т' >< s. В обоих случаях t принадлежит (г [) г') >< s. 2.6. УПРАЖНЕНИЯ 2.1. Пусть г (ABC) и s (BCD) — отношения, α ζ dom (А) и b £ dom (В). Какие из следующих выражений правильно составлены: (а) г (J s; (b) πΒ (г) — лв (s); (с) GB=b (г); (d) σ^=α> B^b (s); (e) r >< s; (0 πΑ (/■)><! πΒ (s)? 2.2. Отношения г и s таковы: г (Л Б С) s(B С D) а Ь с Ь' с' d а V с' Ъ" & с' а Ь" с' Ь" с d а' V с Вычислить значения следующих выражений: (а) г; (b) s; (с) oAscta (r); (d) все правильно составленные выражения в упр. 2.1. 2.3. Пусть г и s — отношения со схемой R и ключом /С. Какие из следующих отношений обязательно должны иметь ключ К: (a) r\Js\ (Ъ) г Г) s*. (с) г — s'> (d) г, где г — отношение; (е) зх^(г); (f) r\><]s> 2.4. Пусть г (R) — отношение, А £ R и а, а' £ cfom (Л). Докажите, что [^Л=а. Α*.,' Μ = 0 ИЛИ σΛ=α, А=а' W = σΛ=α WJ· 2.5. Пусть г и s — отношения со схемой R, Α £ R и а £ cfom (Л). Докажите или опровергните следующее: (а) GA=a (?) = σΑ=α (г)*> (b) сА=а (г И s) = <^=α (г) Π S. 2.6. Пусть г — отношение со схемой R [ABC]."Что можно сказать о размерах отношения оА=а (г)? ~ 2.7. Пусть X — подмножество R, Α £ R, А ф X и г — отношение со схемой R. Найдите контрпример для ПХ (GA=a (Ό) = 0А==а (Κχ (Г)).
32 Гл. 2. Реляционные операции 2.8. Пусть X — подмножество R, и пусть г и s— отношения со схемой R. Докажите или опровергните следующие равенства: а) π* (г Π s)= пх (г) f) nx (s); (b) πχ (r U s) = «χ (г) U πχ (s); (c) πχ (г — s) = пх (г) — лх (s); (d) πχ(Ρ) = π χ (г), где г — отношение. 2.9. Для каждого опровергнутого в. упр. 2.8 равенства докажите включение в одном направлении. 2.10. Пусть Л — атрибут в R, R' = R — Л, и пусть г — отношение со схемой R. Какие имеются соотношения между размерами отношений /г, оА==а (г), ЛА<Г)> nR>(r) и σΑ-α(πΑ(Γ))? 2.11. Для данных отношений q, r и s покажите следующее: (a) (q \><r) \><s= q χ (г χ s); (b) q X q = ?; (c) 7 >< г = <7 χ (? X r). 2.12. Пусть r (R) и s (S) — отношения и Λ £ R. Докажите σΑ=α (r><s) = σΑ==α (г) χ s. 2.13. Пусть гиг' — отношения со схемой /? и s— отношение со схемой S. Докажите или опровергните: (a) (г Π г') >< s = (г χ s) Г) (г' X s); (b) (г — г') χ s = (г χ s) — (г' χ s); (c) г χ s = г χ s. 2.14. Для данных отношений г (/?), s (S) и q— r \><]s покажите, чтоя^ (q) = г может иметь место, даже когда г и s не являются полностью соединимыми. 2.15*. Пусть sx (5Х), s2 (S2), ...,sm (Sm) — отношения и q = 8г[><]82 X ... ... χ sm. Докажите, что slt s2, ..., sm полностью соединимы тогда и только тогда, когда Si = π$. (q), 1 ^ i ^ m. 2.1>6. Пусть <7 (Я) — отношение и Si — подмножество R, 1 ^ i ^ m. Определите S£ = π$. ((?), 1 <; t <; т. Докажите, что slt s2, ..., sm полностью соединимы. ~~ 2.17. Пусть q— отношение со схемой RS. Дайте пример, когда включение q ε n>R(q) X π5 (^) является собственным. 2.18. Для данных отношений г (#), s (S) и ^= г ><1 s определено г' = Лд (q) и s' = π$(<7). Докажите, что ^ = г' χ s'. 2.19*. Для данного отношения q (RS) найдите достаточные условия выполнения равенства для q— Яд (q) χ ns (g). Является ли ваше условие необходимым? 2.7. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Реляционные операторы выбора, проекции и соединения в форме, в которой они здесь даны, были введены в работеCodd [1970, 1972b], хотя аналоги для несколько иной модели были даны ранее (см. Chi Ids [1968]). Соединение иногда называют естественным соединением, чтобы отличить от других операций, подобных соединению, которые будут рассмотрены в гл. 3. В некоторых источниках отношения рассматриваются в традиционном математическом виде с упорядоченными кортежами и пронумерованными компонентами. Мы не будем придерживаться такой точки зрения.
Глава 3 Другие операции на отношениях В этой главе изучаются реляционные операторы, которые не столь элементарны, как в гл. 2. Некоторые операторы являются обобщением введенных в гл. 2; другие, как можно показать, эквивалентны последовательности ранее определенных операторов. Множество отношений и констант вместе с этими операторами образует реляционную алгебру. Будет показано, что можно ограничить множество операторов, сохраняя при этом выразительную силу реляционной алгебры. Наконец, анализируются две операции, которые не принадлежат алгебре, но иногда полезны при реализации базы данных. 3.1. ОПЕРАТОР ДЕЛЕНИЯ Определение оператора деления достаточно сложно, но он имеет применения" в некоторых естественных ситуациях. Определение 3.1. Пусть г (R) и s (S) —отношения, S ^ R. Положим R' = R — S. Тогда г, разделенное на s, — это отношение г' (Rf) = {t\ для каждого кортежа ts £ s существует кортеж tr £ г, такой, что tr (R') = ί и tr (S) = ts\. Отношение г' является частньСм от деления г на s, что обозначается r-7-s. Другой способ сформулировать определение следующий: r-r-s — это максимальное подмножество г' множества π#* (г), такое, что г' >< s содержится в г. Соединение в этом случае является декартовым произведением. Чтобы пояснить определение, приведем пример. Пример 3.1. Таблица 3.1 представляет собой пример состояния отношения право (ПИЛОТ, ТИП-САМОЛЕТА), отличного от
34 Гл. 3. Другие операции на отношениях Таблица 3.1. Пример отношения право (ПИЛОТ, ТИП-САМОЛЕТА) (ПИЛОТ Десмонд Десмонд Десмонд Дойл Дойл Девис Девис Девис Девис Дау ТИП-САМОЛЕТА) 707 727 747 707 727 707 J27 747 1011 727 состояния, данного в табл. 2.3. Предположим, что требуется найти тех пилотов, которые имеют право управлять всеми типами самот летов из некоторого множества. Пусть ^(ТИП-САМОЛЕТА) и s (ТИП-САМОЛЕТА) следующие: q (ТИП-САМОЛЕТА) s (ТИП-САМОЛЕТА) 707 707 727 747 Деление может быть использовано для сбора информации о пилотах, имеющих право управлять самолетами из множества q, или для поиска тех пилотов, которые имеют право управлять самолетами из множества s. право + q = <7'(ПИЛОТ) право ~s = ^(ПИЛОТ) Десмонд Десмонд Девис Дойл Девис Оператор деления может быть выражен через операторы, данные в гл. 2 (упр. 3.3). 3.2. ПОСТОЯННЫЕ ОТНОШЕНИЯ При обсуждении соединения в предыдущей главе было показано, что результат операции выбора может быть получен при выполнении операции соединения с постоянным отношением. Введем теперь специальный способ записи постоянных отношений непосредственно в выражениях. Если Аъ Л2, ..., Ап— различные атрибуты, а С| является константой из dom (At) для 1 <: i < п9 то запись (сг :А1с2:А2...сп: Ап)
3.3. Переименование атрибутов 35 представляет постоянный кортеж (с±с2 ... сп) над схемой А±А2 ... ... Ап. Постоянное отношение над схемой А1А2... Л „.представляется как множество кортежей.Пусть ctj — константа из dom (At) для 1 < i < η и 1 < / < k. Тогда \{с11\А1 с21:А2 ... сп1:Ап), \Ci2' Αι с22; Л2 ... сп2: Лп), ... (clfe: Лх c2fe: Л2 ... cnk\An)\ представляет отношение, которое обычно записывалось бы как Ui А2 --- Ап) Сц с2\ '" Сп1 СП С22 ··' ^л2 С\к С1к ··· CnJt. В случае когда постоянное отношение состоит из одного единственного кортежа, фигурные скобки иногда опускаются. Для кортежа с единственным атрибутом иногда опускаются угловые скобки («(» и «)»). Постоянное отношение с любым числом кортежей и любым числом атрибутов может быть построено из постоянных отношений с одним кортежем и одним атрибутом с помощью операторов соединения и объединения. Пример 3.2. Отношение (ПИЛОТ ТИП-САМОЛЕТА) Десмонд 707 Девис 707 может быть представлено как ((Десмонд : ПИЛОТ) >< (707 : ТИП-САМОЛЕТА» U ((Девис : ПИЛОТ) >< (707 : ТИП-САМОЛЕТА)). 3.3. ПЕРЕИМЕНОВАНИЕ АТРИБУТОВ Рассмотрим отношение использование в табл. 3.2, которое говорит о том, какоц самолет будет использован для данного рейса в данный день. Предположим, что требуется узнать все пары рейсов, которые по расписанию используют один и тот же самолет в один и тот же день. Требуемый результат является соединением отношения использование с самим собой, игнорирующим связи по столбцу РЕЙС. Можно также определить это соединение, скопи-
36 Гл. 3. Другие операции на отношениях Таблица 3.2. Отношение использование, отмечающее, какой самолет будет использован для данного рейса (РЕЙС 12 12 13 26 26 27 27 60 60 ДАТА 6 января 7 января 6 января 6 января 7 января 6 января 7 января 6 января 7 января НОМЕР-САМОЛЕТА) 707-82 707-82 707-82 747-16 747-18 747-16 747-2 707-82 727-6 ровав отношения использование; при этом РЕЙС переименовывается, скажем, в РЕЙС2. Чтобы формально ввести новое отношение, определим оператор переименования δ. Пусть г — отношение со схемой R, А — атрибут, принадлежащий R, а В — атрибут, не принадлежащий R — А. Положим R' = (R — А) В. Тогда г с Л, переименованным в В9 обозначаемое как 6а*-в (г)У есть отношение г (Rr) = \f | существует кортеж t ζ г с f (R — А) = t (R — А) и Г (В) = t (A)}. Требуется, чтобы А и В имели один и тот же домен (имели одну и ту же область определения). Пример 3.3. Следующее выражение обозначает отношение с желаемыми парами рейсов. s = я{рейс РЕйС2} (использование χ δ {РЕЙС ■<- РЕЙС2| (использование) . Состояние отношения s, полученного из отношения использование, данного в табл. 3.2, дано в табл. 3.3. В разд. 3.5.1 будет описано обобщение оператора выбора, которое может быть использовано для удаления избыточности в отношении s (см. упр. 3.7). Пусть г — отношение со схемой R, Al9 A2t ..., Ak — различные атрибуты, принадлежащие R. Пусть, кроме того, Blf B2f ... ...,βΑ — различные атрибуты, не принадлежащие R — (A1A2--<Ak)9 причем dom (Аг) = dom (Bt) для 1 < i < k. Обозначим одновременное переименование атрибутов Аъ Л2, ..., Ak в Bl9 B2t ... ..., Bk соответственно в отношении г как 6Al9Av....Ah+.BvB% Bk(r).
3 4. Оператор эквисоединения Таблица 3.3. Отношение s, показывающее, какие пары рейсов используют один и тот же самолет s (РЕЙС РЕЙС2) 12 13 13 12 60 12 12 60 13 60 60 13 12 12 13 13 60 60 26 27 27 26 26 26 27 27 Заметим, что одновременное переименование иногда не может быть записано в виде последовательности переименований отдельных атрибутов без введения дополнительного атрибутного символа. Примером является следующее переименование &а, в*-в, а- 3.4. ОПЕРАТОР ЭКВИСОЕДИНЕНИЯ В определении оператора соединения, данном в гл. 2, отношения могут комбинироваться только по одноименным столбцам и должны комбинироваться по всем таким столбцам. В предыдущем разделе было показано, как произвести соединение по подмножеству таких столбцов. Отношения могут соединяться также по столбцам с различными именами атрибутов, но равными доменами. Пример 3.4. Рассмотрим отношения маршрут и адрес в табл. 3.4 и 3.5. Маршрут является проекцией отношения расписание, данного в табл. 2.1. Адрес указывает для каждого пилота адрес базового аэропорта, к которому он приписан. Предположим, что требуется назначать пилотов на те рейсы, пункт отправления которых совпадает с аэропортом, к которому приписан пилот. Таблица 3.4. Отношение маршрут маршрут (НОМЕР ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ) Нью-Йорк Лос-Анджелес Бостон Бостон Нью-Йорк 84 109 117 213 214 Чикаго Нью-Йорк Атланта Нью-Йорк Бостон
38 Гл. 3. Другие операции на отношениях Таблица 3.5. Отношение адрес адрес (ПИЛОТ АЭРОПОРТ) Терхьюн Темпл Тейлор Τарбелл Тодд Трумен Нью-Йорк Атланта Атланта Бостон Лос-Анджелес Чикаго Таблица 3.6. Отношение может-лететь, показывающее какой пилот живет в городе отправления каждого рейса может-лететь (НОМЕР ПУНКТ- 84 109 117 117 213 214 ОТПРАВЛЕНИЯ Чикаго Нью-Йорк Атланта Атланта Нью-Йорк Бостон ПУНКТ- · НАЗНАЧЕНИЯ Нью-Йорк Лос-Анджелес Бостон Бостон Бостон Нью-Йорк ПИЛОТ Трумен Терхьюн Темпл Тейлор Терхьюн Тарбелл АЭРОПОРТ) Чикаго Нью-Йорк Атланта Атланта Нью-Йорк Бостон Такое отношение представлено в табл. 3.6. Оно было получено эквисоединением по столбцам, соответствующим именам атрибутов ПУНКТ-ОТПРАВЛЕНИЯ и АЭРОПОРТ. * - Дадим полное описание эквисоединения. Пусть г (R) и s (S) — отношения Ai £ R, Bt £ S и ,dom (At) = dom (β^), 1 < i < m\ Ai и Bi не предполагаются различными. Эквисоединением г и s по Аъ А2, ..., Ат и Bl9 B2, ..., Вт называется отношение q (RS) = {t\ существуют tr£r и ts£s с t (R) = tr и t(S) = ta и t(Ai) = t(Bt), 1 < i < m\. Обозначение: q (RS) = г [A± = Въ А2 = В 2» Ar В» s. Пример З.5. Отношение может-лететь в табл. 3.6 представляется как маршрут [ПУНКТ-ОТПРАВЛЕНИЯ-АЭРОПОРТ] адрес. Данное выше определение нуждается в некоторых уточнениях. Может существовать атрибут Л, такой, что Α ζ R и Α ζ S. В эквисоединении г и s желательно, чтобы для каждого появления А был свой столбец. Следовательно, в определении нужно потребовать, чтобы R Π S — 0. Это не является сильным ограничением: если R и S имеют непустое пересечение, то можно переименовать атрибуты в г или s, так чтобы пересечение схем стало пустым. Заметим, что может и не быть сравнений в эквисоединении, т. е. в определении возможно, что т — 0. В этом случае
3.5. Расширения для других сравнений на доменах 39 эквисоединение г [ ] s является декартовым произведением г и s. Чтобы подчеркнуть различие между соединением, определенным в гл. 2, и эквисоединением, прежнее соединение будем иногда называть естественным соединением. Эквисоединение более удобно, так как оно может быть выражено через переименование и естественное соединение (см. упр. 3.5). Естественное соединение также может иметь выражение, использующее эквисоединение. Например, для отношений г (ABC) и s (BCD) и атрибутов В' и С с dom (В) = dom (В') и dom (С) = dom (С) r><S= ABCD (Г [В = Я', С = С] б*. С+-В'. С (S)). Естественное соединение не повторяет соединенные столбцы и в этом его основное отличие от эквисоединения. 3.5. РАСШИРЕНИЯ ДЛЯ ДРУГИХ СРАВНЕНИЙ НА ДОМЕНАХ До сих пор единственным сравнением значений домена, которым пользовались, было равенство. Можно сравнивать значения домена, используя неравенство. Часто домены упорядочены, и в этих случаях сравнения <, <, ^, > также имеют смысл. Для общего рассмотрения таких сравнений вводится множество Θ символов (знаков) бинарных отношений над парами доменов. Если θ £ Θ — знак сравнения, а Л и β — атрибуты, то говорят, что А ^-сравним с By если знаку θ сопоставлено бинарное отношение в dom (А) х dom (В) *). Будем говорить, что А Ь-сравним, имея в виду, что А θ-сравним сам с собой. Считается, что каждый атрибут А сравним по равенству и по неравенству. Как правило, будут употребляться только следующие знаки сравнения над одним доменом: =, Ф, <, <, s>, >. Однако они используются в общем смысле, например «=» фактически представляет различные знаки равенства для различных доменов. Сравнения будут использованы для обобщения операторов выбора и соединения, в которых участвовало только равенство. Требование, чтобы сравнения были бинарными отношениями, является чем-то вроде искусственного ограничения. Существуют разумные критерии, по которым хотелось бы сделать их математическими отношениями порядка, отличного от второго. Например, можно было бы определить унарное отношение т на домене времени, где h ζ т обозначало бы утреннее время; или определить тернарное отношение w на целых числах, где w (i, /, k) обозначало бы i < j < k. Любое унарное отношение θ может быть представлено бинарным отношением Θ', где θ (а) имеет место тогда и только х) Бинарным отношением между множествами X и Υ называется произвольное подмножество произведения XX Υ. — Прим. ред.
40 Гл. 3. Другие операции на отношениях тогда, когда имеет место θ' (α, а), и ни для каких а, Ь, таких, что афЪ, θ' (α, &), не имеет места. Некоторые тернарные и более высокого порядка отношения, скажем,* такие, как w, могут быть представлены в виде конъюнкции бинарных отношений, тогда как другие не могут (см. упр. 3.9). В то время как расширение сравнений, основанное на отличных от бинарных отношениях, является непосредственным, используемые обозначения являются достаточно беспорядочными, что мешает тому, чтобы теоремы были четкими. 3.5.1. Расширение выбора Расширим оператор выбора, введя обозначение <τΑθα, где θ ζ Θ. Если г — отношение со схемой R, А £ R — атрибут, а £ £ dom (В) — константа, А и В θ-сравнимы, то σΛθα (г) = \t £ £ г | t (A)Qa\. Обозначение t (Α)θα означает θ(ί (Α), α). Пример 3.6. Отношение время, являющееся проекцией отношения расписание в табл. 2.1, показано ниже: время (НОМЕР ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ) 84 15.00 17.55 109 11.40 2.42 117 22.05 0.43 213 11.43 12.45 214 14.20 15.12 Отношение s = аВРЕМя- (время), допускающее поря- прибытия< 13·00 док < по времени в течение суток (начиная с 00.01 часов до полуночи), имеет вид аВРЕмя- (время) = /НОМЕР ВРЕМЯ- ВРЕМЯ- ) прибытия < 1з.оо у ВЫЛЕТА ПРИБЫТИЯ/ 109 21.49 2.42 117 22.05 0.43 213 11.43 12.45 Это список всех рейсов и времени их прибытия до 13.00 и точно в 13.00. Наряду со сравнениями между атрибутом и константой допускаются сравнения между двумя атрибутами. Пусть г — отношение со схемой R, где А и В — атрибуты в #. Пусть Θ£Θ, А и В θ-сравнимы. Тогда аАев (г) = \t £ r\t (A)Qt (S)}. Пример 3.7. Пусть «<ξ> — сравнение моментов времени суток, означающее: «предшествует по крайней мере на два часа». Тогда для отношения время, указанного в примере 3.6, отношение
3.5. Расширения для других сравнений на доменах 41 s = (Твремя- ^ время- (время) дано ниже: ВЫЛЕТА ^ ПРИБЫТИЯ (НОМЕР ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ) 84 15.00 17.55 109 21.55 2.42 117 22.05 0.43 Допускается, что для порядка <^ время переходит за полночь. Как и ранее, можно сократить обозначение для последовательности выборов. Например, σΑ<α (<*b>d {Gc=c (r))) можно записать как σΑ^α, b>d, c=c (ή. Для большего удобства допускается употребление логических связок Λ» V> ~Л (которые читаются соответственно «и», «или», «не») и круглых скобок. Например, σ((Α=α) ν (л>с» л (в+ь) (/")· Ранее использовавшиеся запятые были фактически подразумеваемыми Λ-Будучи удобными, логические связки не добавляют выразительной силы к множеству реляционных операторов (см. упр. 3.10). 3.5.2. Оператор θ-соединения Эквисоединение является расширением оператора соединения для выполнения сравнения столбцов с различными именами атрибутов. При наличии других бинарных отношений отпадает необходимость в ограничении сравнения только по равенству. Пример 3.8. Предположим, что имеются список рейсов и времени отправления и прибытия из города а в город b и аналогичный список рейсов-и времени отправления и прибытия из города Ь в город с. В табл. 3.7 и 3.8 показаны эти списки, представленные двумя отношениями время-ab и время-Ьс. Требуется узнать, какие рейсы из а в Ъ сочетаются с рейсами из b в с. Для этого составляются комбинации кортежей из время-ab с кортежами из время-be, когда рейс из а в Ь прибывает в Ь раньше, чем рейс из Ь в с отправляется из Ь. В табл. 3.9 показан результат, представленный отношением транзит-ас. Заметим, что сначала необходимо переименовать атрибуты в отношении время-Ьс; кроме того, соединения, переходящие за полночь, не рассматриваются. Таблица 3.7. Рейсы между городами а и b время-ab (НОМЕР ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ) *60 9.40 11.45 91 12.50 14.47 112 16.05 18.15 306 20.30 22.25 420 21.15 23.11
42 Гл. 3. Другие операции на отношениях Таблица 3.8. Рейсы между городами b и с время-be (НОМЕР ВРЕМЯ-ВЫЛЕТА 11 60 156 158 8.30 12.25 16.20 19.10 ВРЕМЯ-ПРИБЫТИЯ) 9.52 13.43 17.40 20.35 Таблица 3.9. Транзитные рейсы между городами а и с через город Ь транзит-ас НОМЕР ВРЕМЯ- ВРЕМЯ- ВЫЛЕТА ПРИБЫТИЯ НОМЕР' ВРЕМЯ'- ВРЕМЯ'- ВЫЛЕТА ПРИБЫТИЯ 60 60 60 91 91 112 9.40 9.40 9.40 12.50 12.50 16.05 11.45 11.45 11.45 14.47 14.47 18.15 60 156 158 156 158 158 12.25 16.20 19.10 16.20 19.10 19.10 13.43 17.40 20.35 17.40 20.35 20.35 Пусть г (R) и s (S) — два отношения, для которых R f\ S = = 0, и пусть Α ζ R и В £ S θ-сравнимы для θ ζ θ. Тогда г [ΑΘΒ] обозначает отношение q (RS) = \t I для ££г и для ts£s, таких, что ir (A) Qts (В) t (#) - tr и t (S) = t8\. Пример 3.9. Для отношения, заданного табл. 3.9, имеем транзит-ас=время-аЬ [ВРЕМЯ-ПРИБЫТИЯ < ВРЕМЯ-ВЫЛЕТА' ] время'-be, где время'-be = = бнОМЕР, ВРЕМЯ-, ВРЕМЯ- «-НОМЕР', ВРЕМЯ'-, ВРЕМЯ'-(врвМЯ-Ьс). ПРИБЫТИЯ ВЫЛЕТА ПРИБЫТИЯ ВЫЛЕТА Когда имеют место несколько сравнений, то они все записываются внутри квадратных скобок. Например, г [Аг < Въ А2 = B2i А3 ^ В2 ] s. Любое такое соединение называется θ-соединением. Эквисоединение является частным случаем θ-соединения. 3.6. РЕЛЯЦИОННАЯ АЛГЕБРА Операторы объединения, пересечения, разности, активного дополнения, выбора, естественного соединения, деления, переименования и θ-соединения вместе с постоянными отношениями и регулярными отношениями относятся к реляционной алгебре.
3.6. Реляционная алгебра 43 Любое выражение, правильно построенное с помощью этих операторов и отношений, называется алгебраическим выражением. Для данного алгебраического выражения Ε и данных текущих значений всех отношений в Ε можно вычислить Ε и получить единственное отношение. Тем самым Ε представляет собой отображение из совокупности отношений в отношения. Используемые множества доменов, множества атрибутов и множества сравнений фактически ограничивают возможности отображений, которые можно определить. В гл. 10, где сравнивается выразительная сила реляционной алгебры и других систем манипулирования отношениями, различие выявляется именно по этим параметрам. По этому поводу необходим несколько больший формализм. Определение 3.2. Пусть U — множество атрибутов, называемое универсумом, 2D — множество доменов, и пусть dom — полная функция из ϋ в 2). Пусть, далее, R = \RXi R2, ..., Rp\ — множество различных схем отношений, где Rt ^ U для 1 < i < < /?, a d = \гъ г2, ..^ гр\ — множество всех таких наборов отношений, что rt есть отношение со схемой Rti 1 < i < p. Кроме того, пусть Θ — множество бинарных отношений над доменами из 2D, содержащее по крайней мере отношения равенства и неравенства для каждого домена. Реляционной алгеброй над U, 3), dom, R, d и Θ называется 7-местный кортеж $ = (U,S>, dom, R, d, Θ, Ο), где О — множество операторов объединения, пересечения, разности, активного дополнения, проекции, естественного соединения, деления, переименования, использующего атрибуты из U, выбора, использующего отношения из Θ. Алгебраическим выражением над $ называется любое выражение, правильно построенное (согласующееся с ограничениями, наложенными на операторы) из отношений, принадлежащих d, и постоянных отношений со схемами из U, использующих операторы из О. В алгебраических выражениях допускаются круглые скобки и предполагается, что одни бинарные операторы не обладают преимуществом над другими, за исключением обычного преимущества Π над U . Также можно опускать скобки для последовательностей отношений, связанных одним и тем же оператором, если эта операция является ассоциативной. Заметим, что два отношения с одной и той же схемой не допускаются. Это ограничение будет обсуждаться в гл. 12. Имена отношений rlf r2, ..., гр являются аналогами переменных программы, где значения г% пробегают множество отношений со схемой Ri. Некоторая двусмысленность такого обозначения заключается в том, что rt используется для обозначения имени отношения и для обозначения текущего состояния отношения. Та же двусмысленность возникает при обсуждении переменных
44 Гл. 3. Другие операции на отношениях в программах; эта проблема, однако, относится к денотационной семантике. При рассмотрении алгебраического выражения как отображения подобная неоднозначность лишает его изящества. 3.6.1. Алгебраические выражения как отображения Так как результатом каждой реляционной операции является одно отношение, то каждое алгебраическое выражение определяет функцию, которая отображает множество отношений в одно отношение. Схема этого отношения зависит от схем множества отношений, составляющих алгебраическое выражение Е. Обозначим ее через sch (Ε) и будем называть ее схемой алгебраического выражения Е. Можно определить sch (E) рекурсивно, согласно следующим правилам: 1. Если Ε есть riy то sch (E) является схемой отношения rt. 2. Если Ε — постоянное отношение, то sch (E) является схемой постоянного отношения. 3. Если Ε = Е1 \] £2, Ех [\ Е2, Ех — £2, Ёг или σ0 (Ег), где С — это некоторое множество условий, то sch (Ε) = sch (Ει). 4. Если Ε = κχ (Ег), το sch (E) = Χ. 5. Если Ε = ΕΊ~Ε2, το sch (Ε) = sch (Ег) —sch (Ε2). 6. Если Ε = Ег >< Ε2 или Ег [С] Е2 для некоторого множества условий С, то sch (Ε) = sch (Ег) [) sch (E2). 7. Если ЕА1А%...Ак-в1в2...вк(Е1), то sch (E) = (sch (Ег) — — АгА2... Ak) В,В2...Вк. Если Ε является алгебраическим выражением, в которое входят имена отношений slf s2, ..., sQt соответствующие схемам Slf S2, ..., Sq, το Ε является отображением Ε: Rel (Si) X Rel (S2) χ ... χ Rel (Sq) -^ Rel (sch(E))t где Rel (R) — множество всех отношений со схемой R. Иногда будет использоваться запись Ε (slf s2, ..., sq) для значения Ε на множестве отношений с именами sly s2, ..., sq. Иногда может возникнуть потребность в использовании оператора дополнения. Если добавить дополнение к определенному выше множеству операторов, то получим реляционную алгебру с дополнением. Алгебраическое выражение Е, содержащее дополнение, потенциально отображает множество отношений в бесконечное отношение. Отложим рассмотрение случая с дополнением до гл. 10.
3.6. Реляционная алгебра 45 3.6.2. Ограничение множества операторов Как уже много раз отмечалось, реляционные операторы не являются независимыми. Существует суженное (ограниченное) множество операторов, которое обладает той же мощностью, что и полное множество. Одно из таких множеств дано в следующей теореме. Теорема 3.1. Пусть Ε — выражение над реляционной алгеброй 31, использующее имена отношений sl9 s2, ..., sq. Существует выражение Ε' над 3ί, которое определяет ту же функцию от slf s2, ..., sq и использует постоянные отношения с единственным атрибутом и единственным кортежем, операторы выбора с одним сравнением, естественного соединения, проекции, объединения, разности и переименования. Доказательство. Из разд. 3.2 следует, что каждое постоянное отношение в Ε можно заменить выражением, включающим в себя объединение, соединение и постоянные отношения с единственным атрибутом и единственным кортежем. В упр. 3.10 показано, как заменить обобщенную операцию выбора выражением, содержащим выбор с единственным сравнением и другие операторы и не содержащим θ-соединение. В упр. 3.3а показано, как выразить деление через операторы, определенные в гл. 2. В разд. 2.1 было отмечено, что пересечение можно заменить разностью. Чтобы получить Е', осталось заменить в Ε единственный оператор — это активное дополнение. Активное дополнение может быть выражено через проекцию, соединение и разность. Например, предположим, что Ег — такое алгебраическое выражение, что sch (£χ) = ABC. Тогда Ёх = (πΑ (Ег) >< пв (Е2) >< \><кс (Ег)) — Ег. Заметим, что соединения здесь являются декартовыми произведениями. Следствие. Пусть Ε — выражение над реляционной алгеброй 31 с операцией дополнения, использующей имена отношений sl9 s2, ... ..., sq. Тогда существует выражение Ε' над 31, которое определяет ту же самую функцию от sl9 s2, ..., sq и использует только постоянные отношения с единственным атрибутом и единственным отношением, операторы выбора с одним сравнением, естественного соединения, проекции, объединения, дополнения и переименования. Доказательство. Из теоремы 3.1 следует, что единственным оператором, который должен быть удален из Е, является разность. Заметим, что Ег — Е2 = Е1 (J Е2.
46 Гл. 3. Другие операции на отношениях 3.7. ОПЕРАТОР РАСЩЕПЛЕНИЯ Аргументом оператора расщепления является одно отношение, а результатом — пара отношений. Расщепление не включено в реляционную алгебру, так как значение каждого выражения в алгебре должно быть единственным отношением. Пусть г — отношение со схемой R, и пусть β (t) — предикат на кортежах над R *). Тогда расщеплением г по β, записываемым как SPLITfi (r), называется пара отношений (s, s'), оба со схемой R, такие, что s = {t ζ г | β (t)\ и s' = {/ £ г | не β (t)\ . Ясно, что s' = r — s. На предикат β не накладывается никаких ограничений, за исключением того, что его значения зависят только от кортежа t, но не от состояния г. Пример ЗЛО. Предикат β (t) = существует f в г с t (А) Ф Φ t' (А) недопустим, так как он зависит от других кортежей в г. Пример 3.11. Рассмотрим отношение право в табл. 3.3. Пусть β (t) = (t (ТИП-САМОЛЕТА) = 707 или t (ТИП-САМОЛЕТА) = = 727). Отношения s и s', где SPLIT$ (право) = (s, s'), показаны ниже: s (ПИЛОТ ТИП-САМОЛЕТА) Десмонд Десмонд Дойль Дойль Девис Девис Дау s' (ПИЛОТ 707 727 707 727 707 727 727 ТИП-САМОЛЕТА) Десмонд 747 Девис 747 Девис 1011 3.8. ОПЕРАТОР фактор В качестве аргумента оператора фактор берется одно отношение, а в результате получаются два отношения. В результате соединения этих двух отношений получается отношение, содержащее первоначальное отношение с дополнительным столбцом. Продемонстрируем сначала оператор фактор на примере. х) Напомним, что предикат на произвольном множестве X — это отображение β из X в множество истинностных значений {И, Л}, или {7\ F). Если χ ζ £ X, то вместо β (Χ) = И пишут также β (Χ) .— Прим. ред.
3.8. Оператор фактор 47 Пример 3.12. Рассмотрим список пассажиров, зарегистрированных на некоторый рейс, учитывающий класс, которым они летят, и для курящих или некурящих. Такой список представляется отношением список со схемой {ПАССАЖИР, КЛАСС, КУРЯЩИЙ}, показанным ниже: список (ПАССАЖИР КЛАСС КУРЯЩИЙ) Салазар Шик Шокли Стьюарт Сейрз Сандз Сакс первый первый второй первый второй второй второй Да нет нет Да нет нет Да Существуют только четыре возможности {КЛАСС, КУРЯ- ЩИЙ}-значений. Ту же самую информацию можно представить в более компактной форме, отделив столбцы КЛАСС и КУРЯЩИЙ оператором расщепления и создавая новый столбец МЕТКА, как показано ниже: список 1 (ПАССАЖИР МЕТКА) Салазар Шик Шокли Стьюарт Сейрз Сандз Сакс 2 (МЕТКА 1 2 3 4 1 2 4 1 4 4 3 КЛАСС" первый первый второй второй КУРЯЩИЙ) да нет да нет Легко проверить, что список=П{пксскжкр. класс, курящий} (список1 >< список2). Если г является отношением со схемой R; Blf B2t ..., Вт £ Rf a L Φ R, то через FACTOR (г; В1у В2, ..., Вт\ L) обозначается оператор, который удаляет столбцы, соответствующие Въ В2> ... ..., Вт, из г для образования нового отношения и добавляет в г и в новое отношение особый столбец, помеченный как L, причем по L осуществляется соединение. Отношения список! и список2 — это результат выполнения оператора FACTOR (список; КЛАСС; КУРЯЩИЙ; МЕТКА).
48 Гл. 3. Другие операции на отношениях Более строго оператор фактор определяться не будет. В основном он используется как концептуальное средство для поиска эффективных путей хранения (запоминания) отношения. Этот оператор также не включается в реляционную алгебру, так как его результатом не является одно отношение. 3.9. УПРАЖНЕНИЯ 3.1. Пусть г (R) и s (S) — такие отношения, что R Г) 5 = 0. Докажите, что (г >< s)-^-s= г. 3.2. Пусть г— отношение со схемой R и s и s' — отношения с такой схемой 5, что R з 5. Покажите, что из s ss' следует r-^-s э /Ч-s'. Покажите, что обратное неверно. 3.3.* Пусть г (R) и s (S) — отношения со схемами R ^ S, R' = R — 5. Докажите тождества a) r+s = kr, (г) — Яд, ((Яд, (г) >< s) — г); b) '-^= П Я*-(<Ъ-<М). 3.4. Для отношения г со схемой, показанной в табл. 3.2, дайте такое выражение, которое для данного рейса / вычисляет отношение со схемой РЕЙС, указывающее для каждой даты, перечисленной в г, все рейсы, использующие тот же самолет, что и рейс /. 3.5. Покажите,что любое эквисоединение может быть точно определено через естественное соединение и переименование при условии, что достаточно дополнительных атрибутов с подходящими доменами. 3.6. Иногда имеет смысл эквисоединение отношения самого с собой. Вычислите отношение г = маршрут [ПУНКТ-НАЗНАЧЕНИЯ = ПУНКТ-ОТПРАВЛЕНИЯ'] маршрут, где маршрут — это отношение, данное в табл. 3.4, а маршрут' является отношением маршрут с заранее переименованными атрибутами. Используя отношение г, вычислите отношение s=JtinyHKT- ПУНКТ- ι (г)· Какое значение может быть приписано (ОТПРАВЛЕНИЯ, НАЗНАЧЕНИЯ'/ кортежам в s? Найдите операцию, которая бы удаляла из s такие кортежи, как (Нью-Йорк Нью-Йорк). 3.7. Пусть в примере 3.3 домен атрибута РЕЙС (и РЕЙС2) <-сравним. Пользуясь расширенной операцией выбора из разд. 3.5.1, дайте выражение, которое определяет s без избыточной информации: каждая пара должна появиться однажды, а такие пары, как (12 12), должны быть удалены. 3.8. Вычислите °7ВРЕМЯ- > и 00 Λ ВРЕМЯ- < 14 0<Л V ВРЕМЯ- < 17.00 (врвМЯ) (ВЫЛЕТА^ Π'ϋυ Λ ПРИБЫТИЯ ^ / V ВЫЛЕТА ^ "*UU для отношения время из примера 3.6. 3.9. Приведите пример тернарного отношения (в математическом смысле), которое не может быть представлено как конъюнкция бинарных отношений без введения новых доменов. 3.10. Покажите, что результат любой операции выбора может быть получен при использовании оператора выбора вида oAQa или σAQB и операторов из гл. 2, кроме выбора. Не предполагайте, что множество Θ бинарных отношений замкнуто относительно отрицания. 3.11. Вычислите аВРЕМЯ'- ПРИБЫТИЯ (["ВРЕМЯ- <-- ВРЕМЯ'-1 \ «/«««[прибытия вылета] «/***>
3.10. Библиография и комментарии 49 где время — это отношение из примера 3.6, а время' то же самое отношение с переименованными заранее атрибутами. Рассматривается время только одних суток от 00,01 ч. до полуночи. 3.12. Вычислите расписание ГПУНКТ- = ПУНКТ' [НАЗНАЧЕНИЯ ОТПРАВЛЕНИЯ ВРЕМЯ- <·ВРЕМЯ'- Ί расписание' , ПРИБЫТИЯ ВЫЛЕТА J где расписание — это отношение из табл. 2.1, расписание' — это отношение расписание с предварительно переименованными атрибутами, а <.— бинарное отношение: «раньше, не более чем на три часа», которое переходит за полночь. 3.13. Покажите, что любое θ-соединение выразимо через естественное соединение и обобщенную выборку. 3.14. Если даны отношения г (ЛВС) и s (BCD), то какова sch (E) для Ε = πΑ (<JB=b (г)) ><кв (квс (г) - квс (s)). 3.15. Пусть έ% — реляционная алгебра (U, 2), dom, R, dt Θ, σ). (a) Покажите, что если Θ содержит произвольные бинарные отношения, то для несобственного подмножества операций из теоремы 3.1 теорема перестает быть верной. (b) Покажите, что если Θ содержит только равенство и неравенство, то выбор может быть ограничен до оА=в, 3.16. Покажите, что если SPLITp (г) = (s, s'), то г = s U s'. 3.17. Пусть гиг' — отношения со схемой R, s= r \J r'. Покажите, что не всегда существует предикат β, такой, что SPLITp (s) = (г, г'). 3.18. Пусть г— отношение со схемой Ry {Blt B2, ..., Вт) — подмножество Ry и пусть атрибут L не принадлежит R. Положим, pi = \dom (Bt) |, 1 <: i <; <J m, и допустим, что все р-ь конечны. Предположим, что каждое значение в кортеже отношения г требует один байт памяти и что в отношении г имеется k кортежей. Приведите равенство, содержащее m, k и plt p2, ..., /?т, в котором бы было выражено, когда для отношений, полученных с помощью FACTOR (г; В1у В2, ..., Вт\ L), требовалось бы меньше памяти, чем для г. 3.10. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Определение Кодда (Codd [1972b]) реляционной алгебры совпадает с данным здесь определением, за исключением переименования. В работе Hall, Hitchcock, Todd [1975] используются некоторые обобщения алгебраических операторов. Бек (Beck [1978]) исследует минимальные множества операторов. Оператор расщепления взят из pa6oTbrFagin [1980b], а упр. З.ЗЬ предложил Jon Shultis.
Глава 4 Функциональные зависимости Создание баз данных преследует две основные цели: понизить избыточность данных и повысить их надежность. Как будет показано впоследствии, любое априорное знание о различного рода ограничениях, накладываемых на совокупности данных, может принести большую пользу для достижения указанных целей. Один из способов формализации этих знаний — установление зависимостей между данными. В настоящей главе рассматривается только один тип зависимости между данными — функциональная зависимость, которая обозначается как F-зависимость *). В гл. 7 будут рассмотрены два других вида зависимостей — многозначные зависимости и зависимости соединения, которые обозначаются как MV-зависимости и J-зависимости 2). Более общие классы зависимостей рассматриваются в гл. 14. 4.1. ОПРЕДЕЛЕНИЯ Функциональная зависимость является обобщением понятия ключа,J)введенного в гл. 1. В табл. 4.1 представлено отношение график (ПИЛОТ РЕЙС ДАТА ВРЕМЯ-ВЫЛЕТА). Это отношение показывает, какой пилот участвует в данном рейсе в данный день и каково время вылета самолета. Не любое сочетание значений атрибутов ПИЛОТ, РЕЙС, ДАТА и ВРЕМЯ-ВЫЛЕТА допустимо в расписании. Здесь, в частности, накладываются следующие ограничения. 1. Для каждого рейса назначается только одно время вылета. 2. Для данного пилота, даты и времени вылета возможен только один рейс. 3. Для данного рейса и даты назначается только один пилот. L) От английского Functional. — Прим. перев. 2) От английского Multivalued и Join. — Прим. перев.
4.1. Определения 51 Таблица 4.1. Отношение график (ПИЛОТ РЕЙС ДАТА ВРЕМЯ-ВЫЛЕТА) (ПИЛОТ Кушинг Кушинг Кларк Кларк Кларк Чин Чин Коупли Коупли Коупли РЕЙС 83 116 281 301 83 83 116 281 281 412 ДАТА 9 авг. 10 авг. 8 авг. 12 авг. 11 авг. 13 авг. 12 авг. 9 авг. 13 авг. 15 авг. ВРЕМЯ-ВЫЛЕТА) 10 : 15 13 :25 5: 50 18:35 10 : 15 10 : 15 13 :25 5:50 5 : 50 13 :25 Эти ограничения являются примерами F-зависимостей. Нестрого говоря,- F-зависимость имеет место, когда значения кортежа на одном множестве атрибутов единственным образом определяют эти значения на другом множестве атрибутов. Указанные выше ограничения можно сформулировать так: 1. ВРЕМЯ функционально зависит от РЕЙСА. 2. РЕЙС функционально зависит от {ПИЛОТ, ДАТА, ВРЕМЯ}. 3. ПИЛОТ функционально зависит от {РЕЙС, ДАТА}. Обычно порядок в этих последовательностях изменяется и говорят, что РЕЙС, ДАТА функционально определяют ПИЛОТ, или, символически: {РЕЙС, ДАТА} ->- ПИЛОТ. (Напомним, что для одиночного атрибута допускается обозначение А вместо \А\.) Дадим строгое определение понятий, используя реляционные операторы. Пусть г — отношение со схемой R, X и Υ — подмножества R. Отношение г удовлетворяет функциональной зависимости X ->- Υ, если ηγ (οχ=χ (г)) имеет не более чем один кортеж для каждого Х-значения х. Один из способов интерпретировать это выражение — рассмотреть два кортежа tt и t2 в г. Если tx (X) = = t2 (X), то tx (Υ) = t2 (Υ). В F-зависимости Χ ->- Υ подмножество Χ называется левой частью, a Υ — правой частью. Такая интерпретация функциональной зависимости является основой алгоритма SATISFIES, приведенного ниже. Алгоритм 4.1. SATISFIES Вход: Отношение г и F-зависимость Χ ->- Υ. Выход: истина, если г удовлетворяет Χ ->- Υ, ложь — в противном случае. SATISFIES (r, X-+Y)\ 1. Пересортируем отношение г по Х-столбцам так, чтобы собрать кортежи с равными Х-значениями вместе.
52 Гл. 4. Функциональные зависимости Таблица 4.2. Результат применения алгоритма SATISFIES к отношению график из табл. 4.1 (ПИЛОТ Кушинг Кларк Чин Кушинг Чин Кларк Коупли Коупли Кларк Коупли РЕЙС 83 83 83 116 116 281 281 281 301 412 ДАТА 9 авг. 11 авг. 13 авг. 10 авг. 12 авг. 8 авг. 9 авг. 13 авг. 12 авг. 15 авг. ВРЕМЯ-ВЫЛЕТА) 10 : 15 10 : 15 10 : 15 13 :25 13 :25 5:50 5:50 5: 50 18 :35 13:25 Таблица 4.3. Результат применения алгоритма SATISFIES {график, ВРЕМЯ-ВЫЛЕТА ->- РЕЙС) (ПИЛОТ Кларк Коупли Коупли Кушинг Кларк Чин Кушинг Чин Коупли Кларк РЕЙС 281 281 281 83 83 83 116 116 412 301 ДАТА 8 авг. 9 авг. 13 авг. 9 авг. И авг. 13 авг. 10 авг. 12 авг. 15 авг. 12 авг. ВРЕМЯ-ВЫЛЕТА) 5: 50 5:50 5:50 10 : 15 10 : 15 10 : 15 13 :25 13 :25 13 :25 18: 35 2. Если каждая совокупность кортежей с равными Х-значе- ниями имеет также равные К-значения, то на выходе получаем истину, в противном случае — ложь. Этот алгоритм проверяет, удовлетворяет ли отношение г F-зависимости Χ ->- Y. В табл. 4.2 показан результат применения алгоритма SATISFIES {график, РЕЙС -^ ВРЕМЯ-ВЫЛЕТА) к отношению график из табл. 4.1. Таблицы разбиты на множества кортежей с равными значениями атрибута РЕЙС. Значения атрибута ВРЕМЯ-ВЫЛЕТА в каждом множестве одинаковые, следовательно, указанная F-зависимость удовлетворяется.
4.2., Аксиомы вывода 53 В табл. 4.3 показан результат применения алгоритма SATISFIES (график, ВРЕМЯ-ВЫЛЕТА -> РЕЙС). Существует множество кортежей с равными значениями атрибута ВРЕМЯ- ВЫЛЕТА, но с разными значениями атрибута РЕЙС, следовательно, эта F-зависимость не выполняется в отношении график. Надо рассмотреть еще два экстремальных случая, а именно X ->■ 0 и 0 ->- Y. F-зависимость Χ ->- 0 тривиально удовлетворяется любым отношением. F-зависимость 0 -> Υ удовлетворяется теми отношениями, в которых F-значения всех кортежей совпадают. В дальнейшем F-зависимости такого вида рассматриваться не будут. 4.2. АКСИОМЫ ВЫВОДА Для отношения г (R) в любой момент существует некоторое семейство F-зависимостей, которым это отношение удовлетворяет. Здесь возникает та же проблема, что и с ключами: одно состояние отношения может удовлетворять F-зависимости, а другое — нет. Требуется выявить семейство F-зависимостей F, которому удовлетворяют все допустимые состояния г. Чтобы найти F, необходимы семантические знания об отношении г. Поэтому можно считать семейство F-зависимостей заданным в схеме отношения R. В этом случае любое ^отношение г (R) должно удовлетворять всем F-зависимостям из F. Не всегда ясно, что является первичным: множество допустимых состояний отношения, которое определяет F-зависимости, или F-зависимости накладывают ограничения на схему отношения. Множество функциональных зависимостей, применимых к отношению г (R), конечно, так как существует только конечное число подмножеств множества R. Таким образом, всегда можно найти все F-зависимости, которым г удовлетворяет, перебрав все возможности с помощью алгоритма SATISFIES. Однако этот подход требует большого количества времени. Если известны некоторые F-зависимости из F, то часто можно вывести остальные. Множество F-зависимостей F влечет за собой F-зависимость X -+ Υ (обозначение: F \= X ->- Υ) х), если каждое отношение, удовлетворяющее всем зависимостям в F, удовлетворяет также зависимости X ->- Υ. Аксиома вывода — это правило, устанавливающее, что если отношение удовлетворяет определенным F-зависимостям, то оно должно удовлетворять и некоторым другим F-зависимостям. Теперь введем шесть аксиом вывода для F-зависимостей. В их формулировках используется обозначение г для отношения на R u W, Χ, Υ и Ζ — для подмножеств R. г) Говорят также, что X ->» Υ является логическим следствием F, или что Х-+ Υ следует из F. — Прим. ред.
54 Гл. 4. Функциональные зависимости F1. Рефлексивность. Отношение кх (σχ^χ (г)) всегда имеет не более одного кортежа, следовательно, X ->■ X всегда имеет место в г. F2. Пополнение. Эта аксиома имеет дело с расширением левой части F-зависимости. Если г удовлетворяет Х->- Υ, то πγ (σχ==χ (г)) имеет не более одного кортежа для любого Х-значения х. Если Ζ является любым подмножеством R, то θχΖ=χζ (г) < ох=х (г) и, следовательно, гсу (σχζ=χζ (ή) S яу (σχ=χ (г)). Таким образом, ηγ (θχΖ=χζ (/")) имеет самое большее один кортеж, и г должно удовлетворять F-зависимости ΧΖ ->- Υ. Пример 4.1. Рассмотрим отношение г, представленное ниже. Это отношение удовлетворяет F-зависимости Л ->- Ву и, следо- г{А «1 аг αϊ «3 В Ьх ь2 *1. ь3 С Cl С\ С\ сг D) dx dx d2 d3 вательно, F-зависимостям AB ->- β, AC-+B, AD ->- β, ЛБС->- -> β, Л5£> -* β, ЛС£> -^ β и Л5С£> -^ В в силу аксиомы F2. F3. Аддитивность. Эта аксиома позволяет объединить две F-зависимости с одинаковыми левыми частями. Если отношение г удовлетворяет X -+ Υ и X ->- Ζ, то обе проекции πγ (σχ^* (/*)) и πζ (σχ^Λ; (г)) имеют не более одного кортежа для любого Х-зна- чения х. Если бы отношение κΥΖ (θχ=χ (г)) имело более одного кортежа, то по крайней мере одно из отношений πγ (σχ==χ (ή) или πζ (οχ=χ (г)) имело бы более одного кортежа. Таким образом, г удовлетворяет F-зависимости Χ -»■ ΥΖ. Пример 4.2. Отношение г, представленное в примере 4.1, удовлетворяет Л ->- В и А -+■ С. По аксиоме F3 отношение г должно также удовлетворять Л ->■ ВС. F4. Проективность. Эта аксиома в некоторой степени обратна аксиоме аддитивности. Если г удовлетворяет X ->- ΥΖ, то κΥΖ (ох=х (г)) имеет не более одного кортежа для любого Х-зяа- чения х. Так как πγ(πΥΖ (σχ=χ (ή)) = πγ(σχ=χ (г)), то зху (σχ=χ (г)) также может иметь не более одного кортежа. Следовательно, г удовлетворяет X ->- Υ.
4.2. Аксиомы вывода 55 Пример 4.3. Отношение из примера 4.1 удовлетворяет А ->■ ->- ВС. Согласно аксиоме F4, отношение г должно также удовлетворять А ->- В и А ->- С. F5. Транзитивность. Эта и следующая аксиомы являются наиболее мощными из аксиом вывода. Пусть г удовлетворяет F-зависимостям Χ ->- У и Υ-* Ζ. Рассмотрим кортежи tx и t2 в г. Если <! (X) = f2 (X), то ^ (Г) = *2 (У), а из ίχ (Г) = ί2 (Υ) следует tt (Ζ) = t2 (Z). Таким образом, если ^ (X) = t2 (X), то ίχ (Ζ) = t2 (Ζ), τ. е. г удовлетворяет X ->■ Ζ. Пример 4,4. Отношение г, представленное ниже, удовлетворяет F-зависимостям Л -> В и β -> С. Как следует из аксиомы F5, отношение г удовлетворяет А -> С. г(А_ «1 а2 яз а4 Д *1 62 Αι Ъх С С2 С\ сг сг D) di d2 di d3 F6. Псевдотранзитивность. Пусть г удовлетворяет F-зависимостям X -> Υ и ΥΖ -> W, a tx и 4 являются кортежами в г. По условию если t± (X) = /2 W» то ^i (У) = ^2 (У)> и> аналогично, если t± (YZ)' = U (YZ)> то tx (W) = ia (W). Из ^ (XZ) = = t2 (XZ) получаем, что ίτ (Χ) = ί2 (Χ) χ), значит, по предыдущему ίτ (Υ) = t2 (Υ) и, кроме того, ί± (ΥΖ) = ί2 (ΥΖ), откуда следует, что tt (W) = t2 (W). Таким образом, г удовлетворяет XZ -> -* W. Итак, если W> X, У и Ζ являются подмножествами i?, то для любого отношения г со схемой R справедливы следующие аксиомы вывода: F1. Рефлексивность: X -> X. F2. Пополнение: X -> К влечет за собой XZ -> У. F3. Аддитивность; X -► К. и X -> Ζ влечет за собой X -> FZ. F4. Проективность: X -> ΥΖ влечет за собой X -> У. F5. Транзитивность: X -> У и Υ ->■ Ζ влечет за собой X -> Ζ. F6. Псевдотранзитивность: X -> Υ и ΥΖ -> W влечет за собой XZ-> W. г) А также /х (Z) = ^ (Z). — Прим. ред.
56 Гл. 4. Функциональные зависимости 4.3. ПРИМЕНЕНИЕ АКСИОМ ВЫВОДА Используя аксиомы Fl—F6, можно получить другие правила вывода для F-зависимостей. Пример 4.5. Пусть г — отношение со схемой /?, а X и Υ — подмножества R. Аксиома F1 утверждает, что г удовлетворяет Υ -ν Υ. Применяя аксиому F2, получим, что г удовлетворяет ΧΥ -у У. Другой способ установить это правило — убедиться, что г удовлетворяет X -> Υ для Υ ^ X ^ R. Пример 4.6. Пусть г — отношение со схемой R, а Χ, Υ и Ζ — подмножества R. Предположим, что /* удовлетворяет ΧΥ -> Ζ и X -> Υ. Согласно аксиоме F6, отношение г удовлетворяет XX -*■ -> Ζ, которая упрощается до X -> Ζ. Чтобы опровергнуть какое-либо утверждение относительно F-зависимостей, достаточно указать хотя бы одно отношение, которое не удовлетворяет этому утверждению. Пример 4.7. Опровергнем утверждение о том, что ΧΥ -> ZW влечет за собой X -> Ζ. Отношение г, представленное ниже, удовлетворяет АВ -> CD, но А -/> С: г (Л ΰ CD) a b с d а V с' d Некоторые аксиомы вывода могут быть получены из других. Например, транзитивность F5 является частным случаем псевдотранзитивности F6 при Ζ = 0. Аксиома F6 следует из Fl, F2, F3 и F5; если X -> Υ и YZ -^ W, то, как следствие F1, имеем Ζ-+ Ζ. Согласно F2, имеем ΧΖ -^ Υ и ΧΖ -> Ζ. Используя F3, получим ΧΖ-> ΥΖ. Наконец, применяя F5, получим ΧΖ -> W. В следующем разделе будет показано, что система аксиом Fl—F6 полна; это означает, что каждая F-зависимость, которая следует из множества F, может быть выведена путем одно- или многократного применения к F этих аксиом. Выше было доказано, что каждая аксиома выполняется в любом отношении. Поэтому применение аксиом к F-зависимостям из множества F может дать в результате только F-зависимости, которые следукЗт из F. Если даны аксиомы Fl, F2 и F6, то из них можно вывести остальные. Уже было показано, что F5 является частным случаем F6. Если даны X -> Υ и X -> Ζ, то используем F1, чтобы получить ΥΖ -> ΥΖ, и дважды применяем F6, получая сначала ΧΖ -+ -► ΥΖ, а затем X -> ΥΖ. Поэтому^ F3 следует из Fl, F2 и F6. Чтобы доказать F4, предположим, что Χ -^ ΥΖ. Из F1 имеем Υ -> Υ, а из F2 получаем ΥΖ -> Υ. Применение F6 дает X -> Υ.
4.4. Полнота системы аксиом вывода 57 Таким образом, аксиомы Fl, F2 и F6 составляют полное подмножество для F1—F6. Аксиомы Fl, F2 и F6 являются также независимыми: ни одна из этих аксиом не может быть получена из двух других (см. упр. 4.5). Эти три аксиомы называются иногда аксиомами Армстронга, хотя они не очень похожи на исходные аксиомы Армстронга (тем не менее это название общепринято). Пусть F — множество F-зависимостей для отношения г (R). Замыкание F, обозначаемое F+,— это наименьшее содержащее F множество, такое, что при применении к нему аксиом Армстронга нельзя получить ни одной F-зависимости, не принадлежащей F. Так как F+должно быть конечно, то можно вычислить его, начиная с F путем применения Fl, F2 и F6 и добавления полученных F-зависимостей к F до тех пор, пока не перестанут получаться новые зависимости. Замыкание F зависит от схемы R. Если R = АВ, то F+ всегда будут содержать В -> В. Когда R не определено явно, предполагается, что существует множество всех символов атрибутов, используемых в F-зависимостях из F. Из множества F можно вывести F-зависимость Χ -> Υ, если X -> Υ принадлежит F+. Так как аксиомы вывода порождают только функциональные зависимости, то F влечет за собой X -> Υ, если X -> Υ выводится из F. В следующем разделе доказывается обратное утверждение. Заметим, что F+ = (F+)+ (см. упр. 4.6). Пример 4.8. Пусть F = {АВ -► С, С -> В\ — множество F-зависимостей на г {ABC). F+ = \А -> А, АВ -> А, АС -> A, ABC -> ->Л, В->В, АВ->В, ВС-+В, АВС^В, С->С, АС -> С, ВС -> С, ABC -> С, АВ-> АВ, ABC -+ АВ, АС -> AC, ABC -> -> АС, ВС -+ ВС, ABC -> ВС, ABC -> ABC, АВ -+ С, АВ -> АС, АВ -> ВС, АВ -> ABC, С -> В, С -> ВС, АС -> В, АС -> ЛЯ}. В гл. 5 будут представлены более компактные способы представления F+. 4.4. ПОЛНОТА СИСТЕМЫ АКСИОМ ВЫВОДА Покажем, что с помощью аксиом Fl — F6 можно вывести все F-зависимости, которые влечет за собой множество F *). Другими словами, если F влечет за собой X -> Υ, то можно вывести X -> Υ из F. Чтобы доказать это утверждение, покажем, как построить для любого F отношение г, удовлетворяющее каждой F-зависимости из F+ и никаким другим. Определение 4.1. X -> Υ является F-зависимостью над схемой R, если X и Υ являются подмножествами R. Множество F х) В настоящем разделе во избежание нежелательных комбинаторных эффектов необходимо предположение о бесконечности всех доменов.
58 Гл. 4. Функциональные зависимости является множеством F-зависимостей над R, если каждая F-зави- симость из F является F-зависимостью над R. Определение 4.2. Если F является подмножеством F-зависимостей над R и О является множеством всех возможных F-зависимостей над R, то F~ = G — Ζ7"1". Множество F~ называется внешностью множества F. Определение 4.3. F-зависимость Χ -> Υ называется три· виальнойу если ХэГ. Если Χ ->■ Υ является тривиальной F-зависимостью над R, то любое отношение г (R) удовлетворяет Х-> Υ. Если F является множеством F-зависимостей над R и X является подмножеством R, то существует F-зависимость Χ -> Υ в F+, такая, что подмножество Υ максимально в том смысле, что F3Z для любой другой F-зависимости X -+ Ζ в F+. Этот результат следует из аксиомы аддитивности. Множество Υ называется замыканием X и обозначается Х+. Согласно рефлексивности, замыкание X всегда содержит X. Пример 4.9. Пусть F = {A-+D, AB-+DE, СЕ -► О, £-► -> Я}. Тогда (ЛВ)+ = ABDEH. Теорема 4.1. Система аксиом вывода Fl—F6 является полной. Доказательство. Для данного множества F-зависимостей F над схемой R и для любой F-зависимости Χ -+ Υ в F~ будет указано отношение г (R), которое удовлетворяет F*, но не удовлетворяет X -> Y. Отсюда ясно, что не существуют F-зависимости, которые следуют из F, но не выводятся.из F. Отношение г будет удовлетворять большинству F-зависимостей из F+ очевидным образом: для F-зависимости W-+Z в F+ не найдется различных кортежей в г с равными W-значениями. Пусть R = ΑλΑ2 ... Ап и at и bt — различные элементы домена (Лх), 1 <: i < п. Отношение г имеет только два кортежа t и f. Кортеж t равен {аха7> ... ап). Кортеж f определяется следующим образом: 4 ' I &i в противном случае. Сначала покажем, что г не удовлетворяет X -+ Υ. По определению г t(X) = f'PO· Предположим, что ί (F) = f (Y). Тогда элементами ί' (К) являются только ai9 следовательно, Υ s Χ*". Но, так как X -> Х+ ζ Ζ7*, то, согласно проективности, X -> Υ находится в F+, что противоречит условию X -> Υ ζ F~. Теперь покажем, что г удовлетворяет всем F-зависимостям в F*. Нужно рассмотреть только зависимости, имеющие вид
4.5. Выводы и направленные ациклические графы 59 W -> Z, где W с Х+: если Wm Х+, то / (IF) φ f (W). Так как W ^ Х+, то, согласно рефлексивности и проективности, Х+ -+ W находится в F+, и, дважды применяя транзитивность, получим X -> Z. Следовательно, Ζ ^ Х+ и ί (Ζ) = t' (Z). Таким образом, г удовлетворяет W ->■ Z. Следствие. Для любого множества F-зависимостей F над схемой R существует отношение г (R), удовлетворяющее F+ и нарушающее каждую F-зависимость в F'. (Такое г называется отношением Армстронга.) Доказательство. Для каждой F-зависимости Χ -> Υ в F~, используя теорему 4.1, построим отношение rXiY (R), удовлетворяющее F+f но нарушающее X-+Y. Переименуем входы в каждое такое отношение так, чтобы никакая пара отношений не имела общего входа. Пусть Г= U ГХ, γ. X+Y(ZF- Ясно, что г нарушает каждую F-зависимость в F". Читателю предлагается (самостоятельно) показать, что г удовлетворяет F+. Теперь очевидно, что система аксиом вывода Fl—F6 непротиворечива и полна. Таким образом, F \= Χ ->■ Υ тогда и только тогда, когда X ->■ Υ £ F+. Для вычисления F+ обычно используются только аксиомы Армстронга или какое-нибудь другое полное множество аксиом. 4.5. ВЫВОДЫ И НАПРАВЛЕННЫЕ АЦИКЛИЧЕСКИЕ ГРАФЫ ВЫВОДА Если F \= X -> Y, то либо X -> Υ содержится в F, либо X -> Υ можно получить путем последовательного применения аксиом вывода к F. Эта последовательность применений аксиом и полученные в результате F-зависимости называются выводом Χ ->■ Υ из F. Более строго, пусть F — множество F-зависимостей над схемой R. Последовательность Ρ F-зависимостей над R является последовательностью вывода на F, если каждая F-зависимость в Ρ либо (1) является членом F> либо (2) следует из' предыдущих F-зависимостей в Ρ после применения к ним одной из аксиом вывода F1—¥6.<Р является последовательностью вывода для Χ -+Υ, если X -> Υ является одной из F-зависимостей в Р. Пример 4.10. Пусть F = \АВ -> Е, AG-+J, BE-+ Ι, Ε-+ -> О, GI -ν Η\. Представленная ниже последовательность является последовательностью вывода для АВ -+ GH.
60 Гл. 4. Функциональные зависимости 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. АВ-+ Ε АВ-+ АВ АВ-+ В АВ-+ BE BE-* I АВ-+ I E^G AB^G AB^GI GI -+ Η АВ ^ Η GI -+GI GI -* I (дано) (рефлексивность) (проективность из 2) (аддитивность из 1 и 3) (дано) (транзитивность из 4 и 5) (дано) (транзитивность из 1 и 7) (аддитивность из 6 и 8) (дано) (транзитивность из 9 и 10) (рефлексивность) (проективность из 12) 14. АВ -> GH (аддитивность из 8 и И) Эта последовательность содержит ненужные (излишние) F-за- висимости, такие, как 12 и 13, и является также последовательностью вывода для других F-зависимостей, например АВ -> GI. Определение 4.4. Пусть Ρ — последовательность вывода на F. Используемым множеством в Ρ называется множество всех F-зависимостей из F, принадлежащих Р. Ранее было показано, что некоторые подмножества системы аксиом Fl—F6 также являются полными. Их полнота означает, что если существует последовательность вывода Ρ для X —ν Υ, использующая все аксиомы Fl—F6, то существует последовательность вывода Р' для X -> Υ, использующая только аксиомы, входящие в полное множество (см. упр. 4.10). Будет использоваться также полное множество аксиом вывода, которое не является подмножеством Fl—F6; эти аксиомы называются В-аксиомами. Для отношения г (R), подмножества W, X, Υ и Ζ, схемы R и атрибута С в R имеем 81. Рефлексивность: X -> X. 82. Накопление: X -> Υ Ζ и Ζ -> CW влечет Χ -> YZC. 83. Проективность: X ->► Υ Ζ влечет Χ -> Υ. Легко показать, что В-аксиомы корректны (см. упр. 4.11). Покажем, что аксиомы Армстронга выводятся из В-аксиом. Следствием этого является полнота системы В-аксиом. F1. Рефлексивность: совпадает с В1. F2. Пополнение: если X -> Υ, то ΧΖ -+ ΧΖ в силу В1 для подмножества Ζ в R.применяя В2 столько раз, сколько элементов в Υ> получим ΧΖ -* ΧΥΖ, а соответствующее применение ВЗ дает ΧΖ -> W.
4.5. Выводы и направленные ациклические графы 61 ■ F3. Псевдотранзитивность: пусть г удовлетворяет X -> Υ к YZ-> W. Из В1 получаем ΧΖ -> ΧΖ. Последовательное применение В2 дает ΧΖ -> ΧΥΖ и ΧΖ -> WXYZ. Одно применение ВЗ дает ΧΖ -> W. Так как система В-аксиом полна, всегда можно найти последовательность вывода, использующую В-аксиомы при F \= X -> У. Пример 4.11. Пусть F — такое же множество F-зависимостей, как в примере 4.10. Тогда 1. El -> El (рефлексивность) 2. Ε -> G (дано) 3. El -> EGI (накопление из 1 и 2) 4. El -> Gl (проективность из 3) 5. Gl -> Я (дано) 6. Я/ -> GHI (накопление из 4 и 5) 7. Я/ -> G# (проективность из 6) 8. АВ -> ЛБ (рефлексивность) 9. АВ -> Ε (дано) 10. Л5 -> Л5£ (накопление из 8 и 9) И. ВЕ-> I (дано) 12. ЛЯ -> Л££7 (накопление из 10 и И) 13. АВ -> ABEGI (накопление из 4 и 12) 14. АВ -> ABEGHI (накопление из 7 и 13) 15. АВ -> G# (проективность из 14) является последовательностью вывода для АВ -> GH', использующей только В-аксиомы. 4.5.1. RAP-последовательности вывода1) Рассмотрим последовательности вывода для X -> 7 из множества F-зависимостей Z7 при помощи В-аксиом, которые удовлетворяют следующим условиям: 1. Первая F-зависимость — это X -> X. 2. Последняя F-зависимость — это X -+ Y. 3. Каждая F-зависимость, отличающаяся от первой или последней, либо принадлежит F, либо имеет вид X -> Ζ и получена с помощью аксиомы В2. Такая последовательность вывода называется RAP-последова- тельностью вывода. х) По первым буквам названия В-аксиом: Reflexivity, Accumulation, Project! vity. — Прим. tie pee.
62 Гл. 4. Функциональные зависимости Пример 4.12. Пусть F то же множество F-зависимостей, что и в примере 4.10. Тогда 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. АВ-+ АВ АВ-+ Ε АВ -> ABE ВЕ-+ I АВ-+ ABEI E-+G АВ -* ABEGI GI -+ Η АВ -> ABEGHJ AB-+GH (В1) (дано) (В2) (дано) (В2) (дано) (В2) (дано) (В2) (ВЗ) является RAP-последовательностью вывода из F для АВ -> GH. Теорема 4.2. Пусть F — множество F-зависимостей. Если существует последовательность вывода из F для X -> У, то существует RAP-последовательность вывода из F для X -> Y. Доказательство. Пусть Ρ — последовательность вывода из F для X -> У, использующая В-аксиомы, которая должна существовать согласно предыдущим замечаниям. Удалим из Ρ все F-зависимости, стоящие после первого появления X -> У. Ρ все еще остается последовательностью вывода для X -> У. Поставим зависимость X -> X в начало этой последовательности, если ее там еще нет. Далее покажем, что можно получить F-зависимость в Ρ без F-зависимостей, образованных с помощью ВЗ, за исключением, возможно, X -> Υ. Пусть Ζ -> W есть F-зависимость в Ρ (отличная от последней), выведенная из Ζ -> VW с помощью ВЗ. Если Ζ -> W не используется далее в выводе какой-либо зависимости в Р, то Ζ -> И? просто удаляется из Я. Если же Ζ -> И? используется в дальнейшем для вывода какой- нибудь зависимости, то должно иметь место применение В2 или ВЗ. Если к Ζ -> W применяется ВЗ, то должна получаться F-зависимость Ζ-> W, где W ^ W. Но Ζ -> ЦТ может быть выведена с помощью ВЗ из Ζ -> У№, так что Ζ-> W может быть удалена из Р. Если к Ζ -> W применяется В2, то должны существовать два пути: 1. С помощью F-зависимости W -> CU вывести Z->CW, где W <= W, или же 2. С помощью F-зависимости U -> Z' вывести U -> BZ', где Ζ' з Ζ и β является атрибутом в №. В первом случае для вывода Ζ -> СУП? вместо Ζ-> CW используем Ζ -> VW, а не Ζ -> Ψ. Во втором случае для вывода U ->
4.5. Выводы и направленные ациклические графы 63 -* BZ' можно использовать Ζ -> VW вместо Ζ -> W. В любом случае удаляем Ζ -> ^ из Я. Уже показано, что можно подставить F-зависимость с большей правой частью в вывод, использующий В-аксиомы. Единственным результатом этой подстановки является возможность получить F-зависимость с большей правой частью, чем в первоначально полученной F-зависимости, как, например, в случае 1, представленном выше, где Z->CVW заменила Z-+CW. Эта замена является как раз другой подстановкой F-зависимости с большей правой частью. Таким образом, подстановка F-зависи- мостей с большими правыми частями может осуществляться по всей последовательности вывода. Единственной проблемой, которая может возникнуть из-за такой подстановки, является то, что зависимость X -> Υ\ Υ' з Υ могла бы быть получена как последняя зависимость в Ρ вместо X -> Υ, если бы X -> Υ была выведена с помощью В2. В этом случае добавляем X -> Υ в качестве новой последней F-зависимости в Р. Зависимость X -> Υ может быть выведена из X -> Υ' с помощью ВЗ. Сейчас Ρ находится в следующем состоянии: начинается с X -> -> X, кончается X -> Υ и не имеет ни одной F-зависимости, выведенной с помощью ВЗ, за исключением, возможно, последней. Следующим шагом нужно показать, что X -> Υ может быть выведена только с помощью аксиомы В2 (за исключением первой и последней F-зависимостей в Р), примененной к F-зависимостям вида X -> ZW и W -> CV, где W -> CV принадлежит F. Таким образом, любые F-зависимости в Р, выведенные с помощью аксиомы о рефлексивности, излишни (за исключением первой) и могут быть удалены. Эту часть доказательства предлагается читателю сделать самому, а для иллюстрации только приводится пример. Суть доказательства заключается в том, что если в правую часть X -> Ζ вводится новый атрибут с помощью В2, то он может быть введен прямо из какой-нибудь последовательности, принадлежащей F. Однако поначалу может возникнуть необходимость добавить другие атрибуты в правую часть. Рассмотрим следующий фрагмент последовательности вывода, где А вводится в правую часть F-зависимости X -> VV: 10. Х-> VV И. Z-> AW (дано) 12. V-> UZ (дано, по В1 или В2)
64 Гл. 4. Функциональные зависимости 13. V -> AUZ (из И и 12 по В2) 14. X -> AVV (из 10 и 13 по В2) Хотелось бы избавиться от V -> >ίί7Ζ и вместо того, чтобы вводить А в правую часть какой-нибудь F-зависимости с левой частью X, использовать непосредственно Ζ -> A W. Пусть Ζ = ВгВ2 ... Bh. Зависимости 13 и 14 заменим следующими: 13.1 X -> VV,B1 (из 10 и 12 по В2) 13.2 X -> УУВгВъ (из 10 и 12 по В2) 13.3 Х-> VV'B^Bs (из 10 и 12 по В2) 13.к Χ-+νν'ΒτΒ2 ... Bk (из 10 и 12 по В2) (= X -> WZ) 14. Х-> 4WZ (из И и 13. к по В2) Эта замена дает нам X -> A VV Ζ вместо X -> Л У У', а выше уже было показано, что подстановка F-зависимостей с большими правыми частями не доставляет никаких хлопот. Основная идея этой части доказательства заключается в просмотре Ρ в обратном направлении и удалении результатов применения В2, приводящих к F-зависимостям с левой частью, не равной X, как это показано в данном примере. После этого преобразования все результаты применения В1, за исключением первого, становятся излишними и могут быть удалены (см. упр. 4.14). В следующем разделе будет введен геометрический способ описания RAP-последовательности вывода — помеченный направленный ациклический граф. Будет также показано, что каждый такой граф моделирует последовательность вывода, ν 4.5.2. Ориентированные ациклические графы вывода Ориентированный ациклический граф (DA-граф1))—это ориентированный граф, не имеющий циклов ни в одной вершине. Помеченный DA-граф — это DA-граф, каждой вершине которого поставлен в соответствие некоторый элемент из множества меток L. г) От английского Directed Acyclic. — Прим. перев.
4.5. Выводы и направленные ациклические графы 65 Определение 4.5. Пусть F — множество F-зависимостей над схемой R. ΌΔ-граф вывода над F — это ориентированный ациклический граф, помеченный символами атрибутов из R и построенный по следующим правилам: R1. Любое множество изолированных вершин с метками из R является DA-графом вывода над F. R2. Пусть Я есть DA-граф вывода над F, содержащий вершины^, ν2, ..., vk с метками Аъ А2, ..., Ак, и Аъ А2, ..., Ak ->■ ->· CZ есть F-зависимость в F. Построим Н\ добавив к Я вершину и, помеченную С, и дуги (vx, и), (v2, и), ..., (vft, и), Я' является DA-графом вывода над F. R3. Никакой другой граф не является DA-графом вывода над F. В дальнейшем DA-граф вывода над F будет называться DDA- графомг) над F. Пример 4.13. Пусть F — множество F-зависимостей из примера 4.10, а именно \АВ -* Е, AG-+-J, BE-+I, Ε ->· G> G/-* -> Я}. На рис. 4.1 Представлены разные этапы построения DDA- графа над F. Любой DDA-граф над F строится с помощью однократного применения правила R1 и некоторого числа применений правила s R2. Правило R2 гарантирует получение именно DA-графа. Определение 4.6. Если Я есть DDA-граф надето вершина ν в Я называется начальной вершиной, если ν не имеет никаких входящих в нее дуг. Любую начальную вершину следует добавлять к Я с помощью правила R1. Определение 4.7. Пусть Я есть DDA-граф над F. Граф Я называется DDA-графом для Χ—>Υ, если: D1. X является множеством меток начальных вершин. D2. Каждый атрибут в Υ является меткой какой-нибудь вершины в Я. Определение 4.8. Используемым ^множеством DDA-графа Я над F (обозначение U (Я)) называется множество всех F-зависимостей в F, использованных при применении правила R2 во время построения DDA-графа2). 2) От английского Derivation Directed Acyclic. — Прим. персе. 2) Определение используемого множества не достаточно хорошее, так как для некоторых множеств F может существовать несколько способов построения Я. На самом деле мы должны были бы писать используемое множество а графа Я, но мы этого не придерживаемся.
66 Гл. 4. Функциональные зависимости правило /?1 Применение правила R2 Применение правила /?2 Ε -— G Применение правила R2 ΒΕ-+Ι и GI — Η Пример 4.14. Граф на рис. 4.1—это DDA-граф над F для АВ ->- GH. Его используемым множеством является \АВ ->- £, £ ->- G, β£ ->- /, GI -* Н\. Начальные вершины — это вершины с метками А и В. Пример 4.15. На рис. 4.2 представлен DDA-граф для АВС-+ ->- ABC для любого множества функциональных зависимостей над схемой R, содержащий Л, β и С. Его используемое множество пусто (0). Замечание. Пусть Я есть DDA-граф над F, метки начальных вершин которого составляют множество^ атрибутов X, а метки
4.5. Выводы и направленные ациклические графы 67 Θ Θ Θ Рис. 4.2. остальных вершин составляют множество У. Если У является подмножеством У, то Я является DDA-графом для X-* Υ'. Теорема 4.3. Для данного множества1?-зависимостей F над R и ^-зависимости X ->- У следующие утверждения эквивалентны: 1. F\= X-+ У. 2. Существует последовательность вывода на F для X -*■ Y. 3. Существует DDA-граф над F для X ->- У. Доказательство. Уже отмечалось, что из теоремы 4.1 следует эквивалентность утверждений 1 и 2. В силу теоремы 4.2 условие 2 — это по существу утверждение существования RAP- последовательности вывода для X —у Υ на F. Покажем, что можно построить DDA-граф над F для X ->■ У, если дана RAP-последо- вательность вывода для X -> У, и наоборот. Существует естественное соответствие между В-аксиомами, правилами построения DDA-графа над F и условиями определения DDA-графа над F для X -> У. Аксиома В1 соответствует правилу R1 построения DDA-графов. Аксиома В2 соответствует правилу R2. Аксиома ВЗ содержится в условии D2 определения DDA- графа для X ->- У. Пусть Ρ есть RAP-последовательность вывода для X ->■ У над F. Для того чтобы иметь X в левой части, допустим, что все F-зависимости в F имеют вид X ->- Zlf X -+ Z2f ..., X -+ Zk. Докажем по индукции, что можно построить последовательность #ι, #2, ..., Hh DDA-графов над F, такую, что Ht получается из Яг_! по правилам построения DDA-графов и Ht является DDA- графом для X -+ Zt. Понятно, что X ->■ Ζλ должно быть X -> X. Для построения DDA-графа #ь состоящего из изолированных вершин без связей, помеченных атрибутами из X, воспользуемся правилом R1. Предположим, что Яь Я2, ..., HU1 суть DDA-графы для X -*■ Zl9 X ->■ Ζ2, ..., Χ -> Ζι_χ. Рассмотрим X ->■ Zf. Эта F-зависимость может быть получена одним из трех способов;
68 Гл. 4. Функциональные зависимости 1. Непосредственно из F. 2. Из F-зависимостей X->Z7· hZ-> CW с помощью аксиомы В2. В этом случае / < i, Z->- CW принадлежит F, Zj содержит Ζ и Zi = CZj. 3. Из F-зависимости Χ ->■ Ζ7· с помощью аксиомы ВЗ. В этом случае / < i, Zj содержит Zt и Zt = Υ. В случае 1 положим Zt = ВгВ2 ... Вт. Тогда DDA-граф Я^_х содержит DDA-граф Н±. Применим правило 2 к Н^ по одному разу для каждого атрибута в Zt (всего т раз), для того чтобы добавить вершины, помеченные Blf B2i ..., Вт, и дуги, ведущие к этим вершинам из вершин, помеченных атрибутами из X. В результате получится Ht. В случае 2 известно, что Н^ содержит Hj, a Hj содержит вершины, помеченные атрибутами из Zj. Чтобы получить Ht, добавив к Н^х вершину с меткой с, воспользуемся правилом 2. В случае 3 Hj уже является DDA-графом для X ->- ->- Zj, а так как Нь_х содержит Hj, то и #f_t является DDA-графом. Положим Ht = Hi^. После завершения построения всех Ht граф Hk будет DDA-графом над F для X -+ Υ. Пусть теперь Я есть DDA-граф над F для X ->■ Y. Построим RAP-последовательность вывода из Я. Будем полагать, что Яь Я2, ..., Я^ — последовательность DDA-графов над F, такая, что Hi построен из Ни1 по правилу R2, 2 < i < k, и Я^ = Я. Пусть Zj — это множество, помечающее вершины в Яг. Построим RAP- последовательность вывода Ρ с подпоследовательностями X ->- Zb X —>- Ζ2, ..., Χ —>■ Ζ^. Множество Zx должно быть X, а Ях должно быть DDA-графом с изолированными вершинами, помеченными атрибутами из X. Пусть Ρ начинается с X -> X = X ->- Ζ±. Теперь рассмотрим Ht при i < 2. Я^ получается из Н(_± по правилу 2 с использованием F-зависимости Ζ ->- CW из Ζ7, где С является помеченной вершиной, добавленной к Яг_ь а Zj_x содержит Ζ. Таким образом, Zj = CZi_i. Если Z-^CUP не принадлежит Р, то добавим ее в конец Р. Затем добавим X ->- Zj в конец Р. Зависимость X ->- Zf может быть получена с помощью аксиомы В2, если использовать X -> Ziel и Z-+CW. По окончании этого процесса получаем RAP-последовательность вывода для X ->- Zfe, где Z& содержит Υ. Добавим Χ ->Υ в конец Р, используя аксиому ВЗ. Теперь Ρ является RAP-no- следовательностью вывода для X -> Υ. Следствие. DDA-граф Я над F для X -+ Υ с U (Я) = G существует только тогда, когда существует RAP-последовательность вывода на F для X ->- Υ с используемым множеством G. Доказательство непосредственно следует из доказательства теоремы 4.3. (Почему условие следствия не является достаточным?)
4.5. Выводы и направленные ациклические графы 69 Пример 4.16. DDA-граф над F, представленный на рис. 4.1 .(d), может быть построен из RAP-последовательности вывода, содержащейся в примере 4.12. Последовательность DDA-графов на рис. 4.1. (а—d) содержит RAP-последовательность вывода: 1. АВ-+АВ 2. АВ-+Е 3. АВ^ ABE 4. E-+G 5. АВ -+ ABEG 6. BE -+ I 7. АВ -> ABEG1 8. GI-+H 9. АВ -+ ABEGH1 10. АВ -+ GH. 4.5.3. Еще о DDA-графах Аксиома В2 и правило R2 могут быть усилены одним и тем же способом. Усиленный вариант В2 можно представить в следующем виде: В2\ Из X -> YZ и Ζ -> VW следует X -> VYZ, где V также является подмножеством множества R. Читателю предлагается самостоятельно сделать соответствующее изменение правила (см. упр. 4.18). Несмотря на то что определение DDA-графа допускает наличие вершин с одинаковыми метками, необходимости воспользоваться этим не возникнет, о чем свидетельствует следующая лемма· Лемма 4.1. Предположим^ что существует DDA-граф над F для X -> Υ. Тогда существует DDA-граф над F, вершины которого имеют различные метки. Доказательство. Предположим, что Я имеет две вершины νχ и ν2 с одной и той же меткой С. При построении Я обе эти вершины были добавлены одновременно с помощью правила R1 или одна позже другой — с помощью правила R2. Предположим, что ν2 была добавлена к Я одновременно с ν± или после νχ. Тогда прямого пути от ν2 к vi в Я нет. Сколько бы раз при построении Я правило R2 ни применялось с использованием v2, вершину vx всегда можно использовать вместо v2, как это показано на рис. 4.3. Таким образом, существует DDA-граф Я' над F для X -> Y, имеющий те же вершины и метки, что и Я, и то же множество начальных вершин, но v2 не имеет в И' ни одной выходящей дуги. Граф Я' останется DDA-графом для Χ ~> Υ и в том случае, если удалить ν3 и входящие в нее дуги,
70 Гл. 4. Функциональные зависимости DDA-граф К, полученный путем склеивания графов //и J id Рис. 4.3. так как множество атрибутов, помечающих вершины, не изменится, и если v2 является начальной вершиной, то начальной вершиной будет и v1# Чтобы удалить все повторяющиеся метки, это преобразование можно итеративно применить ко всем парам вершин с одинаковыми метками. Ранее было показано, что если Я является DDA-графом над F для X -+■ У, то он же является DDA-графом над F и для X ->- Υ', где Υ э Υ'. Аналогично если X ^ Х\ то Я почти является DDA- графом для X' ->- Υ. Единственная проблема заключается в том, что не каждый атрибут из X' служит меткой некоторой начальной вершины в Я. Эту проблему можно разрешить путем добавления к Я изолированных вершин с метками из X'—X. Лемма 4.2. Пусть Η и J суть DDA-графы над F для X -> Υ и Υ -+ Ζ соответственно. Существует DDA-граф К над F для Χ-+Ζ с U (Я) с= и (Я) U U (J). Доказательство. Склеим графы Я и J, совмещая начальные вершины графа J с одноименными вершинами графа Я. На рис. 4.4 приведен пример склейки, где F = \А -> Е, АВ ->- С, AC -+D, CD -* Ε, Е-+ 1\. Заметим, что U (Я) = {А-+Е, АВ -> С,
4.6. Проверка принадлежности к F+ 71 Исходный граф Η Использование νλ вместо ν2 (а) (В) Рис. 4.4. Лемма 4.3. Если Я является DDA-графом над F для X ->· У, α V -> № содержится в U (Я), mo F |= X ->- У. Доказательство. Чтобы при построении Я можно было ис пользовать V -+ Ψ, Η должен содержать вершины с метками каждого атрибута из У. Отсюда следует, что Я является DDA-графом над F для X -> V. Следствие. Если Я является DDA-графом над F для X ->- У, а V -> W находится в U (Я), то существует DDA-граф над F для X ->- У, в котором не используется V -> W. Для последовательностей вывода лемма 4.3 неприменима, так как V ->- W может находиться в используемом множестве последовательности и не использоваться в выводе X ->- У. 4.6. ПРОВЕРКА ПРИНАДЛЕЖНОСТИ К F+ Чтобы определить, влечет ли множество F зависимость X -*■ У, достаточно проверить, принадлежит ли X-+■ Υ к F+. Однако, как показано в примере 4.8, F+ может быть значительно больше, чем F. Желательно найти способ проверки принадлежности X ->· У к F+ без построения всех зависимостей из F . Такой алгоритм будет представлен в этом разделе. Ядром алгоритма является процедура построения замыкания X над F. После того как найдено Х+, можно проверить, следует ли зависимость X ->■ У из F.
72 Гл. 4. Функциональные зависимости Нужно найти алгоритм проверки принадлежности, более эффективный, чем построение всех зависимостей в F+. Одним из способов сравнения алгоритмов является подсчет максимального количества времени, затрачиваемого при вводе величины заданной размерности. Сложность алгоритма по времени является функцией Τ (η)у показывающей максимальное число шагов, которое нужно сделать алгоритму, чтобы ввести величину размерности я. Естественно, Τ (η) зависит от того, что считать шагом при подсчете. В дальнейших расчетах будет использоваться RAM-модельх), предложенная Ахо, Хопкрофтом и Ульманом, RAM по существу является моделью простой вычислительной машины, имеющей память с произвольным доступом. Что касается искомого алгоритма, то Τ (η) может быть неупорядоченной (хаотической) и сложной функцией, но часто можно найти «хорошую» функцию, аппроксимирующую Τ (η). Обозначим Τ (η) = О (/ (η)) (читается «Τ (η) имеет порядок / (я)»), если существуют константы с > 0 и пг ^ 0, такие, что Τ (η) < < cf (η) для всех п ^ %. Пример 4Л7. Зп2 + 2 log2 log2 η = 0 (η2), так как Зп2 + + 2 log2 log2 η < 4я2 для η ^ 1. Конечно, справедливо и Зп2 + + 2 log2 log2 η — О (η8), но нас интересует наиболее медленно возрастающая функция, так как она лучше аппроксимирует Зп2 + 2 log2 log2 /г. Для большинства алгоритмов их сложность по времени Τ (η) по меньшей мере порядка О (п), так как почти все они считывают все свои входы, что требует η шагов. Сначала представим алгоритм проверки принадлежности для F-зависимостей, сложность которого не имеет порядок О (п)> но который прост для понимания. Затем будет представлена более сложная версия этого алгоритма, сложность которого по времени (также) порядка О (п). Начнем с функции CLOSURE (X, F), которая дает на выходе Х+ над F, где X — множество атрибутов, a F — множество F-зависимостей. OLDDEP и NEWDEP — переменные для множества атрибутов. Алгоритм 4.2. CLOSURE Вход: Множество атрибутов X и множество F-зависимостей F. Выход: Замыкание X над F. *) Аббревиатура от Random Acces Machine. — Прим. перев*
4.6. Проверка принадлежности к F+ 73 CLOSURE(X,F) begin OLDDEP: = 0; NEWDEP: = X; while NEWDEP φ OLDDEP do begin OLDDEP: = NEWDEP; for каждая F-зависимость W ->- Ζ в F do if NEWDEP ^W then NEWDEP: = NEWDEP [) Ζ end; return (NEWDEP) end. Пример 4.18. Пусть F={i4-*D, AB-+E, BI-+Ε, CD -+ -+ I, E-+C). CLOSURE (AE, F) начинается с NEWDEP = AE. При первом проходе по F A -+ D используется для добавления D к NEWDEP у аЕ -+ С используется для добавления С к NEWDEP; таким образом, NEWDEP = А С D Ε в конце цикла for. При втором проходе по F CD -+ I используется для добавления / к NEWDEP, так что в конце этого цикла NEWDEP = A CD Ε I. Еще один проход по F не вызвал бы никаких изменений в NEWDEP, таким образом, А С D Ε Ι на выходе есть (А Е)+. Этот алгоритм действительно строит DDA-граф над F для Х-^Х+, используя модифицированную версию правила IJ2 в определении DDA-графа. При этом за один проход добавляется более чем одна вершина (см. упр. 4.18). Начнем с начальных вершин, помеченных X, и будем добавлять вершины к DDA-графу до тех пор, пока можно добавлять новые метки. Нет необходимости запоминать дуги этого графа, так как возможность использования W -+■ Ζ зависит только от того, помечены ли вершины DDA-графа метками всех атрибутов из W. Значение Х+ зависит не от дуг DDA-графа, а от окончательного множества меток для вершин. Итак, при построении DDA-графа достаточно следить только за множеством меток для его вершин. Мы следим за метками в OLDDEP и NEWDEP. Так как DDA-граф над F строится с начальными вершинами, помеченными X, то NEWDEP ^ Х+ в любой момент выполнения процедуры CLOSURE. Любой атрибут А в Х+ может быть добавлен к NEWDEP. Поскольку А находится в Х+, F \= X -*- А и должен существовать DDA-граф Η над F для Х-+А. Любая F-зависимость W ->- Ζ, используемая для построения Я, может в принципе быть использована и при построении DDA-графа по этому алгоритму, причем DDA-граф в алгоритме будет содержать метки для каждого атрибута в Ζ. Следовательно, А добавится к NEWDEP, из чего вытекает, что алгоритм CLOSURE корректно вычисляет Х+,
74 Гл. 4. Функциональные зависимости Используя CLOSURE легко построить алгоритм проверки принадлежности к F+. Эту проверку осуществляет алгоритм 4 3 MEMBER. Алгоритм 4.3. MEMBER Вход: Множество F-зависимостей F и F-зависимость Χ ->· У. Выход: истина, если F (= X ->- У, лоя/еь в противном случае. MEMBER (F, X-+Y) begin if Г ^ CLOSURE (X, F) then return (истина) else return (ложь) end Сложность алгоритма MEMBER по времени та же, что и для CLOSURE, так как CLOSURE составляет тело алгоритма MEMBER. Наихудшая ситуация для CLOSURE складывается тогда, когда только одна новая правая часть F-зависимости добавляется к NEWDEP при каждом выполнении цикла for. Если F = |Л2 ->■ Alf As-+ A2f ..., Ат-+ Лт_!}, то во время вычисления по алгоритму CLOSURE (Ат, F) к NEWDEP при i-м выполнении цикла for прибавится только атрибут Лт-1. Если а является числом различных символов атрибутов в F, а ρ — числом F-зависимостей в F, то каждое выполнение цикла for занимает время порядка О (ар), так как для проверки содержимого двух множеств над а элементами необходимо сделать а шагов. Прежде чем произойдут какие-либо изменения в NEWDEP, можно ρ раз реализовать цикл while. Таким образом, сложность алгоритма CLOSURE по времени есть О (ар2), та же, что и у MEMBER. Заметим, что левая часть входа η есть О (ар) (см. упр. 4.21). Посмотрим, что можно сделать для уменьшения сложности алгоритма CLOSURE по времени. Заметим, что если во время работы этого алгоритма W содержится в NEWDEP (для некоторой F-зависимости W -*- Z), то Ζ добавляется к NEWDEP и W -*- Ζ больше не используется. В этой точке можно исключить W -»■ Ζ из Ζ7 и далее вычислять корректное замыкание. Исключая F-зависимости из F после того, как их правые части уже добавлены к NEWDEP, можно уменьшить число F-зависимостей, которые необходимо обработать при каждом выполнении цикла for. Можно сэкономить даже больше времени, если знать, для каких зависимостей из F левые части постоянно содержатся в NEWDEP. Если такая информация имеется, то можно рассматривать F-зависимость W -»■ Ζ в F только тогда, когда ее левая часть содержится в NEWDEP, а затем удалять ее из последующего рассмотрения. Таким образом, каждая зависимость в F может быть рассмотрена
4.6. Проверка принадлежности к Ь+ 76 только один раз. Если время обработки каждой F-зависимости в F считать пропорциональным качеству символов атрибутов в ней, то можно получить алгоритм проверки принадлежности, занимающий время порядка О (п), где η — число символов, необходимое для представления F и X ->■ Υ. Этот алгоритм можно построить следующим образом. Для каждой F-зависимости W -> Ζ в F будем следить только за числом атрибутов W, которых нет в NEWDEP. Когда это число становится равным нулю, надо рассмотреть W ->- Ζ. Чтобы понизить показатели счетчиков для каждой зависимости при добавлении нового атрибута А к NEWDEP, необходимо извлечь все F-зависимости, содержащие А в левой части. В результате в памяти организуется несколько списков — по одному для каждого атрибута, в которые входят те зависимости из F, которые содержат этот атрибут в левой части. Как только какой-либо атрибут добавляется к NEWDEP, список этого атрибута пересматривается и все входящие в него F-зависимости уменьшают свои счетчики на 1. Если счетчик какой-нибудь F-зависимости W ->- Ζ становится равным нулю, то остановится подмножеством NEWDEP, a Z добавляется к NEWDEP. Добавлять Ζ к NEWDEP следует осторожно. Предположим, что существует атрибут А в W, который уже содержится в NEWDEP. Если еще раз пересмотреть список для Л, то получатся неверные значения счетчиков F-зависимостей, входящих в этот список. Чтобы этого не случилось, образуем множество атрибутов, называемое UPDATE, которое является подмножеством NEWDEP, состоящим из тех атрибутов, для которых список еще не пересматривался. Когда атрибут добавляется к NEWDEP в первый раз, он также добавляется к UPDATE перед тем, как его список пересматривается. UPDATE позволяет уничтожить OLDDEP, так как если UPDATE = 0, то не существует больше ни одной /^-зависимости, с помощью которой можно было бы добавить новые атрибуты к NEWDEP. В алгоритме LINCLOSURE, представленном ниже, существует массив COUNT целых чисел, содержащий счетчики для каждой F-зависимости в F, и массив LIST списков F-зависимостей для каждого символа атрибутов в F. Если какая-то F-зависимость может оказаться в списках более одного атрибута, то на самом деле хранится только одна копия этой F-зависимости, а также списки, содержащие ссылки на эту копию. Алгоритм 4.4. Функция LINCLOSURE Вход и выход такие же, как в алгоритме 4.2 CLOSURE.
76 Гл. 4. Функциональные зависимости LINCLOSURE(X,F) 1. Инициализация for каждая F-зависимость №->Z в F do begin COUNT[W-+Z]:=\W\; for каждый атрибут Л в W do добавить W—>Z к L/STU]. end; NEWDEP:=X; UPDATE:=X 2. Вычисление while ΌΡΌΑΎΕΦ0 do begin выбираем Л в UPDATE; UPDATE: = ί/PDА ТЕ—А; for каждая F-зависимость №->-Z в L/STM] do begin COUNTlW-+Z):=COUNT[W-+Z]—l; if COt/iVr[H7-^Z]=0 then begin ADD:=Z— NEWDEP; NEWDEP: = NEWDEP [) ADD; UPDATE: = UPDA ТЕ [) ADD end end end 3. return (NEWDEP). Пример 4.19. Пусть F такое же множество зависимостей, как в примере 4.18. LINCLOSURE (AE, F) инициализирует NEWDEP, UPDATE, COUNT и LIST следующим образом: NEWDEP = AE UPDATE = AE LIST [A] = A^D, AB-+E COUNT [Л-» D ] = 1 LIST [β] = ΒΙ^ Ε, ΑΒ-+Ε COUNT [AB -+■ E] = 2 L/S74C] = CD^/ COUNT Ш/-+Я1 = 2 L/ST [D ] = CD -> / COt/JVT [CD -+■ / ] = 2 LIST [E\ = E-+C COUNT IE-+C] = 1 L/ST [/] = β/->»£ Мы извлекаем Л из UPDATE и пересматриваем L/ST [Л]. COUNT [A-+D] становится равным нулю, и D добавляется к NEWDEP и UPDATE. COUNT [AB-+E] становится равным 1. Если далее извлечем Ε из UPDATE, то результат станет NEWDEP = ACDE UPDATE = CD COUNT ΙΑ -*■ D } = О COUNT 1АВ-*-Е]= 1 COUNT [BI-+ E] = 2 COUNT [CD -*■ 11 = 2 COt/WT [£-> C] = 0
4.6. Проверка принадлежности к F+ 77 Пересмотр списков для С и D дает NEWDEP = A CD Ε I UPDATE = / COUNT [A -* D ] = 0 С0[/ЛГ7 [ЛЯ-* Ε] = 1 C0[/N7 [β/-*£] = 2 COt/ЛГГ [CD-W] = О C0[/N7 [£-* С] = О Пересмотр списков для / не доводит никакой счетчик до нуля, так что на выходе алгоритма получается ACDEL Проанализируем работу алгоритма LINCLOSURE на стадии «вычисление». Цикл while продолжает выполняться до тех пор, пока в NEWDEP существуют атрибуты, чьи списки еще не пересмотрены. Берем один такой атрибут и пересматриваем его список. Для каждой F-зависимости W->- Ζ этого списка уменьшаем счетчик COUNT [W ->- Ζ]. Если этот счетчик становится равным нулю, то рассматриваем W-+Ζ. Мы вычисляем множество атрибутов в Ζ, которых нет в NEWDEP. и добавляем эти атрибуты как в NEWDEP, так и в UPDATE. Цикл while останавливается, когда больше нет ни одной F-зависимости, счетчик которой можно было бы уменьшить. Теорема 4.4. Сложность алгоритма LINCLOSURE no времени для ввода величины размерности η имеет порядок О (п). Доказательство. Вычисление COUNT [W -*- Ζ] на стадии инициализации занимает время, пропорциональное | W |, если W представлено в виде списка атрибутов. Вычисление всех начальных значений для COUNT занимает время порядка О (п). Каждая F-зависимость оказывается занесенной в списки W в LIST. Для соответствующего списка добавление одной зависимости к этому списку занимает постоянный отрезок времени. Так, заполнение в LIST занимает время порядка 0(д), NEWDEP и UPDATE также могут быть инициализированы за время О (ή). На стадии вычисления каждый атрибут добавляется к UPDATE не более одного раза. Для каждого атрибута Л, добавляемого к UPDATE, выполняется один цикл while. При каждом проходе цикла while выполняется одна операция (декремент COUNT)'"для каждой F-зависимости в LIST [A ]. Как только некая зависимость W-+Ζ оказывается в списке | W \, операция декрементирования выполняется не более чем Σ \w\ W-*ZbF раз. Следовательно, время обнуления счетчика COUNT есть О (я).
78 Гл. 4. Функциональные зависимости Для любой F-зависимости W -+ Ζ в F логический счетчик дает значение истина (при COUNT [W-+ Ζ] = 0) не более чем один раз, поскольку, после того как COUNT [W -+ Ζ] становится равным 0, все атрибуты оказываются добавленными к NEWDEP и удалены из UPDATE. Таким образом, оказывается, что W -+- Ζ не остается ни в одном списке. Вычисление включения ADD занимает время, пропорциональное | Ζ |, если NEWDEP является бинарным вектором. Общее время обнуления вместе с установлением включения ADD пропорционально Σ \ζ\, W-+ZbZ т. е. порядка О (я). Так как ни один этап алгоритма LINCLOSURE не занимает времени больше, чем О (п), то его сложность по времени есть О (я). Следствие. Для ввода величины размерности η принадлежность к F+ может быть проверена за время порядка О (п). Доказательство. Подставим LINCLOSURE вместо CLOSURE в алгоритм 4.3 и будем предполагать далее, что MEMBER использует алгоритм LINCLOSURE. 4.7. УПРАЖНЕНИЯ 4.1. Рассмотрим отношение г, представленное ниже. г(А ах «1 аг «2 «3 В bi Ъг V Ъу Ьг С Ч Ч Ч с4 съ D di аг d3 d3 di Ε) Ч d% Ч Ч ч Каким из следующих F-зависимостей удовлетворяет г? 4.2. Докажите, что г удовлетворяет X-> Υ тогда и только тогда, когда X является ключом для ηχγ (г). 4.3. Пусть г — отношение со схемой R, а X — подмножество R. Покажите, что если πχ (г) имеет то же число кортежей, что и г, то г удовлетворяет X -*■ Υ для любого подмножества Υ из R. 4.4. Докажите или опровергните следующие правила вывода для отношения г со схемой R, в которых W, Χ, Υ и Ζ — подмножества из R: (a) Из Х-> Υ и Z-> W следует XZ-> YW. (b) Из XY-+ Ζ и Ζ-+- X следует Ζ-+Υ. (c) Из X ->· Υ и Υ -> Ζ следует X -+- ΥΖ. (ά) Из X -+ Υ, W -+ Ζ и Υ => W следует Χ -> Ζ. 4.5. Докажите, что аксиомы вывода Fl, F2 и F6 независимы. Это значит, что ни одна из них не может быть получена из двух других. 4.6. Покажите, что для любого множества F-зависимостей F выполнимо равенство F+ = (F )+.
4.8. Библиография и комментарии 79 4.7. Предположим, что F является множеством F-зависимостей над схемой R. Какой вид будет иметь F+, если F = 0? 4.8. Покажите, что для множества F-зависимостей не существует ни одного отношения, удовлетворяющего всем F-зависимостям в F" и только им. 4.9. Покажите, что система аксиом Fl, F3, F4 и F5 полна. Является ли это множество аксиом независимым? 4.10. Покажите, что если существует последовательность вывода для X ->■ У, использующая аксиомы вывода Fl—F6, то существует последовательность вывода для Х-*- У, использующая только аксиомы Армстронга. 4.11. Докажите корректность В-аксиом. 4.12. Найдите полное множество, состоящее из двух правил вывода. Эти правила не должны образовывать подмножество аксиом Fl—F6. 4.13. Пусть F={AB-+C, 5->D, CD-+E, CE-+GH, G-^Л}. (a) Составьте последовательность вывода из F для АВ ->- Е. (b) Используя только аксиомы Армстронга, составьте последовательность вывода из F для АВ ->- G. (c) Составьте RAP-последовательность вывода из F для АВ ->- G. 4.14*. Докажите теорему 4.2. 4.15. Пусть F то же, что и в упр. 4.13. Постройте F-DDA-граф для АВ ->- G. 4.16. Докажите для множеств F-зависимостей F и G, что если F содержит G, то F+ содержит G+. 4.17. Докажите, что некорректное правило вывода всегда можно опровергнуть с помощью отношения, имеющего два кортежа. 4.18. Измените правило R2 в определении DDA-графа так, чтобы отразить замену В2 на В2'. 4.19. Пусть F и G — множества F-зависимостей. Предположим, что для каждой F-зависимости Z-> W в F существует DDA-граф над G для Z-> W. Докажите, что если зависимость X ->- Υ имеет DDA-граф над F, то она также имеет DDA-граф над G. 4.20. Пусть F — множество F-зависимостей над R. Найдите ограничение на размерность F+, выраженное числом атрибутов в R. 4.21. Пусть F — множество F-зависимостей, а — число различных атрибутов в F, ρ — число F-зависимостей в F, η — число символов, необходимых для записи F. Сравните ар2 и п. 4.22. Алгоритм 4.3 MEMBER производит больше вычислений, чем необходимо для проверки F [=Х->- У. Как только У оказывается в Х+, остальная часть Х+ становится несущественной. Измените MEMBER и LINCLOSURE так, чтобы избежать ненужных вычислений. 4.8. БИБЛИОГРАФИЯ И КОММЕНТАРИИ F-зависимости в виде ключей уже были известны в то время, когда Кодд (Codd [1970]) впервые предложил реляционную модель. Позже он (Codd [1972a]) ввел для целей нормализации F-зависимости, которые не вытекают из ключей (см. гл. 6). В работе Delobel, Casey [1973] были предложены аксиомы вывода, полноту и корректность которых доказал Армстронг (Armstrong [1974]). Он также предложил метод построения отношения Армстронга для множества F-зависимостей. Структура отношений Армстронга была использована в работе Beeri, Dowd et al. [1980]. Алгоритм LINCLOSURE предложили Beeri и Bernstein [1979]. В своих доказательствах они использовали деревья вывода, которые оказались предшественниками DDA-графов, введенных в Maier [1980]. Описание RAM-модели для вычислений дано в работе Aho, Hopcroft, Ullman [1974]. Большинство работ по выводу F-зависимостей было направлено на поиск ключей и определение структуры множества ключей; см. работы Bekessy, De- metrovics [1979]; Bekessy, Demetrovics et al. [1980]; Demetrovics [1978, 1979]; Forsyth, Fadous [1975]; Lucchesi, Osborn [1978].
Глава 5 Покрытия функциональных зависимостей В этой главе кратко рассматриваются методы представления множеств F-зависимостей. Например, любая F-зависимость, выводимая из множества F = \А ->■ β, В ->■ С, А ->· С, ЛВ -> С, А ->· ВС}, также выводима из множества G = {Л ->· β, β ->· С}, поскольку все F-зависимости из F могут быть выведены из F- зависимостей, принадлежащих G. По какой причине предпочтительней более короткие представления? Ранее были приведены два алгоритма: SATISFIES в разд. 4.1 и MEMBER в разд. 4.6, временная сложность которых зависит от "размера входного множества F-зависимостей. Таким образом, меньшее множество F-зависимостей гарантирует более быстрое исполнение алгоритмов. Далее приводятся другие алгоритмы, для которых временная сложность также зависит от числа F-зависимостей на входе. В системах баз данных F-зависимости способствуют обеспечению согласованности и целостности базы данных. Меньшее число F-зависимостей означает меньший объем используемой памяти и меньшее количество проверок при модификации базы данных. 5.1. ПОКРЫТИЯ И ЭКВИВАЛЕНТНОСТЬ Определение 5.1. Два множества F-зависимостей F и G над схемой R эквивалентны, F = G, если F+ = G+. Если F ξ G, to F есть покрытие для G. В определении для покрытия нет упоминания об относительных размерах F и G. Однако далее рассматриваются покрытия частного вида, в которых F не превосходит G по числу F-зависимостей. Если F = G, то, поскольку F+ = G+, для каждой зависимости К -+ Υ из G+ следует F \= X -+ Y,
5.1. Покрытия и эквивалентность 81 В частности, для каждой F-зависимости X ->- Υ из G имеет место F \= X ->■ Υ. Обобщим понятие выводимости на множество F-зависимостей, записав это условие в виде F \= G. Поскольку определение эквивалентности симметрично относительно F и G, из F ~ G следует G \= F. Так как F+ включает каждую F-зависимость Χ ->- У, такую, что F \= X ->■ Y, то из F \= G следует G ^ F+. Применяя операцию замыкания к обеим частям неравенства, получаем G+ ^ ^ (F+Y = F+ (см. упр. 4.6 и 4.16). Аналогично G \= F влечет за собой 0+ з F+. Таким образом, доказана Лемма 5.1. Для заданных множеств F-зависимостей F и G над схемой R тождество F = G имеет место тогда и только тогда, когда F \= G и G\= F/ Пример 5.1. Множества F = \А -> В С, А -> D, С D -> Е\ и G = {А -> В С Е, А -> А В D, С D -> £| эквивалентны. Множество F не эквивалентно множеству G' = \А ->- В С D Е\, поскольку соотношение G'\= С D'-+■ Ε не выполняется. Лемма 5.1 содержит простой способ проверки эквивалентности двух множеств F-зависимостей. Функция DERIVES алгоритма 5.1 проверяет условие F \= G. Алгоритм 5.1. DERIVES Вход: два множества F-зависимостей F и G. Выход* истина, если F \= G; ложь в противном случае. DERIVES (F,G) begin υ: = истина for каждая F-зависимость X->Y из G do υ:=υ and MEMBER(F, Х->У); return (υ) end. Функция EQUIV алгоритма 5.2 проверяет эквивалентность двух множеств F-зависимостей.1 Алгоритм 5.2. EQUIV Вход: два множества F-зависимостей F и G. Выход: истина, если F ξ G; ло^б в противном случае. EQUIV (F, G) begin u: = DERIVES(F, G)and DERIVES(G, F); return (t;) end,
82 Гл. 5. Покрытия функциональных зависимостей 5.2. НЕИЗБЫТОЧНЫЕ ПОКРЫТИЯ Определение 5.2. Множество F-зависимостей F неизбыточно, если у него нет такого собственного подмножества F', что F' ξ F. Если такое множество F' существует, то F избыточно. F является неизбыточным покрытием G, если F есть покрытие G и F неизбыточно. Пример 5.2. Пусть G = {А В -> С, А -> β, β -> С, Л -> Q. Множество F = \А В -> С, Л -> β, β -> С} эквивалентно О, но избыточно, потому что F' = {А -> β, β -> С} также является покрытием G. Множество F' представляет собой неизбыточное покрытие G. По равносильной характеристике неизбыточности множество F неизбыточно, если в нем не существует F-зависимости Χ -> Υ, такой, что F — |Х-^У}И=^-^^ (см. упр. 5.3). Назовем F-зависимость из F избыточной в F, если F — {Χ -> Υ\ \= X -> -> У. Это свойство положено в основу алгоритма 5.3 проверки избыточности F. Алгоритм 5.3. REDUNDANT Вход: множество F-зависимостей F. Выход: истина, если F избыточно; ложь в противном случае. REDUNDANT(F) begin υ: =ложь for каждая F-зависимость X-+Y из F do if MEMBERS— \X-+Y\, X-+Y) then ы = истина; return (υ) end. Для любого множества F-зависимостей G существует некоторое подмножество F, такое, что F является неизбыточным покрытием G. Если G неизбыточно, то F = G. Если G избыточно, то в G существует F-зависимость Χ -> У, которая является избыточной в G. Пусть G' = G— \Х ->■ Y\. Заметим, что (G')+ = G+. Если G' избыточно, то в G' существует избыточная F-зависимость W -> Z. Пусть G" - G' — \W -+ Z\\ {G"Y = (G')+ = G+. Процесс удаления избыточных F-зависимостей, естественно, должен закончиться. В результате для G образуется неизбыточное покрытие F. Этот процесс является основой алгоритма 5.4 NONREDUN, который для множества F-зависимостей зычисляет неизбыточное покрытие,
5.3. Посторонние атрибуты 83 Алгоритм 5.4. NONREDUN Вход: множество F-зависимостей G. Выход: неизбыточное покрытие G. NONREDUN(G) begin F:=G; for каждая F-зависимость X-+Y из G do if MEMBER (F— \X-+Y\, X-+Y) then F: = F—\X-*Y\; return (F) end. Пример 5.3. Пусть G=\A-+B, В -+ Л, В ->- С, А-+С]. Результатом работы NONREDUN(G) является множество {А ->- β, β ->- Л, А ->- С}. Если G представлено в порядке {Л ->- β, Л -*С, β -^ Л, β -+■ С\, результатом NONREDUN(G) является \А -> β, Я-* Л, В->С\. Из примера 5.3 видно, что множество F-зависимостей G может иметь более одного неизбыточного покрытия. Могут также существовать неизбыточные покрытия G, не содержащиеся в G. В примере 5.3 таким неизбыточным покрытием G служит множество F = \А ->Я, В-+А, А В-+С]. 5.3. ПОСТОРОННИЕ АТРИБУТЫ Если F — неизбыточное множество F-зависимостей, то в нем нет «лишних» F-зависимостей в том смысле, что нельзя уменьшить F, удалив некоторые F-зависимости. Удаление любой F- зависимости из F приведет к множеству F-зависимостей, не эквивалентному F. Однако может оказаться, что размер F можно уменьшить, удалив некоторые атрибуты из F-зависимостей F. Определение 5.3. Пусть F — множество F-зависимостей над схемой R и X -+ Υ есть F-зависимость из F. Атрибут Л из R называется посторонним в А -»■ Υ относительно F, если 1) X г= Α Ζ, Χ φ Ζ и (F — \Х -+· Y\) U {Z -> Y\ = F или 2) Υ* = A W, Υ Φ W и (F — {Χ -* Υ\) U \X-+W\ = F. Иными словами, Л — посторонний атрибут вХ->У, если он может быть удален из правой или левой частей X ->- Υ без изменения замыкания F. Пример 5.4. Пусть G = {Л -* β С, β -> С, Л β -*D}. Атрибут С является посторонним в правой части Л ->- β С, а атрибут β — в левой части Л В ->- D.
84 Гл. 5. Покрытия функциональных зависимостей Определение 5.4. Пусть F — множество F-зависимостей над схемой R и X -+ Υ принадлежит F. F-зависимость X -»■ Υ называется редуцированной слева, если X не содержит атрибута Л, постороннего в X -> У. Зависимость X -> Υ называется редуцированной справа, если У не содержит атрибута Л, постороннего для X -> Υ. Зависимость X -> Υ называется редуцированной, если она редуцирована слева и справа и Υ Φ 0. Редуцированная слева F-зависимость называется также полной F-зависимостыо. Определение 5.5. Множество F-зависимостей F называется ре- дуцированным (слева, справа), если каждая F-зависимость из F редуцирована (соответственно слева, справа). Пример 5.5. Множество G = {А -> В С, В -> С, А В ->D\ не является редуцированным ни справа, ни слева. Множество Gx = \А -> В С, В -> С, А -+ D\ редуцировано слева, но не справа, a G2 = \А -> В, В -> С, А В ->£)} редуцировано справа, но не слева. Множество G3 = {Л ->- В, В -> С, Л ->Z)} редуцировано как справа, так и слева, следовательно, поскольку все правые части не пусты, редуцировано. Казалось бы, что редуцированные покрытия для множества G можно вычислять способом, аналогичным алгоритму NONREDUN: нахождением посторонних атрибутов и их удалением. Однако различный порядок редуцирования левых и правых частей F-зависимостей приводит к различным результатам. Если первыми редуцируются правые части, то изменений в G не происходит. В результате удаления посторонних атрибутов из левой части получаем множество F = {В-+■ A, D-+■ A, B-+D], которое не является праворедуцированным. Поэтому редуцирование будем начинать с левых частей. Однако, если G содержит избыточную F-зависимость, например X -> Υ, возникают затруднения. В этом случае все атрибуты Υ являются посторонними, а их удаление приводит кХ-)-0. Казалось, можно облегчить задачу, если до удаления посторонних атрибутов удалить из G все избыточные F-зависимости. К сожалению, даже если начать с неизбыточного покрытия, можно прийти к рассмотренной выше ситуации (см. упр. 5.7). Таким образом, последним шагом при нахождении редуцированного покрытия должно быть удаление всех F-зависимостей вида X -> 0. Прежде чем написать алгоритм для нахождения редуцированных покрытий, покажем, что если вначале удалить все посторонние атрибуты из левой части F-зависимостей, а затем из правой, то после исключения F-зависимостей вида X -»■ 0 посторонних атрибутов вообще больше не останется. Если исходить из неизбыточного множества F-зависимостей G, то, удаляя посторонние атрибуты сначала в левых, а потом в пра-
5.3. Посторонние атрибуты 85 вых частях F-зависимостей, получаем эквивалентное множество F-зависимостей. Если F не редуцировано, то только по той причине, что в F существует F-зависимость Χ -> У, У Φ 0, которая не редуцирована слева. Допустим, что А является посторонним атрибутом в X. Пусть G' представляет G сразу после удаления из всех левых частей F всех посторонних атрибутов. Примем, что X ->- Υ получена изХ->Г Ζ в С. Пусть X' = X — Л. Поскольку А — посторонний атрибут в X относительно F, то F — \Х -> Y\ U \Х' ->■ Υ\ ^ F, откуда F \= X' -> Υ. Пусть Я есть DDA-граф для X' -> Υ над F. Если X -> Υ не входит в ί/ (Я), то X -> У избыточно в Т7, и, в частности, X -> У не редуцировано справа, поскольку Υ Φ 0. Согласно лемме 4.3, X -> Υ принадлежит U (Я) и F \= X' ->■ X. Таким образом, из F = G' имеем G' \= X' ->■ X. Очевидно, X' -> X может быть выведена из G' без применения X -> Υ Ζ. Отсюда следует, что G' .— \Х ->■ -> У Z} U |Х' -^ У Ζ} ξ С и что О' не редуцировано слева, что противоречит выбору G'. Получаем, что F редуцировано, если исключены все F-зависимости вида Х->- 0. Заметим, что для любой F-зависимости Χ А -> У имеет место \Х ->■ Υ\\= Χ А ->■ У. В результате удаления атрибута из левой части множества F-зависимостей всегда образуется более сильное множество F-зависимостей, т. е. если G = F \] \Х А -> -> У} и G' = f · U {X -> У}, то С всегда влечет за собой G. Для проверки условия G' ξ G достаточно проверить G t= G', которое в свою очередь сводится к проверке G \= X -> У. Алгоритм 5.5 LEFTRED использует этот метод для удаления посторонних атрибутов из левых частей F-зависимостей. Если G неизбыточно, то эту проверку можно упростить до проверки G \= \= X -> X А или даже Gt= X -> А. (Почему?) Алгоритм 5.5. LEFTRED Вход: множество F-зависимостей G. Выход: редуцированное слева покрытие G. LEFTRED(G) begin F:=G; for каждая F-зависимость из G do for каждый атрибут Л из X do if MEMBER (Λ (Χ—Α) -> У) then удалить Л из X в Χ->Υ из F\ return (F) end. При удалении посторонних атрибутов F-зависимостей заметим, что если G = F [} \X-+YA\ и& = F [} \X-+Y\, то G всегда влечет за собой G'. Для того чтобы проверить условие G' ξ G,
86 Гл. 5. Покрытия функциональных зависимостей достаточно проверить G' \= G, что сводится к проверке G' И |= X -> Υ Л. А поскольку X -> Υ £ G't эта проверка далее сводится к проверке G' \= X -> Л. Алгоритм 5.6 описывает алгоритм редукции справа. Алгоритм 5.6. RIGHTRED Вход: множество F-зависимостей G. Выход: покрытие для G, редуцированное справа. RIGHTRED(G) begin F: = G; for каждая F-зависимость X-*Y из G do for каждый атрибут А из Υ do if MEMBER (F — \X-*Y\ U [X->(Y—A)}> X->A) then удалить А из Υ в X->K из F\ return (F) end. Теперь можно легко получить алгоритм нахождения редуцированных покрытий. Алгоритм 5.7. REDUCE Вход: множество F-зависимостей G. Выход: редуцированное покрытие G. REDUCE(G) begin F:-RIGHTRED (LEFTRED (G)); удалить из F все F-зависимости вида Х->0; return (F) end. Пример 5.6. Пусть G' = \A -+ С, А В -+ D Ε, Α Β -+ С D I, A C-+J]. Из LEFTRED (G') получаем G" = |Л -> С, Л β -^ ->D £, Л Б -> С D /, Л -^ </} и из RIGHTRED (G") получаем F = {A -> С, Л β -> £, Л β -> D /, Л -> /}, уже редуцированное. Лемма 5.2. Временная сложность алгоритма REDUCE со- ставляет О (я2), где η — длина входа. Доказательство предоставляется читателю (см. упр. 5.8). 5.4. КАНОНИЧЕСКИЕ ПОКРЫТИЯ Определение 5.6. Множество F-зависимостей называется каноническим, если каждая F-зависимость из F имеет вид Х->Л, JF редуцировано слева и неизбыточно. Поскольку каноническое множество F-зависимостей неизбыточно и каждая F-зависимость имеет один атрибут справа,
5.5. Структура неизбыточных покрытий 87 оно редуцировано справа. А так как оно также редуцировано слева, то оно редуцировано. Пример 5.7. Множество F = \А -> В, А -> С, A ->D, A ->■ -> £, В I -> /} есть каноническое покрытие для G = {А -> β С Е, А В -+ D Е, В I -+ J}. Связь между редуцированными и каноническими покрытиями описывает Лемма 5.3. Пусть F — редуцированное покрытие. Образуем G, расщепляя каждую ¥-зависимость X -> Ах ... Ат на X -> -»■ Л1э X-> Л2, ..., X —> Лт. Покрытие G является каноническим. Обратно, если G — каноническое покрытие, то оно редуцировано. Если множество F образовано объединением всех F-за· висимостей с совпадающими левыми частями, то F также есть редуцированное покрытие. В обоих случаях F и G эквивалентны. Доказательство. Пусть G образовано из F расщеплением F- зависимостей. Если X -»■ Лг избыточно, то At — посторонний атрибут в X -* Аг ... Ат. Если X ->■ At содержит посторонний атрибут В в левой части, то G \= (X — В) -> Аи что означает G \= (X — В) -> X, поскольку X -> At неизбыточна. (См. рассуждения, предшествующие LEFTRED.) Откуда заключаем, что F \= (X — В) -> X и, следовательно, В есть посторонний атрибут левой части X -> Аг ... Ат из F. Остальная часть доказательства предоставляется читателю (см. упр. 5.9). 5.5. СТРУКТУРА НЕИЗБЫТОЧНЫХ ПОКРЫТИЙ Что можно сказать о двух неизбыточных покрытиях Fn F' для множества F-зависимостей G помимо того, что F = Т7'? Последующие определение и лемма указывают на некоторое сходство структур F и F'. Определение 5.7. Два множества атрибутов X и Υ эквивалентны относительно множества F-зависимостей F, если F ||= X -> -+Υ и F\=Y -+ X (обозначение: Χ «-* Υ). Лемма 5.4. Пусть F и G — эквивалентные неизбыточные множества F-зависимостей над схемой R. Пусть X -> Υ — F-зависимость из F. Тогда в G существует F-зависимость V -> W и X «-> V относительно F (и, следовательно, относительно G). Доказательство. Пусть Я есть DDA-граф над G для X -> Υ. Рассмотрим F-зависимости из U (Я). Каждая из них имеет DDA- граф над F. В U (Я) должна существовать некоторая F-зависи- мость V -> W, которая имеет DDA-граф J над F, использующий X -> Υ. Если такой зависимости нет, то для X -»■ Υ существует PDA-граф над (F — \Х ->■ Υ}) и, таким образом, X -> Υ избы-
88 Гл. 5. Покрытия функциональных зависимостей точно в F (см. упр. 4.19). Так как J использует X -> F, то, согласно лемме 4.3, F \= V ->· X. А поскольку Η использует V ->· W, то G \= X -> V и, следовательно, Τ7 \= Χ «-> V. Лемму 5.4 можно перефразировать следующим образом. Для заданных эквивалентных неизбыточных покрытий F и G и каждой левой части X в F-зависимости из F существует эквивалентная левая часть V в F-зависимости из G. Пример 5.8. Пусть F = \А-+В С, В-+■ Л, A D-+Е\ и G - {Л ->- Л В С, 5 -► Л, В D -> £}. Множества Т7 и G неизбыточны и эквивалентны друг другу. Заметим, что Л <-> Л, β <-> β и Л D <-> В D. Пусть F — множество F-зависимостей над схемой R и X — множество атрибутов X ^ R. Пусть, далее, EF (X) — множество F-зависимостей из F с левой частью, эквивалентной X. Обозначим EF множество \EF(X)\Xs=R и Ер(Х)ф0\. Если в F не существует F-зависимости с левой частью, эквивалентной X, EF (X) пусто. Множество ЕЕ (X) всегда является разбиением F. Если заданы эквивалентные неизбыточные множества F и G, то из леммы 5.4 следует, что Ер (X) не пусто тогда и только тогда, когда не пусто EG (X). Таким образом, EF содержит то же число множеств, что и EG. Пример 5.9. Пусть F и G те же, что и в примере 5.8. Тогда EF имеет вид EF(A) = \A-+B С, В-+А], EF(A D) = {A D-+E], и EG есть EQ(A) = \A-+A В С, В-+А], EG(A D) + \B D-+E\. 5.6. МИНИМАЛЬНЫЕ ПОКРЫТИЯ Неизбыточное покрытие G множества F-зависимостей не обязательно имеет столько же F-зависимостей, сколько любое другое покрытие G (см. упр. 5.15). Этот факт побуждает ввести Определение 5.8. Множество F-зависимостей F минимально, если оно содержит не больше F-зависимостей, чем любое эквивалентное множество F-зависимостей. Минимальное множество F-зависимостей не может содержать избыточных зависимостей. (Почему?) Таким образом, оно одновременно и неизбыточно.
5.6. Минимальные покрытия 89 Пример 5.10. Множество G = (Л -> В С, В -> Л, A D -> Е, В D -* J] неизбыточно, но не минимально, поскольку существует множество F = \А -> В С, В -> Л, ЛО->£/[, которое эквивалентно G и содержит меньшее число F-зависимостей. Множество F является минимальным покрытием G. 5.6.К Прямая определяемость В отличие от неизбыточных покрытий определение минимальных покрытий не содержит указаний не только на способы нахождения таких покрытий, но даже на проверку минимальности. В настоящем разделе вводится частный вид функциональной определяемое™, позволяющий вычислить минимальные покрытия. Определение 5.9. Для заданного множества F-зависимостей G подмножество X прямо определяет Υ относительно G, если для F-зависимости Χ -> Υ существует неизбыточное покрытие F множества G, обладающее DDA-графом Я над F, таким, что U (Я) Π Ер (X) = 0 (обозначение: Χ -Α Υ). Другими словами, можно найти для G неизбыточное покрытие Fy в котором X -> Υ выводимо только из F-зависимостей, принадлежащих F—EF(X). Заметим, что всегда имеет место X -% X, что XAF влечет Χ ->Υ к что EF (X) может быть пусто. Кроме того, Л -A S имеет место только при Л = В. Пример 5.11. Пусть G = F = {А -+ CD, АВ-+Е, B^I, D I —> «/}. Тогда, как видно из DDA-графа Я (рис. 5.1), Л β a J относительно G. Непосредственно использовать понятие, введенное определением 5.9, затруднительно. Может оказаться, что для проверки того, что X прямо определяет F, необходимо найти все неизбыточные покрытия G. Это оказывается трудоемкой задачей (см. упр. 5.11). Путь к решению указывает Лемма 5.5. Для множества F-зависимостей G Χ -% К относительно G тогда и только тогда, когда для каждого неизбыточного покрытия G для X -> Υ существует DDA-граф Я над F, для которого U (Я) П Ef Щ = 0· Доказательство. Достаточность тривиальна. Докажем необходимость. Пусть F — неизбыточное покрытие G, в котором для X -> Υ существует DDA-граф Я над F, не использующий F-зависимостей из EF (X). Пусть F' — любое другое неизбыточное покрытие графа G. Для каждой F-зависимости W -> Ζ из U (Я) построим DDA-граф над F\ не использующий F-зависимости из Ер* (X).
90 Гл. 5. Покрытия функциональных зависимостей ©—vX^ ( о U(H)^=<A — CD, B-+LD1 — J> Рис. 5.1. Далее с помощью леммы 4.2 соединим эти DDA-графы, образуя для X -> Υ DDA-граф G', не использующий F-зависимостей из EF- (X). Если W -> Ζ входит в U (Я), то, согласно лемме 4.3, F \= X -> W. Предположим, что некоторый DDA-граф над F' использует F-зависимость U -> V из EF< (X) для W -> Z. Снова применяя лемму 4.3, получаем F' \= W ->■ У", следовательно, f }= It? -> /7. Но /7 «-* X при F" и F, следовательно, It? «-► X при F, откуда It? -> Ζ входит в £F (X), что противоречит выбору Я. Таким образом, каждая F-зависимость W -> Ζ из /7 (Я) имеет DDA-граф над F", не использующий F-зависимости из EF> (X) (см. упр. 5.19, содержащее несколько более сильный вариант леммы 5.5). Лемма 5.6. Если в множестве ¥-зависимостей G имеет место X +-> Υ, Χ -% Υ и Υ Ά Ζ, то Χ -Α Ζ относительно G. Доказательство предоставляется читателю (см. упр. 5.20). Определение 5.10. Пусть F — множество F-зависимостей над схемой R. Множество всех левых частей EF (X) обозначается eF (X). Лемма 5.7. Пусть F—неизбыточное множество F-зависимостей* Выберем левую часть X некоторой F-зависимости из F и Υ такими, что X <-> Υ над F. Существует Ζ в eF (X), такое, что Υ"-Α Ζ. Доказательство. Если Υ входит в eF (X), то Υ -Α Υ, и доказательство завершено. В противном случае, поскольку Υ -> Ζ для каждого Ζ в eF (X), для Υ -> Ζ существует DDA-граф над F. Выберем Ζ в eF (X), имеющий DDA-граф с наименьшим числом вершин для Υ -> Ζ. Этот DDA-граф обозначим Я. Предположим, что U (Я) содержит /7 -> V из £F (X). Согласно лемме 4.3 и ее следствию, Я является DDA-графом для Υ -> /7. Более того, Θ
5.6. Минимальные покрытия 91 ι*- v*-^ U(H) = <BC-+A) Рис. 5.2. в Я существует вершина, помеченная некоторым атрибутом из V, которую можно удалить из Я, причем результат будет оставаться DDA-графом для Υ -> U. Пусть Я' есть Я за вычетом удаленной вершины. Граф Я' имеет меньше вершин, чем Я. Поскольку U входит в eF (X), получено противоречие с минимальностью Я. В U (Я) не может быть F-зависимостей из EF (X), следовательно, Υ -UZ. Пример 5.12. Пусть F = \А -* В С, 5С->Л, AD-+E, AD-+I, Е-+В). Для В С D +-> A D на рис. 5.2 изображен DDA-граф над Т7, не использующий F-зависимостей из EF (A D). Лемма 5.8. Пусть F — минимальное множество F-зависимостей. Ни в одном EF (X) не существует различных F-зависимостей Υ ->- U и Ζ ->- У, таких, что Υ -Α Ζ. Доказательство. Покажем, что если такие F-зависимости существуют, то найдется множество Т7', эквивалентное Т7, но с меньшим числом F-завйсимостей. Пусть Я есть DDA-граф над F для У -*■ Ζ, не использующий F-зависимостей из EF (X), и пусть F' есть Т7, в котором 7->ί/ и Ζ->1/ заменены на Ζ ->- /У V. Очевидно, что Ζ7' (= Ζ ->- V. Поскольку Я также является DDA-графом над F' для Υ ->- Ζ (он не использует ни У ->- /7, ни Ζ ->- У), то F' (= У-^Z и, следовательно, Т7' (= У ->- /7. Всякая другая F-зависимость из Т7 входит в Т7', так что F' \= F. Нетрудно показать, что F \= F' и, следовательно, F ~ F\ что противоречит минимальности F. Леммы 5.7 и 5.8 используются при доказательстве следующего результата. Теорема 5.1. Пусть F и G — эквивалентные минимальные множества F-зависимостей. Тогда для любого X справедливо равенство | EF (X) | = | EQ (X) |.
92 Гл. 5. Покрытия функциональных зависимостей Теорема 5.1 сильнее леммы 5.4. Для минимальных множеств F-зависимостей не только | EF \ = \ EG |, но соответствующие классы эквивалентностей имеют одинаковые размеры. Доказательство. Предположим, что EF (X) и EG (X) состоят из следующих зависимостей (т < п): EF(X) EG(X) Χι^Χι X<L —>" X2 Xjn ->■ Xm Υι^Υι r2->F2 Υη^Ϋη Из них не все Yj совпадают с некоторыми из Xt, иначе среди Yj были бы равные, что противоречит лемме 5.8. Таким образом, существует /, такое, что Yj Φ Хи 1 < i < т. Согласно лемме 5.7, существует k, такое, что У 7· -^ Xh. Перенумеруем F-зависимости в EF (X) и Ес (X) так, чтобы Yj стало Y\, a Xk = Хг. Заменим в EG (X) зависимость Υλ ->- Υχ на Χ1-*-Υ1. Поскольку Υ± -%> Xl9 то Υχ ->- У\ все же выводимо из модифицированного множества G, а замыкание G осталось неизменным. Если для некоторого /, отличного от 1, Хх = Yj9 то, объединяя Х± ->- Yx и У; ->■ У;, получим Хг ->- УхУу, что противоречит минимальности G. В противном случае Х± Φ Yj для всех /, больших единицы, но число левых частей в eG (X), совпадающих с числом левых частей в eF (X), стало на единицу больше. (Удалили У\ и добавили Хг.) Согласно замечаниям в начале доказательства, в eF (X) все еще должно существовать некоторое Yj, не равное ни одному из Xt. Таким образом, мы вернулись к тому месту доказательства, где производилась перенумерация. Если мы никогда не придем к противоречию с минимальностью G, то, очевидно, каждая левая часть зависимостей из eG (X) принадлежит eF (X), что противоречит замечанию о существовании некоторого Yj9 отличного от каждого Xt. Предположение об т, меньшем /г, должно быть ошибочным и в действительности т = п. Соответствие между EF (X) и EG (X) идет дальше, чем равенство числа F-зависимостей. Снова рассмотрим EF (X) и EG (X): ЕР (λ) EG(X) **γη~+· Л.т Υ т ""*" * τη
5.6. Минимальные покрытия 93 Выберем в eF (x) произвольное Xt. Согласно лемме 5.7, существует /, такое, что Xt -% Yj. Из той же "леммы следует, что должно существовать kf такое, что Yj А Хк. Если i Φ kf то по лемме 5.6 Xi -% Xki что противоречит лемме 5.8. Таким образом, i = k. Получаем что из Xt —> Yj следует Yj —> Xt. Предположим, что Xt -% Yj и Xt -^ Yh, где / Φ h. Как только что было отмечено, Yj -U Хи а по лемме 5.6 Yj Л Yhi что вновь противоречит лемме 5.8. Таким образом, между eF (X) и eG (X) существует взаимно однозначное соответствие, индуцированное зависимостью -%>. Из доказательства теоремы 5.1 видим, что, не изменяя замыкания G, Xt можно заменить соответствующим Yj mEG(X). Пример 5.13. Вернемся от атрибутов Л, β, ... к примеру, близкому к действительности. Рассмотрим отношение нарушения (АВТОМОБИЛЬ# УДОСТОВЕРЕНИЕ# ВЛАДЕЛЕЦ ДАТА ВРЕМЯ ТАЛОН# ПРОСТУПОК), содержащий список автодорожных нарушений. Одним из минимальных покрытий множества F-зависимостей для этого отношения является Т7, равное 1) АВТОМОБИЛЬ # -> УДОСТОВЕРЕНИЕ # ВЛАДЕЛЕЦ 2) УДОСТОВЕРЕНИЕ # -> АВТОМОБИЛЬ# 3) ТАЛОН # -> УДОСТОВЕРЕНИЕ # ДАТА ВРЕМЯ ПРОСТУПОК 4) УДОСТОВЕРЕНИЕ # ДАТА ВРЕМЯ -> ТАЛОН # ПРОСТУПОК Эквивалентное минимальное множество F-зависимостей состоит из: 1) АВТОМОБИЛЬ # -+ УДОСТОВЕРЕНИЕ# 2) УДОСТОВЕРЕНИЕ#-^АВТОМОБИЛЬ# ВЛАДЕЛЕЦ 3) ТАЛОН # -> АВТОМОБИЛЬ # ВЛАДЕЛЕЦ ДАТА ВРЕМЯ 4) АВТОМОБИЛЬ # ДАТА ВРЕМЯ -+· ТАЛОН # ПРОСТУПОК Множества £F (УДОСТОВЕРЕНИЕ^ и ^(УДОСТОВЕРЕНИЕ^ состоят из двух первых зависимостей каждого множества, EF (ТАЛОН #) и Eg (ТАЛОН #) — из двух последних. Множества F-зависимостёй упорядочены так, что левые части зависимостей с одинаковыми номерами непосредственно определяют друг друга. Составной атрибут АВТОМОБИЛЬ # ДАТА ВРЕМЯ можно заменить на левую часть F-зависимости 4) без изменения замыкания F. Попытка произвести такую замену на эквивалентный, но не определяющий атрибут, например УДО- СТОВЕРЕНИЕ# на левую часть F-зависимости 1), изменяет замыкание F.
94 Гл. 5. Покрытия функциональных зависимостей Рассуждения, предшествующие примеру, подсказывают способы комбинирования эквивалентных минимальных множеств F и G с целью получения эквивалентного множества F-зависимостей с возможно меньшим числом атрибутных символов. Для некоторого X выберем EF (X) и EG (X) и, используя соответствие, индуцированное отношением А, сопоставим левые части соответствующих зависимостей. Для каждого Υ из eF (X) найдем соответствующее Ζ из eG (X) и, если Ζ содержит меньше атрибутов, чем Υ, заменим Υ на Ζ. Если такая замена возможна, то модифицированное множество F будет иметь меньше атрибутных символов, чем первоначальное. 5.6.2. Вычисление минимальных покрытий Построение алгоритма для вычисления минимальных покрытий опирается на следующую теорему. Теорема 5.2. Пусть G — не избыточное, но неминимальное множество F-зависимостей. Тогда существует некоторое EG (X) с различными ¥-зависимостями Υ ->- U и Ζ ->- V, такое, что Υ -Α Ζ. Теорема является почти обратной лемме 5.8. Доказательство. Пусть F — минимальное покрытие G. Тогда (согласно теореме 5.1) должно существовать некоторое X, такое, что | EF (X) | < | EG (X) 1^ Пусть EF (X) содержит F-зависимо- стиХг_->Хь ..., Хт-+~Хт и EG(X) содержит γ±-+γΐ9 ..., Yn-*Yn- По лемме 5.7, для каждого Yj из eG (X) существует Хг из eF (X), такое, что Yj —> Xt. Поскольку т меньше п, существуют i, j и k, такие, что Yj —> Xt и Yh —> Xt (j Φ k). В свою очередь для некоторого Yh из EG (X) имеет место Xt -U Yh. Тогда либо h Φ, j либо h Φ k. Если h Φ /, то, согласно лемме 5.6, У;-A Yh. Так же если h Φ k, то Yk —> Yh. Теорема 5.2 утверждает, что для неизбыточного неминимального G можно найти Υ ->- U и Ζ -> V, для которых Υ « Ζ и Υ -Α Ζ в G. После того как они найдены, их можно заменить, как это сделано в доказательстве леммы 5.8, одной F-зависимостью Ζ -»■ -»■ /7У. В результате получаем эквивалентное множество с меньшим числом F-зависимостей. Алгоритм 5.8 именно таким образом использует теорему 5.2 и функцию DDERIVES, проверяющую непосредственную опреде- ляемость (см. упр. 5Л8),
5.6. Минимальные покрытия 95 Алгоритм 5.8. MINIMIZE Вход: множество F-зависимостей G. Выход: минимальное покрытие для G. MINIMIZE (G) begin F : = NONREDUNJG); найти множества EF\ for каждая EF (X) из EF do for каждая Υ -> U из EF (X) do for каждая Z-+V=£Y-+Um EF (X) do if DDERIVES (F, Г, -► Z) then заменить F->*[/HZ-^I/HaZ->- /7У в F; return (F) end. Теорема 5.З. Функцию MINIMIZE можно реализовать с временной сложностью О (пр), где η — длина входа, ρ — число F-зависимостей. Доказательство. Нахождение F выполняется за время О (пр) (см. упр. 5.8). Может показаться, что множества EF потребуют времени порядка О {пр2), но это не так. Для того чтобы отметить для заданного X каждую F-зависимость Υ ->- Ζ из F, такую, что F = X ->- У, можно использовать модифицированную версию алгоритма LINCLOSURE. (Отмеченными F-зависимостями являются те, для которых COUNT = 0.) Модифицированный алгоритм за время О (пр) просматривает все левые части F-зависимостей, порождая булеву матрицу Μ размера рхр со столбцами и строками, индексированными F-зависимостями из F. Вход Μ [X -*■ Υ, W ->- Ζ ] получает значение истина, если F [= X -> ->- КР, и лоя/еь в противном случае. Из Λί за время О (р2) можно найти все множества в EF (см. упр. 5.23). Далее, для каждого EF (X) просмотрим каждую F-зависимость Υ ->- U. К Υ и F — EF (X) применим модифицированную версию алгоритма LINCLOSURE. При этом для каждой Z-+V из EF (X) следим за COUNT ίΖ -* Υ]. Если по окончании работы алгоритма для некоторой Ζ ->- V его значение равно нулю, то для известной У —> Ζ производим замену F-зависимостей. Модифицированный алгоритм LINCLOSURE просматривает каждую F-зависимость из F один раз, что дает на этой стадии временную сложность О {пр). Итак, весь алгоритм занимает время О (пр). Следствие. Редуцированное минимальное покрытие для множества F-зависимостей G может быть найдено за время О (п2) при входе длины п. Доказательство. Применить алгоритм REDUCE к выходу алгоритма MINIMIZE (G) (см. упр. 5.8).
96 Гл. 5. Покрытия функциональных зависимостей 5.7. ОПТИМАЛЬНЫЕ ПОКРЫТИЯ До сих пор покрытия оценивались количеством содержащихся F-зависимостей. Можно их также оценивать числом входящих атрибутов. Например, {А В -+С, С D -+ Е, А С -> I J], согласно этой оценке, имеет размерность 10. Определение 5.11. Множество F-зависимостей F оптимально, если не существует эквивалентного множества с меньшим числом атрибутных символов. Пример 5.14. Множество F=(£C-vD, А В -+ Ε, Ε-+ АВ\ является оптимальным покрытием для G = \А В С ->-D, Л β-^ ->- Ε, Ε -> А В]. Заметим, что G редуцировано и минимально, но не оптимально. Лемма 5.9. Если F — оптимальное множество F-зависимостей, то оно редуцировано и минимально. Доказательство. Если F содержит посторонние атрибуты, то оно, очевидно, не оптимально. Алгоритм MINIMIZE в тех случаях, когда он вызывает изменения в исходном множестве, всегда уменьшает число атрибутных символов в покрытии. Таким образом, MINIMIZE (F) дает F, и, следовательно, F минимально. К сожалению, по-видимому, не существует алгоритма нахождения минимального покрытия для множества F-зависимостей, имеющего полиномиальную временную сложность. Эта проблема принадлежит к классу NP-полных задач, для которых еще не найдены алгоритмы с полиномиальным временем. Другой NP- полной задачей, связанной с покрытиями, является задача о минимальном множестве F, содержащемся в G и представляющем покрытие для G. Минимальность в этом случае измеряется числом F-зависимостей. 5.8. КОЛЬЦЕВЫЕ ПОКРЫТИЯ И СОСТАВНЫЕ ФУНКЦИОНАЛЬНЫЕ ЗАВИСИМОСТИ Как показано ранее, множество F-зависимостей F может быть разделено на классы с эквивалентными левыми частями. Информацию каждого класса эквивалентности можно представить одной обобщенной F-зависимостью.
5.8. Кольцевые покрытия 97 Определение 5.12. Составная функциональная зависимость (CF-зависимость) имеет вид (Х1% Х2>···, Хъ) -+Y, где Хъ Х2 .., Хъ. и Υ — различные подмножества схемы R. Отношение r(R) удовлетворяет CF-зависимости (Xls Χ2ι···ι-^л)-> К, если оно удовлетворяет F-зависимостям Xt -+ Xj и Xi~+Y, 1 < i, j < k. В этой записи (Χα, Х2> ···> ^ft) называется левой частью, Хъ Х2, ..., ХЛ — левыми множествами, Υ — правой частью, CF-зависимости есть не более чем сокращенный способ записи множества F-зависимостей с эквивалентными левыми частями. В виде небольшого отклонения от общепринятых соглашений допускается Υ = 0. В этом случае CF-зависимость записывается в виде (Хи Х2, ..., Xh). Определение 5.13. Пусть G — множество CF-зависимостей над R и F — множество F- или CF-зависимостей над R. G эквивалентно F, G = F, если каждое отношение г (R), удовлетворяющее G, удовлетворяет F и обратно. Определение согласуется с эквивалентностью для множества F-зависимостей. Определение 5.14. Множество F является покрытием G, если F ξ G, где F и G состоят либо из множества F-зависимостей и множеств CF-зависимостей, либо из множеств одного из этих видов. Пример 5.15. Множество CF-зависимостей G = {(Л, β), (А С, В С) -> D Е\ эквивалентно множеству F-зависимостей F = [А -»■ ->β, Β-+Α, AC-+D, ВС-+-Е].' Определение 5.15. Множество F-зависимостей F называется характеристическим множеством для CF-зависимости (Хъ X2i ...ι Xk) -> Υ, если F ξ {(Χι9 Хъ ···> Xh) -*■ У}- Если каждое левое множество из CF-зависимости используется в качестве левой части F-зависимости в точности один раз (т. е. F имеет вид \Хг -»■ -> Y1% X2-+Y2i ···> Хн-^Ук)* то F называется естественным характеристическим множеством для F-зависимости. По определению, CF-зависимость обладает одним характери стическим множеством для (Хъ Х2, ..., Xk-+-Y)< но это множество не является естественным. Другое характеристическое множество — это \Х1-^Х29 Х2->Хз9 ..., Xk-^X^Y], которое является естественным и его структуре подмножеств обязан своим происхождением термин кольцевое множество. Левую часть CF-зависимости можно, как это показано на рис. 5.3, представить в виде кольца. Множество CF-зависимостей можно рассматривать как объединение характеристических множеств для всех CF-зависимо-
98 Гл. 5. Покрытия функциональных зависимостей Рис. 5.3. стей из множества. В такой трактовке на множества CF-зависи- мостей переносится почти вся терминология для множеств F-за- висимостей. В некоторых случаях определения для CF-зависимо- стей слегка изменены. В остальных случаях используется соответствующая терминология для F-зависимостей. Единственное понятие, которое плохо переносится, — это понятие замыкания множества CF-зависимостей. Оно будет интерпретироваться как замыкание эквивалентного множества F-зависимостей. Определение 5.16. Множество CF-зависимостей F называется кольцевым, если не существует различных левых множеств X и Z, таких, что I^Z в F. Алгоритм LINCLOSURE можно модифицировать для работы с множествами CF-зависимостей. Вместо того чтобы вести подсчет и список левых частей F-зависимостей, проделаем это для левых множеств. Когда счетчик для некоторого множества Xt из (Xl9 Х2, ..., Xk) ->· Υ достигает нуля, к NEWDEP добавляются все атрибуты из Хъ Х2, ...,Xft и Υ (см. упр. 5.24). Алгоритм MEMBER можно также модифицировать для работы с CF-зависимостями. Выбором характеристических множеств для всех CF-зависимостей алгоритмы DERIVES и EQUIV могут быть использованы для множества F-зависимостей и CF-зависимостей или двух множеств одних CF-зависимостей. Временная сложность этих алгоритмов остается прежней (см. упр. 5.25). Для заданного множества F-зависимостей G можно найти кольцевое покрытие с не более чем | EF | CF-зависимостями, где F — неизбыточное покрытие множества G. Все F-зависимости из одного EF (X) можно объединить в одну CF-зависимость. Каждая левая часть из eF (X) есть левое множество CF-зависи- мости, а правая является объединением всех правых частей F-зависимостей из Ер (X).
5.8. Кольцевые покрытия 99 Пример 5.16. Пусть G = F = \А -*- В С, В -> А D, А Е -* /, BE-+JI]. Кольцевым покрытием множества G служит G' = = {(Л, 6)-^/lBCD, (Л Е, В Е) -> / /}. Решение обратной задачи не всегда приводит к цели. Если имеются неизбыточное покрытие F для множества F-зависимостей G и кольцевое покрытие G' для G с числом | EF | CF-зависимостей, то объединение естественных характеристических множеств для всех CF-зависимостей из G' не всегда приводит к неизбыточному покрытию для G. Пример 5.17. Множество G' = \(А, А В, В)-+■ СD, (А Е) -> -> / J\ есть кольцевое покрытие для множества G из примера 5Л6. Образуя F' группировкой естественных характеристических множеств, получаем F'=\A-+A В, А В-+В, В-+А CD, AE-+ -+IJ\. В покрытии F' зависимость Л В -> В избыточна. Определение 5.17. Пусть G — множество CF-зависимостей, содержащее (Хъ Х2, ..., Xh)->Y- Пусть Χι — одно из левых множеств и Л — один из атрибутов Х^. Атрибут Л называется перемещаемым, если его можно перенести из Xt в Υ с сохранением эквивалентности. Левое множество Xt перемещаемо, если одновременно перемещаемы все его атрибуты. Пример 5.18. Пусть G' то же, что и в примере 5Л7. В (Л, А В, В) -+ С D атрибуты Л В перемещаемы. Результат перемещения есть G" = {(Л, В) -> Л 5 С D, (Л £) -> / /}. Заметим, что Л в (Л, Л β, B)-+CD неперемещаемо. Определение 5.18. Кольцевое множество G неизбыточно, если из него нельзя удалить ни одну CF-зависимость без нарушения эквивалентности и, кроме того, ни одна CF-зависимость из G не содержит перемещаемых левых множеств. В противном случае G избыточно. Пример 5.19. Множество G' примера 5.17 избыточно, в тс время как множество G" примера 5.18 неизбыточно. Лемма 5.10. Пусть G — неизбыточное кольцевое множество CFх-зависимостей. Объединение естественных характеристических множеств всех С¥-зависимостей в G образует неизбыточное множество ¥-зависимостей, эквивалентное G. Доказательство предоставляется читателю (см. упр. 5.26). Для кольцевых покрытий можно также определить понятия редуцированного и минимального покрытия. Определение 5.19. Пусть G — неизбыточное кольцевое множество. CF-зависимость (Хг, Х2, ..., Xk) ->· Υ из G называется редуцированной, если левые множества не содержат перемещае- 4*
100 Гл. 5. Покрытия функциональных зависимостей мых атрибутов, а правые — посторонних. Множество θ редуцировано, если редуцирована каждая CF-зависимость в G. Определение 5.20. Пусть G — неизбыточное кольцевое множество. Множество G минимально, если содержит столько же левых множеств, сколько любое другое эквивалентное кольцевое множество. Пример 5.20. Множество G = {(А, В)-+С D, {А Е) -»■ / J] является редуцированным минимальным кольцевым покрытием для множества G' из примера 5.16. С помощью алгоритмов LEFTRED и RIGHTRED можно получить модифицированную для CF-зависимостей версию алгоритма REDUCE, имеющего временную сложность О (п2) при длине входа п. Для упрощения редукции заметим, что (Хг [) X2U··· ...\JXk) Π У = 0 Для любой редуцированной CF-зависимости (Xl9 Х2у ..., Xk) -»■ У (см. упр. 5.27). Нахождение минимального кольцевого покрытия для множества F-зависимостей G начинаем с нахождения минимального покрытия F для G. Далее группируем F-зависимости с эквивалентными левыми частями в одну CF-зависимость. При этом возникает вопрос: является ли редуцированное минимальное кольцевое множество одновременно редуцированным минимальным множеством F-зависимостей? Другими словами, можно ли, группируя F-зависимости из редуцированного минимального множества, получить минимальное редуцированное кольцевое множество? Отрицательный ответ на этот вопрос подтверждается следующим примером. Пример 5.21. Рассмотрим множество F-зависимостей F = = \Вг В2 -> ЛД D2 -> Вг В2, Вг -> Clf В2 -> С2, Dx -> Л, D2 -> -+А, А Вг C2-+D2i A B2 Cx-^D^. Множество F минимально и редуцировано. Единственными эквивалентными левыми множествами являются Вг В2 и DXD2. Группируем F-зависимости в CF-зависимости, получая G = \(ВХ В2, Dx D2) -> Al9 (B±) -> -+ С19 (В2) -> С2, (Dx) -> Л, (D2) -> Л, (А Вг С2) -+ D2, (A B2 CJ-> -^Dx}. Множество 5Х 52 в правой части первой CF-зависимости опущено согласно требованию о пустоте пересечения левых и правых частей. Даже при этом условии атрибут А в правой части первой CF-зависимости является посторонним. Это не так в зависимости Вх В2 -»■ А из F, где он нужен для доказательства Вг В2 -*D1D2 (см. упр. 5.28). Таким образом, показано, что, переходя от редуцированного минимального множества F-зависимостей к минимальному кольцевому множеству, для получения редуцированного минимального кольцевого множества все еще необходимо выполнить шаг редукции. Кольцевые множества возникнут снова в гл. 6, где они используются для синтезирования схем баз данных.
5.9. Упражнения 101 5.9. УПРАЖНЕНИЯ 5.1. Найдите неизбыточное покрытие для множества G— {Л-> С, Л В -> С, С -*■ D /, С D -> /, Ε С -> А Я, Ε Ι -* С}. 5.2. Покажите, каким образом можно в некоторых случаях ускорить выполнение алгоритма 5.1 DERIVES. 5.3. Покажите, что множество F-зависимостей F избыточно тогда и только тогда, когда в F существует F-зависимость X -> Y, такая, что F — {X -»- У} \= \== Х-> У. 5.4. Рассмотрите следующий вариант алгоритма 5.4 NONREDUN: REPUGNANT (G) begin F := 0; for каждая F-зависимость Χ -> Υ из G do if MEMBER (G — {X -> Г}, X -> Y) then F:= Fl) {X->K}; return (G — F) end. Верно ли алгоритм REPUGNANT вычисляет неизбыточное покрытие для G? 5.5. Приведите пример множества F-зависимостей, содержащего F-зависимость X -> F, в которой каждый атрибут из X и Υ является посторонним, 5.6. Найдите множества F-зависимостей F и G, такие, что F является неизбыточным покрытием G, но G содержит меньшее число F-зависимостей. 5.7. Покажите, что удаление из левой части неизбыточного множества F-зависимостей посторонних атрибутов может привести к избыточному множеству F-зависимостей. 5.8. Докажите, что алгоритм 5.4 NONREDUN имеет временную сложность О (пр), где η — длина входа, ρ — число F-зависимостей. Используя этот результат, покажите, что алгоритм 5.7 REDUCE имеет временною сложность О (/г2) при длине входа п. 5.9. Завершите доказательство леммы 5.3. 5.10. Пусть F — множество всех возможных F-зависимостей, за исключением вида 0 -> У, над реляционной схемой R = Аг ... Ап. Найдите неизбыточное покрытие для F. 5.11*. Чему равно максимальное число неизбыточных покрытий для множества из η F-зависимостей? 5.12. Покажите, что F-зависимость Χ-* Υ избыточна в F тогда и только тогда, когда для X -»- Υ существует DDA-граф Η над F, для которого X -> Υ не принадлежит U (Я). 5.13. Покажите, что для избыточного множества F лемма 5.4 неверна. 5.14. Покажите, что для двух эквивалентных неизбыточных множеств F-зависимостей F и G может существовать некоторое X, для которого £> (X) и Eq (X) содержат различное число F-зависимостей. 5.15. Найдите два эквивалентных неизбыточных множества F-зависимостей с разным числом зависимостей. 5.16. Приведите пример множества F-зависимостей G и множеств атрибутов X и Y, таких", что Χ Λ Υ не выполняется в G, а X -* Υ выполняется. 5.17. Покажите, что минимальное множество F-зависимостей не может одновременно содержать F-зависимости X ->- Υ и X ->■ Ζ. 5.18 *. Найдите алгоритм проверки непосредственной определяемое™. 5.19. Докажите, что если X _!_> Υ в G, то для любого покрытия F для X -> Υ существует DDA-граф Я над F, для которого U (Я) Π Ef (Χ) = 0· 5.20. Докажите лемму 5.6. 5.21. Приведите пример множества F-зависимостей, в котором некоторая F-зависимость имеет два посторонних атрибута, но, если иметь в виду сохранение эквивалентности, удален из них может быть только один.
102 Гл. 5. Покрытия функциональных зависимостей 5.22. Докажите, что, если g и G только неизбыточны, теорема 5.1 неверна. 5.23. Для заданной булевой матрицы Μ размера рХ ρ из доказательства теоремы 5.3 найдите за время О (/?2) множества Ef· 5.24. Пусть (Xlf Х2, ..., Xk) -+ Υ есть CF-зависимость и 5 = Xt {J X2 (J ... U Xk U У- Покажите, что F = {Хг -> 5, Х2 ->■ 5, ..., Х^ -> 5} является естественным характеристическим множеством CF-зависимости. 5.25. Покажите, что для любого множества CF-зависимостей существует эквивалентное множество F-зависимостей, использующее не более чем двукратное число атрибутных символов. 5.26. Докажите лемму 5.10. 5.27. Покажите, что в редуцированной CF-зависимости имеет место (Xlf х29 ..., xk)-> υ, (Хг и *2 и ... и xk)ny= 0- 5.28. Пусть F — множество F-зависимостей из примера 5.21. Покажите, что в Вг В2 -> А атрибут А не посторонний. 5.29. Найдите редуцированное минимальное кольцевое покрытие множества G из упр. 5.1. 5.10. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Эквивалентные множества F-зависимостей и другие представления исследованы в работе Armstrong [1974]. Бернштейн (Bernstein [1976]) показал полезность неизбыточности при нормализации базы данных (см. гл. 6). Канонические покрытия введены в работе Paredaens [1977], а в Leuris, Sekino, Ting [1977] рассматривается представление для всех неизбыточных покрытий множества F-зависимостей. Некоторые результаты о NP-полноте проблем нахождения покрытий и включений см. в работе Luchessi и Osborn [1978]. Бири и Бернштейн (Beeri, Bernstein [1979]) построили эффективный алгоритм вычисления неизбыточного покрытия, а также решения некоторых NP-полных задач о F-зависимостях. Понятие прямой определяемости и алгоритм MINIMIZE взяты у Мейера (Mayer [1980]), который, кроме того, показывает NP-полноту задачи нахождения оптимальных покрытий. Для ознакомления с теорией NP-полных задач читатель отсылается к книге Garey, Johnson [1979]. Для исследования покрытий и выводимости F-зависимостей Jou [1980] и Steiner [1981 ] приводят другую формальную систему.
Глава 6 Базы данных и нормальные формы Прежде чем начать детальное изучение реляционных баз данных, рассмотрим понятие ключа и суперключа в свете наших знаний, касающихся F-зависимостей. Напомним: для данной схемы отношения R ключ на R — это подмножество К ^ R, такое, что для любого допустимого отношения г (R) не существует двух различных кортежей tx и t2 в г, таких, что t± (К) = t2 (/С), и никакое собственное подмножество Kr cz К не обладает этим свойством. Напомним также, что для некоторых допустимых отношений со схемой R подмножество К может быть ключом, но мы рассматриваем все допустимые отношения со схемой R. Супер ключ — это любая совокупность атрибутов, содержащая ключ. Пример 6.1. Отношение вылет в табл. 6.1 содержит список вылетов из аэропортов. На первый взгляд может показаться, что {ПУНКТ-ОТПРАВЛЕНИЯ, ВРЕМЯ-ВЫЛЕТА} является ключом для отношения вылет. Однако в расписании может быть одновременно два рейса из одного города в одно и то же время (например, если в табл. 6.1 добавить еще один кортеж (234 Денвер 21.30 Чикаго)). Следовательно, на самом деле ключом для отношения вылет является {ПУНКТ-ОТПРАВЛЕНИЯ, ВРЕМЯ- ВЫЛЕТА, ПУНКТ-НАЗНАЧЕНИЯ!. На языке функциональных зависимостей1 ключ для схемы R — это подмножество К ^ R, такое, что любое допустимое отношение г (R) удовлетворяет К ->■ R, но никакое собственное подмножество К' ^ К этим свойством не обладает. Если К является ключом для г, то не существует двух различных кортежей tx и t2 в г, имеющих одинаковые /(-значения. Таким образом, условие проверки функциональной зависимости К ->- R следующее: как только имеет место равенство t± (К) = t2 (/(), .то обязательно
104 Гл. 6. Базы данных и нормальные формы Таблица 6.1. Отношение вылет вылет (РЕЙС ПУНКТ- ВРЕМЯ- ПУНКТ- ОТПРАВЛЕНИЯ ВЫЛЕТА НАЗНАЧЕНИЯ) 16 Нью-Йорк 9 : 10 Чикаго 142 Денвер 10 : 32 Чикаго 146 Денвер 21 : 30 Нью-Йорк 197 Атланта 13 : 15 Хьюстон должно иметь место равенство t± = t2, т. е. tx (R) = ί2 (R)> Суперключ — это подмножество К ^ R, такое, что К -> R, при этом отсутствует требование минимальности. 6.1. БАЗЫ ДАННЫХ И СХЕМЫ БАЗ ДАННЫХ В дальнейшем предполагается, что схема отношения R состоит из двух частей S и К, где S — это множество атрибутов, а К — множество выделенных ключей. (Напомним, что выделенный ключ может быть супер ключом.) Введем обозначение R = (S, К). Иногда при обсуждении множества атрибутов вместо S будет все-таки использоваться R, например, будем писать X s R вместо X & S. Определение 6.1. Пусть U—множество атрибутов, каждый из которых соотнесен с определенным доменом. Схемой реляционной базы данных R над U называется совокупность схем отношений {/?!, R2, ..., Rp\, где Rt = (Sif К|),Ч < i < Ρ, и Si Φ Sj при i Φ /. Реляционной базой данных d со схемой базы данных R называется такая совокупность отношений \гг, г2, ..., rv\, что для каждой схемы R = (S, К) из R существует отношение г в d, являющееся отношением со схемой S и удовлетворяющее каждому ключу из К. Несколько отойдя от строгого соблюдения теоретико- множестйенных обозначений, будем всегда предполагать, что rt является отношением со схемой St. Пример 6.2. В табл. 6.2 показана база данных d = \рейсы% время] со схемой базы данных R = {(ПИЛОТ РЕЙС ДАТА, {ПИЛОТ ДАТА}), (РЕЙС ВРЕМЯ-ВЫЛЕТА, {РЕЙС})}· Отношения рейсы и время являются проекциями отношения график, представленного в табл. 4.1.
6.1. Базы данных и схемы баз данных 105 Таблица 6.2. Отношения рейсы и время, составляющие базу данных рейсы (ПИЛОТ РЕЙС ДАТА) время (РЕЙС ВРЕМЯ-ВЫЛЕТА) Кушинг Кушинг Кларк Кларк Кларк Чин Чин Коупли Коупли Коупли 83 116 281 301 83 83 116 281 281 412 9 авг. 10 авг. 8 авг. 12 авг. 11 авг. 13 авг. 12 авг. 9 авг. 13 авг. 15 авг. 83 116 281 301 412 10 : 13 : 5: 18 13 ; 15 :25 :50 :35 :25 Определение 6.2. Схема отношения R = (S, К) включает F- зависимость /(->/?, если К является выделенным ключом из К. Заметим, что мы уже используем R вместо S. Определение 6.3. Схема базы данных R = {Rl9 R2, ..., Rv\ представляет множество функциональных зависимостей G = = \Х -*- Υ | некоторое Rt в R включает X -> Y]. Схема базы данных R полностью характеризует множество функциональных зависимостей F, если F ~ G. Пример 6.3. Схема базы данных R в примере 6.2 представляет множество F-зависимостей G = {ПИЛОТ ДАТА ->· ПИЛОТ РЕЙС ДАТА, РЕЙС -> РЕЙС ВРЕМЯ-ВЫЛЕТА}. Схема базы данных R полностью характеризует множество F = {ПИЛОТ ДАТА -> РЕЙС ВРЕМЯ-ВЫЛЕТА, РЕЙС -> ВРЕМЯ- ВЫЛЕТА}. Можно установить другие ограничения на отношения в нашей базе данных, отличные от тех, которые навязаны выделенными ключами схем отношений. В некоторых случаях определяется совокупность F-зависимостей, которым должны удовлетворять отношения в базе данных. Не каждая F-зависимость в F будет применима к каждому отношению в этой базе данных. Как обеспечить применимость F-зависимости А В ->· С к отношению г {А С)? Для этого нужно так изменить определение понятия «удовлетворяет», чтобы оно подходило к базам данных. Определение 6.4. Пусть R — схема отношения. F-зависимость X ->rY применима к R, если X -> Υ является F-зависимостью над R. Определение 6.5. Пусть d= {r1} га, ..., гр\ —база данных со схемой R = \Rl9 R2f ···, Rp\ над U. Пусть F — множество F-зависимостей над U. База данных d удовлетворяет F, если каждая F-зависимость X ->· Υ из /7+, применимая к схеме Rt
-106 Гл. 6. Базы данных и нормальные формы из R, выполняется в отношении гь. Пусть G— множество всех F-зависимостей в F+, которые применимы к некоторой схеме Ri в R. Любая F-зависимость в G+ называется навязанной R, любая F-зависимость в F+—G+ является ненавязанной R. Множество F навязано схеме базы данных R, если каждая F-зависимость в F+ навязана R, т. е. G ξ F. Чтобы показать4, что множество F навязано схеме базы данных R, достаточно найти множество F' ξ Ζ7, такое, что каждая F- зависимость в F' применима к некоторой схеме R в R. Определение 6.6. База данных d со схемой R подчиняется множеству F-зависимостей F, если F навязано схеме R и d удовлетворяет F+. Если F' является множеством F-зависимостей в том смысле, как это описано выше, d подчиняется F, если d удовлетворяет F'. Пример 6.4. Пусть даны R = \Rl9 R2f R3\, где R1 = А В С, R2 = В CD и R3=DE,u F = \А-+ВС, С-+А, A-+D, D-> -*-Ε, Α-+Ε]. F-зависимости A-+-D и А -> Ε неприменимы ни к одной схеме отношения в R. Однако F навязано схеме R, так как G = {А -> В С, С-^Л, С -+ Df D -+ Е\ эквивалентно F и каждая F-зависимость'в G применима к некоторой схеме отношения в R. Множество F' = \А -+ D] не является навязанным R. 6.2. НОРМАЛЬНЫЕ ФОРМЫ Д^Я БАЗ ДАННЫХ Дадим определения трех нормальных форм для баз данных. Нормальная форма представляет собой ограничение на схему базы данных, которое избавляет базу данных от некоторых нежелательных свойств. Сначала определим нормальные формы для схемы отношения в схеме базы данных, а затем расширим это определение, чтобы применить его к схеме базы данных в целом. 6.2.1. Первая нормальная форма Схема отношения R находится в первой нормальной форме (1НФ), если -значения в dom (А) являются атомарными для каждого атрибута А в R. Другими словами, значения в домене не являются ни списками, ни множествами простых или сложных значений. Схема базы данных R находится в первой нормальной форме, если каждая схема отношения в R находится в первой нормальной форме. Все примеры, рассматриваемые до сих пор, были в первой нормальной форме. Определить понятие атомарности трудно: значение, атомарное в одном приложении, может быть неатомарным в другом. Можно руководствоваться общим принципом, что значение неатомарно, если в приложении оно используется по частям.
6.2. Нормальные формы для баз данных 107 Пример 6.5. Ниже представлено отношение рождение, где перечисляются дни рождений: рождение (ИМЯ ДАТА-РОЖДЕНИЯ) Аллен Альфред Альфонс Алиса 7 июня 1949 21 марта 1933 30 апреля 1959 12 декабря 1963 Если бы потребовалось указать только месяц или год рождения, то отношение рождение не находилось бы в 1НФ, так как требуемые значения являются только частью значений атрибута ДАТА-РОЖДЕНИЯ· Чтобы отношение находилось в 1НФ в этом случае, атрибут ДАТА-РОЖДЕНИЯ должен быть разбит на части так, как это показано ниже: рождение /ИМЯ ДЕНЬ- V РОЖДЕНИЯ МЕСЯЦ- ГОД- \ РОЖДЕНИЯ РОЖДЕНИЯ/ Аллен Альфред Альфонс Алиса 7 21 30 12 июнь март апрель декабрь 1949 1933 1959 1963 Пример 6.6. Отношение род, представленное ниже, не находится в первой нормальной форме потому, что оно включает величины, являющиеся совокупностью атомарных значений. род (ИМЯ ПОЛ) мужской женский {Джон, Джеки, Иван} {Мэри, Мария} Чтобы отношение род было в 1НФ, оно должно быть представлено следующим образом: род (ИМЯ ПОЛ) Джон Джеки Иван Мэри Мария мужской мужской мужской женский женский В чем преимущество 1НФ? В том, что 1НФ позволяет выражать F-зависимости с той степенью детализации, с какой нам требуется, что невозможно без 1НФ. Предположим, что надо добавить атрибут ЗНАК, являющийся знаком зодиака индивидуума, в первое отношение рождение в примере 6.5. ЗНАК функционально зависит только от месяца и дня рождения и не зависит от года.
108 Гл. 6. Базы данных и нормальные формы Однако все что можно сделать в такой ситуации, это установить F-зависимость ДАТА-РОЖДЕНИЯ -> ЗНАК, которая позволяет двум индивидумам, родившимся в один и тот же день, но в разные годы, иметь различные знаки. Во втором отношении рождение подобных трудностей не возникает, так как можно записать F-зависимость ДЕНЬ-РОЖДЕНИЯ МЕСЯЦ-РОЖДЕНИЯ -> ЗНАК, и тогда проблема, вставшая в предыдущей функциональной зависимости, отпадает. С обновлением данных также могут быть известные трудности, если схема не находится в первой нормальной форме. Предположим, что требуется выполнить операцию обновления СН (род; Джеки, мужской, ПОЛ=женский) в первом отношении род примера 6.6 результат такого обновления является неопределенным. Что нужно сделать: перенести имя Джеки из одного множества в другое или заменить пол мужской на женский? Для второго варианта отношения род в примере 6.6 такой проблемы не возникает. 6.2.2. Аномалии и избыточность данных Вторая и третья нормальные формы возникли в результате стремления избежать аномалий при обновлении данных и избавиться от информационной избыточности в отношениях. Аномалия обновления является нежелательным побочным эффектом, обусловленным изменением отношения. Рассмотрим отношение график в табл. 6.3. Атрибуты РЕЙС ДАТА являются ключом отношения график, и это отношение должно также удовлетворять F-зависимости РЕЙС -> ГАЛЕРЕЯ- Допустим, что требуется обновить отношение, указав значение ключа и задавая значения остальным атрибутам, Однако если мы выполним операцию СН (график; 112, 6 июня; ПИЛОТ=Босли ГАЛЕРЕЯ==8), то отношение перестанет удовлетворять F-зависимости РЕЙС -> ГАЛЕРЕЯ. Чтобы избежать нарушения F-зависимости, необходимо после каждого выполнения операции обновления просмотреть полученное отношение и везде (во все^ кортежах), где появляется указанный в операторе номер рейса, изменить номер галереи на указанный в операторе. А требовалось всего лишь Таблица 6.3. Отношение график график (РЕЙС ДАТА ПИЛОТ ГАЛЕРЕЯ) 112 6 июня Босли 7 112 7 июня Брукс 7 - 203 9 июня Босли 12
6.2. Нормальные формы для баз данных 109 изменить только один кортеж. Кроме того, информация о связи между номером рейса и номером галереи дублируется в рассмотренном отношении, что ведет к избыточности информации. Сточки зрения как обновления, так и устранения избыточности лучше представить ту же информацию в виде базы данных из двух отношений пилот-график и галерея-график: пилот-график (РЕЙС ДАТА ПИЛОТ) 112 6 июня Босли 112 7 июня Брукс 203 9 июня Босли галерея-график (РЕЙС ГАЛЕРЕЯ) 112 7 203 12 Можно восстановить первоначальное отношение график, взяв пилот-график >< галерея-график. Аномалии обновления больше не существует, так как нужно изменить только один кортеж, чтобы поменять назначение галереи. При этом избавились также от некоторой избыточности данных, так как каждая пара (номер рейса, номер галереи) записывается только однажды. 6.2.3. Вторая нормальная форма Определение 6.7. Для данного множества функциональных зависимостей F и данной функциональной зависимости X -> Υ в F+ множество Υ называется частично зависимым от X относительно F, если X -> Υ не- является редуцированной слева. Другими словами, существует собственное подмножество X' множества X, такое, что зависимость X' -> Υ принадлежит F+. Если X -> Υ является редуцированной слева, то Υ называется полностью зависимым от X. Пример 6.7. Пусть F = {РЕЙС ДАТА -> ПИЛОТ ГАЛЕРЕЯ, РЕЙС-> ГАЛЕРЕЯ}. Здесь атрибут ГАЛЕРЕЯ частично зависит от РЕЙС ДАТА, а ПИЛОТ полностью зависит от РЕЙС ДАТА. Определение 6.8. Для данной схемы отношения R, атрибута А в R и множества функциональных зависимостей F на R атрибут А называется первичным в R относительно F, если А содержится в каком-нибудь ключе схемы R. В противном случае А называется непервичным в R. Обратите внимание: ключи в этом определении не следует путать с выделенными ключами для R, так как последние могут быть на самом деле суперключами. Кроме того, могут существовать ключи для R, не являющиеся выделенными.
по Гл. 6. Базы данных и нормальные формы Пример 6,8. Пусть R = РЕЙС ДАТА ПИЛОТ ГАЛЕРЕЯ и множество F то же, что и в примере 6.7. РЕЙС и ДАТА являются первичными, ПИЛОТ и ГАЛЕРЕЯ — непервичными. (Допустимо, чтобы один пилот имел два рейса в один день, так что ПИЛОТ ДАТА ключом не являются.) Определение 6.9. Схема отношения R находится во второй нормальной форме (2НФ) относительно множества функциональных зависимостей F, если она находится в первой нормальной форме и каждый непервичный атрибут полностью зависит от каждого ключа для R. Схема базы данных R имеет вторую нормальную форму относительно F, если каждая схема отношения R из R находится в 2НФ относительно F. Пример 6.9. Пусть R и F те же, что и в примере 6.8, и R = = {/?}. Схема R не находится в 2НФ, так как ГАЛЕРЕЯ частично зависит от РЕЙС ДАТА. Если положить R = {РЕЙС ДАТА ПИЛОТ, РЕЙС ГАЛЕРЕЯ}, тогда R будет находиться во второй нормальной форме. РЕЙС теперь является ключом для схемы отношения РЕЙС ГАЛЕРЕЯ. 6.2.4. Третья нормальная форма Рассмотрим отношение график, представленное в табл. 6.4. Оно похоже на отношение с тем же именем, представленное в табл. 6.3. Снова предположим, что отношение график имеет ключ РЕЙС ДЕНЬ и к тому же удовлетворяет функциональным зависимостям КОД-ПИЛОТА -> ИМЯ и ИМЯ -> КОД-ПИЛОТА. Если выполнить операцию обновления СЩграфик; 112, 6 июня; КОД-ПИЛОТА = 31039, ИМЯ = Босли), то изменяется функциональная зависимость ИМЯ -> КОД-ПИЛОТА. Кроме того, имеется избыточная информация в виде пар КОД-ПИЛОТА. Проблема здесь вовсе не из-за частичной зависимости непервичного атрибута, хотя решение получается то же самое. Это отношение можно представить в виде базы данных следующим образом: пилот-график (РЕЙС ДАТА КОД-ПИЛОТА) 112 6.6 31174 112 7.6 30046 203 9.6. 31174 код (КОД-ПИЛОТА ИМЯ) 31174 Босли 30046 Брукс
6.2. Нормальные формы для баз данных 111 Таблица 6.4. Отношение график график (РЕЙС ДАТА КОД-ПИЛОТА ИМЯ) 112 6 июня 31174 Босли 112 7 июня 30046 Брукс 203 9 июня 31174 Босли Можно восстановить первоначальное отношение путем соединения. Определение 6.10. Для данной схемы отношения R, подмножества X множества R, атрибута А в R и множества функциональных зависимостей F атрибут А называется транзитивно зависимым от X в R, если существует подмножество Υ ^ R, такое, что X -+ Υ, Υ ч+ Χ, Υ -> А относительно F и Α Φ Χ Υ. Пример 6.10. Пусть R = РЕЙС ДАТА КОД-ПИЛОТА ИМЯ и F = {РЕЙС ДАТА -^ КОД-ПИЛОТА ИМЯ, КОД-ПИЛОТА-^ ИМЯ, ИМЯ -* КОД-ПИЛОТА}. Атрибут ИМЯ является транзитивно зависимым от РЕЙС ДАТА, так как РЕЙС ДАТА -> КОД-ПИЛОТА, КОД-ПИЛОТА -/> РЕЙС ДАТА и КОД-ПИЛОТА -> ИМЯ. Здесь КОД-ПИЛОТА выполняет роль Υ в определении 6.10. Определение 6.11. Схема отношения R находится в третьей нормальной форме (ЗНФ) относительно множества функциональных зависимостей F, если она находится в 1НФ и ни один из непервичных атрибутов в R не является транзитивно зависимым от ключа для R. Схема базы данных R находится в третьей нормальной форме относительно F, если каждая схема отношения R в R находится в ЗНФ относительно F. Пример 6.11. Пусть R и F те же, что и в примере 6.10, и R = \R\, Схема базы данных R не находится в ЗНФ относительно F, потому что ИМЯ является транзитивно зависимым от РЕЙС ДАТА. Если R = {РЕЙС ДАТА КОД-ПИЛОТА, КОД- ПИЛОТА ИМЯ}, то R находится в ЗНФ относительно F. Лемма 6.1. Любая схема отношения, находящаяся в ЗНФ относительно F, находится в 2НФ относительно F. Доказательство. Покажем, что частичная зависимость означает транзитивную зависимость. Предположим, что непервичный атрибут А в R является частично зависимым от ключа К ^ R. Тогда существует собственное подмножество К множества /С, такое, что Ff= К! -> А. Здесь К! ч* К, так как тогда К должно было быть ключом для R, а ключи не могут содержать в себе ключи в качестве собственного подмножества. Также имеем
112 Гл. 6. Базы данных и нормальные формы А Ф /С, так как К является ключом, а атрибут А — непервичный. Следовательно, К -> К\ К' ч+ К, К -> А и А Ф К К = /С Таким образом, Л является транзитивно зависимым от К- 6.3. НОРМАЛИЗАЦИЯ ЧЕРЕЗ ДЕКОМПОЗИЦИЮ Всегда можно начать с того, что, взяв некоторую схему отношения R, не находящуюся в ЗНФ относительно множества F- зависимостей F, разложить ее в схему базы данных, имеющую ЗНФ относительно F. Разложение схемы отношений означает разбиение схемы отношения на пару схем отношений Rr и R2 (возможно, пересекающихся) так, чтобы любое отношение г (R), удовлетворяющее F, разлагалось без потерь на ^ и ^2. Другими словами, ля, (г) χ π#2 (г) = г. Возможно, нужно будет повторить процесс декомпозиции отношений R-l и R2, если какое-нибудь из них не окажется в ЗНФ. Будем продолжать декомпозицию до тех пор, пока все полученные отношения не окажутся в третьей нормальной форме относительно F. Предположим, что существует транзитивная зависимость от ключа в R. Имеются ключ К £ R, множество Υ ^ R и непервичный атрибут А в R, такие, что /С-* У, Υ -J+ К, Υ -* А относительно F и Α Φ Κ Υ. Пусть Rx = R — А и R2 = Υ А. Если для нашей схемы отношения имеются выделенные ключи, скажем R = (S, К), то пусть К — множество выделенных ключей для Ri и \Υ\ —множество выделенных ключей для R2. He исключено, что какой-нибудь выделенный ключ К из К содержит А. В этом случае К является суперключом для R. Пусть К! = = К — А. Коль скоро К! остается суперключом для R, то А не может быть частью никакого ключа для R. Подставим К' вместо К в К- Одну транзитивную зависимость из R удалили, и для любого г (R), удовлетворяющего F, имеем г = πχι (г) >< я#а (г) (см. упр. 6.4). Если остались какие-нибудь транзитивные зависимости в Rx или R2, то можно осуществить декомпозицию еще раз. На самом деле процесс декомпозиции схемы не бесконечен. Каждый раз, когда мы разлагаем схему отношения, обе получившиеся в результате схемы становятся меньше, а в схеме отношения, содержащей только два атрибута, не может быть никакой транзитивной зависимости (см. упр. 6.5). Процесс декомпозиции можно ускорить, проверяя наличие каких-либо других непервичных атрибутов в R — {KY), зависящих от Υ. Если такие атрибуты имеются, то они также транзитивно зависят от К и их можно удалить одновременно. Предположим, А1у А2) ..., Ат находятся в R — (ΚΥ) и зависят от Υ. Положим Rx = R — {ΑλΑ2 ... Ат) и R2 = YAXA2 ... Ат. Опять,
6.3. Нормализация через декомпозицию 113 как и ранее, любое отношение г (R), удовлетворяющее F, можно разделить без потерь на Rx и R2. Пример 6.12. Пусть R = РЕЙС ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА ТИП-САМОЛЕТА I-КЛАСС II-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ- МЕСТ #ПИТАНИЕ, где I-КЛАСС и П-КЛАСС — количество посадочных мест в каждом салоне (секции). Пусть множество выделенных ключей К = {РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ- ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ- ПРИБЫТИЯ} · Предполагается, что в одно и то же время не может быть двух рейсов с одинаковыми пунктами отправления и назначения. Пусть все выделенные ключи действительно являются ключами, и пусть имеются также следующие F-зависимости в множестве F: ТИП САМОЛЕТА -> I-КЛАСС П-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ ВРЕМЯ-ВЫЛЕТА ДЛИТЕЛЬНОСТЬ-ПОЛЕТА -> # ПИТАНИЕ ВРЕМЯ ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА -* # ПИТАНИЕ I-КЛАСС П-КЛАСС-> КОЛИЧЕСТВО- ПОСАДОЧНЫХ-МЕСТ I-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ -* П-КЛАСС П-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ -> I-КЛАСС Казалось бы, ВРЕМЯ-ПРИБЫТИЯ ВРЕМЯ-ВЫЛЕТА -* ·** ДЛИТЕЛЬНОСТЬ-ПОЛЕТА также должна быть F-зависи- мостью, но, из-за того что время прибытия и время отправления указывается местное, ДЛИТЕЛЬНОСТЬ-ПОЛЕТА зависит от ,часовых поясов, к которым принадлежат соответствующие аэропорты. Сначала удалим транзитивную зависимость атрибута 4ф ПИТАНИЕ от РЕЙСА через ВРЕМЯ-ВЫЛЕТА ДЛИТЕЛЬНОСТЬ- ПОЛЕТА. Получим схему отношения R1 = РЕЙС ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА ТИП-САМОЛЕТА I- КЛАСС П-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ
114 Гл. 6. Базы данных и нормальные формы с выделенными ключами Кг = {РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ- ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ} и схему отношения R2 = ВРЕМЯ-ОТПРАВЛЕНИЯ ДЛИТЕЛЬНОСТЬ- ПОЛЕТА #ПИТАНИЕ с выделенным ключом К2= {ВРЕМЯ-ОТПРАВЛЕНИЯ ДЛИТЕЛЬНОСТЬ- ПОЛЕТА}. Схема R2 находится в ЗНФ, а схема Rt — нет, так как I-КЛАСС, II-КЛАСС и КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ транзитивно зависят от РЕЙСА через ТИП-САМОЛЕТА. Схема Rt разлагается на схему R1X = РЕЙС ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА ВРЕМЯ- ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА ТИП-САМОЛЕТА с выделенными ключами К„ = {РЕЙС, ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ- НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА, ПУНКТ- ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ПРИБЫТИЯ} и схему Rl2 = ТИП-САМОЛЕТА 1-КЛАСС II-КЛАСС КОЛ ИЧ ЕСТВО- ПОСАДОЧ Η Ы Х-М ЕСТ с выделенным ключом Ки = {ТИП-САМОЛЕТА}. Схема отношения Rn находится теперь в ЗНФ относительно F, a R12 — нет, поскольку КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ транзитивно зависит от ТИПА-САМОЛЕТА через 1-КЛАСС II-КЛАСС. Схема R12 разлагается на R12l = ТИП-САМОЛЕТА 1-КЛАСС 11-КЛАСС с выделенным ключом КИ1 = {ТИП-САМОЛЕТА}
6.4. Недостатки нормализации посредством декомпозиции 115 и схему отношения R122 = I-КЛАСС П-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ- МЕСТ с выделенным ключом К122 = {I-КЛАСС П-КЛАСС}. Декомпозиция R реализована до такой стадии, когда каждая схема отношения находится в ЗНФ относительно F. Следовательно, схема базы данных R = {^11» ^121> ^122> %2\ находится в ЗНФ. Кроме того, любое отношение г (R), удовлетворяющее F-зависимостям из F, можно точно представить его проекциями на схемы отношений в R, так как г = (я*и (г) >< (nRl21 (г) >< nRl22 (г))) >< nRz (r). Скобки здесь не обязательны, так как соединение коммутативно и ассоциативно. Они только выделяют стадии декомпозиции г без потерь. Если изменить порядок соединений, то промежуточные результаты могут оказаться бессмысленными, например, яд122 (г) >< π*2 (г) φ nRi22Rz (г). Если сделать оценку (вычисления) согласно скобкам, то каждый промежуточный результат будет проекцией г. Схема базы данных R не однозначна. Есть точки, в которых можно выбирать пути декомпозиции определенного отношения с целью удаления транзитивно зависимого атрибута. Так, на первом шаге можно было выбрать R2 = ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА # ПИТАНИЕ, так как #ПИТАНИЕ также транзитивно зависит от РЕЙСА через ВРЕМЯ-ПРИБЫТИЯ ДЛИТЕЛЬНОСТЬ-ПОЛЕТА. На третьем шаге существует три варианта декомпозиции Ri2. (Какие?) Некоторые ключи для схем отношений не указаны как выделенные, например I-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ- МЕСТ и П-КЛАСС КОЛИЧЕСТВО-ПОСАДОЧНЫХ-МЕСТ для R122. 6.4. НЕДОСТАТКИ НОРМАЛИЗАЦИИ ПОСРЕДСТВОМ ДЕКОМПОЗИЦИИ При нормализации схемы отношения посредством декомпозиции возникают новые проблемы. Во-первых, временная сложность процесса, по-видимому, не ограничивается полиномиальной. В тер-
116 Гл. 6. Базы данных и нормальные формы минах размера схемы отношения и заданного множества F-зави- симостей схема отношения может обладать экспоненциальным числом ключей (см. упр. 6.8). Кроме того, проверка атрибута схемы на непервичность является NP-полной задачей. Во-вторых, число порожденных процессом схем отношения может оказаться большим, чем в действительности необходимо для ЗНФ. Пример 6.13. Пусть заданы схема R = А В С D Ε и F = = \А В-+ CD E, А С-> BD Е, β-> С, С-> В, C->D,B-+E]. Ключами R относительно F являются А В и А С. Используя транзитивную зависимость D от А В через С, разлагаем R следующим образом: R1= А В С Ε Κι = \А В, А С\ R2= CD К2= \С]. Далее в R± используем транзитивную зависимость Ε от А В через В для получения Rn = А В С Кц = {А Б, А С] R12 = В Ε Κ12 = \В\. Окончательная схема базы данных в ЗНФ имеет вид R = {^ii> Riz> ^2ί· Существует декомпозиция R в ЗНФ с двумя схемами отношений, а именно: R1 - А В С Κι = \А Б, АС] R2=BDE К, = {5}. Третья проблема состоит в том, что при декомпозиции схемы отношения могут возникнуть частичные зависимости. Эти зависимости могут породить в окончательной схеме базы данных больше схем, чем это в действительности необходимо. Пример 6.14. Для схемы отношения R = А В С D и F = = \А -> В С D, С -> D] атрибут А является единственным ключом в R относительно F. Атрибут D транзитивно зависит от А через В С. Разлагая, получаем RX = A В С Κχ = \А\ R2 = В С D К2 = {В С]. Фактическим ключом R2 является ВС, но D от него частично
6.5. Нормализация посредством синтеза 117 зависит. Следовательно, D транзитивно зависит от В С. Схему R2 следует разложить в R21 = В С К21 = \В С\ R22 — CD K22 == |w- Схемы /?!, R21 и R22 образуют схему базы данных в ЗНФ для R. Однако схемы отношений R± и R22 также образуют схему базы данных в ЗНФ для R. Этих неприятностей можно избежать, если при декомпозиции следить за тем, чтобы промежуточное множество атрибутов в разлагаемой транзитивной зависимости было минимальным. В примере 6.14 атрибут D транзитивно зависел через β С от Л, но β С не минимально. Атрибут D транзитивно зависит от А только через С. Четвертая проблема состоит в том, что для построенной схемы базы данных заданное множество F-зависимостей может оказаться ненавязанным. Пример 6.15. Пусть заданы схема R = А В С D Ε и F = = \А-> В С D Е, С D -> £, Ε С -> В[. Исключив транзитивную зависимость Ε от А через CD, получаем R1 = А В С D Κι = \А\ R2= С D Ε К2 = \С D\. Множество F ненавязано схеме базы данных R = \R1} R2\ из-за того, что зависимость Ε С -> В невыводима из F-зависимостей в F1", приложимых к /?! или R2 (это утверждение должно быть подтверждено вычислением* F1"). ] Наконец, пятая проблема. С помощью декомпозиции можно породить схемы со «скрытыми» транзитивными зависимостями. Пример 6.16. Пусть заданы схема R = А В С D и F = = \А -> В, В -> С\. Атрибуты A D являются ключом F, а В частично зависит от A D. При декомпозиции получаем #! = А С D Ki = \A D] R2 = А В К2 = \А\. Несмотря на то что R1 и R2 формально находятся в ЗНФ, в Rx существует «скрытая» транзитивная зависимость С от A D. 6.5. НОРМАЛИЗАЦИЯ ПОСРЕДСТВОМ СИНТЕЗА В этом разделе рассматриваются другие методы получения третьей нормальной формы, не порождающие проблем декомпозиции, описанных в предыдущем разделе.
118 Гл. 6. Базы данных и нормальные формы Основная задача сводится к нахождению с^емы базы данных в ЗНФ, представляющую схему отношения, не находящуюся в ЗНФ. Предположим, что на входе задана схема отношения R и множество F-зависимостей F над R. С их помощью требуется создать схему базы данных R = {Rx, ..., Rp\ над R, удовлетворяющую следующим четырем требованиям: 1. Множество F полностью характеризуется с помощью R, т. е. F = {К -> Ri\ Ri входит в R, К — выделенный ключ Rf}. 2. Каждая схема отношения Rt из R находится в ЗНФ относительно F. 3. Не существует схемы базы данных с меньшим числом схем, чем R, удовлетворяющей свойствам 1 и 2. 4. Для любого отношения г (R), удовлетворяющего F, г = nRx (г) >< kRz (г) >«...>< nRp (г). Схему базы данных R, удовлетворяющую первым трем сформулированным выше требованиям, назовем полной схемой· базы данных для F. Обсудим смысл этих требований. Свойство 1 обеспечивает навязанность F в R, которая может быть проверена без вычисления F1*. Свойство 1 также гарантирует, что единственными F- зависимостями, которые должны быть навязаны для выполнения F в R,· являются те, которые выводятся из выделенных ключей. Причины, требующие выполнения свойства 2, уже обсуждались. Свойство 3 защищает от избыточности. Свойство 4 позволяет правильно представить отношение со схемой R своими проекциями на схемы из R. Построение алгоритма начнем с построения кольцевого покрытия, порождающего для F полную схему базы данных. Поскольку алгоритм строит схему базы данных непосредственно из F-зависимостей F, назовем его алгоритмом синтеза. Далее укажем на некоторые другие полезные свойства, которыми обладают схемы базы данных, синтезированные с помощью этого алгоритма. Затем модифицируем алгоритм так, чтобы его выход удовлетворял свойству 4, а также укажем пути дальнейшего его улучшения. Поскольку самой трудной частью алгоритма является нахождение редуцированного, минимального, кольцевого покрытия для входного множества F-зависимостей, создаваемый алгоритм будет иметь полиномиальную временную сложность. Таким образом, устраняется первая проблема, упомянутая в предыдущем разделе. Вторая и третья проблемы обходятся благодаря свойству 3. Четвертая проблема не возникает из-за свойства 1, а пятая обходится благодаря одновременному выполнению свойств 1 и 3.
6.5. Нормализация посредством синтеза 119 6.5.1. Предварительные результаты для алгоритма синтеза Лемма 6.2 Если R — схема базы данных, представляющая множество F'-зависимостей G, то в ней существует по крайней мере | EG | схем отношений. Это означает, что в R по крайней мере столько же схем, сколько классов эквивалентности в EG. Доказательство. Все F-зависимости, заключенные в одной схеме отношения R из R, должны иметь эквивалентные левые части. Если Κι и Кг — ключи R, то верно Κι -> R и Кг -* R> следовательно, Κι -> Кг и Кг -> /Ci- Таким образом, каждая схема может заключать в себе F-зависимости не более чем из одного класса эквивалентности EG. Для представления jscex F-зависимостей из G в R понадобится по крайней мере | EG | схем. Следствие. Пусть F — множество F-зависимостей. Любая схема базы данных, полностью характеризующая F, должна иметь по крайней мере | EF' \ схем, где F' есть неизбыточное покрытие для F. Доказательство. Из леммы 6.2 мы знаем, что если G есть^шо- жество F-зависимостей, представленных в R, то | EG \ ^> | EF' |, поскольку G = F = F', и Fr неизбыточно. 6.5.2. Построение алгоритма синтеза Лемма 6.2 указывает способ синтезирования полной схемы базы данных для множества F-зависимостей F. Находим неизбыточное покрытие F' для F и в EF- вычисляем классы эквивалентности. Для каждого EF- (X) из EF- строим схему отношения, состоящую из всех атрибутов, появляющихся в каждой F-зависимости из EFr (X). Пусть eF- (X) —множество выделенных ключей для R. Схема базы данных R состоит из всех таким образом синтезированных схем. Согласно следствию из леммы 6.2, она наверняка имеет минимальное число схем. Можно показать, что R полностью характеризует F (см. упр. 6.11). Однако, как показывает следующий пример, полученные схемы могут оказаться не в ЗНФ относительно F. Пример 6.17. Пусть F = F' = {А -> В С, В -> С\ и R = = А В С. Приведенная выше процедура дает схему отношения R1 = А В С с выделенным ключом Κι = {^4} и схему отношения R2 = В С с выделенным ключом К2 = {В}.
120 Гл. 6. Базы данных и нормальные формы Отношение Rx не находится в ЗНФ относительно F. (Почему?) В примере 6.17 возникают осложнения цз-за нередуцированности F. Следующий пример показывает, что даже редуцированное множество F-зависимостей не гарантирует получения схемы базы данных в ЗНФ. Пример 6.18. Пусть F состоит из F-зависимостей Вг В2 -+· A Dx D2 -> Вг В2 Βι —*■ Ci В2 —*■ С2 D1-^A D2-+ A А Вх C2-+D2 A B2 Ci-^Dj и пусть R = А Вг В2 Сг С2 Dx D2. Это множество F-зависимостей рассмотрено в примере 5.21. Единственными F-зависимостями из одного класса эквивалентности являются Вг В2-+ А и Dx D2-+ ->- Βχ 82. Редуцированная схема, порождаемая этим классом эквивалентности, есть R = ABiBJDJDi с выделенными ключами К = {Вг Въ Dt D2\. Поскольку А транзитивно зависит от Вх В2 через Du то R не находится в ЗНФ. Из примера 6.18 видно, что нахождение минимального покрытия F не решает задачу. Так же как и в примере 5.21, затруднение представляет атрибут Л. Если, как это было ранее, мы используем кольцевые покрытия, задача решена. Синтез, использующий кольцевые покрытия, дается алгоритмом 6.1. Алгоритм 6.1. SYNTHESIZE Вход: множество F-зависимостей F над U. Выход: полная схема базы данных для F. SYNTHESIZE(F) 1. Найти для F редуцированное минимальное кольцевое покрытие G. 2. Для каждой CF-зависимости (Хъ Х2, ..., Xk) ->- Υ из G построить схему отношений R = ΧχΧ2 ... XkY с выделенными ключами К = \Хъ Х2>\·- Хн\- 3. Вернуться к множеству схем п. 2. Пример 6.19. Пусть F — множество F-зависимостей А-+Вг В2 Сг С2 D Ε /χ /а /8 J Вг В2 Ci -> Л С2 D Ε 1г /а /8 J Вг В2 С2->А Сх D Ε Ix /a h J Ε -> I г U h Сг D ->J C2 D -W h h -* h h h -* h h h -*" hi и пусть R = А Вг В2 Сг C2 D Ε 1г I2 /8 J.
6.5. Нормализация посредством синтеза 121 Множество F-зависимостей с точностью до переименований то же, что и в примере 6.12. Множество F минимально, но не редуцировано. Редуцируя F, получаем F' = \А ·+ Вх В2 Сг С2 D Ε Εχ -> 1г /2 Βχ В2 Сх -> Α Βχ В2 С%—>~ А Сх D-+J С2 D -> J /х /2 -> /3 /2 /з -> /ι А /3 -* h\- Преобразуя к кольцевому покрытию и редуцируя, имеем G = \(А Вх В2 Съ Вг В2 C2)-+D E (Ε) -> /χ /2 (Cx D) -> / (C2 D) -> У (/ι /a, /* /з, Λ /β)}· Преобразуя каждую CF-зависимость в схеме отношения с выделенными ключами, получаем Яг = Α Βι Вг Сх С2 D Ε Κι = А2 ~ Ε Ιχ Ι2 Кг == A3 = Οχ Ζ/ J Кз == Ri^C^D J K4 = #6 = A ^2 ^3 Кб = A, B, 1 Bv Ci Ol O* Ca E\ Ci D C2 D Η *2> h h, h h\. Окончательная схема базы данных есть R = \Rlt R2, Rs> R^ Rt\- 6.5.3. Корректность и другие свойства алгоритма синтеза Лемма 6.3. Пусть R — схема базы данных, полученная для множества F-зависимостей алгоритмом SYNTHESIZE. Для произвольной схемы Rt из R каждый выделенный ключ Rt является ключом. Доказательство. Пусть (Хъ Х2,..., Xk) -> Υ есть CF-зависи- мость, из которой синтезировано Rt. Пусть К — выделенный ключ Riy не являющийся ключом. Пусть К = Xj Для некоторого Xj в левой части CF-зависимости. Поскольку К не ключ, он содержит перемещаемый атрибут. Следовательно, зависимость (Хъ Х*,--, Xk)-+Yne редуцирована, что противоречит построению. Теорема 6.1. Алгоритм SYNTHESIZE создает для множества F-зависимостей F полную схему базы данных за время О (п2), где η — длина входа. Доказательство. Вначале покажем, что временная сложность SYNTHESIZE есть О (я2). Время, затраченное на шагах 2 и 3 алгоритма, меньше времени выполнения шага 1. Из рассуждений разд. 5.8 известно, что шаг 1 может быть реализован за время О (пг).
122 Гл. 6. Базы данных и нормальные формы Пусть R есть результат работы SYNTHESIZER). Схема R полностью характеризует F, поскольку множество F-зависимо- стей, заключенных в произвольной схеме R из R есть характеристическое множество всех CF-зависимостей, из которых R было синтезировано (см. упр. 5.24). Из леммы 5.10 и следствия леммы 6.2 заключаем, что из всех схем базы данных, полностью характеризующих F, схема R имеет минимальное число схем отношений. Остается показать, что все схемы R находятся в ЗНФ относительно F. Рассмотрим отношение Rt из R с выделенными ключами Ki = {Χι, Хъ ···> Xib синтезированное из CF-зависимости (Χι, Χ2, ..., Хй) -> Υ- Если атрибут А в Rt непервичный, то А входит в F, поскольку, согласно лемме 6.3, каждое Х7· из Ki является ключом Rt: Пусть X есть ключ Rt (не обязательно выделенный). Предположим, что существует подмножество Ζ из Ri9 такое, что F влечет за собой Χ->ΖηΖ->Λ,ηοη3 него не следует Ζ -> X и Α φ ΧΖ. Из множества G CF-зависимостей в SYNTHESIZE с помощью естественных характеристических множеств для каждой CF-зависимости из G образуем множество F'. Рассмотрим для Ζ ->- А DDA-граф Я над F'. Граф U (Я) не может содержать F-зависимости из Ε г (X), являющейся естественным характеристическим множеством для (Хх, Х2, ..., Хи) ->- Υ. В противном случае мы имели бы Ζ -> X в F. Таким образом, исключив А из Υ, мы все еще можем из F' доказать Ζ -> А, следовательно, зависимость (Хь Х2, ..., Xk) -> Υ не редуцирована. В доказательстве теоремы 6.1 использованы оба условия редуцированных CF-зависимостей: отсутствие перемещаемых атрибутов в левой части и избыточных атрибутов в правой. Из алгоритма SYNTHESIZE нельзя исключить ни один из этих шагов редукции. В доказательстве теоремы 6.11 фактически доказывается несколько более сильный результат, чем утверждение теоремы. А именно: в схеме отношения, полученной по методу синтеза, ни один атрибут схемы не может транзитивно зависеть от ключа, кроме случая, когда он содержится в выделенном ключе. Из следующего примера видно, что существует схема базы данных в ЗНФ, где это более сильное условие не выполняется. Пример 6.20. Пусть R=ABCDEuF= \A -+B, В -> -> А Е, A C-+D}. Рассмотрим схему базы данных для F, состоящую из схем отношений: /?т = А В С D с выделенным ключом Κι = \А С\ и R2 = А В Ε с выделенными ключами Кг = {А, В\. Поскольку атрибут В первичный (В С есть ключ), схема Rx находится в ЗНФ, хотя В частично зависит от А С. Отметим два других свойства схем базы данных, порождаемой SYNTHESIZE, которые можно доказать.
6.5. Нормализация посредством синтеза 123 Лемма 6.4. Пусть R — схема базы данных, построенная дня множества Υ-зависимостей F алгоритмом SYNTHESIZE. He существует другой полной схемы базы данных для F с меньшим числом выделенных ключей. Доказательство предоставляется читателю (см. упр. 6.15). Рассмотрим схему отношения R в ЗНФ, состоящую из Rx = A_B D, R2 =jA С, R3 = В С D, где подчеркнутые атрибуты являются выделенными или фактическими ключами, и других F-зависимостей нет. Заметим, что А В-+В С, В С -/> А В к BC-+D. Поскольку В С £ Rly то R1 находится в ЗНФ. Однако из Rx без изменения замыкания множества F-зависимостей, представленных в R, можно исключить D. Определение 6.12. Пусть R — схема отношения в схеме базы данных R над U и F — множество F-зависимостей. Пусть X ^ R и Α ζ R. Атрибут А внешне зависит от X в F, если в U существует подмножество Υ, такое, что Υ не является подмножеством R, Χ-+Υ, Υ -/> X, Y-+AbFkA&XY. Внешняя зависимость имеет тот смысл, который в примере 6.16 назван скрытой транзитивной зависимостью. В схемах баз данных в ЗНФ их не всегда удается избежать. Пример 6.21. Пусть R—схема базы данных, составленная из схем отношений: Rx — А В с выделенным ключом Κι = \А\ и R2 = В С с выделенными ключами Кг = {В, С\. Пусть F — множество F-зависимостей, представленных в R. Поскольку А -> С, С -/> А и С -> β, то β внешне зависит от Л, однако В нельзя удалить из Rly не изменяя замыкания множества F-зависимостей, представленных в R. Пусть R — схема базы данных в ЗНФ над U, G — множество F-зависимостей, представленных в R, a R — схема отношений из R. Предположим, что атрибут А из R внешне зависит от ключа К в R через множество Υ ^ U, где Υ g£ R. Для некоторого выделенного ключа К! из R атрибут Л, если он не используется для вывода К -> Υ из К! -►- Л, может быть удален без изменения замыкания G, поскольку из G все еще выводимы К -> Υ и Υ -> Л. Зависимость У -> Л продолжает выполняться, потому что любой DDA-граф Η для Υ ->- Л над G не может использовать ни одну F-зависимость из £G (/С). В противном случае Υ -> /С.
124 Гл. 6. Базы данных и нормальные формы Определение 6.13. Пусть R—схема базы данных в ЗНФ над U и G — множество F-зависимостей, представленных в R. Пусть R — схема отношения из R. Атрибут Л в R называется удаляемым в R, если его удаление не изменяет замыкание G. (Удаление Л влечет за собой удаление всех выделяемых ключей, содержащих А.) Полные схемы базы данных в ЗНФ, образованные по методу декомпозиции, не содержат удаляемых атрибутов (см. упр. 6.17). То же верно для синтезированных схем базы данных. Лемма 6.5. Если R — схема базы данных, синтезированная из множества ¥-зависимостей F, то ни одна схема из R не содержит удаляемых атрибутов. Доказательство. Пусть R содержит удаляемый атрибут Л. Пусть далее (Хъ Х2) ..., Xk) -*■ Υ есть CF-зависимость, из которой R была синтезирована. Атрибут А не может входить ни в одно Xt в левой части F-зависимости. Если бы А входило в некоторое Хи то поскольку А удаляемо, то либо Xt не является ключом, что противоречит лемме 6.3, либо Хг может быть полностью удалено из (Хъ Х2, ..., Хи) ->■ Y, что противоречит лемме 6.4. Откуда заключаем, что Л входит в Y. Но тогда, поскольку Л является посторонним атрибутом Y, (Хъ Х2, ..., Xk) ->- Υ не редуцировано. Следовательно, Л не входит в (Хъ Х2, ..., Хн)-> -> Υ, что противоречит построению R. 6.5.4. Улучшения алгоритма синтеза Несмотря на то что в синтезе решаются проблемы, возникающие при декомпозиции (см. разд. 6.4), существует недостаток синтеза, при декомпозиции отсутствующий. Схема базы данных R в ЗНФ, полученная из единственной схемы отношения R и множества F-зависимостей F с помощью декомпозиции, для любого отношения г (/?), удовлетворяющего F, без потерь разлагается по схемам отношений R. Если R получено с помощью синтеза, то это неверно. Пример 6.22. Пусть F = \А -+ С, В -> С}. Алгоритм SYNTHESIZE (F) порождает схемы отношений /?! = А_С и R2 = BC, где подчеркнутые атрибуты означают выделенные ключи. Однако приведенное ниже отношение не^ разлагается без потерь на Ri и R2 г (А В С) a b с а' V с
6.5. Нормализация посредством синтеза 125 Определение 6.14. Схема базы данных R над U обладает свойством соединения без потерь относительно множества F-зависимостей F, если для любого отношения, удовлетворяющего F, проходит декомпозиция без потерь на схемы соотношения R. В свойстве 4 в начале разд. 6.5 утверждается, что синтезированная схема базы данных R должна обладать свойством соединения без потерь относительно множества F-зависимостей, представленных в R. Из примера 6.22 видно, что схема базы данных, полученная алгоритмом синтеза, не всегда обладает свойством соединения без потерь. Другая проблема связана с атрибутами из R9 не входящими в зависимости F. Они не появляются в схеме базы данных, синтезированных из F. С помощью небольшой модификации алгоритм SYNTHESIZE может решить обе проблемы. Определение 6.15. Пусть R—схема базы данных над U и О — множество F-зависимостей, представленных в R. Подмножество X в U называется универсальным ключом R для О, если 0[=X->U. Мы не делаем предположения о минимальности X. Из гл. 8 явствует, что если некоторая схема отношений из схемы базы данных R содержит универсальный ключ, то R обладает свойством соединения без потерь относительно представляемых F-зависимостей, и обратно. Проблема алгоритма синтеза состоит в том, чт;о в R может не оказаться схемы, содержащей универсальный ключ. Именно это произошло в примере 6.22. Проблему можно разрешить, если добавить схему, состоящую исключительно из атрибутов некоторого универсального ключа. При этом приходится признать, что такое добавление фактически нарушает минимальность на R. Первый шаг модификации алгоритма SYNTHESIZE состоит в добавлении к F F-зависимости U -^ С, где С — атрибут, не содержащийся в U. При нахождении кольцевого покрытия О для F зависимость U -> С не будет исключена как избыточная, поскольку в F не существует другой F-зависимости с С в правой части. При нахождении минимального покрытия для F зависимость U ->■ С можно комбинировать с F-зависимостями X -> Y, но тогда X^U и X должен быть универсальным ключом. На этапе редукции поиска G множество U может быть сведено к U' посредством удаления перемещаемых атрибутов (или X может быть сведено к X' тем же способом). Но U'->U, следовательно, U' универсальный ключ. При синтезировании CF-зависимости, содержащей в качестве левого множества U', возникает некоторая схема отношения Rt\ и, следовательно, U обладает универсальным ключом в одной из своих схем и свойством соединения без потерь относительно F.
126 Гл. 6. Базы данных и нормальные формы В конце алгоритма атрибут С может быть удален из схемы, в которой он появился. (Он появится только в одной из них.) Пример 6.23. Пусть F = {А -+ С, В ->- С}. Добавив АВС^- ->■ D к F, перейдем к кольцевому покрытию и после редуцирования имеем G = \(А)-+С, (В) -*- С, (A B)^-D\. CF-зависи- мость (А В) ->- D используется для синтеза схемы Ri = А В D с выделенным ключом Κι = \А В\. Схема R1 содержит универсальный ключ А В. Атрибут D может быть исключен из R±. 6.6. УСТРАНИМЫЕ АТРИБУТЫ Показано, что алгоритм SYNTHESIZE (F) порождает для F полную схему отношений базы данных R, не содержащую удаляемых атрибутов. Тем не менее может оказаться, что с помощью замены множества выделенных ключей возможно удалить атрибут из схемы отношения R ^ R. Пример 6.24. Пусть F = [А ->- 5, Я-*Л, А С ^ D Е, BD-+C]. Алгоритм SYNTHESIZE (F) порождает схему базы данных R, состоящую из схем отношений R± = А В с выделенными ключами Κι = {Л, В\ hR2 = ABCDEc выделенными ключами Кг = {Л С, В D}. Атрибут В не удалим из R2, потому что он входит в выделенный ключ. Если К2 заменить на {Л С, Л D\y R продолжает полностью характеризовать F, а В становится удалимым. Определение 6.16. Пусть R — полная схема базы данных для множества F-зависимостей F. Пусть далее Rt — схема отношения из R и В атрибут в Rt. Атрибут В устраним в Riy если при замене выделенных ключей Rt атрибут В становится удалимым из Rit Устранимый атрибут в схеме базы данных, полученный с помощью SYNTHESIZE, должен принадлежать выделенному ключу некоторой схемы; в противном случае он удалим. Может показаться, что нахождение другого множества выделенных ключей схемы R, сохраняющей навязанность R, так же сложно, как нахождение всех ключей R. Если схема R порождена алгоритмом SYNTHESIZE, множество альтернативных ключей, если оно существует, можно найти, не находя всех ключевых множеств R. Выделенные ключи R соответствуют левым частям CF-зависимо- стей одного класса эквивалентности из минимального покрытия Т7, а структура минимальных покрытий детально изучена. Пусть схема отношения R из схемы базы данных R синтезирована из CF-зависимости (Хъ Х2, ..., Xk) ->- Y\ принадлежа-
6.6. Устранимые атрибуты 127 щей минимальному редуцированному кольцевому покрытию G для F. Таким образом, множество выделенных ключей R есть К =; {^i, Хг> ···> Хк\- Множества Хг, Х2, ..., Xk являются левыми частями F-зависимостей из одного класса эквивалентности Ef' (X) для некоторого минимального покрытия F' для F. Тем самым мы знаем, что при сохранении свойства навязанности любое альтернативное множество ключей К' = |Zb Ζ2, ..., Ζ т\ имеет т ^> k. Если т > k> то Zt -A Zj для некоторых i и /. Тогда из К' без изменения замыкания множества F-зависимостей, представленных в R, Zi можно удалить. Таким образом, примем, что любое альтернативное множество искомых ключей имеет в точности k элементов. Пусть К' = {Ζχ, Ζ2, ..., Zk\ — альтернативное множество выделенных ключей R. Известно, что непосредственная определяемое^ индуцирует между элементами К и К' взаимно однозначное соответствие, поскольку оба могут служить левыми частями класса эквивалентности некоторого минимального покрытия F. Допустим, что Zlf Z2, ..., Zk пронумерованы так, что Xt -% Zj и Zi -Α Χι в F, 1 < i <: k. Повторим задачу. При помощи заменяющего множества выделенных ключей R, не содержащих β, проверяется возможность устранения атрибута В. Пусть К' — определенное выше именно такое множество. Если В <£ Xi9 то далее можно предположить, что Xi = Zj. Если это не так, то, поскольку Zt -A Xu Zt в К' можно заменить на Хг·, не вводя далее В и сохраняя R как полную схему базы данных для F. Теперь задача сильно сужена. Начав с множества К = {Хц ^2> ···> Xu] выделенных ключей R, для каждого Xt из К, содержащего В, найти заменяющий ключ Zi9 не содержащий В, для которого в F имеет место Xt -%. Zt и Zt -% Xt. Заметим, что Zt должно содержаться в R\ в противном случае его нельзя использовать как ключ, заменяющий Xt. Алгоритм 6.2 AVOID находит альтернативное множество выделенных ключей R, не содержащих В, если таковое существует. Алгоритм использует процедуру DCLOSURE(X, F), находящую максимальное множество X', такое, что X -% X! в F. Алгоритм 6.2. AVOID Вход: схема отношения R, полученная из SYNTHESIZE (F), с выделенными ключами К, атрибут В в R и множество F- зависимостей F. Выход: альтернативное множество выделенных ключей для R, не содержащих β, если таковое существует; 0 в противном случае.
12i Гл. б. Базы данных и нормальные формы AVOID (Д, В, F) begin К' : = К; отказ: =ложь; for каждое Xt в К do if В £ X, then begin M:=DCLOSURE (X„ F); Λ1/: = (Λί П #)—Я; if DCLOSURE (M\ F) => Χ, then заменить Xt в К' минимальным подмножеством Ζ из М', таким, что Ζ -^ Xt else отказ:=истина end; if отказ=ло#с& then return (К') else return (0) end. Пример 6.25. Пусть F, Ri и Д2 те ж^> что и в примере 6.24. Алгоритм AVOID (R2, β, F) в качестве замены К2 рассмотрит только В D. Множеством Μ является А В D, М' равно A D. В F выполняется A D —> В D, таким образом, в К2 можно заменить В D на A D. Алгоритм имеет полиномиальную временную сложность. Вывод и доказательство корректности алгоритма AVOID опускаются (см. упр. 6.20). Алгоритм используется для исключения удаляемых атрибутов схемы отношения R в схеме базы данных R, порожденной алгоритмом SYNTHESIZE (F). Алгоритм AVOID (R, β, F) применяется для каждого атрибута В из R. Если выход не пуст, множество выделенных ключей R заменяется на альтернативное множество, полученное алгоритмом AVOID. Известно, что если такое множество ключей существует, то при его использовании атрибут β удалим. Из R — β -> β можно вывести новое множество F-зависимостей, представленных в R, так как для R должен существовать новый выделенный ключ К, для которого К —> β (К есть один из замененных ключей, найденных AVOID; см. упр. 6.21 и 6.22). Полная схема базы данных без устранимых атрибутов находится в LTK-нормальной форме (от Ling, Tompa, Kameda). В упр. 6.23 дана другая характеристика LTK-нормальной формы 6.7. НОРМАЛЬНАЯ ФОРМА БОЙСА—КОДДА (НФБК) Показано, что алгоритм синтеза порождает схемы отношений, которые находятся в несколько более сильной форме, чем ЗНФ в том смысле, что ни один из выделенных ключей не зависит транздтивно ни от одного ключа. Спрашивается, можно ли исклю-
6.7. Нормальная форма Бойса—Кодда (НФБК) 129 чить все транзитивные зависимости? На этот вопрос дается положительный ответ. Начав со схемы отношения R и множества F- зависимостей F, для R можно найти схему базы данных R, лишенную транзитивных зависимостей, однако F может оказаться не навязанным в R. Посмотрим, почему желательно исключить первичный атрибут, транзитивно зависящий от ключа. Пример 6.26. Рассмотрим отношение счет на схеме АЭРОПОРТ ФИРМА ОТДЕЛЕНИЕ. Значение кортежа (афо) в отношении счет состоит в том, что если некто из фирмы φ покупает билет в аэропорту а, то счет следует послать отделению о фирмы. Таким образом, имеем две F-зависимости: АЭРОПОРТ ФИРМА -> ОТДЕЛЕНИЕ и ОТДЕЛЕНИЕ -> ФИРМА. Множество АЭРОПОРТ ОТДЕЛЕНИЕ является ключом схемы отношения, а ФИРМА частично, следовательно, транзитивно зависит от АЭРОПОРТ ОТДЕЛЕНИЕ. Несмотря на то что ФИРМА является первичным атрибутом, его желательно удалить из схемы, поскольку существует дублирование пар ФИРМА—ОТДЕЛЕНИЕ. Определение 6.17. Схема отношения R находится в нормальной форме Бойса—Кодда (НФБК) относительно множества F-зависимостей F, если она находится в 1НФ и никакой атрибут в R не зависит транзитивно ни от одного ключа R. Схема базы данных R находится в нормальной форме Бойса—Кодда (НФБК) относительно множества F-зависимостей Т7, если каждая схема отношения iJgR находится в НФБК относительно Т7. НФБК включает в себя ЗНФ (см. упр. 6.24). Схема отношения АЭРОПОРТ ФИРМА ОТДЕЛЕНИЕ из примера 6.26 не находится в НФБК. Дадим еще одно определение НФБК (см. упр. 6.25). Определение 6.18. Схема отношения R находится в нормальной форме Бойса—Кодда (НФБК) относительно множества F- зависимостей F, если для каждого подмножества Υ из R и каждого атрибута Α ζ R — Υ из Υ -+ А следует Υ -»■ R при Т7, т. е. если Υ нетривиально определяет произвольный атрибут из /?, то Υ есть сверхключ R. Для схемы отношения, не находящейся в НФБК,гможно всегда провести декомпозицию в схему базы данных в НФБК. Если для схемы R имеет место Υ -+ А в F, Υ ^ R и Α ζ R — Υ, и если Υ не является ключом R, то разложить R на Rx = R — А и R2 = = Υ Л. Выделенные ключи для Rx и R2 находятся так же, как и в случае схем базы данных в ЗНФ. Пример 6.27. Пусть схема отношения R = АЭРОПОРТ ФИРМА ОТДЕЛЕНИЕ и F-зависимости те же, что в примере
130 Гл. 6. Базы данных и нормальные формы 6.26. Используя F-зависимость ОТДЕЛЕНИЕ ->- ФИРМА, разложим R на Rx =АЭРОПОРТ ОТДЕЛЕНИЕ с выделенным ключом Кх = = |АЭРОПОРТ ОТДЕЛЕНИЕ} и R2 =ФИРМА ОТДЕЛЕНИЕ с выделенным ключом К2 = = |ОТДЕЛЕНИЕ|. К сожалению, метод синтеза не гарантирует НФБК. Пример 6.28. Пусть R = А В С D Ε и F = {А -+В С, В С^А, BCD^E, E-+C]. Алгоритм SYNTHESIZE порождает следующее кольцевое покрытие F: G = |(Л, В С), (BCD)-* Ε, (Ε) -> С}. Вторая CF-зависимость из G определяет схему отношения R2 = = В С D Ε с выделенным ключом К2 = \В CD]. Поскольку Ε -»■ С и Ε не является ключом R2f схема R2 не находится в НФБК. Выбирая эквивалентное кольцевое покрытие О' = {(Л, В С), (A D)-+E9 (Е)-+С\, получаем схему базы данных в НФБК. 6.7.1. Проблемы НФБК Из предыдущего следует, что при заданном множестве F-зависи- мостей над R можно найти схему базы данных в ЗНФ, полностью характеризующую F. Для НФБК это неверно. Внимательное изучение примера 6.26 показывает, что для него не существует схемы базы данных в НФБК, полностью характеризующей заданное множество F-зависимостей. Таким образом, мы поставлены перед выбором между НФБК или навязаныостью F-зависимостей. Множество F-зависимостей может не иметь полной НФБК схемы базы данных, кроме того, проверка свойства НФБК для заданной схемы базы данных является NP-полной задачей. 6.8. УПРАЖНЕНИЯ 6.1*. Предположим, что множество схем базы данных над U ограничено тем условием, что для произвольных двух схем ^ и % в схеме базы данных Ri gt #2· Пусть U содержит η атрибутов. Сколько схем базы данных из ρ схем отношений существует над U (не считая ключей)? 6.2. Пусть дана схема базы данных R = {А В С, A D Е, СЕ}. Докажите, что множество F-зависимостей F — {А В-+С, С-*-Е, Е-+С, C-*-D, А В -> Е} навязано в R. 6.3. Приведите пример отношения в ЗНФ, у которого некоторый первичный атрибут транзитивно зависит от ключа.
6.8. Упражнения 131 6.4. Пусть R1 и R2 — схемы отношений, для которых Rt Г) #2 = Я. Покажите, что для произвольного отношения г (1?^2), удовлетворяющего X -> Γ = π/?1(^)><,π/?2(Γ). 6.5. Пусть F — множество F-зависимостей, не содержащее F-зависимостей вида 0 -> К. Покажите, что ни одна схема с двумя атрибутами не может иметь в F транзитивных зависимостей. 6.6. Пусть даны R = СТУДЕНТф ИМЯ ДЕНЬ-РОЖДЕНИЯ ВОЗРАСТ КОНСУЛЬТАНТ ФАКУЛЬТЕТ СЕМЕСТР КУРС ГРУППА и F-зависимости СТУДЕНТф-> ИМЯ ДЕНЬ-РОЖДЕНИЯ ВОЗРАСТ КОНСУЛЬТАНТ ФАКУЛЬТЕТ, ДЕНЬ РОЖДЕНИЯ -> ВОЗРАСТ, КОНСУЛЬТАНТ -* ФАКУЛЬТЕТ. Найдите для R схему базы данных в ЗНФ. 6.7. Найдите отношение г (R), такое, что г разлагается без потерь на некоторое множество схем отношений, но не разлагается ни на одну пару схем. В обоих случаях предполагается, что ни одна из схем не совпадает с R. 6.8. (а) Покажите, что множество из 2п F-зависимостей может индуцировать 2п ключей на схеме отношения с 2п атрибутами. (Ь) Попробуйте обобщить результат п. (а) на множество т F-зависимостей над схемой соотношения с η атрибутами. 6.9. Пусть R = {Rly R2, ..., Rp} — схема базы данных над U, в которой Rx ξ R%. Покажите, что если отношение г (U) без потерь разлагается на схемы R, то г разлагается без потерь на схемы отношений из R' = {R2, ..., Rp}, и обратно. 6.10. Приведите пример множества F-зависимостей F и схемы базы данных R, полностью характеризующей F, состоящей из более чем | Ер | схем отношений, причем ни одна из схем не может быть удалена из R без нарушения полной характеризуемости F. 6.11. Покажите, что метод получения схемы базы данных R из множества F-зависимостей F с помощью неизбыточного покрытия F' для F (как это подчеркнуто в начале разд. 6.5.2) гарантирует, что R полностью характеризует F. 6.12. Сравните схемы базы данных, полученные декомпозицией и синтезом в упр. 6.12 и 6.19. 6.13. Покажите, что в случае, если CF-зависимости в кольцевом покрытии G содержат перемещаемые или посторонние атрибуты, алгоритм SYNTHESIZE может работать неверно. \ 6.14. Для множества F-зависимостей ,из примера 5.13 используйте синтез и декомпозицию для получения схемы базы данных в ЗНФ. 6.15. Докажите лемму 6.4. 6.16. Приведите пример схемы отношения R и схемы базы данных R с внешней зависимостью K-+Y, К-/*· К, К-> Л, где К есть ключ R, Л -/> -т^ У, но Л не удалимо из R. 6.17*. Докажите, что полная схема базы данных R для множества F- зависимосте.1 F, полученная декомпозицией из единственной схемы отношения R, не содержит удаляемых атрибутов. Определение 6.19. Пусть F — множество F-зависимостей, R= {Rlf R2, ... ···» Rp} — схема базы данных и G — множество F-зависимостей из F+, приложи- мых к схемам отношений из R. Множество F неявно навязано в R, если R обладает свойством соединения без потерь относительно (7. 6.18*. Докажите, что для любой схемы базы данных R, полученной декомпозицией из схемы отношения R и множества F-зависимостей F, множество F неявно навязано в R. 6.19. Рассмотрите модифицированный алгоритм SYNTHESIZE из разд. 6.5.4. Покажите, что добавление R ->■ С к F порождает дополнительный
132 Гл. 6. Базы данных и нормальные формы выделенный ключ только тогда, когда порождается дополнительная схема. Покажите, что если в F существует F-зависимость X-*-Y, причем Х-> R в F, то зависимость R ->■ С не порождает дополнительную схему. 6.20. Найдите сложность алгоритма 6.2 из разд. 6.6. Можете предположить, что алгоритму AVOID доступна информация, вычисленная в SYNTHESIZE. 6.21. Пусть R— схема отношения в полной схеме базы данных R. Покажите, что если В не устранимо в R, то В не устранимо в любой схеме отношения R', полученной из R заменой выделенных ключей и удалением удали- мых атрибутов. 6.22. Приведите алгоритм, преобразующий полную схему базы данных, полученную из SYNTHESIZE, в LTK-нормальную форму. 6.23*. Пусть R — полная НФБК-схема базы данных для множества F- зависимостей F и R — схема отношений в R. Пусть далее В — атрибут в R, R' — схема базы данных, полученная удалением В из R в R. Пусть, кроме того, /** — подмножество F+, приложимое к некоторой схеме из R'. Докажите, что В устранимо в R тогда и только тогда, когда F = /*". 6.24. Покажите, что НФБК влечет за собой ЗНФ. 6.25. Докажите эквивалентность двух определений НФБК из разд. 6.7. 6.26. Представьте пример схемы базы данных, находящейся в НФБК, но не в LTK-нормальной форме, и наоборот. 6.9. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Вторая и третья нормальные формы введены Коддом (Codd [1971b, 1972a]), который указал способ их получения с помощью нормализации. В работе Kent [1973] излагается введение в нормальные формы. Первые варианты алгоритма синтеза даны в Delobel, Casey [1973], а также Wang, Wedekind [1975], однако они содержат неточности. Бернштейн (Bernstein [1976b]) был первым, кто предложил алгоритм синтеза полной схемы базы данных для множества F-зависимостей. В работах Osborn [1977], Dayal и Bernstein [1978a], а также Biskup, Dayal и Bernstein [1979] обсуждаются ЗНФ-схемы базы данных, удовлетворяющие условию соединения без потерь. Другие алгоритмы для получения ЗНФ-схем предложены в Beeri, Bernstein [1979], а также в Pichat, Delobel [1979]. Устранимые атрибуты введены Ling, Tompa и Kameda [1981]; ими же предложен алгоритм для их устранения. Нормальная форма НФБК введена Коддом (Codd [1974]). Методы декомпозиции и синтеза для получения нормальных форм сравниваются в работе Fagin [1977], а в Beeri, Bernstein и Goodman [1978] обсуждаются цели нормализации. Попытка классифицировать аномалии обновления по их серьезности предпринята в работе Heath [1971]. Эти авторы указывают, что для заданного множества F-зависимостей может существовать много нормализованных схем. При этом отсутствуют четкие критерии выбора «наилучшей». В работе Bernstein, Goodman [1980b] поднимается вопрос о взаимодействии схем в НФБК с аномалиями обновления. Было показано, что многие проблемы, связанные с нормализацией, такие, как нахождение непервичных атрибутов или минимальных ключей, являются NP-полными (Lucchesi, Osborn [1978]). Эти результаты были использованы для того, чтобы показать (Beeri, Bernstein [1979]), что проверка состояния НФБК для заданной схемы базы данных и проверка существования для множества F-зависимостей полной НФБК-схемы являются NP-полными задачами. В работах Osborn [1979a] и LeDoux, Parker [1980] приводятся алгоритмы, проверяющие, имеет ли множество F-зависимостей полную НФБК-схему. Однако оба алгоритма могут затрачивать в неудачном случае экспоненциальное время. Полиномиальный по времени алгоритм нахождения НФБК-схемы для множества Р-зависикостей, обладающий свойством соединения, предложен в работе Tsou и Fischer [1980], но схема может оказаться неполной. Вопросы сложности, связанные с нормализацией, см. в Jou [1980] и Tsou [1980].
Глава 7 Многозначные зависимости, зависимости соединения и нормальные формы В гл. 6 показано, что присутствие функциональных зависимостей в реляционной схеме означает возможность декомпозиции схемы, уменьшающей избыточность и при этом сохраняющей информацию. Однако существование F-зависимостей не является необходимым условием такой декомпозиции. Рассмотрим состояние отношения назначение табл. 7.1. Кортеж (fdp) в отношении назначение означает, что рейс № / может выполняться в день недели d на самолете типа р. В отношении не выполняются ни F-зависимость РЕЙС -> ДЕНЬ-НЕДЕЛИ, ни РЕЙС -> ТИП-САМОЛЕТА, однако оно без потери информации разлагается на два отношения: РЕЙС ДЕНЬ-НЕДЕЛИ и РЕЙС ТИП-САМОЛЕТА (табл. 7.2). Рассмотрим другое состояние отношения назначение, задаваем мое табл. 7.3. Если разложить это состояние на схемы РЕЙС ДЕНЬ-НЕДЕЛИ и РЕЙС ТИП-САМОЛЕТА, то снова получатся проекции из табл. 7.2. Однако соединение проекций не восстанав- ливает исходного отношения, Таблица 7.1. Отношение назначение назначение (РЕЙС 106 106 106 106 204 204 ДЕНЬ-НЕДЕЛИ Понедельник Четверг Понедельник Четверг Среда Среда ТИП-САМОЛЕТА) 747 747 1011 1011 707 727
134 Гл. 7. Многозначные зависимости, зависимости соединения Таблица 7.2. Отношение назначение разлагается без потерь на отношения день назначения и тип самолета назначения день назначения (РЕЙС ДЕНЬ-НЕДЕЛИ) 106 Понедельник 106 Четверг 204 Среда тип самолета назначения (РЕЙС ТИП-САМОЛЕТА) 106 747 106 1011 204 707 204 727 Таблица 7.3. Другое состояние отношения назначения назначение (РЕЙС ДЕНЬ-НЕДЕЛИ ТИП-САМОЛЕТА) 106 Понедельник 747 106 Четверг 747 106 Четверг 1011 204 Среда 707 204 Среда 727 7.1. МНОГОЗНАЧНЫЕ ЗАВИСИМОСТИ Каковы же свойства первого состояния отношения назначение, отсутствующие у второго, которые обеспечивают декомпозицию без потери информации? В первом случае, если самолет некоторого типа использован для выполнения маршрута в один'день, он может быть использован для выполнения этого маршрута в любой другой день. Это свойство отсутствует во втором состоянии отношения назначение, поскольку рейс № 106 может использовать тип 1011 в четверг, но не в понедельник. Отношение в первом состоянии следует подвергнуть декомпозиции, ибо при заданном рейсе ДЕНЬ-НЕДЕЛИ не содержит информации об атрибуте ТИП-САМОЛЕТА, и наоборот. Сформулируем это свойство по-другому. Если в отношении назначение существуют кортежи (f d р) и (/ d' /?'), то должен быть кортеж (/ d' p). Дадим формальное определение. Определение 7.1. Пусть R— реляционная схема, X и Υ— непересекающиеся подмножества R, и пусть Ζ = R — (X У). Отношение г (R) удовлетворяет многозначной зависимости (MV- зависимости) X —» Υ, если для'любых двух кортежей t± и t2 из г, для которых ίτ (X) = t2 (X)у в г существует кортеж t3, для которого выполнены соотношения t3 (X) = \ (X), t3 (Υ) = tx (Y) и ί8 (Ζ) = t2 (Ζ).
7.1. Многозначные зависимости 135 Из симметрии определения относительно tx и t2 следует, что в г существует также ί4, для которого U (X) = 4 (X), U (Y) = t2 (Υ) и ί4 (Ζ) = f, (Ζ), Пример 7.1. MV-зависимость РЕЙС-^ ДЕНЬ-НЕДЕЛИ выполняется для отношения назначение в состоянии табл. 7.1, но не табл. 7.3. Состояние табл. 7.1 удовлетворяет также MV-зависи- мости РЕЙС —» ТИП-САМОЛЕТА. Тот факт, что состояние назначение из табл. 7.1 удовлетворяет двум MV-зависимостям, не является случайным, что видно из следующей леммы. Лемма 7.1. Если отношение г со схемой R удовлетворяет MVТ-зависимости X—»У и Ζ = R — (Χ Υ), то г удовлетворяет X -» Ζ. Доказательство предоставляется читателю (см. упр. 7.2). В определении MV-зависимости X —» Υ требуется, чтобы пересечение X и Υ было пусто. Предположим, что это условие удалено из определения. Пусть отношение г (R) удовлетворяет X —» Υ, согласно модифицированному определению, и Υ' = = Υ — X. При любом определении г удовлетворяет X —» Υ'. Действительно, пусть Ζ = R — (Χ Υ) = R — (Χ Υ') и tl9 t2 — кортежи г, для которых tx (X) = t2 (X). Поскольку Χ —» Υ, в г должен существовать кортеж t3 с /я (X) = tx (X), t3 (Υ) = ^ (Υ) и ί, (Ζ) = t2 (Ζ). Если ί, (Г) = t± (Y), το <β (П = ii (П> У ^ К. Следовательно, г удовлетворяет X —» У". Предположим, что пересечение X и Υ пусто и отношение г (R) удовлетворяет X —» У. Если Х'дХ, то X —» У X', согласно модифицированному определению MV-зависимости: если кортежи tx и t2 принадлежат г и /j (X) = t2 (X), то существует кортеж 4 с /8 W = *i W. 'в (10 = Ί (Ю и ί8 (2) = t2 (Z). Следовательно, /3 (Υ Χ') = /t (У X'). Далее, вместо первоначального определения примем модифицированное. Пример 7.2. Приведенное ниже отношение удовлетворяет MV-зависимости А В -» В С, следовательно, оно удовлетворяет MV-зависимости А В —» С. г(А а а а а а а В Ъ ъ ъ b ъ· ъ с с с' с с' с' с D) d - d' d' d d d'
136 Гл. 7. Многозначные зависимости, зависимости соединения Исследуем смысл частных случаев 0 —» Υ и X -» 0 для отношения г (R). Вспомним, что, согласно ^предположению, t (0) = λ для любого кортежа t. Рассмотрим выражение 0 -» Y. Пусть Ζ = R — Υ. Для любых двух кортежей t± и t2 из г tx (0) = = t2 (0)· Если г удовлетворяет 0 —» У, то должен существовать кортеж ^ € *Ί Для которого t8 (Υ) = ίχ (К) и ί8 (2) = t2 (Ζ). Следовательно, г должен быть прямым произведением проекций JTy (г) И % (г). ΜV-зависимость X —» 0 тривиальным образом удовлетворяется для любого отношения со схемой, содержащей X. 7.2. СВОЙСТВА МНОГОЗНАЧНЫХ ЗАВИСИМОСТЕЙ Выше формализовано свойство, по которому различаются состояния отношения назначение из табл. 7.1 и 7.3. Покажем, каким образом MV-зависимости связаны с декомпозициями без потери информации. Теорема 7.1. Пусть г — отношение со схемой R; Χ, Υ, Ζ— подмножества из R, такие, что Ζ = R — (ΧΥ). Отношение г удовлетворяет MV-зависимости X —» Υ тогда и только тогда, когда г без потери информации разлагается в отношении со схемами Rx = Χ Υ и R2 = X Ζ. Доказательство. Предположу что в г выполняется MV-за- висимость X —» Υ. Положим, г\ = nxt (г) и Г2 = ur2 (г). Пусть t — кортеж в гххг2. Тогда по определению соединения существуют кортежи tx £ гх и t2 £ г2, такие, что t (X) = tx (Χ) = t2 (X), t (Υ) = tx (Y)y t (Z) = t2 (Z). Поскольку rx и г2 являются проекциями г, должны существовать t\ и fa, для которых t\ (Χ Υ) = = t\ (X Υ) и fa (X Ζ) = fa (Χ Ζ). Из MV-зависимости Χ -» Υ следует, что / должен принадлежать г, поскольку г должно содержать кортеж *з с h (X) = t\ (X), h (У) = t[ (Υ) и fa (Ζ) = fa (Ζ). Эти соотношения и служат описанием t. Предположим теперь, что г разлагается без потери информации на Rx и R2. Пусть tx и t2 — кортежи из г, для которых tx (X) = = t2 (X), а гх и г2 определены выше. Отношение гх содержит кортеж t[ = t\ (Χ Υ), отношение r2 — кортеж fa = fa (X Ζ). Так как г = гх>< г2, то г содержит кортеж, для которого t (Χ Υ) = = tx (X Υ) и t (X Ζ) = t2 (Χ Ζ). Кортеж t является результатом соединения t[ и fa. Следовательно, t\ и fa не опровергают зависимость X —» Υ, и г удовлетворяет X —» К. Теорема 7.1 дает способ проверки выполнимости MV-зависимости X —» К в отношении /?. Для этого проекции г па Χ Υ я X (R — Χ Υ) соединяются и результат проверяется на совпадение с г. Существует другой метод проверки MV-зависимости, не
7.2. Свойства многозначных зависимостей 137 требующий проектирования и соединения, а только некоторой сортировки и подсчетов. Пусть Ζ = R — (X Г), /?! = X Г, Я2 = Χ Ζ. Если П = nRl (г) и г2= пЯз (г), то /Ί >< г2 всегда содержит г. Пусть далее, для некоторого Х- значения χ существуют сг кортежей в гь для которых Х-значения совпадают с х, и с2 кортежей в г2 с тем же свойством. Пусть с — число таких кортежей в г. Если для любого Х-значения χ с = = Сч-с2, то г = гл >< г2 (см. упр. 7.4). Для облегчения подсчета введем функцию cw [X = χ], которая отображает отношения на неотрицательные целые числа следующим образом: cw [X = х] (г) = | ли? ((7*=* (г)) |. Пример 7.3. Значение cD [А В = а Ь] (г) равно 2 для отношения г из примера 7.2. Функция £w [X = χ] подсчитывает число различных №-зна- чений в отношении, связанных с данным Х-значением. Сформулированное выше условие для MV-зависимости X —» Υ может быть записано следующим образом* для любого Х-значения χ в г cR[X = χ](ή = cXY[X = x](r)*cx z\X = x\W. Поскольку Cw χ IX = х] = cw IX = х], получаем для любого Х-значения χ в г cR [X = x](r) = cY[X = x](r)-cz[X = х](г). Пример 7.4. Для отношения г примера 7.2 и MV-зависимости Α β-» С сА в с d ΙΑ В = а Ь] (г) = 4, сс [А В = а Ь] (г) = 2, cD [А В.= а Ь] (г) = 2. Заметим, что для (А Б)-значения а Ь условие выполняется. Для проверки истинности MV-зависимости X —» Υ в отношении г (R) положим Ζ = R — (Χ Υ). Далее отсортируем отношение по равным Х-значениям. Для каждого Х-значения подсчитаем число кортежей с этим значением, число различных связанных с ним К-значений и Z-значений. Наконец, проверим, является ли первое число произведением двух других. Это свойство является еще одним определением MV-зависимости (см. упр. 7.6).
138 Гл. 7. Многозначные зависимости, зависимости соединения Определение 7.2. Пусть г — отношение со схемой R, X и Υ — подмножества R и Ζ = R — (Χ Υ). Отношение г удовлетворяет многозначной зависимости X —» У, если для каждого Х-значе- ния χ и F-значения у в г, таких, что χ у принадлежит г, cz IX = х] (г) = czlX Y = x у] (г). 7.3. МНОГОЗНАЧНЫЕ И ФУНКЦИОНАЛЬНЫЕ ЗАВИСИМОСТИ Из теоремы 7.1 можно вывести следующее следствие. Следствие. Пусть г — отношение со схемой R и Χ, Υ — подмножества из R. Если г удовлетворяет F-зависимости X -> У, то г удовлетворяет MV'-зависимости X —» Υ. Доказательство. Из упр. 6.4 мы знаем, что из F-зависимости X -> Υ следует декомпозиция г без потери информации на Χ Υ и X (R — (Χ Υ)). Этот результат непосредственно следует также из «подсчитывающего» определения MV-зависимости. Пусть задана схема отношения R и множество F-зависимостей F над R. Спрашивается, какие MV-зависимости справедливы в отношении г (R), удовлетворяющем F? Согласно последнему следствию, если X -> Υ принадлежит F+, то г удовлетворяет X —» Y, а из леммы 7.1 следует, что г удовлетворяет X —» —» R — (Χ Υ). Существуют ли в г MV-зависимости, не связанные ни с какими F-зависимостями? Отрицательный ответ на этот вопрос дает Теорема 7.2. Пусть F — множество F-зависимостей над R. Пусть далее, Χ, Υ, Ζ — подмножества R, где Ζ = R — (Χ Υ). Обозначим через Х+ замыкание X относительно F. Если Υ & X* и Ζ <£ Х+, то существует отношение г (R), удовлетворяющее F и не удовлетворяющее MV-зависимости Χ —» Υ. Доказательство. Доказательство аналогично доказательству теоремы 4.1 о полноте аксиом вывода для F-зависимостей. Положим R = АгА2 ... Ап. Построим отношение г (R), содержащее два кортежа tx и t2. Кортеж tx имеет вид Ъ (Ai) = aif 1 <: i < η, кортеж \аь если At G *+> 4 { bi, в остальных случаях. Согласно теореме 4.1, г удовлетворяет всем F-зависимостям в F. Поскольку Υ g= Х+ и Ζ eg χ+9 Υ должно содержать атрибут Bl9
7.4. Аксиомы вывода для многозначных зависимостей 139 не принадлежащий X1*, а Ζ — атрибут B2f не принадлежащий Х+. Таким образом, t2 (Βι) = b}- и ί2 (Β2) = bk для некоторых / и k. Поскольку X s Х+У к (X) = t2 (X). Если г удовлетворяет X —» Υ, оно должно содержать кортеж t3, для которого t3 (X) = = ^ (X), t3 (Υ) = ij_ (У) и /3 (Ζ) = t2 (Ζ). Однако г состоит лишь из двух кортежей к и t2. Следовательно, t3 = ^ или 4 = 4· Пусть t3 = к- Тогда t8 (В2) = к (В2) Φ t2 (β2), а так как t2 (B2) есть bk, а к состоит лишь из букв а, то t3 (Ζ) ^ /2 (Ζ), что есть противоречие. Аналогично приводится к противоречию предположение t3 = = t2. Поскольку ί2 (Вг) = bj, a к содержит только буквы а, то к (βι) = к (Βι) Φ к (Βι), следовательно, t3 (Υ) Φ к (Υ). Откуда заключаем, что MV-зависимость X —» Υ в г не удовлетворяется. Из теоремы 7.2 получаем, что все MV-зависимости, являющиеся следствием множества F-зависимостей, имеют вид X —» У, где Υ <= Х+ или Я — (X Г) <= χ+. Пример 7.5. Пусть R = А В С D Ε Ι и F = {Л -> β С, C->Z)|. Тогда из F следует Л -» BCD и Л —» С, но не A-^D E. 7.4. АКСИОМЫ ВЫВОДА ДЛЯ МНОГОЗНАЧНЫХ ЗАВИСИМОСТЕЙ Выше мы определили класс многозначных зависимостей, являющихся следствием множества функциональных зависимостей. Рассмотрим класс MV-зависимостей, являющихся следствием множества MV-зависимостей, и определим класс MV- и F-зависимостей, являющихся следствием MV- и F-зависимостей. 7.4.1. Одни многозначные зависимости Первые шесть аксиом вывода, приведенные ниже, являются аналогами одноименных аксиом для F-зависимостей, однако только первые три из них содержат те же утверждения. Аксиома М7 не имеет аналога в F-зависимостях. Пусть г — отношение со схемой R и W, Χ, Υ, Ζ — подмножества R. Ml. Рефлексивность. Отношение г удовлетворяет X —» X. М2. Пополнение. Если г удовлетворяет X -» Υ, то оно удовлетворяет Χ Ζ —» Υ. МЗ. Аддитивность. Если г удовлетворяет X —» Υ я X —» Ζ, то оно удовлетворяет X —» ΥΖ. М4. Проективность. Если г удовлетворяет Χ -^ Υ и X -^ -^ Ζ, то оно удовлетворяет Χ -^ Υ [) Ζ и X -э> Υ — Ζ.
140 Гл. 7. Многозначные зависимости, зависимости соединения М5. Транзитивность. Если г удовлетворяет X —» У и Υ —» Ζ, то г удовлетворяет X --» Ζ — Υ. Мб. Псевдотранзитивность. Если г удовлетворяет X —» Υ и Υ W -> Ζ, то г удовлетворяет X № —» Ζ — (У W). М7. Дополнение. Если г удовлетворяет X -г» У и Ζ = = R — (Χ Υ)у то г удовлетворяет X —» Ζ, Аксиомы Ml и М2 немедленно следуют из первого определения MV-зависимости (см. упр. 7.8). Покажем справедливость аксиомы МЗ. Пусть г содержит кортежи t± и t2, для которых t± (X) = = t2 (X)- Требуется показать, что г содержит кортеж tf такой, что t (X) = h (X), t(Y Z) = к (Υ Ζ) и t (U) = и ([/), где U = R — (Χ ΚΖ). Поскольку г удовлетворяет X --» У, оно должно содержать кортеж t3, такой, что U (X) = к (Х)> к (Υ) = к (Υ) и U (V) = к (V), где V = R — (Χ Υ). Из выполнения X —» Ζ в г следует существование в г кортежа /4> такого, что к (X) = fi (*), ί* (2) = к (Ζ) и ί4 (Г) = ί, (Г). где Г = /? — (Χ Ζ). Мы утверждаем, что t = f4. Очевидно, f (Χ) = ί4 (Χ), а также ί4 (Ζ) = ίχ (Ζ) = t (Ζ) и ί4 (^ Π Ψ) = к (Υ ί] W) = t± (Υ П ИГ) = ί (Г П Ψ), так что *4(У Ζ) = t(Y Ζ). ^ Поскольку U ^ W () У, U (U) = U (U) = t2 (U) = t (U). Так как R = Χ Υ Ζ /У, το ί4 = /. Справедливость аксиомы М7, как известно, следует из леммы 7.1. Аксиомы МЗ и М7 можно использовать для доказательства истинности аксиомы М4. Если г удовлетворяет X -» Υ и X —» —» Ζ, то согласно аксиоме МЗ, г удовлетворяет X —» У Ζ. Согласно аксиоме М7, г должно также удовлетворять X —» У, где V = R — (Χ Υ Ζ). Снова используя МЗ, получаем X —» —» У Ζ для г. Последнее приложение аксиомы М7 влечет за собой X —» # — (X У Ζ). После замены и упрощения имеем R - (X У Ζ) = Д - (X \R - (X У Ζ)} Ζ) - = #-(X{#-y}Z) = У-(Х Z) = (У — Z) — X.
7.4. Аксиомы вывода для многозначных зависимостей 141 Таким образом, г удовлетворяет X —» (Y — Z) — X, откуда, согласно рассуждениям разд. 7.1, следует X —» Υ— Ζ. Из X —» Υ с помощью аксиомы М7 получаем X -» W, где W = = R — (Χ Υ). Комбинируя с X —» Υ — Ζ, с помощью .аксиомы МЗ получаем X -» W (Y — Ζ). Снова используя аксиому М7, имеем X —» i? — (X Ц7 (У" — — Z)). Произведя замену, получаем Я - (W X (Y - Z)) = Я - (X \R — (X Г)} (Г - Z)) = = Я-(Х{Я-Г} (Y-Z)) = =,Y-(X(Y-Z)) = (Y (] Ζ)~ Χ. Таким образом, г удовлетворяет X —» (У f| 2) — X и, следовательно, X -^ У Π Z. Для доказательства аксиомы М5 сначала покажем, что из Χ-^Υ и Υ-^Ζ следует Χ-»ΚΖ. Пусть №=# — (X Г Z). Мы должны показать, что если в г существуют кортежи к и t2, такие, что к (X) = t2 (X), то г также содержит кортеж к такой, что t (X) = к (X), t (Υ Ζ) = /χ (Υ Ζ) и t (W) = t2 (W). Из Χ --» К следует существование кортежа t3y для которого 4 (X) = к (X), 4 (У) = к (Y) и /3 (V) = U 00. где V = R — (Χ Υ). Так как У—» Z, то найдется 4> такой, что U (У) = к (Г), к (Z) = к (Z) и U (U) = Ь (ί/), где ί/ = Я — (Г Ζ). Поскольку для каждого атрибута А £ X кортежи fx, /2, £8 имеют одинаковые значения, имеем /4 (^) = ii ffl· Очевидно, что к (У Z) = к (У Z). Но так как W = U — X <= У, то МНР) = 4 (W) 1)· Следовательно, /4 является искомым кортежем t. Мы показали, что г удовлетворяет Χ—» Υ Ζ. Используя аксиому М4 и X —» У\ получаем, наконец, X —» Ζ — У. Доказательство аксиомы Мб следует из остальных и оставляется в качестве упражнения (см. упр. 7.10). Пример 7.6. Пусть R = ABCDEh F = {А -» В С, D Ε --» С\. Из А —» В С с помощью аксиомы дополнения получаем А —» Ζ) £. Далее из транзитивности имеем Л —» С. С помощью аксиомы пополнения получаем A D —» С. Наконец, повторное применение аксиомы дополнения влечет за собой ί) tA (W) = ^з {W), так как № = U — X и ί4 (ί/) = ή, (ί/). Теперь t3 (W) = = /2 (UP), так как ί/ — Χ <= V и ή, (Ю = '2 (V) .— Прим. ред.
142 Гл. 7. Многозначные зависимости, зависимости соединения A D —» В Е. Таким образом, F \= A D —» В Е. Далее приведем пример отношения г (А В С D £), удовлетворяющего всем заданным выше MV-зависимостям и их производным. НА а а' а' а а" В b b' b' b b' С с с' с с' с' D d d d d d' _*> e e e e e 7.4.2. Функциональные и многозначные зависимости Обратимся к следствиям, которые можно вывести из множества F- и MV-зависимостей. Для их комбинации существуют только две аксиомы. Пусть г — отношение со схемой R\ W, Χ, Υ, Ζ — подмножества R. С1. Копирование. Если г удовлетворяет X ->- Y, то г удовлетворяет X —» Y. С2. Объединение. Если г удовлетворяет Χ -^ Υ и Ζ -*■ W, где W ^ Υ η Υ Ο Ζ = 0,тог удовлетворяет X -> W. .Аксиома С1 выводится из следствия теоремы 7.1. Докажем корректность аксиомы С2. Пусть tx и t2 — кортежи г, для которых tx (X) = t2 (X). Поскольку Χ -» Υ удовлетворяется в г, в г должен быть кортеж t, такой, что t (X) = к (X), t (Y) = h (Y) и t (V) = t2 (П где V = R — (Χ Υ). Из Υ f| Z= 0, Ζ<= XV следует t (Ζ) = = t2 (Ζ). Согласно F-зависимости Ζ -> W имеем t (W) = t2 (W). Однако W s Y, откуда следует t± (W) = t (W) = t2 (W) и, таким образом, X ->■ W удовлетворяется в г. Пример 7.7. Пусть R = А В С D Ε и F = \А -?> В С, D -> -> С|. Согласно аксиоме С2, имеем F |= Л -> С. Ниже приведено отношение г (А В С D Е), удовлетворяющее этим зависимостям. НА а а а а В ь ь· Ь' ь с с' с' с' с' D d d' d d' Ε) e e' e e'
7.4. Аксиомы вывода для многозначных зависимостей 143 7.4.3. Полнота системы аксиом и связанные с ними задачи Ограничимся формулировкой результатов о полноте аксиом вывода для MV-зависимостей, не приводя доказательства. Теорема 7.3. Система аксиом вывода Ml—М7 для MVr-зависимостей является полной. Теорема 7.4. Системы аксиом F1—F6, Ml—М7, О и С2 для множеств F- и MV'-зависимостей являются полными. В качестве следствия теоремы 7.4 имеем, что множество одних MV-зависимостей порождает лишь тривиальные F-зависимости, т. е. F-зависимости вида X -»■ У, где X содержит Y. Это наблюдение следует из вида аксиом вывода. Аксиомы Fl—F6 могут порождать лишь тривиальные F-зависимости из тривиальных; Ml—М7 и О не могут порождать никаких F-зависимостей; аксиома С2 в случае тривиальных F-зависимостей неприложима. Аксиомы С1 и С2 необходимы. Без аксиомы С1 вывод MV-зави- симости из множества одних F-зависимостей был бы невозможен. В качестве упражнения читателю предлагается построить пример, в котором для заданного множества F-зависимостей и MV-зависимостей с помощью аксиомы С2 выводится F-зависимость, не выводимая только из аксиом Fl—F6 (см. упр. 7.12). Мы не приводим алгоритмов проверки вхождения для MV-зависимостей или F- и MV-зависимостей, хотя в обоих случаях такие алгоритмы, полиномиальные по времени, существуют. Тем не менее полезно обсудить некоторые понятия, используемые в этих алгоритмах, поскольку они проясняют структуру зависимостей, порожденную множеством MV-зависимостей. Определение 7.3. Для заданного набора множеств S = \Slf ... ..., Sp\9 где U = Sx U ... U Sp, минимальным разъединенным базисом множеств S(mdsb(S)) называется разбиение 7\, Т2, ..., Tq множества U, такое, что: 1. Каждое St является объединением некоторых Tj. 2. Не существует разбиения с меньшим количеством элементов, обладающего тем же свойством. Читатель должен убедиться в том, что mdsb (S) по определению единственно. Базис образуется группировкой элементов U, содержащихся в точности в одном и том же наборе St. Пример 7.8. Пусть S - \А В С D, С D Е, А Е\. Имеем U = = А В С D Ε и mdsb(S) = А, В, CD, Ε. \ Пусть F — множество MV-зависимостей на R и X ^ R. Положим G= {Υ \F\=X -^ Y\.
144 Гл. 7. Многозначные зависимости, зависимости соединения Мы утверждаем, что mdsb (S) является подмножеством G. Если в G существует множество Уь такое, что оно содержит атрибуты как входящие, так и не входящие в некоторое множество У2 из G, то, согласно аксиоме М4, в G существуют множества Υ3 = = ГХ-Г2и Yt = Y1 П Yt. Базис mdsb (G) состоит в точности из тех непустых множеств G, которые не содержат в качестве подмножеств другие множества G. Заметим, что если X = АХА2 ... АП9 то А19 Л2, ..., Ап все входят в mdsb(G). Определение 7.4. Пусть F> X и G те же, что и выше. Базисом зависимостей от X относительно F называется множество mdsb (G), обозначаемое DEP(X). Если X = АгА2 ... Ап и DEP(X) = {Al9 Л2, ..., АП9 Yl9 У2. ..., Ym}> то введем обозначение X -» Ух Пример 7.9. Пусть F = \А —» β С, D £ —» С} — множество MV-зависимостей над А В CD Ε. Если X = А9 то G = = {А, В С, D Е, С, BD Е, В, BCD Е, CD Е\, a DEP(A) = = mds&(G) = |Л, β, C,D £}. С помощью DEP (X) можно восстановить все MV-зависимости с X в левой части, выводимые из F. А именно: F \= X —» Υ тогда и только тогда, когда Υ есть объединение некоторых множеств из DEP(X). Поскольку Υ должно принадлежать G, оно является объединением некоторых множеств из DEP(X). С другой стороны, согласно аксиоме МЗ, если Yl9 У2, ..., Υ и входят в DEP (X)f то F \= X —» ΥχΥζ ... Υ η- Алгоритм вхождения для MV-зависимостей проверяет, является ли некоторая MV-за- висимость X —» Υ следствием заданного множества MV-зависимостей. Для этого сначала вычисляется DEP (X) относительно F, далее проверяется возможность составления Υ из множеств DEP(X). Процедура вычисления базиса зависимости X состоит из трех этапов. 1. Найти множество G всех множеств У, таких, что MV-зави- симость X —» У следует из F с помощью пополнения и дополнения, т. е. для любой MV-зависимости X' —» Y' из F, где X' е= ^ X, добавить Y' и R — (Χ' Υ') к G. Внести также в G все Л ζ Χ. 2. Положить DEP(X) = mdsb(G). 3. Найти MV-зависимость № —» Ζ, которая может быть использована для уточнения DEP(X), согласно аксиоме транзитивности. Точнее, пусть Yl9 У2, ..., Yk — множества из DEP(X), такие, что № ^ У^Уа ... yfe; положим У = У^ ... Ул. Согласно аксиоме пополнения, поскольку W ^ У, то Т71= У —» Z. По транзитивности, Χ -^ Ζ — У. Если Ζ — У есть объединение некоторых множеств из DEP{X), то DEP(X) не может быть уточнено.
7.5. Четвертая нормальная форма 145 В противном случае положим DEP (X) = mdsb (DEP (X) [} U {Z — Y\). Если ни одна из MV-зависимостей, входящих в F, не может изменить DEP (X), то завершение алгоритма. Пример 7.10. Пусть F = {А -» В С, D Ε -» С\ — множество MV-зависимостей над А В С D Е. Для вычисления ВЕР (А) определим G = (ВС, D£, Л|. Далее положим DEP (А) = — {ВС, D Е, А}. С помощью аксиомы транзитивности для D Ε —» С получим А —» С и уточним DEP (А) как mdsb (\B С, D Е, А\ U С) = \B,C,D Е,А\. Дальнейшее уточнение DEP (X) невозможно. Мы не приводим доказательства корректности процедуры вычисления Ό ЕР (X). Однако заметим, что временная сложность процедуры оценивается* полиномиально от размера F. Базис DEP (X) содержит не более | R | множеств, таким образом, третьим пунктом алгоритма он может быть уточнен не более \ R — X | — 1 раз. (Каждый отдельный атрибут из X входит в DEP(X) с самого начала.) Непосредственное нахождение F-зависимостей и MV-зависимостей, выводимых из заданного множества F- и MV-зависимостей, включает переопределение Х+ и DEP (X), учитывающее действие аксиом С1 и С2. Для этого существует полиномиальный алгоритм, вычисляющий Х+ и DEP (X), на основе которого выводится заключение F \= X -» Υ или F & X --» Υ. В гл. 8 приводится другой метод проверки выводимости некоторой F-зависимости или MV-зависимости из F. 7.5. ЧЕТВЕРТАЯ НОРМАЛЬНАЯ ФОРМА Известно, что каждое отношение г (R), удовлетворяющее MV-зависимости X —» К, разлагается без потерь на отношения со схемами Χ Υ и Χ Ζ, где Ζ = R — (Χ Υ). Однако в случае если X —» Υ — единственная зависимость в R, то R находится в ЗНФ. Таким образом, ЗНФ не определяет все возможные декомпозиции. Определение 7.5. MV-зависимость X —» Υ называется тривиальной для произвольной схемы R, содержащей Χ Υ, если любое отношение г (R) удовлетворяет X —» Υ. Доказательство того, что множество тривиальных MV-зависимостей отношения г (R) совпадает с множеством зависимостей вида X -» У, где Υ ^ X или Χ Υ = R, предоставляется читателю (см. упр. 7.14). Если X —» Υ — тривиальная зависимость, используемая для декомпозиции отношения г (R), то одной из проекций окажется само г. Такая декомпозиция лишена каких- либо преимуществ.
146 Гл. 7. Многозначные зависимости, зависимости соединения Определение 7.6. MV-зависимость X —» Υ приложила к схеме R, если XY ^ R. Определение 7.7. Пусть F — множество F- и MV-зависимостей над U. Схема отношения R ^ U находится в четвертой нормальной форме (4НФ) относительно Т7, если для каждой MV-зависимо- сти X —» Υ у выводимой из F и приложимой к /?, либо MV-зависимость тривиальна, либо X является суперключом для R. Схема базы данных R находится в четвертой нормальной форме относительно F, если каждая входящая в нее схема отношения находится в четвертой нормальной форме относительно Т7. Пример 7.11. Пусть схема R = РЕЙС ДЕНЬ-НЕДЕЛИ ТИП-САМОЛЕТА и пусть F = {РЕЙС -» ДЕНЬ-НЕДЕЛИ}. R не находится в 4НФ относительно /\ Схема базы данных R = = РЕЙС ДЕНЬ-НЕДЕЛИ, РЕЙС ТИП-САМОЛЕТА находится в 4НФ относительно F. Каждое отношение г (R), удовлетворяющее Т7, разлагается без потерь по схемам из R. Рассмотрим схему отношения R, в которой выполняется MV-зависимость X —» Υ\ при этом X является ключом R. Для произвольного отношения г (R) проекции г1 = ηχγ (Г) и г2 = πχζ (ή (где Ζ = R — (Χ Υ)) содержат то же количество кортежей, что и г. В г нет дубликатов Х-значений, так что количество кортежей совпадает с количеством Х-значений. Любая проекция, содержащая атрибуты X, обязательно должна содержать все различные Х-значения. Такое разложение никогда не может дать выигрыша. Она не устраняет избыточности, ибо Χ Υ- и X Z-значения не дублируются в г. В объеме хранения также не получается выигрыша. Если предположить, что каждый вход в отношение занимает единицу памяти, отношение г занимает | г \ - \ R | единиц (где | г | есть число кортежей). Отношения гг и г2 вместе занимают |г|.(|/?!| + + | R2 |) единиц. Пример 7.12. Пусть F = {А -» ВС, С -» D Е\ — множество зависимостей схемы R = А В С D Е. Схема R не находится в 4НФ относительно F из-за MV-зависимости С —» DE. Схема базы данных из двух реляционных схем R1 = А В С и R2 = С D Ε находится в 4НФ относительно Т7, несмотря на то что MV-зависимость А -» β, выводимая из Т7, приложима к Rlt Зависимость А —» В не является тривиальной, однако А является ключом /?!. Множество F из F-зависимостей и MV-зависимостей, аналогично тому как это делается для построения схем баз данных в ЗНФ, может быть использовано для построения декомпозиций
7.6. Реализация зависимостей 147 схемы отношения R, находящихся в 4НФ. Для этого, начав с R, ищем выводимую из F нетривиальную MV-зависимость Χ -» У, для которой X не является ключом R. Далее R разлагаем на два отношения R± = Χ Υ и R2 = Χ Ζ, где Ζ - R — (Χ Υ). MV-зависимость Χ —» Υ теперь тривиальна в i?x и неприложима к R2. Процесс декомпозиции повторяем для той из схем R1 и R2, которая не находится в 4НФ относительно F. Поскольку используемые MV-зависимости не являются тривиальными, обе возникающие реляционные схемы содержат меньше атрибутов, чем исходные. Таким образом, процесс декомпозиции неизбежно закончится. Пусть R — схема базы данных в 4НФ, полученная декомпозицией схемы R, и пусть F — множество F-зависимостей и MV-за- висимостей. Произвольное отношение г (R), в котором выполняется F, разложимо без потери информации на отношения со схемами R (см. упр. 7.15). ч Пример 7.13. Пусть F = \А -» В С D, 'В -^ А С, С->- -+D} — множество зависимостей над схемой R = ABCDEI. Поскольку А —» BCD является нетривиальной MV-зависи- мостью и при этом А не есть ключ R, разлагаем R на схемы отношений R1 = ABCDnR2 = AEL Схема R2 находится в 4НФ относительно F. Из F вытекает MV-зависимость В —» А С на R, но эта MV-зависимость не является кандидатом для использования в декомпозиции, поскольку, в силу C-+D, В есть ключ для R1. Однако из C-+D следует MV-зависимость С —» D, которую можно использовать в декомпозиции Rx. В результате получаем схемы отношений Rn = А В С и R12 = CD. Обе схемы находятся в 4НФ относительно F. Таким образом, схема базы данных R = {Rn, R12, #2} находится в 4НФ относительно Т7. 7.6. ЧЕТВЕРТАЯ НОРМАЛЬНАЯ ФОРМА И РЕАЛИЗАЦИЯ ЗАВИСИМОСТЕЙ Всегда ли можно найти для заданного множества F из MV-зависи- мостей и F-зависимостей схему базы данных в состоянии 4НФ относительно F, в которой F реализуемо? Первая проблема состоит в том, что вопрос не совсем правильно поставлен. Определение реализуемости, используемое для F-зависимости, в случае MV-зависимости лишено смысла. Множество F из F-зависимостей реализуемо в базе данных R, если существует множество G из F-зависимостей, эквивалентное F и приложимое к R. Это опре-
148 Гл. 7. Многозначные зависимости, зависимости соединения деление по отношению к F-зависимостям разумно по следующим причинам. Предположим, что R есть схема базы данных над U, a d — база данных над R, представляющая проекцию одного отношения г (U). Если для каждой F-зависимости X ->- Υ из G можно найти фактическую функциональную взаимосвязь в d (т. е. для каждого Х-значения соответствующее ему ^-значение) и, кроме того, G |= V ->- W, то из d можно восстановить фактическую функциональную взаимосвязь V ->- W. Взаимосвязь может быть восстановлена по аксиомам вывода по мере их приложения к выводу V -+■ W из G (см. упр. 7.16). Это же свойство почти верно для MV-зависимостей. Проблема заключается в аксиоме дополнения М7. Рассмотрим схему базы данных R = \Rlf R2\, где R1 = А В и R2 = С, и, кроме того, множество F = \А —» В]. Пусть база данных d образована проектированием отношения г (А В С). Из d мы можем восстановить многозначную взаимосвязь А —» В в г. Однако в d также F \= \= А —» С, при этом многозначная взаимосвязь А —» С не может быть восстановлена из d. Любое определение реализуемости MV-зависимости должно учитывать проблему дополнения. Как показано ниже, даже при наличии соответствующего определения для реализуемости MV-зависимости мы все еще не можем быть уверены в одновременной выполнимости 4НФ и реализуемости. (Заметим, что в примере 6.26 приведено множество F-зависимостей, которое не реализуемо ни в какой НФБК-схеме.) Лемма 7.2. Если схема R находится β форме 4НФ относительно множества F из ММ-зависимостей и F-зависимостей, то R находится в НФБК относительно множества ¥-зависимостей, выводимых из F. Доказательство. Пусть R не находится в НФБК. Тогда существуют подмножества /С, Υ и А из R, такие, что, согласно F, К есть ключ R, А (£ К Υ κ Κ-+Υ, Υ -^ К и Υ -+А. Из F-зависимости Υ -> А следует MV-зависимость Υ -^ Л. Поскольку Υ ч+ /С, Υ яе является ключом R. Зависимость Υ —» А нетривиальна, поскольку А не содержится в Υ и Υ Α Φ R, так как в К должен существовать некоторый атрибут В, не содержащийся в Υ. Следовательно, R не находится в 4НФ относительно F. Предпринимались попытки построения схем баз данных в 4НФ по множеству MV- и F-зависимостей с помощью метода синтеза. Однако на сегодня они не столь успешны, как методы синтеза схем для одних F-зависимостей. 7.7. ЗАВИСИМОСТИ СОЕДИНЕНИЯ Многозначные зависимости представляют собой попытку выделения декомпозиций без потери информации, сохраняющих это свойство для всех отношений с заданной схемой. Однако MV-за-
7.7. Зависимости соединения 149 г(А В С) «1 αϊ «3 «4 «5 «6 6, Ьг ь3 h bs h г С2 сз С4 cs с5 *ав(г) = А а\ «1 аз «4 «5 «6 5 Ъх Ьг Ъг Ьг Ьъ ь* Рис. 7.1. *лс(г)=А С жвс{г) = В_ «1 fli «3 α4 «5 «6 :. 7.2. Cl сг с* с4 cs с$ bi b2 ь3 b3 bs b6 Cl Cl сз c4 cs cs висимости не полностью в этом смысле адекватны. Отношение может иметь нетривиальную декомпозицию без потерь на три схемы, но не обладать таким свойством для любых двух из них (см. упр. 6.7). Согласно теореме 7.1, такое отношение удовлетворяет только тривиальным MV-зависимостям (см. упр. 7.17). Пример 7.14. Отношение г (А В С) на рис. 7.1 разлагается без потерь на схемы А В, А С и В С. Проекции приведены на рис. 7.2. Однако г не удовлетворяет никаким нетривиальным MV-зависимостям и, следовательно, не имеет декомпозиций без потери информации на пары Rlf R2, такие, что ЯХФ А В С и Я2фА ВС. Определение 7.8. Пусть R = \Rlf ..., Rp\ — множество реляционных схем над U. Отношение г (U) удовлетворяет зависимости соединения (J-зависимости) * [Rlf R2, ..., Rp], если г разлагается без потерь на"/?!, R2, ..., Rv, т. е. г = kRi (г) >< nR% (г) >«...><] π* (г). Вместо * [/?!, R2, ..., Rp] будем писать также * [R 1. Пример 7.15. Отношение г на рис. 7.1 удовлетворяет J-зависимости *[А Ву А С, В С].
150 Гл. 7. Многозначные зависимости, зависимости соединения Необходимым условием выполнения в отношении г (U) J-зави- симости * [Rl9 R2, ..., Rp] является равенство U = RxR2 ... Rp. Из определения также видно, что MV-зависимость является частным случаем J-зависимости. Отношение г (R) удовлетворяет MV-зависимости X —» Υ тогда и только тогда, когда г разлагается без потерь на Χ Υ и Χ Ζ, где Ζ = R — (Χ Υ). Условие совпадает с J-зависимостью *[ΧΥ, Χ Ζ]. С другой стороны, зависимость соединения * [Rl9 R2] имеет тот же смысл, что MV-зависимость Rx Π #2 —» Ri- Для J-зависимости можно привести определение, аналогичное определению MV-зависимости. Пусть г удовлетворяет зависимости * [#ι, #2> ···> Rp1- Если г содержит кортежи tl9 t2, ..., ίρ, такие, что для всех iy j tt(Rti)Rj) = tj(Rti)Rj), то г содержит кортеж ί, такой, что t (Ri) = tt (Ri), 1 < i < p. Пример 7.16. Предположим, что отношение г (А В С D Е) удовлетворяет J-зависимости * [Л В С, В D, С D Е) и содержит три нижеприведенных кортежа. Используя свойство J-зависимости, видим, что г должно также содержать кортеж t= {abed' er). г(А В С Ρ Ε) t\ a b c d e t2 a' b c' d' e" t3 a" b' с d' e' Аксиомы вывода для J-зависимостей не будут приведены, однако в гл. 8 описан метод проверки выводимости заданной J-зависимости из множества F- и J-зависимостей (включая MV-зависимости). 7.8. НОРМАЛЬНАЯ ФОРМА ВИДА «ПРОЕКЦИЯ-СОЕДИНЕНИЕ» Целью поиска декомпозиций без потери информации является устранение избыточности из отношений. Выше приведены декомпозиции, которым не соответствуют MV-зависимости, следовательно, в терминах поиска декомпозиций без потерь 4НФ не является наилучшим решением. Имея в виду декомпозиции, ниже сначала определяется нормальная форма вида «проекция-соединение» (Р J -форма). Затем это определение несколько модифицируется, для того чтобы удовлетворить другому критерию.
7.8. Нормальная форма вида «проекция-соединение» 151 Определение 7.9. J-зависимость *[Rl9 R2, ..., Rp] над R называется тривиальной, если она удовлетворяется в любом отношении г (R). Доказательство того факта, что все тривиальные J-зависи- мости над R имеют вид * [Rl9 R2, ..., Rp], где R = Rt для некоторого i, предоставляем читателю (см. упр. 7.22). Определение 7.10. J-зависимость соединения * [Rl9 R2, ..., Rp] приложила к реляционной схеме, если R = RiR2 ··· RP- Определение 7.11. Пусть R — схема отношения и F — множество F- и J-зависимостей над R. Схема R находится в Ρ J-нор- мальной форме (PJNF) относительно F, если для каждой J-зави- симости *[Rl9 R2, ..., Rp]9 выводимой из Τ7 и приложимой к R9 J-зависимость тривиальна или каждое Rt является сверхключом R. Схема базы данных R находится в Ρ J-нормальной форме относительно F, если в этой форме находится каждая схема R из R. Пример 7.17. Пусть F= {*[Л BCD, С D Е, BD 1],*[АВ, BCD, AD], A-+BCDE, В С -> А1\ — множество зависимостей над схемой R = А В С D Ε I. Схема R не находится в PJNF относительно F из-за J-зависимости *[А В С D, С D Е9 В D /]. Схема базы данных R = \Rl9 R2, R3\, где R1 = А В С D, R2 = С D Ε и R3 = В D 19 находится в PJNF относительно F. J-зависимость * [А В, BCD, AD] выводима из F и применима к Rl9 однако каждое множество атрибутов является сверхключом Rx. Все MV-зависимости, выводимые из F-зависимостей, либо тривиальны, либо содержат в левой части ключи. Если каждая схема Rt представляет суперключ, то причина, по которой допускается, что J-зависимость * [Rl9 ..., Rp] при- ложима к реляционной схеме R и не нарушает PJNF, та же, что в случае 4НФ. Если каждая Rt есть ключ, то все проекции отношения г (R) на Rt содержат то же количество кортежей, что и г, и, таким образом, избыточность не устраняется. Приведенное выше определение PJNF слабее первоначального, данного Фейджином. Помимо устранения избыточности, первоначальное определение с помощью ключей обеспечивает реализуемость зависимостей. Определение 7.12 (пересмотренное). Пусть R — схема отношения и f — множество F- и J-зависимостей. R находится в PJ- нормальной форме (PJNF) относительно F, если для каждой J-зависимости *[/?!, ..., Rp]9 выводимой из F и приложимой к R, зависимость * [Rl9 ..., Rp] выводима из ключевых F-зависимостей в R. Предоставляем читателю показать, что пересмотренное определение сильнее первоначального (см. упр. 7.24). Следующий пример показывает, что оно строго сильнее.
152 Гл. 7. Многозначные зависимости, зависимости соединения Пример 7.18. Пусть R = А В С и F = {А-+· В С, С->· ->· А В, *[Л В, В С]\. Поскольку А В и В С являются суперключами /?, схема удовлетворяет первому определению PJNF. Однако R не удовлетворяет пересмотренному определению (см. упр. 7.25а). Из PJNF следует 4НФ, следовательно, условия PJNF и реализуемости зависимостей не всегда совместимы (см. упр. 7.23). При построении схем вида PJNF с помощью декомпозиции схемы отношений следует при выборе руководствоваться теми J-зависимостями, которые нарушают PJNF. В гл. 8 показано, каким образом проверить выводимость J-зависимости из множества F-зависимостей. 7.9. ВСТРОЕННЫЕ ЗАВИСИМОСТИ СОЕДИНЕНИЯ Если заданы отношение г (R) и F-зависимость Χ -> У, то выполнение X->Fb проекции на ns (г), Χ Υ ^ S ^ R влечет выполнение X ->· Υ во всем г. Для J-зависимости, как показывает следующий пример, это неверно. г(А а а а а а' В ь Ь' ь Ь' Ъ' Рис. с_ с с г с с' г с 7.3. D) d d d' d d' Пример 7.19. Рассмотрим отношение г (А В С D) из рис. 7.3. Проекция пА в с (ή удовлетворяет MV-зависимости Α —»β, но само г не удовлетворяет этой зависимости. Определение 7.13. Отношение г (R) удовлетворяет встроенной зависимости соединения (Е J-зависимости) *[Rl9 R2, ···, RPh если ns (г) удовлетворяет J-зависимости *[i?i, R2, ···> RP] (S = = R±R2 ... Rp)· Допускается R = S, т. е. каждая J-зависимость есть EJ-зависимость. Введем для встроенной многозначной зависимости (EMV-зависимости) * IX Υ, Χ Ζ] обозначение X —» —» Υ (Ζ) (читается: «X многозначно определяет Υ в контексте Ζ»). Пример 7.20. Отношение г (рис. 7.3) удовлетворяет EMV-зависимости А -» В (С).
7.10. Упражнения 153 Для класса Ε J-зависимостей нет полной аксиоматизации, однако существуют процедуры доказательства полноты для классов, содержащих EJ-зависимости. 7.10. УПРАЖНЕНИЯ 7.1. Добавлением строк измените приведенное ниже отношение так, чтобы в нем удовлетворялись MV-зависимости Л —» В С и С D —» В Е: г(А В С D Е) а Ъ с d e а . Ьг с d' e а1 Ъ с d e' 7.2. Докажите лемму 7.1. 7.3. Докажите, что если отношение г (R) удовлетворяет MV-зависимости X —» Уь X —» Y2i .... X —» Yk> где R = X Уг Y2 ... Yki то г без потерь разлагается на реляционные схемы X Ylt X Y2i ..., X Yk· 7.4. Пусть г (R) — отношение, в котором Rt ^ R, R2 e R и R = Rt R2. Докажите, что г = Лп (г) >< π^ (г) тогда и только тогда, когда cR [Х=х] (г) = == с# [X = х] (ή-CR [X = *] W Аля каждого Х-значения χ в г. 7.5. Докажите, что если отношение г (R) удовлетворяет X —» Υ и Ζ = = # — (X, 7), то для каждого X У-значения χ у в г 7.6. Докажите эквивалентность двух определений MV-зависимостей. 7.7. Опишите класс MV-зависимостей, выводимый из единственной F-зави- симости X -+ Y. 7.8. Докажите корректность аксиом вывода Ml и М2. 7.9. Пусть г — отношение со схемой R, и пусть W, Χ, Κ, Ζ— подмножества R. Покажите, что если г удовлетворяет X —» Υ и Ζ ξ W, to r удовлетворяет X W —» Υ Ζ. 7.10. Докажите истинность аксиомы вывода Мб, используя аксиомы Ml—М5 и М7. 7.11. Пусть г — отношение со схемой Rt а X, У, Ζ — подмножества R. Покажите, что если г удовлетворяет X —» Υ и Χ Υ -* Ζ, то г удовлетворяет Χ-^Ζ —К. 7.12. Приведите множество F- и MV-зависимостей и F-зависимость, выводимую из него с помощью аксиомы С2 и не выводимую с помощью аксиом Fl— F6. 7.13. Для схемы R = Л В С D Ε Ι и множества MV-зависимостей F = = {Л -» Ε /, С -» Л В} найдите DEP (А С). 7.14. Покажите, что MV-зависимость Χ —» 7 над Я тривиальна тогда и только тогда, когда ХзК или Χ Υ = R. 7.15. Пусть R — схема базы данных в 4НФ, полученная декомпозицией схемы R для заданного множества F из F- и MV-зависимостей. Покажите, что любое отношение г (R), удовлетворяющее F, без потерь разлагается на отношения со схемами из R. 7.16. Пусть R = {Rlt R2i ..., Rp) — схема базы данных на U и d = = {rlt r2i ..., г ρ} — база данных над R, являющаяся проекцией единственного
154 Гл. 7. Многозначные зависимости, зависимости соединения отношения г (U), т. *е. ri = кщ (/-), Ι^ί^/?. Покажите, что если F-зависи- мости X -> Υ и Υ -> Ζ приложимы к R, то с помощью d в г можно восстановить функциональную зависимость X -> Z. 7.17. Покажите, что отношение г (R) не имеет декомпозиций без потерь ни на одну пару реляционных схем Rlf R2 (R1 φ R, R2 Ψ R) тогда и только тогда, когда г удовлетворяет только тривиальным MV-зависимостям. 7.18. Приведите пример отношения г (А В С D Е)у удовлетворяющего J-за- висимости * [А В С, В D Е, АСЕ), но не удовлетворяющего ни одной тривиальной MV-зависимости. 7.19. Что означает, что отношение г удовлетворяет J-зависимости * [/?lf #2> ···! Rp] в случае, когда все Ri взаимно не пересекаются? 7.20. Пусть отношение г удовлетворяет *[Rl9 R2, ..., Rp]. Пусть, кроме того, tl9 t2, .... tp — кортежи в г, такие, что t% (Ri [) Rj) = tj (Ri f]Rj) Для всех ^ и /. Покажите, что t[,t'2, ..., V соединимы \t\— tt{R>^. 7.21. Пусть *[Rl9 ..., Rp], * [Slf ..., Sq] суть J-зависимости, и пусть для каждого R( (1 ^ / ^ ρ) существует такое Sj, что /?$■= Sj. Покажите, что *[Slt ^2, .··» Sq] влечет за собой *[Rly ..., Rp]. 7.22. Покажите, что J-зависимость ** [Rlt ..., Rp] над R тривиальна тогда и только тогда, когда R = Ri для некоторого i. 7.23. Покажите, что PJNF влечет за собой 4НФ. 7.24. Покажите, что из пересмотренного определения PJNF следует первоначально данное определение. 7.25. В примере 7.18 (a) постройте отношение над R с ключами Л и С, в котором нарушается ♦[Л, 5, ВС]; (b) покажите, что декомпозиция отношения R, удовлетворяющего F, на {А В, В С} требует больше памяти, чем первоначальное отношение. 7.26. Покажите, что J-зависимость * [А В С, В D Ε, Α Ε I] над А В С D Ε Ι влечет за собой EJ-зависимость * [А В, BE, A E], но не приводит к EJ-зависи- мости * [В С, BD, А /]. 7.11. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Многозначные зависимости были введены в работе Fagin [1977 с]. То же понятие, под другим именем, было независимо рассмотрено в Zaniolo [1976] и De- lobel [1978]. Первую полную аксиоматизациюF- и MV-зависимостей см. в Beeri, Fagin, Howard [1977]. Независимость этих аксиом обсуждается в Mendelzon [1979]. Построение DEP (X) взято из Beeri [1980]. В работах Hagihara, Но и др. [1979], Galil [1979] и Sagiv [1980] предложены эффективные алгоритмы вычисления DEP (X). В работах Beeri [1979], Biskup [1978, 1980b] и Zaniolo [1979] обсуждаются правила вывода для MV-зависимостей, в частности приложимость понятия дополнения в контексте базы данных. Представления множеств MV-зависимостей рассматриваются в Fischer, Jou, Tsou [1981]. В работе Kat- suno [1981b] рассматриваются некоторые семантические аспекты MV-зависимостей. Четвертая нормальная форма введена Фейджином (Fagin [1977a]). В работах Beeri [1979] и Kambayashi [1979] приводятся алгоритмы синтеза, включающие MV-зависимости. Некоторые проблемы получения 4НФ указаны в Beeri, Vardi [1981a]. Другие нормальные формы и стратегии разложения рассмотрены в работах Armstrong, Delobel [1980], Fagin [1980b], Lien [1981], Namibar [1979], Tanaka, Kambayashi, Yajima [1979a], Zaniolo, Melkanoff [1981, 1982]. Зависимости соединения во всей полноте были впервые введены в Rissanen [1977] и подробно изучены в Aho, Beeri, Ullman [1979]. Аксиоматизация класса зависимостей, несколько более широкого, чем класс J-зависимостей, дается в Sciore [1982]. Аксиомы вывода для объединенного множества F- и J-зависимостей см.
7.11. Библиография и комментарии 155 в Beeri, Vardi [1981b] и Vardi [1980a, b]. PJ-нормальная форма взята из Fagin [1979]. Класс встроенных MV-зависимостей был обнаружен в работах Fagin [1977с] и Delobel [1978], а в работах Parker, Parsaye-Ghomi [1980], Sadiv, Walecka [1979] было показано, что для класса одних EMV-зависимостей не существует полной, конечной аксиоматизации. EMV-зависимости также рассматриваются в Tanaka, Kambayashi, Yajima [1979b]. Процедуру доказательства вы водимости для более широкого класса зависимостей, которые определены в гл. 14, см. BSadri и Ullman [1980a]. В работах Beeri, Vardi [1980a, b], а также Chandra, Lewis, Makowsky [1981] показано, что выводимость для этого класса зависимостей неразрешима. Здесь нет противоречия, поскольку процедура доказательства выводимости включает как конечные, так и бесконечные отношения. Утверждение о выводимости может иметь бесконечный контрпример и не иметь конечного.
Глава 8 Отображения „проекция-соединение", табло и прогонка В гл. 7 отсутствует множество аксиом вывода для J-зависимостей. Вместо этого представим в настоящей главе метод решения вопроса о выводимости заданной F- или J-зависимости из множества F- и J-зависимостей. 8.1. ОТОБРАЖЕНИЯ «ПРОЕКЦИЯ-СОЕДИНЕНИЕ» Критерием декомпозиции отношения г (R) без потерь на схему базы данных R = \Rlf ..., Rp\ является равенство г = nRl (г) >< nR2 ir) ><3 ...хлд (г). Правая часть этого равенства несколько громоздка, поэтому введем для нее более компактное обозначение. Определение 8.1. Пусть R = {Rl9 R2, ..., Rp\ — множество схем отношений, причем R = R± ... Rp, Отображение «проекция- соединение», или Ρ J-отображение, определяемое R и обозначаемое /пц, есть функция на отношениях со схемой Rf определяемая как mR (г) = nR± (г) >< nRz (г) ><-··>< nRp (r). Пример 8.1. Пусть R = А В С D Ε и R = {А В D, ВС. ADE\. Рассмотрим отношение г (R) (рис. 8.1). Результатом применения mR к г является отношение s (R), изображенное на рис. 8.2. Результатом применения mR к s является снова s. Утверждение о том, что отношение г (R) удовлетворяет J-зависимости * [R ] равносильно утверждению mR (г) = г. Определение 8.2. Пусть R = {Rlf R2f ..., Rp\, где R = = RxR2 ... Rp. Отношение r(R) является неподвижной точкой отображения mR, если mR (r) = г. Множество всех неподвижных точек mR обозначается FIX (R).
8.1. Отображения «проекция-соединение» v 157 а а а а а Ъ Ь' Ъ' Ъ Ъ С с с с с Рис. 8.1 d d' d' d' d' e e e e' e s(A В CD E) r(A В CD E) a b с d e a *b' с d' e а Ъ* с d' e' a b с d' e' Рис. 8.2. Пример 8.2. Если R = {А В D, В С, A D E\, то отношение г (рис. 8.1) не входит в FIX (R), в то время как отношение s (рис. 8.2) входит в FIX (R). Перечислим некоторые другие свойства отображений «проекция-соединение». Лемма 8.1. Пусть R = {R^ R2, ..., Rp\ — множество схем отношений, где R = RxR2 ··· Rp, и пусть г и s — отношения на R. Ρ J-отображение обладает следующими свойствами: 1) г <=:- mR (r); 2) если г ^ s, то mR (г) ^ mR (s) (монотонность); 3) mR (г) = mR (mR (ή) (идемпотентность). Доказательство. Доказательство п. 1 предоставляется читателю (см. упр. 8.2). Доказательство п. 2 следует из замечания, что г ^ s влечет за собой nR.(r) ς= nR. (s), 1 < i < p. Пусть г' = = ^r (r)\ Т0ГДа π· 3 следует из свойства полной соединимости пяг (г), лц2 (г), ..., nRp (г) (см. упр. 2.16), следовательно, ля. (г) = = яд.(г'), 1 < i < p. В каких случаях отношения со схемой R могут быть представлены как база данных со схемой R, такой, что 1) отсутствует потеря информации, 2) устранена избыточность? На практике нас интересуют не всевозможные отношения со схемой R, а некоторое подмножество. Обозначим его Р. Первый из пунктов соответствует тому условию, что mR (г) = г для каждого отношения г из Р, т. е. Ρ ^ FIX (R). Во втором пункте, видимо, содержится требование, чтобы при проектировании отношения г из Ρ на схемы из R некоторые из проекций имели бы меньше кортежей, чем г. Множество Ρ обычно бесконечно, следовательно, оно не может быть описано перечислением. Чаще Ρ специфицируется множеством ограничений на отношения из R типа F- или J-зависимостей.
158 Гл. 8. Отображения «проекция-соединение», табло Определение 8.3. Пусть С — множество ограничений на схему отношения R. Через SATR (С) обозначим множество всех отношений г на R, удовлетворяющих всем ограничениям из С. Если R подразумевается неявно, то вместо SATR (С) будем писать SAT (С); SATR (с) означает SATR ({с}) для единственного ограничения с. Теперь можно точно сформулировать понятие следования, которое использовалось неформально при обсуждении MV- и J-зависимостей. Определение'8.4. Пусть С — множество ограничений над схемой отношения R. С влечет за собой с, С \=с, если SATR (С) ^ Ξ SATR (с). Если Ρ = SAT (С) для некоторого множества ограничений С, то наше требование отсутствия потерь информации в схеме базы данных R можно сформулировать как SAT (С) с= FIX (R), или С \= * [R]. Для случая когда С состоит из J- и F-зависимостей, в последующих разделах приведен метод проверки этого условия. 8.2. ТАБЛО В этом разделе приводится табличный метод представления PJ-отображений, названный табло. Табло похоже на отношение с той разницей, что вместо значений содержит переменные из некоторого множества V. Оно является объединением двух множеств Vd и Vn, где Vd обозначает множество выделенных переменных и состоит из буквы а с индексами, Vn — множество невыделенных переменных, обозначаемых буквой fee индексами. (Далее термины «переменные» и «символы» употребляются как синонимы). На рис. 8.3 изображено табло Т. Множество атрибутов, именующих столбцы табло (в данном случае Аг Л2 А3 Л4), образует схему табло. Кортежам отношения соответствуют строки табло. Каждая переменная в табло принадлежит только одному столбцу. Дальнейшее ограничение состоит в том, что в каждом столбце может встретиться не более одной выделенной переменной. Т(АХ А2 А3 А4) ах Ъ{ а3 Ь2 Ьг а2 а3 Ь4 а1 bs a3 а4 Рис. 8.3.
8.2. Табло 159 p(fli) = 1 fib χ) p(a2) = 3 p(b2) p(a3) = 5 p(63) p(aA) = 7 p(64) p(65) Рис. 8.4. Для табло со схемой Аг А2 ... Лп выделенными переменными, согласно условию, в столбцах At являются at. Табло Τ со схемой R можно рассматривать как образец или шаблон отношения со схемой R. Отношение получается из табло заменой переменных значениями из доменов. Положим R = = Аг А2 ... Ап и пусть D= (j dom(Ai). Оценкой для табло Τ называется отображение ρ из У в D, такое, что ρ (υ) ζ dom (At), если переменная υ находится в столбце Αχ. Продолжим оценку с переменных на строки и далее на все табло. Если w = (и&2 ... υη) — строка табло, то положим ρ (w) = = (ρ (uij p (υ2) ... ρ (υη)). Далее положим ρ (Τ) = \ρ (w) | w — строка в Т). Пример 8.3. Пусть ρ — оценка (рис. 8.4). Результатом применения ρ к табло Τ (рис. 8.3) является отношение г (рис. 8.5). 8.2.1. Табло как отображения Табло Τ со схемой R можно интерпретировать как функцию на отношениях со схемой R. А именно: пусть R = АХА2 ... Ап, wd = (#ια2 ··· ап)· (Строка wd может не принадлежать Т.) Если г — отношение со схемой R, положим T(r) = {p(wd)\9{T)s=r\. Это определение означает, что ρ (wd) принадлежит Τ (г), если оценка ρ такова, что каждая строка Τ отображается в кортеж г. Пример 8.4. Пусть г — отношение (рис. 8.6) и Τ — табло (рис. 8.3). Согласно оценке ρ (рис. 8.4), кортеж (1 3 5 7) должен принадлежать Τ (г). Оценка р' (рис. 8.7) отображает (2 4 5 7) в Τ (г). Полностью Τ (г) приведено в виде отношения s (рис. 8.8). = 8 г(Л, А2 А3 А4) =2 14 5 8 =7 2 3 5 7 =4 14 5 7 Рис. 8.5.
160 Гл. 8. Отображения «проекция-соединение», табло г(А{ А2 А3 АА) р'(ах) = 2 р'{Ъх) = 2> 14 5 8 р'(а2) = 4 р'(Ь2) = 7 2 3 5 7 р'(*з) = 5 рЧ*з) = 1 14 5 7 р'(аА) = 7 р'(*4) = 8 2 3 6 7 Р'(Ь5) = 3 Рис. 8.6. Рис. 8.7. Т{Г) = 5(Л! Л2 Л3 Л4) 14 5 8 2 4 5 7 14 5 7 13 5 8 13 5 7 2 3 5 7 2 3 6 7 Рис. 8.8. Если в Лгстолбце Τ нет выделенных переменных, то при оценке Τ (г) на значение ρ (at) ограничений нет. Если ρ (Τ) ^ г, то р' (Т) ^ г для любого р', согласованного с ρ на У всюду, кроме at. Таким образом, если dom (At) бесконечен, то Τ (г) может иметь бесконечно много кортежей и, следовательно, не представляет собой отношения. Во всех случаях, когда мы хотим рассматривать табло Τ как функцию на отношениях, потребуем, чтобы Τ имело в каждом столбце выделенный символ (см. упр. 8.5). 8.2.2. Представление Ρ J-отображений в виде табло Для произвольного PJ-отображения ^mR всегда можно найти табло 7\ представляющее ту же функцию. Пусть R = \Rl9 R2, ... ..., Rp\ —множество схем отношений, R = RxR2 ... Rp- Табло, соответствующее R, определяется следующим образом: схемой TR служит R. Табло TR состоит из ρ строк wlf ..., wp. Положим R = АХА2.. *Ап. Строка wt содержит в Агы столбце выделенную переменную ajy если Aj £ Rt. Остальные wt представляют собой различные невыделенные символы, не встречающиеся ни в каких других строках. Пример 8.5. Пусть R = \АгА2, А2А3) Л3Л4}. Табло TR изображено на рис. 8.9.
8.3. Эквивалентность табло и эквивалентность схем 161 ТЯ(АХ А2 А3 А4) г{Ах А2 А3 А4) <*1 bs а2 bx «2 аз Ьб а3 Рис. 8.9. Ьг «4 s(At 1 1 1 2 2 А2 3 3 4 3 3 Рис. Аз 5 6 5 5 6 8.11. 1 1 2 / 8 7 7 8 3 5 7 4 5 7 3 6 8 Рис. 8.10 Лемма 8.2. Пусть R = \Rl9 R2, ..., Rp\ — множество схем отношений R = RxR2 ... i?p. PJ-отображение mR определяет my же функцию на отношениях со схемой R, что и табло 7V Доказательство предоставляется читателю (см. упр. 8.7). Пример 8.6. Если R = {АгА29 Л2Л3, А3А4\ и г — отношение (рис. 8.10), то mR = TR (r) = s, где s — отношение (рис. 8.11). 8.3. ЭКВИВАЛЕНТНОСТЬ ТАБЛО И ЭКВИВАЛЕНТНОСТЬ СХЕМ Определение 8.5. Пусть 7\ и Т2 — два табло со схемой R. Обозначим 71! 3 Тз, если 7\ (г) ^ Т2 (г) для всех отношений г (R). Два табло 7\ и Т2 эквивалентны (обозначается: 7\ ξ Т2), если 7\ 9 Т2 и Т2 3 7\, т. е. 7\ ξ Т2, если 7\ (г) = Т2 (г) для каждого отношения г (R). Пример 8.7. Пусть 7\ и Т2 — два табло, см. соответственно, рис. 8.12 и 8.13. Тогда Гх Э Т2, Например, для г (рис. 8.10) 7\ (г) есть отношение s (рис. 8.11), а Т2 (г) = г. Определение 8.6. Пусть R = {#ь i?2, ..., Rp\ и S = {Si, S2, ... ..., S^} — два множества схем отношений RiR2 ... Rp = Si... Sg = = /?. R покрывает S (обозначается: R ^> S), если для каждой схемы S7· в S существует схема Rt в R, такая, что /?^ з Sj. Говорят, что R и S эквивалентны (обозначается: R « S), если
162 Гл. 8. отображений «проекция-соединение», табло ТМх Аг Аз А4) Τ2(Αχ Α2 А3 А4) а, а2 bi a2 Ьь Ьь by а3 «3 Рис. 8.12. Ьг Ьа а, ах а2 а3 ь2 Ь3 а3 Рис. 8.13. Ьх «4 Пример 8.8. Если R = \АХАЪ А2АЬ, Л3Л4} и S = \АХА2АВ, Л8Л4}, то R < S. Теорема 8.1. Пусть R = {Rl9 R2, ..., Rp} и S = {Sb S2, ... ..., Sq\ — множества схем отношений RXR2 ... Rp = 5iS2 ... Sg = = R. Следующие условия эквивалентны: 1) mR (г) ^ ms (г) 5ля все* отношений г (R); 2) TR 5 7У, 3) F/X (R) = FIX (S); 4) R <: S. Доказательство. Согласно лемме 8.2, пп. 1 и 2 эквивалентны. Покажем, что пп. 1 и 3 эквивалентны. Предположим, что mR (r) ^ ms (r) для всех отношений г (R). Пусть s входит в FIX (R). Поскольку mR (s) = s по предположению имеем s2/ns (s). Но из леммы 8.1 s ^ ms (s). Следовательно, s = ms (s) и s £ F/X (S). Отсюда заключаем, что FIX (R) s <= F/X (S). Предположим теперь, что F/X (R) ^ FIX (S). В силу идемпотентности для любого отношения г (R) mR (г) = mR (mR (г)). Следовательно, mR (г) входит в FIX (R) и FIX (S): ms (mR (r)) = mR (r). Из леммы 8.1 известно, что mR (r) з г, откуда, в силу монотонности, ms (mR (ή) з ms (/*), следовательно, mR (г) з ms (г). Наконец, покажем, что условия 1 и 4 эквивалентны. Предположим, что для всех отношений г (R) имеет место mR (r) =2 ms (r). Предположим далее, что dom (А) для каждого атрибута А в R содержит по крайней мере два значения. Обозначим их 0 и 1.
8.3. Эквивалентность табло и эквивалентность схем 163 r(At A2 А3 А4) 1 4 6 8 2 4 7 9 3 5 7 10 Рис. 8.14. Построим отношение s (R) с q кортежами 1Ъ t2y ..., tq. Кортеж tt определяется следующим образом: ( 0, если Α ζ Sif U (А) = \ 1 < i < ?· I 1 в остальных случаях, Пусть i0 обозначает кортеж из одних нулей. Нетрудно видеть, что to должен входить в ms (s). Следовательно, t0 £ mR (s). Согласно определению mR, для каждой схемы Rt из R в S должен существовать кортеж tjf такой, что tj (Rt) = t0 (Rt). Таким образом, Rt ^ Sj и R <: S. Пусть теперь R < S. Пусть далее г (R) — произвольное отношение и t— произвольный кортеж в ms (г). В г должны существовать кортежи fb t2y ..., tqy такие, что tt (St) = t (Sj), 1 < i < < p. Для произвольного Rj, для которого Rj s Si, имеем tt (Rj) = = t (Rj). Поскольку R < S, то для произвольного Rj из R существует кортеж ί/, такой, что t) (Rj) = t (Rj). Таким образом, мы видим, что t входит в mR (г) и, следовательно, mR (г) з ms (/*)· Пример 8.9. Пусть R = {ЛХЛ2, А2А3, Л3Л4} и S = \ΑλΑ2Α^ Л3Л4} (см. пример 8.8). Табло Τ к в этом случае совпадает с 7\ из рис. 8.12, a Ts — с табло Т2 из рис. 8.13. Поскольку R <: S, по теореме 8.1 имеем TR Э Ts. Например, если отношение г как на рис. 8.4, то TR (г) задается рис. 8.15, a Ts (s) — рис. 8.16. Очевидно, TR (г) =2 Ts (r). Тк(г)(Ах А2 А3 А4) 1 4 1 4 1 4 2 4 2 4 2 4 3 5 3 5 Рис. 8.15. 6 7 7 6 ■7 7 7 7 8 9 10 8 9 10 9 10 Ts(r)(Al A2 А3 АА) 1 2 2 3 3 4 4 4 5 5 Рис. 6 7 7 7 7 8.16. 8 9 10 9 10
164 Гл. 8. Отображения «проекция-соединение», табло TnJAi А2 А3 Л4) TS(AX А2 А3 АА) αχ а2 а3 bi «ι а2 а3 Ьх в\ h2 h3 сц Ъ2 Ъ3 а3 а4 ах hA а3 сц а\ ьа «з «4 Рис. 8.17. Рис. 8.18. Следствие. Пусть R = \Rlt ..., Rp\ и S = \Sl9 ..., Sq\ — множества схем отношений, для которых R1 ... Rp = Si ... Sq = = R. Следующие условия эквивалентны: 1) mR = ms; 2) TR ξ Ts; 3) FIX (R) = FIX (S); 4) R « S. Условие п. 1 означает mR (г) = ms (г) для всех отношений г (#). Заметим, что в пп. 2 и 4 используется эквивалентность, а не равенство. Эквивалентность может существовать независимо от равенства. Пример 8.10. Пусть R = [А^А^ АгА^ А^АД и S = = \АгА2Ав, A3Aif АХА3А^} — множества схем отношений; R ^ S и S^R, следовательно, R « S. Согласно следствию теоремы 8.1, TR ξξ Ts. Но, как видно из рис. 8.17 и 8.18, TR ψ Ts даже при переименовании невыделенных переменных. Если TR ξ Ts, то TR и Ts обладают некоторым сходством, несмотря на то что мы можем получить TR = Ts без того, чтобы выполнялось TR = Ts. Определение 8.7. Пусть υϋχΗ w2 — строки табло Τ со схемой R. Если для каждого атрибута А из того, что w2 (A) — выделенная переменная, следует, что wx (А) также выделенная переменная, то w-l поглощает w2. Пример 8.11. На рис. 8.17 третья строка поглощает вторую. На рис. 8.18 также третья строка поглощает вторую. Определение 8.8. Пусть Τ — табло. Редукцией Τ по поглощению (обозначение: SUB (T)) называется табло, состоящее из множества всех строк табло Т, таких, что ни одна из них не поглощается другими строками из Т. Пример 8.12. Для табло TR (рис. 8.17) SUB (TR) изображено на рис. 8.19.
8.4. Отображения вложения 165 SUB(TK)(At A2 А3 АА) а\ а2 а3 Ь{ ах b4 а3 a4 Рис. 8.19. Теорема 8.2. Пусть R = \Rlt R2, ..., Rp\ и S = \Slt S2, ... ..., Sq\ — такие множества схем отношений, что R1 ... Rp = = Si ... Sq = R. Условие TR ξ Ts выполняется тогда и только тогда, когда SUB (Ts) mootedественно SUB (TR) с точностью до взаимно однозначного переименования невыделенных символов. Доказательство предоставляется читателю (см. упр. 8.13). Пример 8.13. Пусть R = [А^А^ АгА^ АЛА*АД и S = — {АгА^А39 А3Л4, Л1Л3Л4} — множества схем отношений (см. пример 8.10). Изображенное на рис. 8.19 SUB (TR) тождественно SUB (Ts). Следствие. SUB (TR) ξξ Tr. 8.4. ОТОБРАЖЕНИЯ ВЛОЖЕНИЯ Теорема 8.2 показывает, что существует простой способ для проверки эквивалентности табло, полученных из множества схем, а именно: проверка тождественности редукций по поглощению. Любое табло, в котором ни одна невыделенная переменная не встречается более одного раза, происходит из некоторого множества схем. К сожалению, теорема 8.2 несправедлива для табло с дублированными невыделенными переменными. Пример 8.14. Рассмотрим табло Τ (рис. 8.20) и его редукцию по поглощению SUB (Τ) (рис. 8.21). Пусть г — отношение (рис. 8.22). В самом деле, SUB (Τ) тождественно SUB (SUB (T)). Однако Τ (г) = г, в то время как SUB (Τ (г)) = г', где отношение τ' дано на рис. 8.23. Т(АХ А2 А3 АА) ах а2 Ьх Ъ2 Ь3 а2 а3 а4 Ъ4 #2 ®3 &2 SUB(T)(A\ А2 А3 А*) ах а2 Ъх Ъ2 Ъ3 а2 а3 а4 Рис. 8.20Р Рис. 8.21.
1 2 3 4 3 5 Рис. 8.22. 6 7 166 Гл. 8. Отображения «проекция-соединение», табло Сформулируем условие эквивалентности для произвольного табло, введя для табло отображения вложения. Отображение вложения очень схоже с оценкой, но вместо отображения переменных табло в элементы доменов они отображаются в переменные другого табло. Таким образом, строки отображаются в строки. г'(Ах А2 А3 АА) 13 4 6 г(Ах А2 А3 А4) 13 5 7 2 3 4 6 2 3 5 7 Рис. 8.23. Определение 8.9. Пусть Τ и V — два табло со схемой R и множествами переменных соответственно V и V'. Отображение ψ: V -> ->■ V называется отображение вложения из Τ β Τ", если выполняются следующие условия: 1) если переменная ν находится в столбце Л в Г, то ψ (ν) находится в столбце Л в Г; 2) если υ — выделенная переменная, то ψ (ν) также выделенная переменная (по соглашению, ψ (υ) = υ)) 3) ψ (7) ^ 7'. Это означает, что если ψ продолжено до строк 7 и далее до самого 7, то при этом отображении каждая строка 7 переходит в строку 7'. Пример 8.15. Даны два табло ГиГ (рис. 8.24 и 8.25). Существует отображение вложения ψ из 7 в 7', такое, что ψ (at) = au 1 < i < 4, ψ (Ьг) = α3, ψ (δ2) = Ьъ ψ (&3) = Оь ψ (&4) = &2, Ψ (h) = а*· С помощью ψ две первых строки табло 7 отображаются на первую строку 7'; ψ преобразует третью строку 7 во вторую строку 7". Из V в 7 не существует отображения вложения, например, по- Т(Лг А2 А3 АА) аг а2 Ьг Ъ2 Tf(A{ A2 А3 АА) ьз а2 а3 Ъ2 _ αχ а2 йз Ьх b4 bs а3 а4 Ъ2 αχ щ аА Рис, 8.24. Рис. 8.25.
8.4 Отображения вложения 167 тому, что если бы таковое существовало, то первая строка Тф должна была бы отобразиться в строку по крайней мере с тремя выделенными переменными а1у а2 и а3. Теорема 8.3. Пусть 7 и V — два табло со схемой R. Тогда Τ 3 V в том и только том случае, если существует отображение вложения из Τ в 7'. r'Wi Л2 А3 АА) г(А{ А2 А3 АА) 1 4 6 2 4 7 3 5 7 Рис. 8.26. 8 8 9 1 1 1 2 2 3 3 4 4 4 4 4 5 5 Рис. 6 7 7 7 7 7 7 8.27. 8 8 9 8 9 8 9 Доказательство. Достаточность. Пусть ψ — отображение вложения из Τ в 7'. Возьмем любое отношение г (R) и рассмотрим 7 (г) и V (г). Если ρ является оценкой для 7', такой, что ρ (7 ) ^ ^ гу то ρ·ψ есть оценка для 7, для которой ρ·ψ (7) ^ г. Вложение следует из неравенства ψ (7) ^ V после применения ρ к обеим частям. Если строка wd состоит из одних выделенных переменных, то, поскольку ψ (wd) = wd, ρ·ψ (wd) = ρ (wd). Таким образом, 7 (г) = 7' (г). Необходимость. Пусть 71 ЗГ. Рассмотрим 7' как отношение. Мы имеем 7 (7') з 7" (Τ'). Далее рассмотрим оценку р', тождественную на переменных V' из 7'. Очевидно, ρ' (Τ) = Τ s 7", так что р' (ojrf) = wd ζ Τ' (7'). Для 7 должна существовать оценка р, такая, что ρ (Т) g Т' и ρ (м^) = «;rf. Таким образом, мы видим, что ρ можно рассматривать как отображение вложения из 7 в 7'. Пример 8.16. Для 7 и 7', изображенных на рис. 8.24 и 8.25, имеем 7 .=? 7'. Если, например, г такое, как на рис. 8.26, то 7 (г) = г\ где г' изображено на рис. 8.27. Поскольку Τ (ή = г, имеем 7 (г) э 7' (г). Пример 8.17. Пусть Т" — табло, представленное на рис. 8.28. Из 7" в 7 существует отображение вложения (какое?), следовательно, Т" .Э7. Для отношения г (рис. 8.26) имеет место Т" (г) = = г", где г* изображено на рис. 8.29. Мы видим, что Т" (г) ^ э Τ (г).
168 Гл. 8. Отображения «проекция-соединение», табло Следствие. Два табло Τ и Τ со схемой R эквивалентны тогда и только тогда, когда существуют отображение вложения из Τ в Τ и отображение вложения из 7" в Г. Т\АХ Л2 Л3 ЛА) ах а2 Ьх Ьг Ьз <*2 «з Ь4 Ъь Ь6 а3 а4 Рис. 8.28. Рис. 8.29 Пример 8.18. Пусть Τ — табло, состоящее из одной строки wd выделенных переменных. Пусть Τ — произвольное табло, содержащее wd. Тогда Τ ξ Т\ Отображение вложения из Г в Г переводит wd в wd. Отображение из Г в Τ переводит каждую строку в wd. 8.5. ЭКВИВАЛЕНТНОСТЬ ПРИ НАЛИЧИИ ОГРАНИЧЕНИЙ Исследуем свойства отношения, позволяющие правильно представить его своими проекциями. Из следствий теорем 8.1 и 8.2 мы видим, что если R = \Rlf R2, ..., Rp\ — схема базы данных над R, то FIX (R) совпадает с множеством всех отношений на R только при условии, что Rt = R для некоторого i. Если Rt = R, то в остальных схемах отношений нет нужды, и в конце концов из R остается единственная схема отношения. Таким образом, вообще говоря, на вопрос: «Когда отношения на R могут быть правильно представлены как база данных с нетривиальной схемой R?» ответ: «никогда». Но мы редко имеем дело с самым общим случаем. Обычно на множество отношений со схемой R наложено некоторое множество ограничений. Для нахождения нетривиальных схем базы данных, представляющих отношения, мы можем использовать эти ограничения. Определение 8.10. Пусть Ρ — множество отношений со схемой R. Если Т1иТ2 — табло над R, то 7\ содержит Т2вР (обозначение: Τι J5P Т2), если Τι (г) з Т2 (г) для каждого отношения г в Р. Табло Т\ и Т2 эквивалентны в Ρ (обозначение: Т\ ξρ Τ2), если Тх а> Т2 и Т2ВР Τι. г"(А{ Л2 А, А4) 1 1 1 2 2 2 3 3 4 4 4 4 4 4 5 5 6 7 7 6 7 7 7 7 8' 8 9 8 8 9 8 9
8.5. Эквивалентность при наличии ограничений 169 В качестве множества Ρ обычно рассматривается Ρ = SAT (С) для некоторого множества ограничений С. Обозначим сокращенно = sat (с) через ес. Заметим, что нас интересует случай, когда для схемы базы данных R имеет место SAT (С) ^ FIX (R). Вопрос состоит в том, существует ли декомпозиция без потерь для каждого отношения из SAT (С) по заданной схеме базы данных R? В терминах ограничений вопрос сводится к проверке справедливости соотношения С |= * [R]. Если через Т1 обозначить табло для тождественного отображения (Τϊ содержит строку из одних выделенных переменных), то вопрос сводится к тому, ведет ли себя TR как Τι на SAT (С). Другими словами, имеет ли место Tr = cTi? В теореме 8.3 приводится тест для В', нам нужен тест для Зс? Имея в виду следующую лемму, рассмотрим табло как отношение. Этот прием уже использовался при доказательстве теоремы 8.3. Исследуем условия, когда табло Т, рассматриваемое как отношение, входит в множество Р. Под этим условием мы понимаем, что для любой оценки ρ имеет место ρ (Τ) £ Р. Для произвольного множества отношений Ρ эти условия трудно проверить* Однако, если Ρ = SAT (С), где С состоит из F- и J-зависимостей, и, кроме того, ρ (Τ) £ Ρ для некоторой взаимно однозначной оценки р, то для любой другой оценки р' также р' (Т) £ Ρ (см. упр. 8.20). ' Лемма 8.3. Пусть 7\ и Т2 — табло со схемой R и Ρ — множество отношений на R. Пусть Т\ и Т2 — табло, такие, что 1) Τι ΞΡ Т\ U T2 ΞΞΡ Г2; 2) ΤΙ и Τ 2 как отношения входят в Р. Тогда 7Ί Е. рТ2 в том и только том случае, если TJ E Т2. Доказательство. Достаточность следует непосредственно. Очевидно, Т[ Е. Т2 влечет за собой Т\ ЕР Т2у следовательно, Т{ E-L Ε Т'2, Τι =р Т\ и Т2 ξ ρ Τ2 влекут за собой Τι <ξρ Т2. Необходимость. Условия Τι Ε,ρ Τ2, Τι =р Т\ и Т2 =Р Т2 приводят к Т[ ^;Р Т2. Покажем теперь, что из Т\ ЕР Т2 следует Т\ Ε Т2. Рассмотрим Т[ (Т[). (Мы рассматриваем Т\ одновременно как табло и как отношение.) Поскольку Т\ как отношение входит в Р, имеем Т\ (Т{) ^ Т2 (Т[). Пусть wd — строка из одних выделенных переменных и- ρ — тождественная оценка для Т{. Очевидно, ρ (Т[) ς=·. Т[, откуда ρ (wd) = wd входит в Т[ (Т\) и, следовательно, в Т2 (TJ). Для Т2 должна существовать оценка η, такая, что η (Т2) ^ Т\ и η (wd) = Wd. Оценку η можно рассматривать как отображение вложения из Т2 в Т[. Следовательно, по теореме 8.3 Следствие. В предположениях леммы 8.3 Т\ ξρ Τ2 тогда и только тогда, когда Т\ = Т2.
170 Гл. 8. Отображения «проекция-соединение», табло Подведем итоги. Мы ищем тест для проверки Т\ ^с 7V При этом мы умеем проверять 7\ Ε Γ2. Согласно лемме 8.3, условие Т\ Ее Т2 можно было бы проверить, если бы у нас был способ нахождения для произвольного табло Τ табло Т'9 такого, что Τ ξ с 7", и, кроме того, V как отношение входит в SAT (С). Ниже мы введем для табло правила преобразования. Правило преобразования для множества ограничений С есть средство модификации табло Τ к виду V так, что Τ ξ с Τ'. Таким частным типом преобразований было правило поглоще· ния. Для табло без дублированных невыделенных переменных удаление поглощаемой строки сохраняет эквивалентность. Найдем правила преобразования для множества ограничений С, составленных из F- и J-зависимостей. При этом индивидуальным F- и J-зависимостям будут соответствовать особые F- и J-правила. В результате многократного применения этих правил сформируется табло, которое рассматриваемое как отношение, удовлетворяет всем ограничениям из С, До конца главы С всегда обозначает множество F- и J-зависимостей над множеством атрибутов U. Через U обозначена схема для всех отношений и табло. 8.5.1. F-правила Для каждой F-зависимости Χ -»■ А из С существует связанное с ним F-правило. В зависимости от выбранных строк F-правило для X -> А представляет собой класс преобразований, действующих на табло. Пусть табло Τ содержит строки гюг и w2, причем wx (X) = = w2 (X). Пусть, далее, wt (A) = υχ и w2 (A) = v2 и щ Φ υ2. С помощью F-правила Χ -*- А, примененного к 7\ отождествляем переменные υχ и щ, образуя новое табло 7". Переменные υχ и υ2 отождествляются переименованием. Если одна из них, например ό19 — выделенная переменная, то каждое вхождение щ заменяется на ϋχ. Если и »ь и ν2 — выделенные переменные, каждое вхождение переменной с большим индексом заменяется переменной с меньшим индексом. Поскольку табло есть множество строк, некоторые из них при переименовании могут быть отождествлены· Т(Аг А2 А3 АА) Т'(АХ А2 Аз А4) ах а2 а3 Ь{ αχ ai аз bi b2 a2 b3 b{ b2 q2 аз ьх ax a2 63 b4 αχ q2 аз £4 Рис. 8,30. Рис, 8.31·
8.5. Эквивалентность при наличии ограничений 171 Пример 8.19. Пусть Τ — табло, представленное на рис. 8.30, и С = \АгАъ -> Л4, Л2Л4->Л31. При применении F-правила Л2Л4 -> Л3 к первой и второй строкам Τ происходит отождествление переменных а3 и Ь3. Поскольку а3 — выделенная переменная, она заменяет Ь3) в результате чего образуется табло Τ (рис. 8.31). F-правило АгА2 ->■ Л4 можно применить к первой и третьей строкам Т', тем самым отождествляя переменные Ьг и ft4. Поскольку переменная йх имеет меньший индекс, она заменяет й4. Первая и третья строки теперь совпадают, тем самым результирующее табло (рис. 8.32) имеет только две строки. Т"(Аг А2 А3 А4) а{ а2 а3 b{ Ь2 в2 аз bi Рис. 8.32. Теорема 8.4. Пусть Т' — результат применения F-правила для F-зависимости X -> А к табло Т. Тогда на SAT (X-+А) табло Τ и Тг эквивалентны. Доказательство предоставляется читателю (см. упр. 8.23). 8.5.2. J-правила Пусть S = {Si, S2, ..., Sq\ —множество схем отношений и *[Sl есть J-зависимость над U. Пусть, далее, Τ — табло и wly w%, ... ...9wq — строки табло 7\ соединимые по S с результатом w. Применение J-правила для * [S1 к Τ позволяет образовать табло Г = Τ U И. Пример 8.20. Пусть Τ — табло, представленное на рис. 8.33, и С = {^[А^А^ ЛИзЛД *[Л1Ла, Л2Л3, А3А^]. Применение J-правила ЧЛ1Л2, A2A3t А3А^\ ко второй и третьей строкам Τ порождает строку (а^йз^)· Результирующее табло изображено на рис. 8.34. Применение J-правила для * [ЛХЛ2Л4, ЛХЛ3Л4] к пер- Т'(АХ А2 А3 А4) αχ Ъ\ Ъ2 а4 ах а2 b3 Ъ4 Ь5 а2 Ъ3 а4 а\ а2 Ъ3 а4 Τ(Αχ А2 А3 А4) αχ Ъ\ Ъ2 а4 щ а2 Ь'з Ь4 Ъъ а2 b3 a4 Рис. 8.33. Рис. 8.34.
172 Гл. 8. Отображения «проекция-соединение», табло вой и четвертой строкам Τ порождает строку (афф^). Результатом является табло Т", изображенное на рис. 8.35. Теорема 8.5. Пусть S = \Sl9 S2i ..., Sq] и Tr есть результат применения оправила для * [3] /с* табло Т. Табло Τ и Τ эквивалентны относительно SAT (* [S]). Т"(Л1 Л2 А3 А4) а, Ъх а, а2 bs а2 «ι а2 αχ bt Рис. 8.35 ъ2 Ъъ Ъг ь3 Ъъ а4 Ъ4 а4 а4 а4 Доказательство, Требуется доказать, что Τ (г) = Τ (ή для произвольного отношения г ζ S,4T(*[5]). Пусть f — произвольный кортеж V (г). Пусть, далее, ρ — оценка, ρ (wd) = = f (wd — строка со всеми выделенными переменными) и ρ {Τ') != г. Имеем: р(Т) s ρ (Т')\ поскольку Τ <= V (включение множеств), выполняются соотношения ρ (Τ) ^ г и ρ (wd) = f ζ ζ Τ (г). Следовательно, Τ' (ή ^ Τ (г). Пусть теперь t — произвольный кортеж в Τ (г) и ρ — оценка с ρ (wd) = t и ρ (Τ) s r. Единственным кортежем, который мог бы входить в ρ (7"), но не в ρ (Τ), является ρ (w), где w — строка, порожденная J-прави- лом для *[S] из строк wl9 w2, ..., wqf принадлежащих Т. Читателю предоставляется показать, что если wl9 ..., wq соединимы по S с результатом w, то ρ (α^), ρ (ш2), ..., ρ (wq) соединимы по S с результатом ρ (w) (см. упр. 8.25). Поскольку г входит в SAT (* [Si) и {ρ К), ρ (ш2), ..., ρ (wq)\ g= ρ (Τ) ς= г, то ρ (w) принадлежит г. Таким образом, ρ (Τ) дги ρ (wd) = t ζ Τ' (ή Следовательно, Τ (ή д= Г (г) и Т (г) = Г (г). 8.6. АЛГОРИТМ ПРОГОНКИ (chase) В этом разделе приводится вычислительный метод, именуемый прогонкой (chase), с помощью которого для заданного табло и множества зависимостей С строится новое табло Т*9 такое, что Τ = Т* и Т* как отношение принадлежит SAT (С). Таким образом, используя лемму 8.3 и упр. 8.18, мы сможем проверить табло на эквивалентность по С. Вычисления по методу прогонки описываются довольно просто. А именно: для заданных Τ и С применять F- и J-правила, соответствующие F- и J-зависимостям из С, до тех пор, пока
8.6. Алгоритм прогонки (chase) 173 они вызывают изменения. Далее покажем, что порядок применения правил преобразования несуществен. Согласно теоремам 8.4 и 8.5, по окончании вычислений порождается табло Τ* ξ0 Т. Труднее показать, что вычисление всегда заканчивается и что результирующая таблица Т* принадлежит SAT (С). Т(А BCD) TX{A BCD) ах а2 Ь{ Ъг ах а2 bx Ъг Ь3 а2 ^4 α4 Ь3 а2 ^1 а4 «1 Ь6 а3 а4 а\ #6 а3 <*4 Рис. 8.36. Рис. 8.37. Т2(А BCD) Т3(А BCD) αχ а2 Ь\ hi ах а2 а3 b<i Ъ3 а2 Ъ\ а4 Ъ3 а2 а3 а4 ах Ьь а3 а4 ах Ьь а3 а4 ах а2 Ь{ а4 ах а2 а3 а4 Рис. 8.38. Рис. 8.39. Т*(А BCD) ах а2 а3 Ъ2 Ъ3 а2 а3 а4 а\ Ьь а3 а4 а\ а2 а3 а4 Ь3 а2 а3 Ь2 Рис. 8.40. Пример 8.21. Пусть Τ — табло (рис. 8.36) и С = |*[Л β С9 BCD], В -> С, A D -> С}. (С целью различения мы вместо Аъ Л2, Л3, Л4 используем Л, β, С, D.) Табло Τ = TR, где R = = {А В, В D, А С D}. Приложение F-правила В -> С порождает табло Τι (рис. 8.37). После приложения J-правила для * [Л В С, BCD] получаем табло Т2 (рис. 8.38), а после применения F-npa· вила A D -> С — табло Т3 (рис. 8.39). Еще одно применение J-правила ""[А В С, BCD] порождает табло Т* (рис. 8.40). Никакие новые возможные применения правил преобразования, соответствующих зависимостям в С, не вызывают изменений в Т*. Кроме того, 71*, рассматриваемое как отношение, входит в SAT (С).
174 Гл. 8. Отображения «проекция-соединение», табло Определение 8.11. Порождающей последовательностью табло Τ при ограничении С называется последовательность табло Т0, Ть ..., где Τ = Т0, a Ti+1 образуется из Tt применением F- или J-правила из С, 0 < i. Предполагается, что Tt Φ Τί+1. Если применение любого F- или J-правила из С к последнему элементу порождающей последовательности Тп оставляет его без изменений, то Тп называется прогонкой Τ по С. Соответствующий оператор обозначим через chasec (Τ). Пример 8.22. Пусть Τ и С те же, что и в примере 8.21. Табло Т, Ть Т2, Т3, Т* являются порождающей последовательностью Τ относительно С. Таким образом, Т* £ chasec (Τ). Для некоторых последующих доказательств необходимо проследить за преобразованиями строк при вычислении по методу прогонки. Пусть табло Τ получено из табло Τ применением J-правила. Если w является строкой Т, то в Τ ей соответствует та же строка w. Пусть Τ получено из Τ применением F-правила, заменяющего переменную υ переменной υ'. Если w — строка табло Ту то в 7" ей соответствует строка w', где w' есть w, в которой ν заменена на υ''. (Если w не содержит ν, то w = w'.) Если Т0, Τχ, ..., Ть ..., Tj, ... — порождающая последовательность иШ| — строка из Ti9 отношение «соответствия» можно транзитивно продолжить и говорить о строке Wj из Tj9 соответствующей wi9 т. е. существуют строки wi+l9 wi+2f ..., Wj_l9 где wk ^ ζ Tft, такие, что wi+1 соответствует wi9 wi+2 соответствует wi+l9 ... ..., wj соответствует Wj^. Пример 8.23. В порождающей последовательности Τ, Ть Т2, Т3, Т* примера 8.22 первые строки табло Ть Т2, Т3, Т* соответствуют первой строке Т. Кроме того, четвертая строка Т3 — четвертой строке Т2. Для каждой строки w в табло из порождающей последовательности в последующих табло всегда существует соответствующая строка. Однако w не обязательно соответствует некоторой строке предыдущего табло последовательности, поскольку она могла быть порождена некоторым J-правилом. Различные строки одного табло могут соответствовать одной и той же строке последующего табло (см. упр. 8.27). Теорема 8.6. Для заданного табло Τ и ограничений С каждая порождающая последовательность Τ относительно С конечна. Таким образом, результат chasec (T) всегда непуст. Доказательство. Поскольку табло представляет собой множество строк, и ни одно из F- или J-правил не вводит новых пере· менных, существует лишь конечное число табло, которые могут появиться в порождающей последовательности Τ относительно С.
8.6. Алгоритм прогонки (chase) 175 Достаточно показать, что ни одно табло не может появиться дважды в последовательности. Пусть Tt и Tj — два табло в порождающей последовательности, i < /. Если на каком-то шаге в подпоследовательности Tif Τι+ъ ..., Tj было приведено F-правило, то Tt содержит некоторую переменную, в Т, отсутствующую, так что Тг Φ Tj. Если в подпоследовательности применялись только J-правила, то Tj содержит по крайней мере на одну строку больше, чем Ти следовательно, Τ χ Φ Tj. Т(Л В С D Ε) Γ*(Λ В С Ό Ε) αγ bx b2 b3 a5 ax b{ α3 α4 <*5 at b4 bs α4 α5 α{ bA α3 α4 as be 02 аз a4 b7 b6 a2 a3 aA b7 Рис. 8.41. Рис. 8.42. Теорема 8.7. Любое табло Τ* в chasec (T), рассматриваемое как отношение, входит в SAT (С). Доказательство. Если в Т* нарушается F-зависимость X -> А из С, то в Т* должны существовать две строки тх и w2, такие, что wx (X) = w2 (X), 2lWx (Α) Φ w2 (А). К строкам υυΊ и w2f изменяя Τ*, может быть применено F-правило Х->-Л, что означает, что Т* не является последним табло в порождающей последовательности относительно С. Следовательно, Т* удовлетворяет X -> А. Аналогично, если в Т* нарушается некоторая J-зависимость из С, то для преобразования Т* применимо соответствующее J-правило. Пример 8.24. Табло Τ (рис. 8.41) есть TR для R = \А Е, ADE, BCD}. Табло 7* (рис. 8.42) является прогонкой Τ относительно С, где С = {А Е -> D, D -> С, * [А В, BCD E]. J-правило из С никогда не используется. Мы видим, что Т* удовлетворяет С. Следствие, chasec (Τ) = {Т\ тогда и только тогда, когда Т, рассматриваемое как отношение, принадлежит SAT (С). 8.6.1. Свойство конечности Чёрча—Россера Вычисление по методу прогонки является примером системы замещений. Системой замещений называется пара (Q, =^), где Q — множество объектов, =>- — антирефлексивное бинарное отношение на Q, называемое трансформационным отношением *). г) Системы замещений иногда включают отношение эквивалентности на Q. В определении свойства конечности Чёрча—Россера и в теореме 8,8 эта эквивалентность далее используется вместо равенства.
176 Гл. 8. Отображения «проекция-соединение», табло В нашем случае прогонка является системой замещений для каждого множества ограничений С. Множество Q состоит из табло над U и Г =^ Г, если Τ образуется из Τ применением F- и J-правил, соответствующих зависимостям из С. Определение 8.12. Отношение =>- является рефлексивным и * транзитивным замыканием =х Выражение Τ =^7" читается как «Т переходит в 7"» или «7" достижимо из Т». Определение 8.13. Для заданной системы замещений (Q, =>) * элемент ρ £ Q является терминальным, если из p^q следует ρ = q, т. е. не существует q Φ ρ, для которого ρ =>- q. Определение 8.14. Система замещений (Q, =^) конечна, если для каждого ρ £ Q существует константа с, зависящая от /?, * такая, что если ρ =^ q за i шагов, то ί < с, т. е. для каждого объекта ρ из Q существует лишь конечное число трансформаций, преобразующих его к терминальному элементу. Из теоремы 8.6 следует, что система замещений для вычислений по методу прогонки конечна. Через chasec (T) обозначим все терминальные табло, достижимые из Г с помощью F- и J-правил из С. Определение 8.15. Конечная система замещений (Q, =^) является конечной системой Чёрча — Россера (FCR), если для лю- * * бого объекта ρ £ Q из ρ =^ <7ι и Ρ =^ ?2> где qx и q2 — терминальные элементы, следует qx = q2. Это означает, что, начиная с любого р, придем к одному и тому же терминальному элементу независимо от способа применения трансформаций. Пример 8.25. Пусть В — множество правильно построенных булевых выражений над символами 0, 1, ( , ), V или Λ· Предположим, что для них существует скобочная структура. Пара (В, =^) является системой ?амещений, в которой =>- есть отношение, определенное рис. 8.43. Имеем Τ =>- 7" во всех случаях, когда 7" есть Τ с заменой одной из цепочек левого столбца соответствующей цепочкой правого столбца. Имеем, например, (((о V о) ν ι) Λ о) =► (((θ) ν 1) л 0) =*► ((о ν ΐ) Λ ο) ^ ((ΐ) л 0) =* (ΐ Λ ο) =► (θ) =*► ο. Символы 0 и 1 являются единственными терминальными выраже- ниями в В. Каждое выражение из В по =>- выводится к 0 или 1 к тому же за конечное число шагов. Следовательно, (В, =>) есть FCR.
8.6. Алгоритм прогонки (chase) 177 Строка (0) (1) Ολο Ол 1 1 ЛО ι л ι 0V0 0 V 1 1 VO 1 VI Замещение 0 1 0 0 0 1 0 1 1 1 Рис. 8.43. Покажем, что вычисление прогонки относительно множества ограничений С есть FCR. Из этого результата следует, что chasec (T) всегда содержит один элемент. Для доказательства того, что вычисление прогонки образует FCR, приведем следующую теорему, представляющую частный случай теоремы Сети (Sethi). Теорема 8.8 (Sethi). Система замещений (Q, =>) является FCR тогда и только тогда, когда она конечна, и для любого объекта ρ ζ Q из ρ =>- q-ι и ρ =>- q2 следует существование q в Q, такого, # » что q1 =ф- q и q.2 =>■ q. Теорему можно представить следующей диаграммой: Пример 8.26. Для системы замещений (В, =^) примера 8.26 ((О V 0) V (1 V 1))=М(0) V (1 V 1)) и ((о ν о) V 0 V 1))=* =K(0V0)V0)).
178 Гл. 8. Отображения «проекция-соединение», табло Согласно теореме, ((θ) ν (1 V i))^(o V 1) и «о ν ο) ν (i))^(o V 1). Теорема 8.9. Вычисление прогонки для множества ограничений С есть FCR система замещений. Следовательно, chasec (T) есть всегда одноэлементное множество. Доказательство. Используем теорему 8.8. Ранее доказано, что прогонка есть конечная система замещений. Мы должны показать, что если из табло Τ единственным применением трансформационного правила из С можно получить табло 7\ или табло Т2, то существует табло Т*, получаемое из 7\ и Т2 с помощью 0, или более применений правил из С. Рассмотрим три случая: 1-й случай: 2-й случай: F-правило 3-й случай: правило к 3-правило // \\ J-правило .l/ Заметим, что J-правила оставляют существующие строки табло без изменений, а F-правило, изменяя одно из вхождений данной переменной, по необходимости изменяет все остальные. Пусть w1 и w2— строки табло 7\ и± и и2 — строки табло Т', соответствующие w± и w2, причем Τ может быть получено из Τ применением F- и J-правил. Очевидно, если wx (X) = w2 (X), то их (X) = и2 (X). Таким образом, если некоторое J- или F-правило применимо к множеству строк Г, то те же правила приложимы к соответствующим строкам из Т\ Рассмотрим приведенные выше случаи,
8.6. Алгоритм поргонки (chase) 179 Случай L Пусть Т1 есть Τ с переменными υχ и υ29 отождествленными при помощи F-правила X-+А. Пусть Т2 есть Τ с переменными υ3 и щу отождествленными при помощи Υ -*~ В. Если Α Φ В9 используем F-правило для X ->- А на Т2 для отождествления υ± и ϋ2. Обозначим результат 71*, который есть Г с отождествленными υΐ9 ϋ2 и ϋ3) о4. Табло Τ* может быть также получено из 7\ с использованием Υ -> В для отождествления и{ и щ. Если Л = Б, рассуждения для А Φ В и различных yl5 t;a, t;8 и ϋ4 остаются справедливыми. Если это не так, пусть щ есть выделенная Т(А В С) ТХ(Л В С) й\ Ъ\ b2 ах Ьх Ь2 ах Ъ3 а3 ах Ъх а3 Ъ$ «2 а3 Ь4 а2 а3 Рис. 8.44. Рис. 8.45. переменная, или если среди υΐ9 v29 υ39 ϋ4 нет выделенных, то υχ есть невыделенная переменная с наименьшим индексом среди трех остальных. (Возможно, для этого придется поменять 7\ и Т2 местами). Предположим также, что υ3 = υλ или υ3 = υ2. Утверждается, что Г* есть Τ с υ29 υ3 и v4f замененными на vx. Если υ3 = υΐ9 справедливы приведенные выше рассуждения, или если щ = vi9 то Тг= Т2 = Т*. Если υ3 = υ29 рассмотрение усложняется. В Тг переменная щ {=щ) была заменена на υχ. Поскольку F-правило Υ -»■ В было применено к Τ для отождествления щ и ϋ4, правило У -> В также применимо к 7\ и производит замену ϋ4 на ν±. Из этой замены следует Т*. В Т2 переменная ϋ4 заменена на t;8, либо наоборот. Если о4 заменена на ϋ8, то F- правило X -> Л может заменить в Т2 переменную и8 на ι>ι· Если t;8 заменена на ϋ4, то F-правило Χ -»■ А позволит заменить в Т2 переменную ϋ4 на ϋχ. В любом случае ν2, υ3 и ϋ4 заменены на ϋχ. В результате чего образуется 71*. Пример 8.27. Пусть Τ — табло, представленное на рис. 8.44. Применяя F-правила для А -> В и С -»■ В9 получаем соответственно табло 7\ и Т2, изображенные на рис. 8.45 и 8.46. Применение к 7\ F-правила С ->■ 5 или Л ->■ В к Г2 дает табло 71* (рис. 8.47). Продолжение доказательства теоремы 8.9. Случай 2. Предположим, что F-правило заменяет в Τ переменную υ± на переменную υ2 с образованием 7\. Пусть далее J-правило добавляет к Τ строку w с образованием Т2. Если w не содержит vl9 применим J-правило к 7\, порождая w. Применение возможно, ибо части строк, участвовавшие в формировании w от Τ к 7\,
180 Гл. 8. Отображения «проекция-соединение», табло остались неизменными. Аналогично, с помощью F-правила можно в Т2 заменить υχ на υ2, поскольку добавление строки не может сделать правило неприменимым. Результатом любого из применений является табло Т*9 представляющее собой табло Τ с переменной υΐ9 замененной на υ2 и добавленной строкой w. Если строка w содержит υν то Т* образуется из Τ заменой ό± на о2 и добавлением строки а/, где w' образована из строки w заменой υ1 Т2(Л В С) Г*(А В С) а{ b{ Ъ2 ax а2 b2 ах а2 а3 ах а2 а3 Ь4 а2 а3 Ь4 а2 а3 Рис. 8.46. Рис. 8.47. Т2(А В С) Т{А_В_С) Тг(Л_В_С) αι Ъх Ъг αΐ 6ι Ъ1 ах а2 Ъ2 *г Ьх а3 Ъ* Ъь аз Ъ3 а2 а3 <*ι *г <*з а1 а2 а3 ах а2 а3 *1 *1 <*3 Рис. 8.48. Рис. 8.49. Рис. 8.50. на ϋ2. Применение F-правила, переводящего 7\ в Т2, продолжает заменять υχ на ν2, тем самым заменяя строку ш на ш'. В результате получаем 71*. J-правило, использованное для порождения w из Т, может быть применено к строкам 7\, соответствующим тем строкам из Г, к которым оно применялось первоначально. Результирующей строкой из Тг будет w', а общим результатом — Г*. Заметим, что некоторые строки 7\ могут соответствовать более чем одной строке Т. Пример 8.28. Пусть Τ — табло (рис. 8.48). Применение F- правила для А ->■ В порождает табло 7\ (рис. 8.49), с помощью J-правила * [АВ, ВС] выводится табло Т2 (рис. 8.50). Применение J-правила к 7\ или F-правила к Т2 порождает табло Г*. Продолжение доказательства теоремы 8.9. Случай 3 предоставляется читателю (см. упр. 8.30). Поскольку мы в каждом из трех классов можем найти соответствующее 71*, вычисление по методу прогонки есть FCR. Поскольку chasec (T) есть всегда одноэлементное множество, изменим обозначение так, что теперь chasec {Τ) представляет его единственный элемент. Следствие. Если SAT (С) = SAT (С), то chasec (Τ) = = chaser {Τ) для любого табло Т.
8.6. Алгоритм прогонки (chase) 181 Доказательство. Приведем доказательство частного случая, когда С = С U \с\ для любого с, такого, что С |= с. Пусть Т* = chasec (Τ). Поскольку С' з С, применение тех же правил приведет нас от Τ κ Τ* при С'. Более того, согласно теореме 8.7, ни одно из правил С' неприменимо к Т*, поскольку 71*, рассматриваемое как отношение, входит в SAT (С) и, следовательно, в SAT (С). Таким образом, chasec (Τ) = Τ*. Доказательство следствия в общем виде предоставляется читателю (см. упр. 8.31). Если С и С' — произвольные эквивалентные множества ограничений, то С |= с' для любого ограничения с' £ С. Таким же образом для любого с из С имеет место С' 1= с. Если С" = С U С\ то SAT (С") = SAT (С) - SAT (С). Можно показать, что в рассматриваемом частном случае chasec (Τ) = = chaser {Τ) = chasec (T). 8.6.2. Эквивалентность табло при ограничениях Теперь можно проверять эквивалентность двух табло при ограничениях, что дает нам возможность проверить случаи, когда отображение проекция-соединение т^ не имеет потерь на SAT (С). Из замечаний в начале этого раздела известно, что Τ εξ с chasec (T). В теореме 8.7 говорится, что chasec (T), рассматриваемое как отношение, входит в SAT (С). Используя лемму 8.3, получаем следующие результаты. Теорема 8.10. Пусть Тг и Т2— два табло, С — множество ограничений. Соотношение Tx4lc Т2 верно тогда и только тогда, когда chasec (7\) s chasec (T2). ТМ BCD) TM BCD) αχ а2 bx b2 αχ a2 b\ b2 b3 a2 a3 Z>4 63 a2 a3 b4 ay b5 b6 a4 bs be a3 a4 Рис. 8.51. Рис. 8.52. Следствие. Эквивалентность 7\ = сТ2 справедлива тогда и только тогда, когда chasec (Τχ) ξ chasec (Т2). Пример 8.29. Рассмотрим табло Тг и Т2 (рис. 8.51 и 8.52). Табло Тг есть табло для множества схем \А В, В Cf A D\f T2 — для множества {Α β, В С, С D}. Пусть С = \А -^D, * [А В, BCD]. На рис. 8.53 и 8.54 изображены TJ = chasec (7\) и Т1 = chasec (Г2).
182 Гл. 8. Отображения «проекция-соединение», табло Поскольку Т{ содержит строку из одних выделенных переменных, нетрудно найти отображение вложения из Т| в Т{. Следовательно, Т| !Ξ Τι* и, таким образом, T2!^cTi. Т*(А BCD) T*(A BCD) «1 Ъг «1 «1 h а2 Ъ{ «2 «3 Ь5 Ьв «2 «3 «2 bi Рис. 8.53. а4 а4 а4 а4 «4 а, а2 Ъг яг ^5 Ьь а1 а2 Ь3 а2 Рис. *1 «3 «3 «3 *1 8.54. &2 Ь2 а4 Ъг Ъг 8.6.3. Проверка выводимости зависимостей соединения Исследуем средства проверки правильной представимости отношений из SAT (С) своими проекциями на схемы отношений некоторой схемы базы данных R. Это условие эквивалентно высказыванию С |= * [R] или triR является тождественным отображением на SAT [С]. В терминах эквивалентности табло запишем Tr =с Τι, где Т/ есть табло, состоящее из одной строки wa выделенных переменных. Табло Τι является тождественным отображением для всех отношений. Согласно теореме 8.10, эквивалентность можно проверить с помощью условия chasec (Tr) = = chasec (Τι). Поскольку chasec (Ti) = Τι (почему?), проверяем условие chasec (Tr) = Τ/. Проверка этого условия состоит в проверке того, что chasec (Tr) содержит wd (см. упр. 8.33). Пример 8.30. На рис. 8.51 представлено табло Тх для схемы базы данных R = \А 5, В С, A D]. Пусть С = {А ->£>, * [А В, В CD]}. Поскольку chasec (Тх), заданное рис. 8.53, содержит wdi любое отношение из SAT (С) без потерь разлагается в R. На рис. 8.52 представлено табло Т2 для схемы базы данных S = \А β, В С, С D}. Поскольку chasec (T2) (рис. 8.54) не содержит wdi в SAT (С) существуют отношения, имеющие потери при декомпозиции в S. Пример 8.31. Как было обещано в разд. 6.5.4, покажем, что если R есть схема базы данных над U, полностью характеризующая множества F из F-зависимостей, и некоторая схема R £ R есть универсальный ключ U, то любое отношение из SAT (F) разлагается в R без потерь. Пусть G есть множество F-зависимостей, описанное ключами схем отношений R. Известно, что G |-= R -> U. Пусть Tr = = chaseo (Tr), w — строка из R в Tr и ш* — соответствующая строка в Tr. Мы утверждаем, что w* является строкой из одних
8.6. Алгоритм прогонки (chase) 183 выделенных переменных. Пусть Я есть DDA-граф с базой G для R -*■ U. Существует метод вычисления chasee (Tr), напоминающий построение Я. Сходство состоит в том, что если Υ есть множество меток вершин на некотором шаге построения Я, то строка, соответствующая w в некотором табло порождающей последовательности для Tr, имеет выделенные переменные во всех столбцах, входящих в Y. Формально пусть Я0, Нъ ..., Нп = Η — последовательные DDA-графы при построении Я. Опишем порождающую последовательность TR = Т0, ΤΊ, ..., Тп для Т|. Пусть wt — строка Tif соответствующая w в Т0. Если Yt есть множество меток вершин DDA-графа Hif мы хотим, чтобы wt имела выделенные переменные во всех столбцах Yt. Первоначально это условие выполняется: YQ есть просто R и wQ = w есть строка для R в Tr. Пусть условие выполнено для Я; и 7\·. Предположим также, что Я^+1 образуется из Яг добавлением вершины с меткой А при использовании F-зависимости К -+ А из G. Множество атрибутов К должно быть ключом некоторой схемы отношения Rj в R, где А £ /?,·. Β ΤΌ существует строка и из Rj. Пусть щ — соответствующая ей строка в Т,·. Строка щ имеет выделенные переменные по крайней мере в столбцах Rj (см. последующую лемму 8.4). Поскольку для расширения Я/ было использовано К-+А, имеем К ^ Yi и, следовательно, wt содержит выделенные переменные во всех /С-столбцах, так как К ^ Rj, то щ также состоит из выделенных переменных в /С-столбцах. К Tt применимо F-npa- вило К ->- А для строк Wt и щ, потому что wt (К) = Щ (/С). Применение F-правил устанавливает wt (A) = щ (Л), что означает, что wt (А) становится выделенной переменной, если она до этого не была таковой. Таким образом, wi+1 из Ti+1 выделено по крайней мере на YtА = Yi+1. В результате индукции, поскольку все атрибуты из U для Нп = = Я являются метками вершин, w„ из Тп есть строка из одних выделенных переменных. Остается небольшая деталь. В G может оказаться больше правил, чем может быть применено к Тп. Пусть вычисление прогонки продолжается до конца: Тп+\, 7^+2» ..., Tr. Строка w* из Tr, соответствующая wn в ТП9 все еще выделена. Таким образом, мы видим, что chasec (7*r) содержит строку из одних выделенных переменных, следовательно, G \= * [R]. Итак, произвольное отношение г из SAT (G) = SAT (F) без потерь декомпозируется в R. 8.6.4. Проверка выводимости функциональных зависимостей Выше изложен метод проверки выводимости J-зависимости из множества F- и J-зависимостей. Обратимся к проверке выводимости F-зависимостей из С. Для проверки выводимости F-зависи-
184 Гл. 8. Отображения «проекция-соединение», табло мости табло интерпретировалось как отображение между отношениями. Для проверки выводимости F-зависимостей рассмотрим табло как отношения, или точнее, как шаблоны отношений. Для изложения метода понадобятся две леммы. Лемма 8.4. Пусть Τ — табло и С — множество ограничений. Пусть ρ — оценка для Т, такая, что ρ (Τ) ^ г, где г принадлежит SAT (С). Если Τ ~ Т0, ..., Тп — порождающая последовательность для chasec (Τ), то для О < I < η: 1) Ρ (^о) = Ρ (wi)> г^е ^о — произвольная строка из Т0 и Wi — соответствующая ей строка Tt. Кроме того, wt поглощает 2) Ρ (Ά) s n 3) Tt з Ti+1, i Φ η. Доказательство. Пункты 1 и 2. Достаточно показать, что если wj — строка из Tj, a Wj+1 — соответствующая ей строка из TU1, то Ρ (wj) = Ρ (wJ+i) и wj+i поглощает ws. Если теперь w — строка из TJ+1, не имеющая соответствующей в Tj9 то Ρ И € г. Если Tj+1 образуется с помощью F-правила, не изменяющего переменных из Wj, или J-правила, то wj = wj+1 и, очевидно, ρ (wj) = = Ρ (wj+i)> и wj+i поглощает Wj. В противном случае при переходе от Tj к Т]+1 для некоторого атрибута Л в Wj (А) переменная υχ заменяется на υ2. Замена может происходить с помощью применения F-правила для F-зависимости Χ -> А к двум строкам их и и2 из Tj, для которых иг (X) = и2 (Χ), ηλ (А) = щ и и2 (А) = υ2. По индукции ρ («χ) = t1 и ρ (и2) = t2) где tx и t2 — строки из г. По условию F-правила Ιλ (X) = ί2 №· Поскольку г принадлежит SAT (С), имеем ^ (Л) - *2 (Л). Тогда ρ (^) = ρ (цг (Л)) = = t1 (Л) = /2 (Л) = ρ («2 (Л)) = ρ (ϋ2). Следовательно, ρ (wj) = == Ρ O^j+i)· Кроме того, если одна из υ± и υ2 — выделенная переменная, то такой же должна быть υ2 и, следовательно, wj+1 поглощает Wj. Если w — строка Т/+1, не имеющая соответствующей в Tj, то w должна быть результатом соединения строк иъ и2, ... ..., uq из Г; в S, где* [S] £ G. Согласно упр. 8.25, ρ (uj, p (u2), ... ..., ρ (uq), принадлежащие г, соединимы по S, образуя ρ (w). Поскольку г £ SAT (С), то ρ (ш) £ г. Доказательство п. 3 предоставляется читателю (см. упр. 8.36). Предположим, что задана нетривиальная F-зависимость Χ ->■ ~> Л и нужно проверить С |= X ->■ Л. Строим табло Τχ следующим образом. 7\ состоит из двух строк шй и wx. Строка wd состоит
8.6. Алгоритм прогонки (chase) 185 из одних выделенных символов; wx содержит выделенные символы в Х-столбцах и различные невыделенные символы в остальных. Таким образом, Τ χ = 7R для R = {U, X\. Пример 8.32. На рис. 8.55 изображено Твс для U = А В С D. Теорема 8.11. С |= X -> А тогда и только тогда, когда chasec {Τ χ) имеет β A-столбце только выделенные переменные. ТВС(А BCD) T*(A BCD) а\ а2 α3 α4 αχ α2 а3 а4 bi az йъ ьг by αι α3 α4 Рис. 8.55. Рис. 8.56. Доказательство. Пусть 7* = chasec (Τχ). Предположим, что 7* имеет невыделенный символ в Л-столбце. Табло Т*, рассматриваемое как отношение, является противоречием к утверждению С|=Х->Л. По теореме 8.7 табло 7* удовлетворяет С. Однако каждая строка Г* имеет одни выделенные символы в Х-столбцах, поскольку вычисление прогонки не порождает новых символов. Согласно лемме 8.4, строка wd на протяжении прогонки остается неизменной. Таким образом, 7* содержит две строки, которые совпадают на X, но различаются на A: wd и строка с невыделенным символом в Л-столбце. Следовательно, 7* противоречит X -> Л. Предположим теперь, что 7* содержит лишь один, выделенный символ в Л-столбце и пусть г — произвольное отношение из SAT (С). Пусть tx и t2 — любые два кортежа, для которых tx (X) = = t2 {X). Рассмотрим оценку ρ для" Тх, такую, что ρ (wd) = t± и ρ (wx) = t2. Такая оценка существует, потому что wd (X) = = wx (X). Только что было показано, что wd есть строка из 7*, соответствующая wd в Τ χ. Пусть wx обозначает строку, соответствующую wx. Согласно лемме 8.4, ρ (w*x) = ρ (υϋχ). Поскольку 7* имеет только одну переменную в Л-столбце, то wx (Л) = = Wd (Л). Таким образом, имеем U (Л) = ρ (wd (Л)) = ρ (wx (Л)) = = ρ (wx (Л)) = t, (Л). Два произвольных кортежа, совпадающие на X, совпадают на Л. Поскольку г произвольно, то SAT (С) ^ SAT (X-* А) или С\= X -> А. Пример 8.33. Предположим, что проверяется условие С |= \=BC-*D. Если С - {Л->£>}, то chasec (ТВс) = Твд. Поскольку в D-столбце стоит Ь2, зависимость В С ~> D не следует из С. Если (У = {Л -+D, * [Л В С, С D]\, то результатом chasec {Твс) является табло 7* (рис. 8.56). Табло 7* имеет в D-столбце только a4i следовательно, С' |= В C->D.
186 Гл. 8. Отображения «проекция-соединение», табло Ранее мы определили Х+ как замыкание множества атрибутов X относительно F-зависимостей F. Определение можно существенно расширить, включив в него не только F-зависимости, но и J-за- висимости. Определение 8.16. Пусть С — множество F- и J-зависимостей и X — множество атрибутов. Замыканием X относительно С, обозначаемым Х+, называется наибольшее множество атрибутов F, такое, что С |= X ->■ Υ. Заметим, что если С состоит из одних F- зависимостей, новое определение сводится к старому. Следствие. Для заданного С множество Х+ есть множество атрибутов А, таких, что Α-столбцы в chasec [Τ χ) содержат толь- ко выделенные переменные. Следствие. Если J — множество J-зависимостей, то из J |= |.= X -*■ Υ следует X з Υ, т. е. из множества J-зависимостей выводимы лишь тривиальные F-зависимости. Доказательство. Поскольку J-правила не отождествляют символов, chasej (Τχ) имеет в каждом столбце, соответствующем атрибутам U — X, невыделенные символы. 8.6.5. Вычисление базиса зависимостей Поскольку MV-зависимости являются частным случаем J-зависимостей, условие С |= X ->-> Υ можно проверить с помощью условия С |= * [Χ Υ, Χ Ζ], где Ζ = U — Χ Υ. Однако, как видно из следующей теоремы, вычисление прогонки также можно использовать для нахождения всех множеств Υ, таких, что С |== \= X -» Υ при заданном X. Теорема 8.12. Пусть С — множество ограничений, и Υ — множество всех атрибутов, не пересекающихся с Х+ (при условиях С). Тогда С |= X —» Υ тогда и только тогда, когда chasec (Тх) содержит строку uY с выделенными переменными в точности во всех ΥX*-столбцах. Доказательство. Достаточность. Пусть Т*х есть chasec (Τχ). Пусть также Ud и их — строки Т\, соответствующие Wd и wx. (Известно, что wd = ud.) Пусть R — схема базы данных \Х Υ, Χ Ζ\, где Ζ = U — ΥΧ+. Покажем, что Tr = chasec (TR) должно содержать wd, следовательно, С |= * [Χ Υ, Χ Ζ], что эквивалентно С |= X —» Υ. Пусть ρχγ и ρχζ — строки из TR для схем отношений XY и XZ. Пусть, далее, qXY и qxz — соответствующие им строки в Tr. Рассмотрим отображение δ переменных Τ χ в переменные Т%, такое, что δ (wd) = qxy и δ (wx) = qxz. Если Т% считать
8.6. Алгоритм прогонки (chase) 187 отношением, то отображение δ можно рассматривать как оценку; δ существует, потому что ρχγ (Χ) = ρχζ (Χ), следовательно, qxy (X) = qxz (Χ)- Поскольку Tr в качестве отношения принадлежит SAT (С), то, согласно лемме 8.4, δ (Τχ) ^ Tr, δ (wd) = = δ (ud) и δ (wx) = δ (ιΐχ). Поскольку ud (X+) = ux (X+), то Qxy (X*) = qxz [X*)· Таким образом, δ отображает выделенные переменные из Х+-столбцов из Τχ в выделенные Х+-столбцы из П. Покажем, что для строки иу из Τ χ, имеющей выделенные символы в точности в К^-столбцах, δ (uY) является строкой wd из одних выделенных символов в Т|. Так как иу выделены в Х+- столбцах, то δ (uY) выделены в Х+-столбцах по причине, изложенной в предыдущем разделе. Поскольку qXY поглощает ρχγ, в qXY выделены переменные во всех F-столбцах. Мы знаем, что δ (wd) = = qXy, так что δ должно отображать выделенные переменные из F-столбцов Тх в выделенные на F-столбцах из Tr. Строка иу выделена во всех К-столбцах, следовательно, δ (uY) также выделена во всех К-столбцах. Поскольку qxz поглощает pxz, переменная qXz выделена во всех Z-столбцах Известно, что δ (wx) = — qxz, поэтому δ должна отображать выделенные переменные из Z-столбцов Τχ в выделенные переменные Z-столбцов Tr. Строка иу не выделена во всех Z-столбцах, следовательно, δ (uY) выделена во всех Z-столбцах. Имеем U = YX+Z, отчего 6(uY) выделена всюду. Следовательно, Tr содержит wd, откуда С |= X —» Y. Необходимость. Предположим, С |= X —» Y. Пусть С = = С U {* IXY, XZ]\, где, как и раньше, Z = U — ГХ+. По следствию из теоремы 8.9 из SAT (С) = SAT (С) следует chasec (Τχ) = chasec (Tχ). Рассмотрим вычисление chasec (Τχ)9 при котором на первом шаге к строкам wd и wx применяется J-правило * [XY, XZ]. Результатом является строка, в которой выделенные переменные находятся в одних ΛΥ-столбцах. В оставшейся части алгоритма прогонки каждая невыделенная переменная в Х+-столбцах w заменится на выделенную. Таким образом, строка chasec (Τχ), соответствующая w, будет иметь выделенные переменные в одних УХ^-столбцах. (Почему нет выделенных переменных в других местах?) Итак, chasec (Τχ) = chasec (Tχ), что и требовалось. Пример 8.34. Пусть С = {5->С, * [А В С, С D Е]}. Табло Тв дано на рис. 8.57, а Т% = chasec (Τв) — на рис. 8.58. Мы видим, что В* = В Си что из С выводимы MV-зависимости В —» -» Л D £, β -* 0, В -» А и β -» D Ε. На основании chasec (Τχ) можно определить множество Q — = \γ | С |= X -» Υ и Х+ П У =0]· Обращаясь к разд. 7.4.2, имеем С |= X —» А для любого Ζ £ X*. Из упр. 8.38 мы увидим, что С |= X -» Υ тогда и только тогда, когда Υ представимо
188 Гл. 8. Отображения «проекция-соединение», табло в виде ΧΎ'9 где Χ' ζ Х+ и Υ' ζ Q. В определение для базиса зависимостей можно включить J-зависимости. Определение 8.17. Пусть С — множество ограничений и X — множество атрибутов. Базис зависимостей X относительно С, обозначаемый DEP (X), есть mdsb (\Y \ С \=* X -*> Υ). (Напомним, что mdsb есть минимальное разъединенное базисное множество (см. разд. 7.43).) Т%{А В С D Е) ТВ(А BCD .Ε) b{ ai аъ h b4 a\ a2 a3 a4 a5 d\ U2 «3 63 b4 b\ a2 b2 b3 b4 bx a2 a3 aA a$ Рис. 8.57. Рис. 8.58. Как и раньше, С j= X —» Υ тогда и только тогда, когда Υ есть в точности объединение множеств из DEP (X). Зная Q и Х+3 множество DEP (X) можно непосредственно вычислить как mdsb(Q) U \\А\\А £ Х+\. Пример 8.35. Пусть С - \В -> С, * [А В С, С D Е]\, как в примере 8.34, где показано, что В+ = В С и Q = {A D Е> 0; Л; D Ε .} Для DEP (В) находим DEP (В) = {Л, В, С, D Е\. 8.7. ТАБЛО КАК ШАБЛОН В этом разделе формализуется идея табло как шаблона для отношений. Определение 8.18. Пусть Ρ — множество отношений, г — произвольное отношение. Пополнением г β Ρ называется отношение s из Р, такое, что г g s, и не существует s' в Р, такого, что г s s' a s. СОМРр (г) есть множество всех пополнений; СОМРс (г) — сокращенная запись для СОМР^лг (с> (г). Пополнение не всегда существует. Пример 8.36. Пусть г — отношение, представленное на рис. 8.59. Если F = \А ->- С}, то СОМР* (г) пусто. Если J = = |* [Л В, В С £>]}, то COMPy(r) = \s\, где отношение s см. на рис. 8.60. Если пополнения существуют, они, вообще говоря, не единственны. Пример 8.37. Пусть г — отношение (рис. 8.59), Ρ = SAT (* [А В, В С]). Зависимость * [Л В, В С] для данной схемы
8.7. Табло как шаблон 189 отношений есть встроенная J-зависимость. СОМР? (г) содержит отношение s (рис. 8.60), а также отношение q (рис. 8.61). Фактически СОМР? (г) содержит отношение для каждого значения домена атрибута D. Множество Ρ отношений замкнуто относительно пересечения, если для каждой пары отношений г и s из Ρ отношение г (] S также принадлежит Р. s(A BCD) q(A BCD) [ABC 13 4 2 3 4 1 3 5 Рйс. 8.59. D) 6' 6 7 1 3 4 2 3 4 1 3 5 2 3 5 Рис. 8.60. 6 6 7 7 1 3 4 2 3 4 1 3 5 2 3 5 Рис. 8.61. 6 6 7 6 Лемма 8.5. Множество Ρ замкнуто относительно пересечений тогда и только тогда, когда пополнение в Ρ единственно. Доказательство. Предположим, что Ρ замкнуто относительно пересечений. Пусть s и s' — пополнения г в Р. Согласно свойству замкнутости, s fj s' принадлежит Ρ, и s f| s' з г, так что s = = s (1 s' = s'. Предположим, что пополнение в Ρ единственно. Пусть г и s принадлежат Р, q = г Π s. Должно существовать некоторое подмножество г' отношения г (может быть, само г), такое, что г' есть пополнение ? в Р. Аналогично, существует подмножество s' в s, являющееся пополнением q. По предположению о единственности имеем г' = s , откуда г' = q = s' и q принадлежит Р. Следствие. Если С — множество F- и J-зависимостей, то пополнение β SAT (С) единственно. Доказательство предоставляется читателю (см. упр. 8.40). Для множества одних J-зависимостей пополнения всегда существуют. Они могут быть найдены с помощью процедуры, напоминающей прогонку. Если, однако, С содержит как F-зависимости, так и J-зависимости, то пополнения не всегда существуют даже для отношений, удовлетворяющих F-зависимостям (см. упр. 8.41). Для множества F-зависимостей COMPF (r) существует тогда и только тогда, когда г £ SAT (F). В этом случае COMPF(r) = г. (Когда Ρ замкнуто относительно пересечений, СОМРр (г) представляет собой единственный элемент.) Определим множество отношений, представляемых табло.
190 Гл. 8. Отображения «проекция-соединение», табло Определение 8.19. Пусть Г— табло и Ρ — множество отношений. Представляющее множество Г β Р, обозначаемое REP? (Г), есть \г | г £ СОМРр (ρ (Г)) для некоторой оценки р}. Как обычно, REPC(T) означает REPsatio (Τ). Лемма 8.6. Пусть Ρ — множество отношений, замкнутое от- носителъно пересечений, и Т\ и Г2— два табло. Если Γι!=ρ Г2, то для каждого отношения г из REP? (7\) существует отношение s из REPp (Г2), такое, nmos^r. Доказательство. Пусть г £ REPp (Γι), где г входит в СОМРр (ρι (Γι)), и пусть Wd есть строка из одних выделенных переменных. Поскольку г э Pi (Тг), табло Гх (г) содержит ρ (wd). Кроме того, pi (wd) (Ε ^2 (г)> потому что Т\^р Г2. Тогда существует оценка р2, такая, что р2 (wd) = Pi (wd), и р2 (Г2) ^ г. Пусть s = СОМРр (р2 (Г2)). Отношение s существует потому, что р2 (Г2) gr ζ Р. Отсюда следует, что s ^ г. Пример 8.38. Если С — множество F- и J-зависимостей, то для Ρ = SAT (С) лемма 8.6 достаточно слаба. Для любого С множество SAT (С) содержит все отношения, состоящие из одного кортежа. Предположим, что Т\^СТ2 и г £ REPc(T\). Пусть t — кортеж в г, s — отношение, состоящее только из ί, и ρ — оценка, такая, что ρ (Г2) = s. Поскольку СОМРс (s) = s, имеем s £ #£Рс (Г2) и, очевидно, s ^ г. Однако, если Ρ = ЯЛ Г (С), можно доказать более сильный результат. Теорема 8.13. Пусть С — множество ограничений и Г — табло. Если Г* = chasec (Г), то REPC (Г) = REPC (Г*). Доказательство, Предположим, г £ REPC (Г). Пусть ρ — оценка, такая, что г = СОМРс (р (Г)). Очевидно, что ρ (Г) ^ г. Поскольку г ^ SAT (С), из леммы 8.4 имеем 1) ρ (Γ) ξ ρ (Γ*), 2) ρ (Г*) с= л Значит, СОМРс (р (Г*)) = г, откуда REPC (Г) <= #£РС (Г*). Теперь предположим,'что г ζ REPC (Г*). Пусть ρ — оценка, такая, что г = СОМРс (р (Г*)). Так как Г* как отношение входит в SAT (С), ρ (Г*) (= Si4T(C), имеем г = ρ (Γ*). Табло Г может иметь больше переменных, чем Г*, но ρ можно согласованно продолжить до Г таким образом, что ρ (Γ) ^ ρ (Γ*). Пусть w — произвольная строка в Г, и ш* — соответствующая ей строка в Г*. Положим, ρ (w) = ρ (а>*). Пусть Г = Г0, 7\, ..., Тп = Т* — порождающая последовательность для Г*. Из леммы 8.4 мы знаем, что ρ{Τύ<=ρ{Τύϊ=...ς=ρ(Τη).
8.7. Табло как шаблон 191 Поскольку SAT (С) обладает свойством пересечения, СОМР? (р (ГО) с= СОМРс (р (72)) Ξ ... s СОУИР (р (Тп)). (Здесь СОМРс (s) означает отношение.) Пусть одно из вложений является строгим: СОМРс(р (Tt))c:COMPc(p(Tt+i)). В ρ (Ti+1) должен существовать кортеж ρ (w), не входящий в СОМРс (р (Т{))> в противном случае ρ (7Μ) с= СОМРс (р (7\)) и оба пополнения совпадают. Следовательно, оу ζ ΤΊ-μ и w ξέ Ti. Ti (ЛВС) Т2(Л В С) ах а2 а3 ах bi аг ах а2 Ьг а\ ъ\ ъг Ь3 ЪА а3 ъъ <*2 <*з Рис. 8.62. Рис. 8.63. Строка w должна была быть порождена J-правилом из строк Ть например, из строк wlt w2, ..., wq и J-правила для * [S]. Теперь Ρ (щ), ...» Ρ (wq) принадлежат р (Tt) и, таким образом, входят в СОМРс (p(Ti)). Но СОМРс (ρ (Τι)) 6 SAT (С) и, следовательно, должно удовлетворять * [S], так что ρ (w) принадлежит СОМРс (р (Т{))> что приводит к противоречию. Ни одно из вложений не является строгим, а значит СОМРс (р [Т)) = = СОМРс (р (Т*)) = г. Следовательно, REPC (Τ) g= REPC (Τ*) и, таким образом, REPC (Τ) = REPC (T*). Следствие. Для множества ограничений С и табло Τ REPC (Τ) = {ρ (7*) | 7* = chasec (Τ) и р есть оценка]. Доказательство. REPC(T) = REPC(T*) = {СОМРс(ρ (Τ*)) | ρ есть оценка}. Из доказательства теоремы имеем СОМРс (ρ (Τ*)) = - Ρ (Τ*). В свете последней теоремы следует ожидать некоторой связи между условиями Τι =с Т2 и REPc (Τι) = RE Ρ с (Τ2). Однако первое не влечет за собой второе (упр. 8.42), и, как показывает следующий пример, второе не влечет за собой первое. Пример 8.39. Пусть Тг и Т2 — табло (рис. 8.62 и 8.63). Пусть С=\А-*В\. Оба табло как отношения принадлежат SAT (С). Следовательно, они совпадают с собственной прогонкой при С. Из Т1 в Т2 не существует отображения вложения, так что 7\ фс Т2. Однако мы видим, что для любой оценки рг для 7\ существует оценка р2 для Т2, такая, что рх (7\) = р2 (Т2), и обратно. По следствию из теоремы 8.13 REPC(T\) = REPC (T2).
192 Гл. 8. Отображения «проекция-соединение», табло 8.8. СЛОЖНОСТЬ ВЫЧИСЛЕНИЙ ПО МЕТОДУ ПРОГОНКИ В общем случае процедура прогонки имеет экспоненциальную временную сложность. Если табло Τ имеет k столбцов и т строк, chasec (Τ) может иметь mk строк (см. упр. 8.44). Если использовать процедуру прогонки для проверки отсутствия потерь информации при соединении, то не всегда нужна полная процедура. Как только получена wdi строка из одних выделенных переменных, нет необходимости продолжать проверку. Если wd входит в какое-нибудь табло порождающей последовательности, оно появится в окончательном табло. Однако проблема определения принадлежности Wd G chasec (T), вероятно, не имеет полиномиального по времени решения, потому что известно, что проблема проверки С |= * [S] является NP-трудной. Для проверки С \= с существуют другие методы в отличие от метода прогонки, имеющие в случае F- или J-зависимостей полиномиальную временную сложность. Поскольку F-правила не порождают новых строк, процедура прогонки chaseF (Τ) для множества F-зависимостей F никогда не имеет больше строк, чем Т. Тогда неудивительно, что chaseF (T) можно вычислить за полиномиальное время. Предположим, что входом задачи являются табло Τ и множество F. Для простоты примем, что каждый атрибут или переменная табло занимают единицу памяти. Пусть k = | U| = число столбцов 7\ т = число строк Т, ρ = объем памяти для записи F. Объем входа составляет η = О (k-m + /?). Покажем, как вычислить chasec (Τ) за время О (я3). Начнем совершать повторные проходы по множеству F-зависимостей. Для каждой F-зависимости Χ -> А сгруппируем вместе строки с равными значениями Х-компонент. Если | X \ = q, сортировка занимает О (q-m) времени. После сортировки еще за О (q-m) времени найдем строки с равными значениями Х-компонент и отождествим их Л-столбцы. Сумма объемов левых частей по всем F-зависи- мостям из F не превышает /7. Таким образом, один проход по всем F-зависимостям занимает О (ρ-m) времени. Продолжаем совершать проходы по F до тех пор, пока в Τ перестанут возникать изменения. На этом останавливаемся. Вначале Τ может иметь не более чем k-m различных переменных. Каждый проход, кроме последнего, уменьшает число переменных на единицу, таким образом, имеем не более чем О (k-m) проходов. Общее
δ.8. Сложность вычислений по методу прогонки 193 время процедуры прогонки есть О (k-рчп2), что не превосходит О (я3). ^j Если табло соответствует схеме базы данных и в качестве входа заданы только схемы, описанная выше процедура занимает О (я4) времени, где η — объем (см. упр. 8.45). Существуют другие методы вычисления процедуры chase, которые снижают это Τ Μ BCD) Ъ\ а2 b2 а4 в\ «2 аз Ь3 Ь4 Ь5 а3 сц Рис. 8.64. Т(А β С D Е) ах Ъх b2 a4 Ь3 ах а2 b4 hs b6 b7 а2 &8 а4 as b9 bl0 а3 bn a4 Рис. δ.66. время до О (n2/log η). С целью упрощения F-правила мы до сих пор предполагали, что все наши F-зависимости имеют справа один атрибут. F-правило можно обобщить на случай многих атрибутов в правой части F-зависимости. Если w1 и хю2 — строки в табло, такие, что w1 (X) = w2 (X) и Χ -* Υ есть F-зависимость, входящая в ограничения, то для каждого атрибута Л, входящего в У', можно отождествить wx (А) и w2 (A). Существует также обобщение J-правила, позволяющее нам генерировать одновременно более одной строки. Если * [S] есть J-зависимость из множества ограничений, то к табло можно применить Ρ J-отображение ms, а результат использовать для создания следующего^ табло в порождающей последовательности. |Пример 8.40. Пусть 7\ (рис. 8.64) — табло в порождающей последовательности алгоритма прогонки chasec (Τ), где С содержит * [А Ву В С, С D]. Табло Т2 (рис. 8.65) можно рассматривать как следующее табло в порождающей последовательности. Кажется, что индексами у невыделенных переменных можно пренебречь, рассматривая их как различные переменные до отож- Т2(А BCD) ъ, by by а\ «1 «1 ъ4 ъ4 <ч «2 а2 а2 а2 «2 ь5 bs Рис. Ъг «3 «3 Ь2 «3 «3 ИЗ «3 8.65. а4 Ьз а4 а4 Ьз а4 Ьз а4
194 Гл. 8. Отображений «проекция-соединение», табло '*(А В а\ аг а\ а2 Ь7 а2 С Ъг Ъг Ь2 D аА bs а4 е: «5 Ъь Ч дествления с помощью выделенных переменных. В следующем примере приведено табло, в котором для выполнения процедуры прогонки должны быть приравнены невыделенные переменные. Пример 8.41. Пусть 7 — табло (рис. 8.66) и С = \А -+ С, В ->■ С, С D ->■ Е\. Для вычисления chasec (7) необходимо отождествить b2f bA и b8. Ts(A В С D Ε) ах Ъх Ъ2 а4 Ьъ αχ а2 Ъ4 bs 6б Ь7 а2 Ь% а4 а5 Рис. 8.67. Рис. 8.68. Т$(А В D Е) αχ Ъх а4 Ъ2 αχ а2 b3 Ъ4 bs a2 a4 as Рис. 8.69. Читатель должен отметить, что для продолжения процедуры chase в примере 8.41 даже тогда, когда используется замыкание F-зависимостей, необходимо приравнять невыделенные переменные. Коротко коснемся встроенных зависимостей соединения (EJ- зависимости). Пусть S = \Sly S2, ..., Sq\ — множество схем отношений, где S^ ... Sq = S ^ U. Для проверки С |= * [S] образуем табло 7S над U. Вычислим 7| = chasec (7S). Если Т$ содержит строку, выделенную на всех S-столбцах, то С |= * [S]. Пример 8.42. Пусть S = \А D, А Б, В D Е], a U = = А В С D Ε и пусть С= \А -> С, В-+Су С D-^E, Ε -> Β]. Образуем табло Ts, как показано на рис. 8.67, и вычислим 7J = = chasec (7S), как показано на рис. 8.68. Поскольку 7s содержит строку, выделенную на столбцах А В D Е, условие выводимости для S выполняется. Заметим, что в табло следует включить столбец С. Если бы 7s было образовано только на А В D Е, как показано на рис. 8.69, результат прогонки chasec (7S) не содержал бы строки из одних выделенных переменных. Вычисления по методу chase не обобщаются на С, содержащее EJ-зависимости. В этом случае J-правило для EJ-зависимости породило бы только часть строки. Частичную строку можно было
8.9. Упражнения 195 бы дополнить новыми невыделенными переменными, но тогда не проходит доказательство конечности алгоритма прогонки (теорема 8.6). 8.9. УПРАЖНЕНИЯ 8.1. Пусть R = {А В, В С D, А £}. Для отношений г и s рис. 8.1 и 8.2 вычислите mR(r) и m^(s). 8.2. Докажите часть 1 леммы 8.1. 8.3. Пусть R = {/?!, ..., Rp} — схема базы данных, причем R = R1R2 ··· ...Rp. Покажите, что для любого отношения г (R): mR (ή ς FIX (R). 8.4. Докажите, что для любого табло Τ со схемой R и любого отношения г (R) справедливо г ξ Τ (г). 8.5. Пусть Τ — табло со схемой R и г (R) — отношение. Покажите, что если Τ имеет выделенную переменную в каждом столбце, то Τ (ή есть отношение, т. е. Τ (ή есть конечное множество кортежей. 8.6. Примените табло Т(АХ А2 А3 А<) «ι ь\ яз Ь2 Ь3 а2 а3 аА «1 ЬА Ьъ а4 к отношению г(Лг А2 Л3 А4) 13 5 7 13 5 8 2 4 6 8 1 4 ό 7 8.7*. Докажите лемму 8.2. Указание: покажите, что если кортежи tlt ..., tp соединимы по R, то для TR существует оценка р, преобразующая w. в £., 1 ^ *ζ i ^ /?, где Wf есть строка с выделенными переменными в /^-столбцах. 8.8. Покажите, что если табло содержит строку выделенных переменных, то Τ (ή = г для любого отношения г. 8.9. Пусть R ={АгА2А3А^ А2А3А^А5} и пусть S= {АгА2А3, A2AZA^ A±Ab}. Сколько среди них схем отношений Q, таких, что R ^> Q ^ S? 8.10. Для множества R и S из упр. 8.9 покажите, что вложение FIX (R) э FIX (S) является строгим. 8.11*. Докажите модификацию теоремы 8.1 в случае, когда все вложения являются строгими. 8.12. Какое максимальное число строк табло Τ соответствует ограничению SUB (T) = Τ? 8.13. Докажите теорему 8.2. Указание: используйте условие: TR = Ts тогда и только тогда, когда R » S.
196 Гл. 8. Отображения «проекция-соединение», табло 8.14. Покажите, что SUB (Τ) С_ Τ для произвольного табло Т. 8.15. Докажите или опровергните: Тг С_ Т2 влечет за собой SUB (7\) С C_SUB(T2). ~ 8.16. Для следующих табло ТМ\ А2 А3) ai a2 bi b2 a2 а3 Т2(АХ А2 А3) а{ а2 Ъх Ъ2 а2 а3 Ъ2 Ъ3 Ъх найти отношение г, для которого вложение Тг (г) ^ Т2 (г) является строгим. . 8.17. Из двух строк wx и w2 заданного табло Τ строка шг заменяет w2, если тг поглощает w2 и из тг (А) Ф w2 (Л) следует, что w2 (А) есть невыделенная переменная, более нигде в Г не встречающаяся. Обозначим через SUP (T) табло Г, в котором удалены заменяемые строки. Докажите, что SUP (Τ) = Т. 8.18. Пусть Тг и Т2 '— табло. Докажите, что если для них, как множества строк, справедливо Тг з Г2, то как отображения они удовлетворяют Тг EZJV 8.19. Для заданных табло Тг и Т2 постройте алгоритм проверки существования отображения вложения из Тг в Т2. Какова временная сложность вашего алгор итма? 8.20. Пусть Τ — табло и С — множество F- и J-зависимостей. Докажите, что если ρ (Г) £ SAT (С) для некоторой взаимно однозначной оценки, то р' (Г) £ £ 5ЛГ(С)для любой другой оценки р'. 8.21. Какие существуют трансформационные правила, сохраняющие эквивалентность при С = 0? 8.22. Примените F-правила Аг -+ А3 и А3А4 -+ А2 к табло Τ(Αλ Α2 А3 АА) ах Ъх а3 Ъ2 Ъ3 а2 а3 а4 аг b4 b5 а4 максимальное число раз. 8.23. Докажите теорему 8.4. Указание: покажите, что если оценка ρ такова, что ρ (Τ) ξ г при г £ SAT (X ~> Л), и wlt w2 — строки Г, для которых wt (X) = w2 (X), то ρ (wx (A)) = ρ (w2 (A)). 8.24. К табло Т" примените J-правила из С примера 8.20 до тех пор, пока происходят изменения. 8.25. Пусть S = {5Х, 52, ..., Sq}— множество схем отношений, Τ — табло ир — оценка для Т. Покажите, что если w — результат соединения строк wlt w2, ..., wq табло Τ по S, το ρ (w) —результат соединения ρ (α^), р (Ш2), ..., ρ (Wq) ПО S.
8.9. Упражнения 197 8.26. Вычислите прогонку (chase) табло Т(А В С D Е) αχ b\ a3 b2 as αχ b3 b4 a4 аъ b$ a2 a3 a4 bb для множества ограничений С = {А -* В, Ε ->D, * [A BCD, D Ε]}. 8.27. Приведите пример порождающей последовательности, в которой двум различным строкам одного табло соответствует одна и та же строка в табло последовательности. 8.28. Пусть Го, 7\, ..., Тп — порождающая последовательность для произвольного вычисления прогонки. Покажите, что Т0 ^ 7\ _5 ... .3 Тп. 8.29. Для системы замещений из примера 8.25 покажите, что если исключить правило предшествования Д над V» выражаемого скобками, то система не является FCR. 8.30. .Завершите доказательство случая 3 теоремы 8.9. 8.31. Докажите следствие теоремы 8.9 в общем виде. 8.32. Докажите, что два табло Т№ BCD) tfi Ь\ а3 Ь2 ах а2 b3 Ъ4 bs <*г «з а4 Т2(А BCD) а\ а2 b{ b2 b2 a2 b4 а4 Ь$ Ьь а3 а4 для С = {А -+В, D -*С, * [А В, ВС, CD]} эквивалентны на SAT (С). 8.33. Покажите, что если Т/ — табло с одной строкой w^ из одних выделенных переменных и Г — табло, такое, что Τ = Τ/, то Τ содержит w^. 8.34. В примере 8.30 найдите отношение SAT (С), имеющее декомпозицию с потерей информации по схеме S. , . 8.35. (а) Рассмотрим схему базы данных R = {ABC, A D Ε It В D Ε /, С D Ε 1} и множество ограничений С = {А ~+D, В -+ Е, С -+ I}. Покажите, что С |= * [R], но что ни для какого правильного подмножества S из R не выполняется С |= * [S]. (Ь)* Обобщите п. а, показав, что для любого η > 3 существуют множество R схем отношений и множество С функциональных зависимостей, таких, что С| = |= * [R], ло ни для одного собственного подмножества S из R неверно, что С|=* [S]. (с) Покажите, что если R состоит из двух схем отношений X и У, а С — из одних F-зависимостей, то С|= * [Χ, Υ] тогда и только тогда, когда С |= Χ Л У ~* -+ X или С |= X П Υ -* Υ- 8.36. Докажите п. 3 леммы 8.4.
198 Гл. 8. Отображения «проекция-соединение», табло 8.37. Чему равно [А В]+ для С = {* [А В С, В С D, D Е], В -* D}? 8.38. Пусть С — множество ограничений, X — множество атрибутов и Q = {Y | С |= X -♦ Υ и Х+ П У = 0}· Покажите, что С |= X -» Υ тогда и только тогда, когда Υ можно записать в виде Χ' Υ', где X' g X+ и 7' s Q. 8.39. Найдите DEP (В С) при ограничениях {* [А В D, АСЕ /], *[ЛС/)£, ВС Ε I], В -►/}. 8.40. Покажите, что если С — множество F- и J-зависимостей, то 5ЛТ (С) замкнуто относительно пересечений, но, если С содержит EJ-зависимости, это условие может не выполняться. 8.41. Покажите, что если С содержит одни J-зависимости, то С0МРс (г) всегда существует, но если С содержит также F-зависимости, то С0МРс (г) может не существовать даже в случае, если г удовлетворяет всем F-зависимостям. 8.42. Для заданного множества ограничений С и табло Тг и Т2 покажите, что Тг =с Т2 не обязательно влечет за собой REPC (Тг) = REPC (T2). Замечание: в свете теоремы 8.13 можете предположить, что, как отношения, Тг и Г2 входят в SAT (С). 8.43. Следуя условиям упр. 8.39, постройте пример, в котором С состоит из одних J-зависимостей. 8.44. Приведите пример табло Τ общего вида с m строками и k столбцами и множеством ограничений С, таким, что chasec (Τ) содержит mr строк. 8.45. Покажите, что если вход для вычисления по методу прогонки задан в виде множества схем отношений и множества F-зависимостей, а не полного табло и F-зависимостей, то процедура вычисления прогонки из разд. 8.8 имеет временную сложность О (/г4). 8.46*. Предположим, что, подобно тому как это описано в конце разд. 8.8, мы обобщили J-правило для EJ-зависимостей. Частичные строки заполнены новыми невыделенными переменными. Приведите пример ограничений С,, содержащих EJ-зависимости, такие, что для С существует бесконечная порождающая последовательность Г0, 7\, Г2, .... Более того, порождающая последовательность должна обладать свойством Τ χ ^ 7\*+ι> ΐ > 0. 8.10. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Большая часть материала разд. 8.1—8.4 позаимствована из работы Beeri, Men- delzon и др. [1979], а также Aho, Sagiv, Ullman [1979a, b]. Понятия табло и процесса прогонки с одними F-зависимостями введены в Aho, Beeri, Ullman [1979], где использовались для проверки выводимости J-зависимостей и множества F-зависимостей. Обобщение прогонки на J-зависимости, ее применение к решению других проблем зависимости и рассмотрение табло как шаблонов см. в Maier, Mendelzon, Sagiv [1979]. Теорема 8.8 взята из работы Sethi [1974]. Грехэм (Graham [1980]) привел другое доказательство конечности алгоритма прогонки по Черчу—Россеру. В работах Liu, Demers [1978] и Downey, Sethi, Tarjan [1980] предложены быстрые алгоритмы для вычисления по методу прогонки с одними F-зависимостями. Для J-зависимостей быстрых алгоритмов, по-видимому, не существует. Показано, что проверка выводимости J-зависимости из множества J- и F-зависимостей (Maier, Sagiv, Yannakakis [1981]), множества J-зависимостей и множества MV-зависимостей (Beeri, Vardi [1980b]) или одних MV-зависимостей (Tsou [1980]) является NP-трудной задачей. Для двух первых задач показано, что они принадлежат классу NP. В работе Kanellakis [1980] выявлены трудности при выводе из F-зависимостей при ограничениях на размеры доменов. Достаточность из упр. 8.35 (с) была впервые отмечена в работах Delobel, Casey [1973 J, а необходимость — Rissanen [1977].
Глава 9 Теория представлений В этой главе обсуждаются несколько точек зрения на адекватность представления отношений посредством их разложений в базу данных с фиксированной схемой. Кроме того, здесь вводится новый тип эквивалентности схем баз данных — эквивалентность по данным. Эти темы обсуждаются сначала для произвольного множества отношений Р, а затем формулируются дополнительные результаты для случая Ρ = SAT (С). 9.1. ПОНЯТИЕ АДЕКВАТНОГО ПРЕДСТАВЛЕНИЯ Введем несколько обозначений, которые будут систематически использоваться на протяжении этой главы. Наша цель — построить представление элементов множества отношений Р. Все отношения из Ρ будут отношениями, схема которых принадлежит U. Множество всевозможных отношений со схемой U обозначим через Q. Отношения из Q назовем возможными состояниями, чтобы отличать их от отношений-компонент баз данных. Выражение R = \Rb ..., Rp\ будет описывать схему базы данных, в которой U = RxRz ... Rp. Пусть Μ обозначает множество всех баз данных со схемой R. Мы хотим представить возможные состояния из Ρ базами данных из М, поэтому исследуем, какие ограничения необходимо наложить HaR, чтобы представление оказалось адекватным. В главах, посвященных нормальным формам, изучались схемы баз данных, которые исключали избыточность и давали разложение без потери информации. В этой главе мы будем иметь дело с принудительными ограничениями и единственностью представления. В качестве второго условия будет часто появляться понятие разложения без потери информации.
2U0 Гл. 9. Теория представлений Ранее уже рассматривалось PJ-отображение mR, определенное схемой R. Теперь полезно рассмотреть отображения проекции и соединения по отдельности. Определение 9.1. Отображение проекции nR, определенное схемой R, сопоставляет возможному состоянию г из Q базу данных d из Μ (обозначение: nR (г) =ά), где d = {гг, ..., гр\ и яд, (г) = = rf, 1 < ί < /?. В тех случаях, когда это не вызовет- недоразумений, вместо nR будет использоваться знак π. <± 1 1 2 2 Л 3 4 4 4 _£> 5" 6 5 6 ЫА_ 1 1 2 J?> 3 4 4 г2(Д_ 3 4 4 _£> 5 5 6 г'(А_ 1 1 1 2 2 jB_ 3 4 4 4 4 _£> 5 ■5 6 5 6 Рис. 9.1. Рис. 9.2. Рис. 9.3. Определение 9.2. Отображение соединения х, определенное схемой R, сопоставляет базе данных d = {rlt ..., гр| из М возможное состояние >< (d) из Q по правилу >< (d) = rx χ гй х ... ... ><ΙΓΡ. Заметим, что в структуре d неявно содержится описание схемы R. Пример 9.1. Пусть U = ABC и R = \АВ, ВС]. Для возможного состояния г, изображенного на рис. 9.1, база данных d = rcR (г) будет иметь вид d = \гъ г2\> где гг и г2 показаны на рис. 9.2. После применения операции >< мы получим возможное состояние г\ показанное на рис. 9.3. Ясно, что JtR (г') = d. Если d' = {rlf Г2}, где Гг представлено на рис. 9.4, то >< (df) — пустое отношение над U. Определение 9.3* Для любого подмножества Ρ множества Q обозначим через jirP (или πΡ, если понятно, о какой схеме R идет речь) прямой образ Р, определенный схемой R, где jirP — = \d ζ Μ I d = nR (г) для некоторого r ζ Ρ}. Для подмножества # множества U назовем образом Р, определенным R, множество ЯдР =* {s (/?) | s = Яд (г) для некоторого г ( Р|. Ясно, что π Ρ с: πΟ ^ Μ. Последнее включение собственное, поскольку не каждая база данных d является проекцией какого- либо возможного состояния из Q.
9.1. Понятие адекватного представления 201 Пример 9.2. База данных d! = \гъ г^}, где гх изображено на рис. 9.2, а Гг — на рис. 9.4, не является проекцией никакого возможного состояния со схемой ABC. Только базы данных из πΟ могут быть кандидатами для представления ими возможных состояний из Р, так как мы хотим, чтобы π отображало Ρ в М. Множество jtQ состоит в точности из тех баз данных со схемой R, в которых отношения соединяются полностью (см. упр. 9.2). Однако это ограничение может вызвать возражения по следующим трем причинам. rj(B С) 7 5 8 6 Рис. 9.4. 1. Задача определения, полностью ли соединяются отношения базы данных, является NP-полной. 2. База данных, которая не воссоединяется полностью, может не быть бессмысленной. Иногда желательно сохранять информацию в базе данных, даже если эта информация не полна. Пример 9.3. В табл. 9.1 содержится база данных, состоящая из отношений график и может-лететь. Они не соединяются полностью, так как Бентли не приписан ни к какому рейсу. Однако может быть желательным иметь информацию о том, что Бентли может вести Боинг-727, даже если он в настоящий момент не пилотирует ни один рейс. Как бы то ни было, эту информацию нельзя представить в виде возможного состояния со схемой {ПИЛОТ, РЕЙС-НОМЕР, ТИП-САМОЛЕТА} если только не^ используется какой-либо специальный значок в столбце РЕЙС-НОМЕР. 3. Проверка того, что база данных d лежит в uQ, требует изучения базы данных как целого. Для этого недостаточно проверять отношения из базы данных по отдельности или даже парами. Таблица 9.1. База данных, состоящая из отношений график и может-лететь график (ПИЛОТ РЕЙС-№) может-лететь (ПИЛОТ ТИП-САМОЛЕТА) Боттом 62 Бентли 727 Браун 113 Боттом 727 Браун 114 Боттом DC8 Браун 727 Браун 737
202 Гл. 9. Теория представлений Пример 9.4. Отношения гъ г2, г3, изображенные на рис. 9.5, соединяются полностью, если их брать попарно, однако все вместе они не соединяются полностью. В гл. 12 мы детально изучим эти три возражения. Кроме условия соединимости отношений, хотелось бы накладывать такие ограничения на базы данных, которые получались бы из ограничений на отдельные отношения из базы данных. Мы не хотим строить возможное состояние из Q таким образом, чтобы каждый раз проверять, удовлетворяется ли данное условие. г,(А В ) r2(B С) г3(А С) а Ъ be ас' а' Ь' Ъ' с' а' с Рис. 9.5. Определение 9.4. Для подмножества Ρ множества Q назовем множество CWR (Ρ) = [d ^ Μ I d = \r19 r„ ..., rp], rt ^ nRi (P)} покомпонентным образом Р относительно схемы R. Таким образом, CWR (P) состоит из таких баз данных со схемой R, что каждое отношение является проекцией неко орого возможного состояния, которое для различных отношений не обязано быть одним и тем же. Пример 9.5. Ясно, что CWR (P) з πΡ. Обычно это включение собственно. Пусть U = ABC, R = \АВ, ВС}, а Р = SAT (A -> -> С). База данных d = \ri9 г2|, где гх и г2 изображены на рис. 9.6, лежит в CWR (Ρ), но не лежит в πΡ. Для представления Ρ нам хотелось бы использовать базы данных, которые были бы проекциями возможных состояний, а покомпонентно выглядели бы как проекции возможных состояний из Р. Множество таких баз данных мы назовем L. Его можно определить как L = CWR(P)[) πΟ. Ясно, что πΡ ^ L, так как πΡ ^ nQ. Отношения включения между введенными к настоящему моменту множествами изображены на рис. 9.7. гМ Б) г2(В С) 13 3 Φ 2 3 3 5, Рис. 9.6.
9.1. Понятие адекватного представления 203 CWR (Ρ) Рис. 9.7. Определение 9.5. Для подмножества N множества Μ определим множество возможных состояний >< N как \><{d) | d е Ν|· Теперь все готово для того, чтобы ввести первое определение адекватности представления, принадлежащее Риссанену. Определение 9.6. Схема базы данных R разлагает Ρ на независимые компоненты, если они обладают следующими свойствами. IC1. Для d ζ L существует не более одного возможного состояния г ζ Ρ, такого, что π (г) = d. IC2. Для d £ L существует по крайней мере одно возможное состояние г ζ Ρ, такое, что π (г) = d. Первое свойство иногда называют единственностью представления. Оба свойства, взятые вместе, называются условием независимости компонент. Условие независимости компонент равносильно тому, что π является взаимно однозначным отображением Ρ на L. Для каждой базы данных d из L существует в точности одно возможное состояние г из Р, такое, что π (г) = d. Кроме того, мы можем однозначно представить каждое возможное состояние из Ρ базой данных из L. Можно записть IC1 и IC2 как единое условие, но так как в дальнейшем IC1 будет использоваться и в других определениях адекватности, мы сформулировали их по отдельности. Заметим,"что IC2 справедливо тогда и только тогда, когда π Ρ = L. (См. упр. 9.5.) Условие независимости компонент вызывает трудности, как только мы хотим вернуться от базы данных к возможному состоянию, так как отображение, обратное к π, трудно вычислять.
204 Гл. 9. Теория представлений L=ttP Рис. 9.8. IC1 и IC2 не требуют того, чтобы >< было обратно к π. Вполне возможна ситуация, изображенная на рис. 9.8. Пример 9.6. Этот пример будет сознательно надуманным. Пусть U = ABC, R = \АВ, ВС], Ρ состоит из таких возможных состояний, которые удовлетворяют следующему условию: для каждой пары строчек t± и t2 из г к (Л) ^ U (А) влечет t± (С) ^ t2 (С). Здесь предполагается, что облас и значений атрибутов А и С упорядочены. Схема R разлагает Ρ на независимые компоненты, но отображение соединения и отображение проекции, определенные схемой R, не являются обратными друг к другу. Возможное состояние г, показанное на рис. 9.9, разлагается над R в базу данных d = \гъ г2|, показанную на рис. 9.10, но >< (d) Φ г. Следующее определение адекватности принадлежит Ароре и Карлсону. г, (А В) г2(В В) г{А В С) 1 2 3 3 4 5 3 3 3 3 4 5 Рис. 9.9. Рис. 9.10. Определение 9.7. Схема базы данных R определяет сохраняющее информацию разложение Р, если она обладает следующими двумя свойствами: АС1. То же, что и IC1. АС2. Если для возможного π (г) £ L, то г е Р. состояния г £ Q выполнено
9.1. Понятие адекватного представления 205 Второе свойство называется сохранением ограничений. Оба свойства, взятые вместе, будут называться условием сохранения информации. Рис. 9.11. Для переформулировки свойства АС2 полезно ввести новое понятие. Определение 9.8. Прообразом подмножества N множества nQ называется множество возможных состояний N, определенное как fi*-=\r £ Q | π (г) 6 Ν}. Изучим теперь множество L4-. На рис. 9.11 изображено, как L4" расположено среди исследованных множеств. Лемма 9.1. АС2 эквивалентно тому, что L*~ = Р. Доказательство. Предположим, что АС2 имеет место. Так как для любого г £ 1/~ его проекция π (г) принадлежит L, то г £ Р. Поэтому L4" cz Р, откуда L4" = Р. Теперь предположим, что L4" = Р. Пусть проекция π (г) возможного состояния г £ Q лежит в L. Тогда г £ L4" и, следовательно, г £ Р. Поэтому АС2 имеет место. Ясно, что L4" = Ρ влечет за собой L = πΡ, поэтому справедливо следствие, связывающее условие независимости компонент и условие сохранения информации. Следствие. АС2 влечет за собой IC2, следовательно, АС1 вместе с АС2 приводит к IC1 и IC2. В обратную сторону импликация несправедлива (см. упр. 9.8). Из свойств АС1 и АС2 следует не только то, что каждое возможное состояние г из" Ρ можно представить базой данных d из L, но и то, что никакое возможное состояние s из Q \ Ρ не может быть представлено той же базой данных d. Оказывается, что условие сохранения информации определяет также и обратное отображение к π.
206 Гл. 9. Теория представлений Определение 9.9. Будем говорить, что множество возможных состояний Ρ обладает свойством соединения без потерь над схемой баз данных R, если справедливо свойство LJ. FIX (R) => Ρ, т. е. что ><] (π (г)) = г для любого г £ Р. Заметим, что всегда χ (π (ή) = mR (г). Лемма 9.2. Из свойства LJ вытекает свойство IC1. Доказательство. Предположим, что LJ справедливо. Рассмотрим два возможных состояния г и г' из Р. В случае π (г) = = к (/*') заведомо >< (π (г)) = >< (π (г')). Тогда LJ влечет за собой г = χ (μ (/-)), откуда г = г'. Поэтому IC1 справедливо. Следствие. LJ вместе с АС2 приводит к АС1 α АС2. Лемма 9.3. Свойство АС1 вместе с АС2 влечет за собой LJ. Доказательство. Предположим, что справедливы условия сохранения информации. Рассмотрим возможное состояние г из Р. Пусть d = п (г). Тогда >< (d) — возможное состояние и π (>< (d)) = d. Так как d £ L, t>« (d), то АС2 лежит в Р. Так как π (/-)== я (>< (d)), AC1 приводит к \>< (d) = г. Следовательно, г = >< (d) = >< (π (г)), что совпадает с LJ. Подытожим полученные результаты. Теорема 9.1. β предположении справедливости АС2 свойства АС1 н LJ эквивалентны. •Теперь очевидно, что в предположении справедливости условия сохранения информации обратным отображением к ограничению π на Ρ будет >«. Пример 9.7. Пусть U = ABC, R = {АВ, ВС] и Ρ = = SAT (В -> С). F-зависимость В -> С гарантирует справедливость свойства LJ. Если возможное состояние г удовлетворяет β _> с, то пвс (г) также удовлетворяет В -> С. Обратно, если явс (г) удовлетворяет β -> С, то г будет удовлетворять В -> С (см. упр. 9.10). Поэтому если π (г) £ L для возможного состояния г, то г £ Р. Множество Ρ обладает свойством АС2, и, следовательно, выполнено условие сохранения информации. Мы уже заметили, что даже при выполнении условия независимости компонент могут возникнуть трудности при вычислении обратного отображения к π. Проверка принадлежности возможного состояния к Ρ может оказаться сколь угодно сложной. Иногда даже бывает проще проверить, какое возможное состояние из Ρ представляет данная база данных. Мы видели, что из свойств АО и АС2 вытекает, что обратным отображением к π оказывается соединение, но эти свойства, кроме того, требуют, чтобы проекция
9.1. Понятие адекватного представления 207 π (г) возможного состояния г из Q\P не попадала в L. Точнее, каждое возможное состояние г из Ρ можно представить единственной базой данных d из L, причем эта база данных не представляет никакого возможного состояния г', лежащего вне Р. &го свойство является чрезмерно ограничительным. Если база данных d может представлять возможные состояния г из Ρ и г', лежащее в Q\P, то можно не обращать внимания на г', так как оно лежит вне сферы наших интересов. Рассмотрим условие, промежуточное между независимостью компонент и сохранением информации. Определение 9.10. Будем говорить, что схема баз данных R удовлетворяет условию соединения для Р, если она обладает следующими двумя свойствами: Л. То же, что и IC1. J2. Для каждой базы данных d£L возможное состояние \>< (d) принадлежит Р. Нетрудно видеть, что Л и J2 требуют, чтобы ><ι было обратным отображением к π, ограниченному на Р. Для возможного состояния г из Ρ проекция π (г) будет лежать в L. Согласно J2, имеем mR (г) 6 Р· Но π (mR (ή) = π (г), так что mR (г) = г по Л. Мы к тому же доказали, что для Ρ справедливо L J. Условие соединения влечет за собой также, что каждая база данных представляет максимально возможное состояние г из Р, такое, что π (г) = d (см. упр. 9.11). Дадим другую формулировку свойства J2. Лемма 9.4. Свойство J2 выполняется тогда и только тогда, когда FIX (R) Г) L^ с= р. Доказательство, Необходимость. Свойство J2 может быть перефразировано как >< L ^ Р. Пусть г—возможное состояние из FIX (R) П L4". Так как г ζ ΖΛ, то π (ή ζ L. Так как г ζ ζ FIX (R), то г = χ (π (г)), так что г £ >< L. Следовательно, г ζ Р. Достаточность. Предположим, что FIX (R) Π ^ £ Ρ и что г — возможное состояние из >< L. Тогда для некоторой базы данных d ζ L мы имеем г = >< (d). Ясно, что π (г) = d, так что mR (г) = г и, следовательно, г £ FIX (R). Так как d £ L, то г ζ U~. По предположению г £ Р, значит, ><LgP. Поэтому свойство J2 справедливо. Сравним теперь условие соединения с условиями независимости компонент и сохранения информации. Лемма 9.5. Из свойства J2 следует IC2. Доказательство предоставляется читателю (см. упр. 9.13).
208 Гл. 9. Теория представлений Рис. 9.12. Теорема 9.2. Свойства АС1 и АС2 приводит к Л и J2, из которых в свою очередь следуют IC1 и IC2. Доказательство, Предположим, что имеют место свойства АС1 и АС2. Тогда Л, очевидно, справедливо. Чтобы доказать J2, возьмем произвольное возможное состояние г £ >< L. Пусть г = = ><1 (d) для ά £ L. Так как π (г) = d £ L, то АС2 влечет за собой г ζ Р. Поэтому >< L ^ Ρ и J2 справедливо. Остальные импликации следуют из леммы 9.5. Чтобы сравнить свойства АС1 и АС2 с Л и J2, заметим, что и те и другие требуют выполнения Ρ ^ FIX (R) (условие LJ), но АС2 требует L4" = Р, в то время как Л и J2 позволяют Ρ быть собственным подмножеством в L4". И при тех, и при других условиях не может существовать пары г, /*', показанной на рис. 9.12, но пара s, s' может существовать в условиях Л, J2 и не может в условиях АС1, АС2. Пример 9.6 показывает, что условие независимости компонент не влечет за собой условия соединений. Следующий пример показывает, что существуют схема баз данных и множество возможных состояний, которые удовлетворяют условию соединения, но не удовлетворяют условию сохранения информации. Пример 9.8. Пусть U = ABC, R является схемой баз данных \АВ, ВС], Ρ = SAT (В -» А). Тогда L состоит из всех пар отношений, которые полностью воссоединяются над АВ и ВС. Но В -» А есть переформулировка * [АВ, ВС], так что R удовлетворяет свойству LJ и, следовательно, Л. Соединение дзух
9.1. Понятие адекватного представления 209 отношений со схемой АВ и ВС всегда удовлетворяет В —» А, так что J2 справедливо. Однако свойство АС2 не выполняется, так как для любого возможного состояния г его проекция π (г) принадлежит L и, следовательно, Ρ Φ Q. Изучим теперь, какие свойства нужно добавить к условию независимости компонент, чтобы вместе они стали эквивалентны условию соединений, а также какие свойства нужно добавить к условию соединения, чтобы получить эквивалентность с условием сохранения информации. гМ В) г2(В С) Sj(A В С) s2(A В С) 1 1 2 3 4 4 Рис. 9.13 3 3 4 4 4 5 6 5 6 7 1 1 2 3 4 4 5 5 5 Рис. 1 1 2 2 2 9.14. 3 3 4 4 4 5 б 5 6 7 Когда IC2 справедливо, a J2 нет? Это может случиться только тогда, когда существует возможное состояние г из Р, такое, что mR (r) §έ Ρ. Сформулируем полученное утверждение. Определение 9.11. Схема баз данных R сохраняет Р, если имеет место свойство PR. Для любого возможного состояния г из Ρ отношение mR (г) ζ Р. Таким образом, mRP ^ Р, где mRP = χιπΡ. Лемма 9.6. Свойство J2 влечет за собой PR. Доказательство предоставляется читателю (см. упр. 9.16). Однако из свойства PR не следует J2. Пример 9.9. Пусть U = ABC, a R — схема базы данных \АВ, ВС}, Ρ = SAT ({A -» β, в-*> А\). Пусть Ρ <= SAT (В —» Л), тогда mRP = Ρ, т. е. PR справедливо. Рассмотрим базу данных d = {/ί, г2}, где отношения гх и г2 показаны на рис. 9.13. База данных d лежит в L, так как гг = пАВ (sj, r2 = тсвс (s2), где возможные состояния sx и s2 из Ρ показаны на рис. 9.14. Легко видеть, что возможное состояние ><(d), изображенное на рис. 9.15, не лежит в Ρ (почему?), так что J2 несправедливо. Лемма 9.7. Свойства PR и IC2 влекут за собой J2. Доказательство. Пусть г — возможное состояние из \>< L, a d — база данных из L, такая, что г = >< (d). По IC2 πΡ = L,
210 Гл. 9. Теория представлений так что d £ πΡ. Пусть г' — возможное состояние из Р, такое, что π (/■') = ά. Тогда по PR mR (τ') ζ Ρ, mR {r') = г, так что г £ Р. Следовательно, >< L ^ Ρ и J2 справедливо. Следствие. Свойства IC1, IC2 α PR имеют место тогда и только тогда, когда выполнены Л и J2. Мы можем заменить в этом следствии свойства IC1 и PR на Ы. ΐχΐ(ά)(Α В С) 1 3 5 1 3 6 1 4 5 1 4 6 1 4 7 2 4 5 2 4 6 2 4 7 Рис. 9.15. Лемма 9.8. Свойство LJ влечет за собой PR. Доказательство. Из F/X (R) з Ρ следует /tzr (Ρ) = Ρ, что, несомненно, влечет за собой mR (Ρ) ^ Р. Теорема 9.3. Условия LJ и IC2 выполнены тогда и только тогда, когда выполнены условия Л и J2. Доказательство. По лемме 9.2 из LJ следует IC1; по лемме 9.8 из LJ вытекает PR. Поэтому из следствия к лемме 9.7 заключаем, что LJ и IC2, вместе взятые, влекут за собой условия соединения. Из теоремы 9.2 мы знаем, что из J1 и J2 вытекает IC2. Кроме того, Л и J2 влекут за собой LJ (упр. 9.17), так что из них следуют LJ и IC2. Изучим теперь, какие свойства нужно добавить к условию соединения, чтобы получить систему, эквивалентную условию сохранения информации. Определение 9.12. Схема базы данных R удовлетворяет свойству S, если S. F/X(R)2r. Теорема 9.4. Свойства Л, J2 и S выполнены тогда и только тогда, когда выполнены свойства АС1 и АС2. Доказательство. Из теоремы 9.2 мы знаем, что АС1 и АС2
9.2. Эквивалентность по данным схем баз данных 211 влекут за собой J 1 и J2. По лемме 9.1 свойство АС2 требует выполнения L4" = Р. По лемме 9.3 АС1 и АС2 требуют LJ, так что Ρ ^ £ FIX (R). Таким образом, L4" == Ρ ^ FIX (R), что приводит к S. Покажем обратное, что J2 и S влекут за собой АС2. Пусть г — возможное состояние из L4" и π (г) = d, где d £ L. По J 2 будет >< {d) G Ρ· Но S утверждает, что mR (г) = г, так что г = >< (d) (= Р. Поэтому ГдР. Поскольку ^зР всегда, то L4" = Ρ и АС2 удовлетворено. Разница между условием соединения и условием сохранения информации заключается в том, требуем ли мы выполнения FIX (R) 3 Ρ или более сильного условия FIX (R) э L*~ (см. упр. 9.18). Чаще всего нас будет интересовать тот случай, когда Ρ описывается некоторым набором ограничений С. В этом случае FIX (R) 3 Ρ совпадает с С |== *[R]. Мы уже умеем проверять такие условия, если С содержит функциональные зависимости или зависимости соединения. Условие же FIX (R) э L4" совпадает с яС |= * [R ]. Здесь мы обозначили через пС «проекции ограничений» из С посредством R: эти проекции состоят из всех тех ограничений, которым удовлетворяют все проекции возможных состояний г £ SAT (С). Таким образом, яС есть такой набор ограничений, что L4" = SAT (лС). В свою очередь SAT (яС) состоит из возможных состояний г, таких, что я (г) £ L. Одной из проблем, с которой мы столкнемся далее, будет то, что ограничения из яС не будут обязательно того же типа, что ограничения из С (или даже не будут вариантом встроенных ограничений). Поэтому, проверка того, что яС И * [R ], может встретить трудности. Другой стороной проверки условий соединения и сохранения информации является определение, выполнено >< L ^ Ρ или нет (см. упр. 9.18). На языке спроектированных ограничений нам нужно проверить яС U |*[R]}t=C. Для условия сохранения информации проверка по теореме 9.4 сокращается до яС \= С. Мы вернемся к проверке разных свойств представлений в разд. 9.3, где Ρ будет задаваться путем наложения ограничений. 9.2. ЭКВИВАЛЕНТНОСТЬ ПО ДАННЫМ СХЕМ БАЗ ДАННЫХ В гл. 8 введено понятие эквивалентности TR = PTS схем баз данных R и S относительно множества возможных состояний Р. Схемы R и S эквивалентны, если TR (г) = Ts (r) для любого возможного состояния г из Р. В гл. 8 нас интересовал в основном вопрос, верно ли TR = PTIf где Т1 —табло для тождественного отображения. При таком определении схемы R и S эквивалентны на Ρ в том случае, когда соответствующие отображения совпадают после ограничения на Ρ (т. е. тогда, когда декомпозиция относительно R возможного состояния г £ Ρ дает такую же потерю информации, как и декомпозиция относительно S).
212 Гл. 9. Теория представлений Предположим теперь, что нас интересуют только те возможные состояния, для которых при декомпозиции никакой информации не теряется. Мы не будем обращать внимания на то, как искажаются те возможные состояния из Р, которые представляются декомпозицией неверно, лишь R и S представляли бы верно одно и то же множество возможных состояний из Р. Это более слабое понятие эквивалентности будет изучено в этом разделе. r(A BCD) s(A В С D) 13 5 7 13 5 7 1368 2367 2468 2468 Рис. 9.16. Определение 9.13. Множеством неподвижных точек Ρ относительно схемы базы данных R назовем множество FIXp (R) = - Ρ П FIX(R). Определение 9.14. Будем говорить, что схемы баз данных R и S эквивалентны по данным на Ρ (обозначение: R ж PS), если FIXp (R) = FIXp (S) (т. е. R и S верно представляют одно и то же подмножество возможных состояний из Р). Для проверки эквивалентности по данным нужно доказывать два включения. Отметим, что включение FIX? (R) ^ FIXp (S) выполнено в точности тогда, когда FIXp (R) ^ FIX (S). Лемма 9.9. Эквивалентность TR ξ рТ8 влечет за собой R ^ Доказательство оставляется читателю (см. упр. 9.19). Как и следовало ожидать, обратное утверждение к лемме 9.9 неверно. Пример 9.10. Пусть U = ABCD, a R и S — схемы баз данных {ABC, CD} и {АВ, BCD]. Если Ρ состоит из двух отношений г и s, показанных на рис. 9.16, то R и Sэквивалентны поданным на Р. Возможное состояние г разлагается без потерь как относительно R, так и относительно S, в то время как s при декомпозиции разрушается. Однако Tr и Ts не эквивалентны на Р, так как s' = TR (s) не совпадает с s" = T$ (s) (рис. 9.17). Определение 9.15. Сохраняющимся подмножеством Ρ относи- тельно схемы базы данных R называется множество PRESP (R) = = К Ρ I mR (г) ζ Ρ}.
9.U Эквивалентность по Данным схем баз данных 213 Теперь можно записать, используя это определение, условие сохранения как PRES? (R) = Р. Заметим, что FIX? (R) = <= PRESp (R) (см. упр. 9.21). Теорема 9.5. Пусть R и S — схемы баз данных, Ρ — множество возможных состояний. Предположим, что подмножество Р' множества Ρ удовлетворяет условиям FIXP(R)c=P'<=PRESp(R). Включение FIX? (R) ^ F/X (S) имеет место тогда и только тогда, когда ms (r) s mR (г) для любого г £ Р'. *'04 Я С D) j "(Л BCD) 1 2 2 2 2 3 3 4 3 4 5 6 6 6 6 7 7 7 8 8 Рис. 1 1 2 2 2 9.17. 3 3 3 3 4 5 6 5 6 6 7 7 7 7 S Доказательство. Необходимость. Пусть г — произвольное возможное состояние из Р\ Так как г £ PRESP (R), то отношение s = mR (r) лежит в Р. Но PJ-отображения идемпотентны, так что s лежит в FIX (R) и, следовательно, в FIXP (R). Поэтому, согласно предположению, s лежит в FIX (S). Однако г <=, s, так что ms (г) s ms (s). Так как s £ F/X (S), то ms (s) = s. После сравнения тождеств и включений получаем ms (r) s mR (r), что и требовалось. Достаточность. Пусть г — отношение из FIXp (R); тогда г £ £ Р. По предположению, ms (r) ^ mR (г). Однако mR (г) = г и ms (г) => г, так что ms (г) = г и г £ F/X (S). Таким образом, FIXP (R) ξ F/X (S). Следствие. Три следующих утверждения эквивалентны: 1. FIX? (R) <= F/X(S). 2. TsE.KrR лри /С^ F/XP(R). 3. rs^.^rR при /С = PRESP (R). Доказательство предоставляется читателю (см. упр. 9.22). Следствие. Если R и S — сделш баз данных и R сохраняет Р, mo F/Xp (R) s F/X (S) эквивалентно TS*LPTR. Доказательство получается непосредственно из эквивалентности утверждений 1 и 3 предыдущего следствия.
214 Гл. 9. Теория представлений Обратим внимание на полученный результат о совпадении эквивалентности по данным и обычной эквивалентности при условии, что Ρ сохраняется. Теорема 9.6. Если R и S —■ сохраняющие Ρ схемы баз данных, то R ж PS равносильно TR = Ρ7Υ Мы уже знаем, что и условие соединения, и условие сохранения информации требуют выполнения свойства PR. Поэтому если в качестве определения адекватности представления выбирать любое из этих условий, то для адекватных схем баз данных эквивалентность по данным — это то же самое, что и обычная эквивалентность. 9.3. ПРОВЕРКА НА АДЕКВАТНОСТЬ ПРЕДСТАВЛЕНИЯ И НА ЭКВИВАЛЕНТНОСТЬ ПРИ НАЛИЧИИ ОГРАНИЧЕНИЙ Условия независимости компонент и соединения эквивалентны в тех случаях, когда соединение отображает базу данных из L в отношение из Q. Разница между условиями соединения и сохранения информации заключается в том, требуется ли выполнения включения Ρ s FIX (R) или более сильного условия I/~ ^ ^ FIX (R). Если Ρ определяется как SAT (С) для некоторого множества ограничений С, эти условия выражаются как С |= |= * [R] и jtC|=*[R]. Напомним, что яС — это неформальное обозначение проекций ограничений из С на R, т. е. ограничений, которые определяют множество L4". Таким образом, яС состоит из тех ограничений, которым удовлетворяют nR (r) (при произвольном г (= SAT (С) и R (= R). Мы определили яС задним числом, так как хотели, чтобы L"~ = = SAT (лС). Одна из трудностей введения формального определения — это то, что ограничения из яС не обязательно выражаются теми же типами зависимостей, что ограничения из С. Часто в яС встречаются зависимости того же типа, что и в С, однако там могут проявиться и зависимости другого типа. Пример 9.11. Пусть U = ABCDE, R = ABCD и Р = = SAT \А ->- Е, В ->- Е, СЕ ->- D]. Набор F-зависимостей, которым должна удовлетворять проекция πΗ (г) для произвольного г ζ Ρ, — это F = {AC-+D, BC-+D}. Рассмотрим отношение s (рис. 9.18). Отношение s принадлежит SAT (F), однако s не является проекцией никакого возможного состояния из Ρ (добавьте к s столбец Ε и попробуйте применить прогонку (chase) к зависимостям, определяющим Р). Оказывается, что отношение kr (г) при г £ Ρ удовлетворяет еще одной забавной зависимости:
9.3. Проверка на адекватность представления 215 Если tly t2 и t3 — кортежи из ян (г), такие, что 1. Ь(А) = и(А), 2. t± (С) = U (С), 3. U (В) = U (В), то Эта зависимость не эквивалентна никакому набору F-зависимо- стей. Отметим, что s этой зависимости не удовлетворяет. s(A В С 1 3 5 2 4 5 1 4 6 Рис. 9.18. J>> 7 8 8 s(A В С) 1 3 5 1 4 6 2 4 5 Рис. 9.19. Пример 9.12. Пусть U = ABCD, R = ABC и Ρ = = SAT(\A-^BC, В-^АС, CD-^A\). Проекции nR(r) при произвольном г £ Ρ удовлетворяют только тривиальным MV-зависи- мостям. Однако отношение s, показанное на рис. 9.19, не является проекцией никакого возможного состояния из Ρ (добавьте столбец D и примените прогонку к MV-зависимостям, определяющим Р). 9.3.1. Случай, когда Ρ определяется только функциональными зависимостями Выше показано, что с определением яС и, следовательно, с проверкой включения FIX (R) з L4" связаны определенные трудности. В гл. 14 будут исследованы классы зависимостей, которые могут быть использованы для характеризации яС в случае, когда С состоит из функциональных зависимостей и зависимостей соединения. Однако для этих, более общих классов зависимостей не существует алгоритма для определения выводимости. Но в том случае, когда С состоит только из F-зависимостей, при наших условиях представимости достаточно рассматривать лишь такие же зависимости в яС, хотя они и не исчерпывают яС. Теорема 9.7. Условия независимости компонент, соединения и сохранения информации эквивалентны в случае, когда Ρ = = SAT (F), где F — множество функциональных зависимостей. Доказательство. В силу теоремы 9.2 достаточно доказать, что в случае, когда АС1 или АС2 не выполнено, не будет выполнено либо IC1, либо IC2. Ясно, что несправедливость АО приводит к несправедливости IC1.
216 Гл. 9. Теория представлений Предположим, что АС2 не выполнено, т. е. L^^P. Пусть г — возможное состояние из L4" — Р. Можно предположить, что г состоит только из двух кортежей (см. упр. 9.27). Отношение г должно противоречить некоторой F-зависимости, следующей из F. Допустим, что это X ->■ А. Так как в г только два кортежа, они должны совпадать на X и различаться в Л, т. е. г имеет совпадающие значения в столбцах X и два значения в столбце Л. Если IC2 не выполнено, то все доказано. Предположим, что оно выполнено. Пусть d = π (г). База данных d лежит в L. По IC2 в Ρ имеется возможное состояние г, такое, что π (/·') = d. Отношение г в каждом из столбцов X может иметь лишь одно значение. (Почему?) Однако у г' должно быть два значения в столбце Л, поэтому г* противоречит Х->Л. Следовательно, г' Φ Ρ и IC2 неверно. Рассмотрим теперь проверку условия соединения (и, следовательно, других двух условий представимости) в случае, когда Ρ = SAT (F), где F — множество F-зависимостей. Мы будем проверять справедливость свойств LJ и J2 (см. упр. 9.28). Свойство LJ расшифровывается как /7f=*[R]. Оно проверяется с помощью алгоритма прогонки. Рассмотрим проверку J2, т.е. o<L^P. Определение 9.16. Пусть R —схема базы данных, F — множество F-зависимостей. Назовем ограничением F на R множество тех зависимостей из F+, которые применимы к некоторой схеме отношения R из R. Обозначим это множество через Fr. Пример 9.13. Пусть U = ABCD, R = \АВС, CD], a F = = \AD ->- С, CD ->- Л, В ->- D\. Нетривиальные F-зависимости bFr- это ВС -* Л, ВС-+ АВ, ВС -* АС, ВС -* ABC, AB -> С, АВ-+АС, АВ-+ВС и АВ-+АВС. Напомним, что F навязано R, если FR ξ F. Лемма 9.10. Пусть Ρ = SAT (F), где F —множество F-зависимости. Свойство J 2 выполнено тогда и только тогда, когда F навязано R. Доказательство. Оставим доказательство достаточности утверждения читателю (упр. 9.30). Необходимость. Покажем, что если F — не навязано R, то в L имеется база данных d, такая, что >< d Φ Р. Пусть Χ ->- Α Υ £ £ F и Х-+- А не лежит в G = Fr. Пусть, далее, Ζ— замыкание X над G. Ясно, что Л Φ Ζ. Построим возможное состояние гх из Q следующим образом. Оно будет состоять из двух кортежей: t0, состоящего из одних нулей, и tz с нулями в части Ζ и с единицами на остальных местах.
9.3. Проверка на адекватность представлений 217 Очевидно, что гх не лежит в Р, так как оно не подчиняется F. Пусть d = π (гх). Возможное состояние \><d также не лежит в Р, поскольку >< (d) ^ гх (см. упр. 9.26). Покажем теперь, что каждое отношение из d является проекцией некоторого возможного состояния из Р. Пусть R— некоторая схема отношения из R. Определим возможное состояние ^ из Р, такое, что яд (гх) = == яд (rR)· Пусть гR состоит из двух кортежей: t0 из гх и tl9 состоящего из одних единиц, кроме мест из (Z fl R)+ HaA F, на которых стоят нули. Возможное состояние rR не может противоречить F, иначе (Z fl R)+ будет некорректно определено. Чтобы показать, что kr (гχ) = яд (гл), нужно показать, что (Z fl R)+ Π R = = Ζ Π R (эти множества состоят из столбцов, в которых nR (rR) и Яд (гх) соответственно содержат два символа). Предположим, что В — атрибут, содержащийся только в первом множестве. Ясно, что В ξ: R. Так как В ζ (Ζ Π R)+, то F И Ζ fl R -* В. Но тогда F \= Ζ -+ В, так что β £ Ζ и, следовательно β £ Ζ f| /?. Мы получили противоречие. Так как ><(d) £ Ρ, то свойство J2 не выполнено. В гл. 8 было показано, что выводимость F \= * [R ] для множества F-зависимостей может быть проверена за время, полиномиальное по объему F и R. Теперь опишем процедуру, позволяющую за полиномиальное время проверить, что F навязано R. Эта процедура даст одновременно способ проверки за полиномиальное время условия соединения в случае, когда Ρ = SAT (F). Алгоритм 9.1 вычисляет Х+ над F^. Замыкание в строке 5 берется над F. Алгоритм 9.1. PCLOSURE. Вход: множество F-зависимостей F над U, схема базы данных R над U, подмножество X множества U. Выход: замыкание X над FR. PCLOSURE (F, R, X) 1. begin 2. Г:=Х; 3. while Υ изменяется do 4. for каждый R £ R do 5. Y:=((Y η R)+ (] R)U Y; 6. return (Г); 7. end. Пример 9.14. Пусть U = ABODE, R = {AB, ВС, CDE\ и F = \A-+D, D-+B, B-+CE]. Тогда PCLOSURE (Л R, A) = = ABC. Отметим, что А+ над F есть А В CD Ε.
218 Гл. 9. Теория представлений Теорема 9.8. PCLOSURE (F, R, X) выдает Х+ над FR. Доказательство. Пусть Υ —■ множество из алгоритма. Тогда Υ является сначала подмножеством Х+ и остается им на протяжении работы алгоритма, так как F-зависимость, которая неявно используется в строке 5, лежит в FR (это (Υ (] R) -+■ (У Π R)+ Π Ry где замыкание берется над F). Покажем теперь, что каждый атрибут из Х+ рано или поздно добавится к Y. Пусть Η — DDA-граф вывода X ->- Х+, основанный на FR. Предположим, что Ζ0, ..., Ζη — метки вершин графа, занумерованные в той последовательности, в которой они появляются в конструкции Я, причем X = Z0, X* = Zn. Мы утверждаем, что после конца ί-й итерации цикла while будет Zt a Y. Очевидно, что Z0 с: Y. Предположим, что при переходе от Zt к Zi+1 применялась F-зависимость V->■ W. Так как V -> W лежит в Fr, существует схема отношения R £ R, такая, что VW ^ R. Более того, V с: a Zu так что V α Υ в начале (i + 1)-й итерации. Когда в процессе выполнения цикла for мы добираемся до R, а V оказывается подмножеством Υ {] R, так что W s (Υ Π R)+ Π R> поскольку F (= Fr. Значит, все ^добавляется к Υ (если его еще там не было), и каждый атрибут А £ W, который добавляется к Zt при переходе к Zi+l9 также добавляется к Y. Следовательно, когда алгоритм заканчивает работу, Zn cz Υ, так что Υ = Х+. Лемма 9.11. Алгоритм PCLOSURE заканчивает работу через время О (| U | . | R | . || F \\ ), где \\ F \\ — объем, необходимый для записи всех ¥-зависимостей из F. Доказательство. Цикл while из строки 3 не может выполняться более | U | — 1 раз, так как Υ не может стать больше U. Для каждой итерации цикла while цикл for из строки 4 исполняется | R | раз. Главный шаг вычисления в строке 5 — это вычисление (Υ Π R)+f которое выполняется за время, линейное по \\F\\. Следовательно, общая продолжительность вычисления имеет вели- чину о (| и |. ι R I - II ^ II) - Теорема 9.9. Урловие соединения может быть проверено за время, полиномиальное по \ U |, | R | и || F || в случае, когда Ρ = = SAT (F), a F — множество ¥-зависимостей. Доказательство. Согласно предшествующему обсуждению, свойство LJ может быть проверено за полиномиальное время. По лемме 9.10 свойство J2 справедливо, если F = FR. В проверке нуждается лишь FR (= F, что можно сделать, используя для каждой зависимости X -> Υ из F алгоритм PCLOSURE для проверки, содержит ли Х+ над FR множество Υ. Для этого необходимо | F \ раз применять PCLOSURE, что, конечно же, требует полиномиального времени.
9.3. Проверка на адекватность представления 219 В случае когда F = FR, можно найти применимое к R покрытие G для Fr за время, полиномиальное по входу (см. упр. 9.32). Тем не менее если F Φ FR, то определить для множества G F-зави- симостей, применимых к R, будет ли FR ξ G, — NP-полная задача. Следующие два примера демонстрируют, что свойства LJ и J2 действительно независимы для Р, описываемых множеством функциональных зависимостей. Пример 9.15. Пусть U = ABC, R = {АС, АВ\, а Р = = SAT (\A ->- С, В ->- С}). Свойство LJ выполняется при этих данных, поскольку А ->- С. Однако J 2 не выполнено, потому что FR \= В ->- С не имеет места, так что F не навязано R. Пример 9.16. Пусть U и Ρ те же, что и в примере 9.15, и R = = [АС, ВС]. Тогда F применимо к R и потому навязано R, так что J2 выполнено. Однако теперь LJ несправедливо, так как \А -> -> С, В-+С\*\= [АС, ВС] не имеет места. 9.3.2. Случай, когда Ρ определяется функциональными и многозначными зависимостями В предыдущем разделе показано, как проверять условие соединения, если Ρ определено набором функциональных зависимостей. Теперь будет разработан способ проверки этого условия в случае, когда Ρ = SAT (С), С состоит из F- и MV-зависимостей, a R — схема базы данных в 4NF. Необходимо проверить свойства LJ и J2. Проверка LJ сводится к определению с помощью алгоритма прогонки, верно ли, что С |= *[R]. Для проверки J2 необходимо проверить, верно ли включение >< L ^ Р, что на языке зависимостей выглядит как яС (J {* [R ]} \= С. Выше уже указывалось, что проверка импликаций из яС вызывает трудности. Мы покажем, что в случае, когда R — схема в 4NF, достаточно проверить, что ^r U {*[/?]}(= С, где F — множество F-зависимостей, которые следуют из С. ' Лемма 9.12. Пусть R —схема базы данных β 4NF, а Р = = SAT (С), где С — множество F- и MV-зависимостей. Пусть F — множество F-зависимостей, которые следуют из С, а X ->- А есть ¥-зависимость из F, которая не следует из Fr и * [R ]. Тогда X ->- А не следует из яС и * [R ] (т. е. некоторое возможное состояние из >< L противоречит X ->- А). Доказательство. На протяжении доказательства символом rv, где V — подмножество U, будем обозначать возможное состояние, состоящее из одного кортежа из одних нулей и другого кортежа с нулями на местах из У и единицами на других местах.
220 Гл. 9. Теория представлений Можно считать, что X = Х+ над FR и * [R], так как FR и * [R] не влекут за собой Х+-+ А, а возможное состояние г из \><L, противоречащее X* -^ Л, будет противоречить к X -+ А. Пусть гх — определенное выше возможное состояние, ad — база данных π (гх). Так как d з гх, а гх противоречит X ->- Л, то и d противоречит Х+-+ А. Нужно доказать, что >< (d) лежит в ><]L. Покажем, что d лежит в L. Для этого покажем, что каждое отношение из d — это проекция возможного состояния. Пусть R —схема отношения из R, Υ = R f) X, а г* = = chasec (rY) (нули мы трактуем как выделенные переменные, а единицы — как невыделенные). Множество столбцов г*, состоящих из одних нулей, будет совпадать с Y+ над С. Но Y+ f) R = = Χ Π R> потому, что для атрибута В из Y+ F-зависимость Υ-+- ->- В лежит в F и, следовательно, в FR, так что В £ Χ. Предположим, что jtr (гх) Φ jtr (r*). Тогда в г* должен быть кортеж t, нули которого стоят в точности на местах из W, где W(]R^X(]R=Y. По теореме 8.12 С |= У-» Wy так что Υ —» R Π W выполнено на R. Но соотношение С|= У-»- № f| R не выполнено (иначе бы W (] R ^ X). Поэтому не выполнено и С \= Υ -> R. Значит, R не в 4NF, что противоречит условию. Поэтому упомянутые выше проекции должны совпадать, и, следовательно, d £ χ L. Лемма 9.13. Пусть R — схема базы данных в 4NF, а Р = = ЯЛ Τ (С), где С — множество F- и NN-зависимостей. Предположим, что LJ справедливо. Пусть F — множество F-зависимо- стей, которые следуют из С, а ММ-зависимость X —» У следует из Сине следует из FR и* [R]. Тогда X -» Уне следует из яС и * [R ]. ! Доказательство. Предположим, что У — минимальное из множеств, удовлетворяющих предположениям, т. е. никакое собственное подмножество Υ' множества Υ не удовлетворяет одновременно условиям С [= Х-?> Υ' и FR (J |*[R] # Χ -» У. Предположим также, что X — максимальное из множеств, удовлетворяющих предположениям. Тогда, во-первых, X = Х+ над FR и * [R], как и в доказательстве леммы 9.12. Во-вторых, никакое собственное подмножество Ζ множества U — ΧΥ не удовлетворяет условиям С\= ΧΖ-^Υ и fR U |*[R]} & ΧΖ -^ Υ одновременно. Пусть гх обозначает то же отношение, что и в доказательстве леммы 9.12. Ясно, что гх удовлетворяет FR. Мы утверждаем, что гх удовлетворяет также и *[R]. Предположим, что это не так. Тогда алгоритм прогонки, примененный к гх над FR и * [R ], добавит к гх новые кортежи. Пусть t один из добавленных кортежей. Обозначим через XW множество атрибутов, в которых t равен 0, причем X П W = 0· По теореме 8.12 * [R] |= X-» W. По свойству LJ имеем С f== * [R ], так что С |= X —» W. Очевидно, что Υ φ W. Если Υ с^ Wt то С f= XZ-^> Г, где Ζ = U — WXY.
9.3. Проверка на адекватность представления 221 Множество Ζ непусто, так как XWΦ U. Зависимость ΧΖ—^Υ не следует из FR и * [R], так как XZ -»FnX-^f влечет за собой X—» ^(это легко проверить с помощью алгоритма прогонки). Поэтому Υ ^ W противоречит максимальности X. Если W {] Υ = = 0, то W = U — W содержит Г и * [R ] f= Х_» №', что приводит к противоречию с тем же предположением. Единственная оставшаяся возможность — Υ частично пересекается с W. Пусть Υ' = Υ — W, а Υ" = Υ f| IP. В силу проективности СИ |Х-»У, X-^Y"\. Но из FR и *[R] не могут следовать одновременно X—» У и X—» У, поскольку в силу аддитивности из них вытекает X—» У, а это противоречит минимальности У. Поэтому применение «прогонки» к гх над *[R] не добавляет новых кортежей, и, значит, гх удовлетворяет FR над *[R]. Осталось только доказать, что база данных d = π (гх) лежит в L, так как тогда >< (d) = rx будет лежать в ><L. Поскольку X = Х+ над FR и *[R], доказательство леммы 9.12 дает, что d лежит в L. Мы получили средство проверки условия соединения для схемы базы данных в 4NF и множества возможных состояний Р, определенного набором F- и MV-зависимостей. Точнее, сначала с использованием «прогонки» проверяется свойство LJ, т. е. С |= * [R]. Далее нужно найти множество F функциональных зависимостей, которые следуют из С, или некоторое его покрытие. К сожалению, для этого неизвестно никакого способа, за исключением прямолинейного перебора и проверки. Затем нужно найти FR. Используя алгоритм прогонки, можно проверить выполнение условия J2 путем проверки FR (J * [R ] |= С. Этот процесс, безусловно, не столь эффективен, как в случае, когда С состоит только из F-за- висимостей. Отметим, однако, что в случае, когда С состоит из F-зависимостей и зависимостей соединения, а схема R произвольна, вообще неизвестно никакого способа проверки условия соединения. Пример 9.17. Пусть U = ABCD, R = {ABC, BCD, DE\ и С = [D ->- Ε, ВС —» Л, AD —» Е\. Множество зависимостей [D ->- Е\ покрывает FRy где F—множество F-зависимостей, которые следуют из С. Отсюда С \= *[R]. Кроме того, FR и * [R ] влекут за собой С, так что условие соединения в этом случае выполнено. Пример 9.18. Пусть U = ABCDE, R = \АВСУ BCD, DE\ й С = \D ->■ Ε, ВС-^А, Л—»£}. Множество зависимостей {D -»■ ->£|ив этом случае покрывает FR, но FR вместе с * [R ] не влечет за собой С, так что условие соединения не выполнено.
222 Гл. 9. Теория представлений «1 ъ, h Ъг Ъъ аг «2 Ъь К Рис. <*3 <*3 h «3 by 9.20. h а4 «4 д4 α4 as «5 «s as a5 9.3.3. Проверка эквивалентности по данным Для того чтобы проверить R « PS, где Ρ = SAT (С), а R и S — схемы баз данных, нужно определить, выполнено ли равенство FIXc (R) = FIXc (S). Равенство, конечно же, справедливо в тех случаях, когда установлены включения в обоих направлениях. Как уже было замечено, FIXc (R) cz FIXc (S) выполнено в точности тогда, когда FIXc (R) £ F/X (S). Это включение, равносильное условию С (J {* [R ]} |= * [S], можно проверить алгоритмом прогонки в случае, когда С состоит из F-зависимостей и зависимостей соединения. П(А В С D Е) Т*(А В С D Е) а\ b\ a3 b2 а$ Ь3 а2 а3 а4 Ь4 Рис. 9.21. Если R сохраняет SAT (С), следствие теоремы 9.5 показывает, что FIXc (R) ^ FIX (S) эквивалентно Ts !=L с TV Для проверки этого включения полезна Лемма 9.14. Пусть R и S —схемы баз данных, С —множество ¥-зависимостей и зависимостей соединения. Положим Tr = = chasec (Tr). Включение TR^. CTS имеет место тогда и только тогда, когда TrE. Ts. Доказательство предоставляется читателю (см. упр. 9.34). Лемма 9.14 полезна, поскольку Tr с. Ts совсем легко проверить. Чтобы доказать это включение, необходимо найти отображение включения из 7*s в 7*£. Так как в Ts нет повторяющихся выделенных переменных, необходимо лишь проверить, что для каждой строчки w из Ts найдется строчка w' из Tr, которая включает W. Пример 9.19. Пусть U = ABCDE, S = \ACEf BCD], R = = {ABC, BCD, DE\ и Ρ - SAT (С), где С = {В -+ Е, D -» В}. На рис. 9.20—9.21 показаны 7£ = chasec (TR) и 7| = chasecTs. Имеется отображение включения из Ts в Tr, так что Tr EL C7V Однако отображения включения из Tr в 7s нет, так что R 9^cS. В самом деле, упрощенная проверка по теореме 9.5 здесь неприменима, так как ни R, ни S не сохраняют SAT (С). Но этот отрицательный результат все-таки может быть доказан (см. упр. 9.35).
9.3. Проверка на адекватность представления 223 Мы знаем, что R»CS эквивалентно TR ξ cTs, когда R и S сохраняют SAT (С). Если С состоит только из F-зависимостей, можно применить к TR и Т$ алгоритм прогонки с полиномиальной по объему TR, Ts и С временной сложностью. Пусть Т& и Т| будут результатами применения прогонки. Включения Tr Е. Ts и 7s ?=. TR, а следовательно, и TR = c^s можно проверить за полиномиальное время, так как отображения включения в этих случаях, как мы уже заметили, отыскиваются легко. Следующий результат дает проверку за полиномиальное время того, сохраняет ли схема базы данных R множество F-зависимостей F. Т(А В С D Е) ах а2 а3 bx b2 Ъъ а2 b4 a4 b5 а\ а2 аг Ь6 а5 Рис. 9.22. Определение 9.17. Пусть Τ — табло. Будем говорить, что Τ включает F^зависимость X ->■ Υ, если некоторая строка Τ выделена по крайней мере в столбцах ΧΥ. Табло Τ включает множество F-зависимостей, если оно включает каждую F-зависимость из этого множества. Очевидно, что множество F-зависимостей F навязано схеме базы данных R тогда и только тогда, когда TR включает некоторое покрытие G множества F. Пример 9.20. Табло Τ (рис. 9.22) включает множество F-зависимостей F = |С->- АВ, Ε ->■ В\. Теорема 9.10. Пусть R—схема базы данных, F — неизбыточное множество F-зависимостей. Схема R сохраняет SAT (F) тогда и только тогда, когда TR = chase> (TR) включает F. Доказательство. Предположим, что R сохраняет SAT (F). Докажем следующее свойство табло TR: если w — строка Tr, а X — множество столбцов, в которых в w стоит выделенная переменная, то X = Х+ над F. Предположим, что Χ Φ Х+. Пусть А — атрибут из Х+ — X. Известно, что F(= X ->- А. Кроме того, табло Tr, рассматриваемое как возможное состояние, лежит в SAT (F), так что mR (Tr) лежит в SAT (F) (ведь R сохраняет SAT (F) ). HomR (Tr) содержит и w, и wd — строку из всех выделенных переменных. (Почему?) Теперь w (X) = wd (X), но w (Α) Φ Φ wd (Л), что нарушает X ->■ А. Из этого можно заключить, что Х+ = X. Можно показать далее, что Tr не содержит повторяющихся выделенных переменных (см. упр. 9.36).
224 Гл. 9. Теория Представлений Пусть X ->- Υ — произвольная F-зависимость из F. Мы хотим доказать, что X ->- Υ включено в TR. Пусть wx — строка, в которой выделенные переменные стоят в точности в столбцах X, а невыделенные переменные не встречаются нигде более в Тр. Пусть Τ — табло, образованное из Т£ добавлением wx. Положим Т* = = chaseF (Τ), w*x—строка из Τ*, соответствующая wx из Τ, причем в wx выделены переменные в точности в столбцах из Z. Мы утверждаем, что Ζ = Х+. В силу сказанного в предыдущем абзаце Ζ = Ζ+, так что Ζ э Х+. Согласно упр. 9.37, если Α £ Ζ, то F \= X ->- Л, так что Ζ s Х+ и, следовательно, Ζ = Х+. Более того, мы утверждаем, что Т* — это просто Τ с а;^, измененной на wXy т. е. никакая строка из Т£ с: Τ не изменяется при вычислении chaseF (T). Рассмотрим F-правило, примененное при вычислении chaseF (Τ) первым. Предположим, что это F-правило для W ->- В из F. Применение этого правила должно затрагивать строку wx, так как Т£ удовлетворяет W -> В. Чтобы W -+■ ->- В можно было применить к Т9 должно быть W ^ X, и в TR должна быть строка w с w (W) = wx (W). Отсюда w выделена во всех столбцах из W. Так как множество выделенных в w столбцов замкнуто относительно F, то строка w выделена также и в столбце В. Поэтому применение F-правила для W-+В к Τ изменяет Wx (В) на выделенную переменную, а строки из Т& в Τ остаются неизменными. Те же самые аргументы справедливы и по отношению к применению второго F-правила, а также третьего и т. д. Таким образом, в процессе вычисления chaseF (T) никакие строки из 7r не изменяются. Нам известно, что в Т* строка w превращается в wx, где wx выделена в точности в столбцах Х+. Так как F неизбыточно, то существует непустое подмножество Y' множества F, такое, что X -> У не следует из F — \X-+Y\. Таким образом, при вычислении chaseF (Τ) необходимо в некоторый момент использовать F-правило X -> А для некоторого Α £ Υ' (чтобы пометить wx в столбце А). Согласно предыдущему абзацу, в 7*jJ имеется строка, выделенная в.столбцах X. Так как множество столбцов, в которых в w стоят выделенные переменные, замкнуто относительно F, строка w выделена и в столбцах Y. Значит, Т$ включает X ->- У. Теперь предположим, что TR включает F. Пусть X ->- Υ есть F-зависимость из F, а г — возможное состояние из SAT (F). Так как г удовлетворяет X ->- Y, то и Т& (г) удовлетворяет этой зависимости (см. упр. 9.39). Далее, Т& (г) = TR (r) = mR (r), так что /72r (г) удовлетворяет X ->■ Y. Поэтому R сохраняет SAT(F). Пример 9.21. Пусть R — схема базы данных \АВС, CD, DEI] и F={AB-+C, C-+D, D-+A, ADE-+I]. Множество F неизбыточно. На рис. 9.23 показано TR = chaseF (TR). Табло
9.3. Проверка на адекватность представления 225 7r включает F, так что R сохраняет SAT (F). Заметим при этом, что F не навязано R (из-за D -> А), а также, что F & * [R ]. Окончательный результат этой главы будет связывать свойство сохранения множества F-зависимостей с неподвижными точками естественно возникающей схемы базы данных. Г*(А ВС DEI) ах а2 а3 а4 Ь2 Ь$ αχ b$ а3 аА Ь6 Ъ1 а1 Ь9 й10 «4 «5 ав Рис. 9.23. Определение 9.18. Пусть F — множество F-зависимостей и G — неизбыточное покрытие F. Естественной схемой базы данных F будем называть схему RF=\X+\X-+Y £G\. Это определение не зависит от выбора G (см. упр. 9.40). Пример 9.22. Пусть F = \АВ -+С, С-+ Е, D -+ A, ADE -* -^ /}, как и> в примере 9.21. Тогда (АВ)+ = ABC, C+ = ACD, D+ = AD и {ADE)+ = ADEI, так что RP = {ABC, ACD, AD, AD Ε Ι}. Если *[RF] — полная зависимость соединения (т.е. в ней упоминаются все атрибуты из U), справедлива Теорема 9.11. Пусть R—схема базы данных, F — множество F-зависимостей. Предположим, что *[RF]—полная зависимость соединения. Включение FIXF (RF) s FIX (R) выполняется тогда и только тогда, когда R сохраняет SAT (F). Доказательство. Достаточность. По упр. 9.36 chaseF (TR) = = 7s при некоторой схеме базы данных S. Более того, по доказательству теорему 9.10 для любой схемы отношения S ζ S имеем 5 = S+. Пусть G — неизбыточное покрытие F. По теореме 9.10 Ts включает G. Для любой F-зависимости Χ -> Υ из G существует схема отношения S из S, такая, что XY s S. Поскольку S = S+ имеет Х+ <= S+. Отсюда S = RF. Далее, FIX (S) э FIX (RF), так что FIXF (S) a FIXF (RF). Согласно определению S, FIXF (R) - FIXF (S). Поэтому FIXF (RF) a FIX (R). Необходимость. Очевидно, что RF сохраняет SAT (F). По второму следствию из теоремы 9.5 имеем TR Ef7rf. Мы знаем, что mRp(r) лежит в SAT (F), если возможное состояние г лежит
226 Гл. 9. Теория представлений в SAT (F). Также mR (r) ^ mRp (г), откуда по упр. 9.26 mR (r) лежит в SAT(F). Следовательно, R сохраняет SAT (F). Пример 9.23. Пусть R = {ABC, CD, DEI}, F = \AB -> С, C-+D, D -> Л, ЛО£ -^ /}, как и в примерах 9.21, 9.22. В примере 9.22 показано, что Rb = [ABC, ACD, AD, ADEI]. Табло Т (рис. 9.24) получено прогонкой из 7R над F и *[RfL В Τ содер- Т(А В С DEI) al £Г| ах а\ а\ а\ а\ αχ а1 а2 bs Ь9 а2 bs а2 bs h b9 ^3 «3 Ь\0 ^3 «3 «3 «3 b ίο Ью Рис. «4 ff4 й4 α4 fi?4 α4 «4 α4 α4 9.24. Ьг bb as OS as be b2 be b2 Ьз by Ob «6 <*6 by b3 by Ъг жится строка из выделенных переменных, так что F вместе с *[Rj] влечет за собой *[R]. Отсюда FIXF (RF) s= FIX (R) и R сохраняет F, что уже один раз было получено в примере 9.21. 9.4. УПРАЖНЕНИЯ 9.1. Предположим, что для каждого атрибута из U домен конечен. Сравните мощности множеств Q, P, M, kQ, πΡ, L и X L. 9.2. Докажите, что kQ совпадает с множеством тех баз данных над схемой R, в которых отношения соединяются полностью. 9.3. Покажите, что для любого η ^ 3 всегда имеется множество из η отношений, такое, что любые η — 1 из них соединяются полностью, а все η — нет. 9.4. Покажите, что включение L ^ πΡ собственное. 9.5. Докажите, что свойство IC2 эквивалентно πΡ = L. 9.6. Покажите, что схема базы данных R из примера 9.6 разлагает Ρ из того же примера на независимые компоненты. Опишите отображение, обратное к rtR. 9.7. Дайте пример схемы базы данных R и бесконечного множества возможных состояний Р, таких, что R обладает свойством АС1, но не АС2. 9.8. Покажите, что из условия L = πΡ не обязательно следует АС2. 9.9. Покажите, что АС1 и LJ могут быть эквивалентными, даже если АС2 ье выполнено. 9.10. Пусть Χ, Υ, Ζ — подмножества U. Покажите, что возможное состояние г ξ Q удовлетворяет X -+ Υ тогда и только тогда, когда π,χγζ (г) удовлетворяет X -* Υ. Покажите, что это утверждение перестает быть верным, если мы X -» Υ заменим на X —» У.
9.4. Упражнения 227 9.11. Покажите, что для любого возможного состояния г £ Q, для которого π (г) = dy будет Χύί э г. 9.12. Покажите, что из условия сохранения вытекает, что X обратно к ограничению π на Р. 9.13. Докажите лемму 9.5. 9.14. Докажите, что при выполнении свойства Л из FIX (R) П^4-^ Ρ следует FIX (R) П L^= P. 9.15. Покажите, что 1С1 и IC2, взятые вместе, не влекут за собой свойство LJ. 9.16. Докажите лемму 9.6. 9.17. Докажите, что свойства LJ и J2 выполнены в тех и только в тех случаях, когда имеют место J1 и J2. 9.18. а) Покажите, что сохранение информации эквивалентно свойствам J2 и FIX (R) 3ί"", вместе взятым. Ь) Покажите, что условие соединения эквивалентно свойствам J2 и FIX (R) з 3 Р, вместе взятым. 9.19. Докажите лемму 9.9. 9.20. Докажите, что R ^ р/ эквивалентно TR =R Г;, где / — схема базы данных, состоящая из единственной схемы отношения U. 9.21. Покажите, что FIXp (R) содержится в PRESp (R), причем это включение может быть собственным. 9.22. Докажите первое следствие из теоремы 9.5. 9.23. Покажите, что если возможное состояние г £ Ρ удовлетворяет MV- зависимости X —» Yy где X ^ R, то jtR (r) удовлетворяет MV-зависимости Х—» -»Υ Π R· 9.24*. Охарактеризуйте те зависимости соединения, которым удовлетворяет π# (г), если известно, что г удовлетворяет некоторой зависимости соединения *[S]. 9.25. Найдите зависимости, которым удовлетворяет п%(г) (обозначения из примера 9.12), если г ζ Ρ, но не удовлетворяет s. 9.26. Покажите, что если возможное состояние г не удовлетворяет множеству F-зависимостей, то любое возможное состояние, содержащее г, тоже не удовлетворяет F. Если же г удовлетворяет Т7, то любое возможное состояние, содержащееся в г, удовлетворяет F. 9.27. Пусть Ρ = SAT (Ζ7), где F — множество F-зависимостей. Покажите, что L4- — Ρ содержит отношение, состоящее из двух кортежей. 9.28. Покажите, что свойства LJ и J 2 эквивалентны условию соединения. 9.29*. Найдите, когда SAT (FR) = SAT (π/7), где F — множество F-зависимостей над U. 9.30. Закончите доказательство леммы 9.10. 9.31. Вычислите (АС)+ над FRt где U = ABCDEI, R = {ABC, CDEy AEI}^ a F= {АВ -+D,D -> /, Ε — /, ВС -> Л, / ->Β}. 9.32. Найдите алгоритм, который по заданным R и Т7, где F = FR, вычисляет за полиномиальное время покрытие G для FR, такое, что каждая F-зависимость из G применима к некоторой схеме отношения R £ R. Покажите, что ваш алгоритм неприменим-в случае, когда F φ FR (как я это узнал?). 9.33. Найдите в условиях примера 9.18 возможное состояние из XL, которое не лежит в SAT (С). 9.34. Докажите лемму 9.14. 9.35. Покажите, что TR tgzc Ts влечет R ^c S, где R и S — схемы баз данных, а С — множество зависимостей. 9.36. Предположим, что схема базы данных R сохраняет SAT (Ζ7), где F — множество F-зависимостей. Покажите, что тогда chaseF (7R) = Г$, где S — некоторая схема базы данных. Опишите S через R и F.
228 Гл. 9. Теория представлений 9.37. Пусть R — схема базы данных, F — множество F-зависимостей. Пусть, далее, w — строка из TR, а ш* — соответствующая строка chaseF(TR\ Предположим, что w выделена в точности в столбцах X, a w* — в столбцах Y. Докажите, что тогда F (= X -> Υ. 9.38. Пусть R — схема базы данных, F — множество F-зависимостей, Χ = ^ U. Покажите, что если R сохраняет SAΤ (Τ7), то и R (J {X} сохраняет SAΤ (F). 9.39. Пусть табло Τ включает F-зависимость Χ -> Υ. Покажите, что для произвольного возможного состояния г из SAT (X -> Υ) отношение Τ (г) принадлежит SAT (X ->7). 9.40. Докажите, что при любом выборе G в определении Rf получится одно и то же множество атрибутов. 9.5. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Материал разд. 9.1 в основном взят из работы Maier, Mendelzon, et al [1980]. Разделы 9.2 и 9.3 следуют статье Beeri, Mendelzon et al [1979]. Свойства 1С предложены в работе Rissanen [1977], а свойства АС — в Arora, Carlson [1978]. Алгоритм определения того, что множество F-зависимостей навязано, принадлежит Beeri, Honeyman [1981], которые показали также, что проверка, покрывает множество G подмножество F+, навязанное схеме, или нет, является NP-полной. В работах Beeri, Rissanen [1980] и Graham [1981a, 1981b] также рассматривалась эквивалентность схем баз данных при наличии ограничений и сохраняющихся зависимостей. Структура множества SAT (F)t где F — множество F-зависимостей, изучалась в работах Ginsburg, Hull [1980] и Ginsburg, Zaiddan [1981 ]. В частности, Гинзбург и Зайдан отметили, что tcr (SAT (F)) не обязательно имеет вид SAT (F') для множества F-зависимостей F' над R. Сходная ситуация с зависимостями соединения была отмечена в Sadri [1980a].
Глава 10 Системы запросов В предыдущих главах были рассмотрены две системы манипулирования реляционными базами данных. В гл. 1 изучались команды обновления, которые добавляли, удаляли или модифицировали кортежи в отношениях. В гл. 2 и 3 для выражения операций выбора, ограничения и комбинирования отношений из базы данных была введена реляционная алгебра. Формальная система, которая может выразит^ обновление отношений из базы данных, называется системой обновления. Запрос — это операция над отношениями, результатом которой также является отношение. Система запросов (такая, как реляционная алгебра) — это формальная система для выражения запросов. Система запросов образует базисную структуру языков запросов, т. е. специализированных языков программирования, которые используются в системах баз данных для формулировки команд. Несколько языков запросов для систем реляционных баз данных будут исследованы в гл. 15. В этой главе мы рассмотрим три другие системы запросов. Реляционное исчисление кортежей является по сути формализацией системы обозначений, предназначенной для образования множеств (эта система обозначений использовалась для определения операций в реляционной алгебре). Реляционное исчисление доменов сходно с предыдущим за исключением того, что переменные принимают значения в доменах, а не являются кортежами. Будет показано, что и исчисление кортежей и исчисление доменов эквивалентны по выразительной силе реляционной алгебре. Еще одним средством выражения запросов будет некоторая модификация табло. Хотя табло и не могут выразить все запросы, предстг* вимые реляционной алгеброй, тот подкласс, который они могут представить, включает, похоже, большое количество запросов, естественно появляющихся в реальных приложениях. Более того, они представляют собой прекрасное средство проверки эквива-
230 Гл. 10. Системы запросов лентности и выполнения преобразований, как будет видно в следующей главе. Хотя реляционная алгебра и является основой нескольких языков запросов, большинство из них основано или на исчислениях или на табло. Основная причина такого положения — это то, что реляционная алгебра — процедурная система, а остальные три — непроцедурные, т. е. выражение реляционной алгебры задает набор операций над отношениями и порядок их выполнения (с точностью до определенных законов ассоциативности). Исчисления и табло выражают только, каким должен быть результат вычисления, но не то, каким образом проводить вычисление. Итак, основанные на непроцедурных системах языки запросов имеют тенденцию быть языками высокого уровня и освобождают пользователя от необходимости определять, как получить желаемый ответ. Эта обязанность возлагается на процессор языка запросов данной системы баз данных. В настоящей главе будет показано, что выражение исчисления эффективно переводится в алгебраическое выражение. Однако ни в коем случае нельзя ожидать, что полученное алгебраическое выражение станет эффективным средством вычисления значения первоначального выражения. В следующей главе будут изучены способы модификации алгебраических выражений, позволяющие облегчить их вычисление. Мы также коротко рассмотрим конъюнктивные запросы, которые образуют подкласс выражений исчисления доменов. Конъюнктивные запросы сходны с табло запросов и, так же как и табло, представляют собой прекрасное средство проверки эквивалентности и выполнения преобразований. 10.1. ЭКВИВАЛЕНТНОСТЬ И ПОЛНОТА Выражения из различных систем запросов, которые будут изучаться, можно рассматривать как отображения из баз данных в отношения. Точнее, можно вычислить значение выражения Ε на базе данных d и получить некоторое отношение г. Назовем г значением выражения Ε на d. Будем обозначать г как £ (d)1). Если Ег (d) = E2 (d) для любого состояния базы данных df то два выражения Εγ и Е2 хотелось бы называть эквивалентными. Однако при этом возникает неудобство, так как для определения, эквивалентны выражения или нет, необходимо знать схему базы данных d. Например, nAB(r\><s) и пАВ (г) >< пАВ (s) будут эквивалентны, если схемы г и s суть ABC и ABD, но не эквивалентны, если их схемы суть ABCD и АВСЕ. Поэтому эквивалентность оказывается понятием, зависящим от конкретной схемы базы дан- х) В гл. 3, в которой еще не определили базу данных, вместо Ε (d) использовалось обозначение Ε (slf ..., s^), где d—база данных {s1} ..., s/J.
10.1. Эквивалентность и полнота 231 ных. Иногда же конкретная схема оказывается несущественной, поскольку выражения оказываются эквивалентными при любой схеме базы данных, с которой они оба совместимы. Например, <Ул=а (rxs) и oA=sa (r)xs эквивалентны при любой схеме базы данных при условии, что схема отношения г содержит А. Последний пример приводит к более сильному понятию эквивалентности: Ег = E2i если Ех (d) = E2 (d) для каждой базы данных d над каждой схемой базы данных, совместимой с Ег и Е2. К сожалению, при этом определении эквивалентность не транзи- тивна. Пример 10.1. Рассмотрим следующие алгебраические выражения: Е% = Пав(г)[\ь9 E3 = ^AB(r)[]nAB(s). Выражения Ег и Е2 эквивалентны по второму определению. В каждой базе данных, совместимой с Ег и Е2, схемы г и s должны быть обе А В. По Е2 схема s должна быть Л β, а по Ег схемы г и s должны совпадать. Аналогично может быть показано, что Е2 и Е3 эквивалентны (по второму определению). Однако Ег и Е3 не эквивалентны, так как существуют базы данных, совместимые и с Еъ и с Е3 (например, схема г и s может быть ABC)1). Ситуация может оказаться еще хуже описанной в примере 10.1. Существуют выражения Еъ Е2, Е3, которые по второму определению удовлетворяют соотношениям Ег ξ Е2 и Е2 ξ E3f однако Ег и Е3 определяют отношения над различными схемами при некоторых совместимых с ними базах данных d (см. упр. 10.1). Поэтому эквивалентность всегда будет рассматриваться относительно фиксированной схемы базы данных. Как только будут определены разные системы запросов, нужно обсудить эквивалентность выражений из различных систем. Одним из параметров, по которому будут сравниваться системы, является выразительная сила. Система запросов QS1 не менее выразительна, чем система запросов QS2f если для любого выражения Е2 из QS2 и для любой схемы базы данных, совместимой с Е2) найдется выражение Ег из QSlt такое, что Ег ~ Е2. Отметим, что Ег может зависеть от конкретной схемы базы данных. Системы QS1 и QS2 одинаково выразительны, если каждая не менее выразительна, чем другая. Система запросов называется полной, если она так же выразительна, как реляционная алгебра. Мы увидим, что исчис- *) Однако в общем случае Ег (d) Φ Е3 (d), например, если г = (а Ъ с), s = == (а Ъ сг), то лА в (г Π s) = 0, а лА в (г) [} пА в (s) = (а ь). — Прим. ред.
232 Гл. 10. Системы запросов ление доменов и исчисление кортежей полны, а табло запросов и конъюнктивные запросы — нет х). В гл. 3 реляционная алгебра 31 была определена для универсума атрибутов U (с соответствующими доменами), множество отно- ношений \гъ г2, ..., гр\ и множества знаков сравнения (бинарных отношений) Θ. В этой алгебре используются постоянные отношения, а также операции объединения, пересечения, разности, выбора, проекции, естественного соединения, переименования, деления, θ-соединения и активного дополнения. Однако в теореме 3.1 доказано, что для каждого выражения Ε реляционной алгебры существует эквивалентное выражение £', использующее только постоянные отношения с одним атрибутом и с одним кортежем, переименование, выбор с одним знаком сравнения, проекцию, естественное соединение, объединение, разность и, возможно, дополнение (если в исходном выражении использовалось дополнение). Подалгебра реляционной алгебры с такими константами и операциями одинаково выразительна с полной реляционной алгеброй. Поэтому для доказательства того, что некоторая система запросов QS не менее выразительна, чем реляционная алгебра, достаточно рассматривать только выражения из подалгебры. С другой стороны, для доказательства того, что реляционная алгебра не менее выразительна, чем QS, можно использовать любые операции реляционной алгебры. Хотя реляционная алгебра и будет у нас мерилом выразительной силы, в гл. 14 встретятся некоторые естественные вычисления над отношениями, которые не могут быть выражены никаким алгебраическим выражением (см. упр. 10.2). 10.2. РЕЛЯЦИОННОЕ ИСЧИСЛЕНИЕ КОРТЕЖЕЙ Это исчисление должно показаться читателю естественной системой обозначений, потому что его выражения очень похожи на теоретико-множественные выражения, использовавшиеся в гл. 2, 3 для определения отдельных операций реляционной алгебры. В то время как реляционная алгебра использует в качестве операндов отношения, реляционное исчисление кортежей (коротко — исчисление кортежей) строит свои выражения из кортежей. Напомним определение деления, появившееся в разд. 3.1. Если г (R), s (S) — отношения, где S s R, a R' = R — S, то r-t-s — отношение г' (Rr) = \t\ для каждого кортежа ts £ s существует кортеж tr £ г, такой, что tr (R') = t, tr (S) = tB). x) Согласно традиции, полнота определяется как равная выразительность с исчислением кортежей.
10.2. Реляционное исчисление кортежей 233 Таблица 10.1. Отношения детали, использование и наличие. детали (ЧАСТЬ-№ 211 2114 2116 21163 21164 318 206 2061 2066 2068 использование (ЧАСТЬ-№ 211 211 2114 2114 2116 2116 21164 21164 наличие (ЧАСТЬ-№ 211 211 211 2114 2114 2116 2116 21164 ДЕТАЛЬ-ЧАСТИ-№ 0 211 211 2116 2116 21164 0 206 206 206 ТИП-САМОЛЕТА 707 727 707 727 707 727 707 727 АДРЕС Нью-Йорк Бостон Чикаго Нью-Йорк Чикаго Бостон Чикаго Атланта НАЗВАНИЕ-ЧАСТИ) кресло чехол кресла привязной ремень пряжка ремня крепление ремня маленький болтик верхняя панель кнопка вызова выключатель освещения вентилятор ЧИСЛО) 86 134 86 134 244 296 488 592 КОЛИЧЕСТВО) 106 28 77 6 28 341 29 36 391 Выражения исчисления кортежей имеют вид \x(R)\f(x)l где / — некоторый предикат над переменным кортежем х. Это выражение обозначает отношение г (R), которое состоит из всех кортежей t (R), для которых / (t) истинно. Вскоре мы дадим формальное определение множества разрешенных формул, но начнем с нескольких неформальных примеров. Рассмотрим базу данных, состоящую из трех отношений из табл. 10.1. База данных описывает запасные части самолета. Отношение детали содержит номер запчасти и номер той запчасти, непосредственной деталью (т. е. не деталью детали) которой она является, а также название первой запчасти. Отношение использование описывает количество, в котором данная деталь используется в каждом типе самолетов. Отношение наличие дает коли-
234 Гл. 10. Системы запросов Таблица 10.2. Детали части 211 (ЧАСТЬ-№ 2114 2116 Таблица 10.3. НАЗВАНИЕ-ЧАСТИ) чехол кресла привязной ремень Число кресел, используемых в Боинге-727 (ЧИСЛО) 134 чество деталей каждого типа в различных ремонтных мастерских. Некоторые из этих отношений неполны. Значение 0 в столбце ДЕТАЛЬ-ЧАСТИ-№ означает, что данная запчасть не является деталью никакой другой. Пример 10.2. Ответ на вопрос «Какие детали у запчасти номер 211?» можно выразить как \х (ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ) | χ ζ детали и χ (ДЕТАЛЬ-ЧАСТИ-№) = 211}. Значение этого выражения приведено в табл. 10.2. Это выражение некорректно, если считается, что детали деталей, детали деталей деталей и т. д. также должны включаться в список. Пример 10.3. Ответ на вопрос «Сколько кресел используется в Боинге-727?» можно выразить как |л:(ЧИСЛО) | χ ζ использование и χ (ТИП-САМОЛЕТА) = = 727, и существует у £ детали, такой, что χ (ЧАСТЬ-№) = = у (ЧАСТЬ-№) и у (НАЗВАНИЕ-ЧАСТИ) = «кресло»} Значение этого выражения на базе данных из табл. 10.1 дано в табл. 10.3. 10.2.1. Формулы исчисления кортежей Множество разрешенных формул исчисления кортежей будет введено при использовании: 1) универсального множества атрибутов U и доменов dom (A) для каждого атрибута А из U; 2) множества Θ бинарных знаков сравнения в доменах; 3) множества имен отношений {гъ г2, ..., гр] над схемами Rlf Rv ..., Rp, каждая из которых — подмножество U.
10.2. Реляционное исчисление кортежей 235 Дадим сначала правила построения формул, а потом уже выделим некоторым набором ограничений множество разрешенных формул. Интуитивное значение каждой формулы будет объясняться по мере их появления, а точное определение интерпретации формулы отложим до того момента, когда множество разрешенных формул уже будет определено. Будем обозначать переменные кортежи буквами из самого конца алфавита, а буквы t, и, υ оставим для обозначения конкретных кортежей. Основными строительными блоками для формул будут атомы, которые бывают трех типов. al. Пусть г — имя отношения из d, а χ — переменный кортеж. Тогда г (х) — атом, означающий, что χ ζ г. а2. Пусть χ и у — переменные кортежи (не обязательно различные), θ ζ Θ —знак сравнения, А и В — атрибуты из U, которые θ-сравнимы. Тогда χ (A) Qy (В) — атом. аЗ. Пусть * — переменный кортеж, θ £ Θ —знак сравнения, д и β _ атрибуты из (У, которые θ-сравнимы. Если с — константа из dom (Л), то cQx (В) — атом, если с — константа из dom (S), то χ (A) Qc — атом. Пример 10.4. Для базы данных из табл. 10.1 атомами являются детали (*), χ (ЧАСТЬ-№) = у (ЧАСТЬ-№) и χ (КОЛИЧЕСТВО) < < 20. Используем теперь связки Π (не), Д (и), V (или), g (существует и V (Для каждого) для рекурсивного построения формул из атомов. Будем руководствоваться следующими шестью правилами (формулы будут похожи на предикаты исчисления первого порядка, использующие rlf ..., гр в качестве символов унарных отношений). Н. Каждый атом — формула. f2. Если / — формула, то 1 / — формула (1/истинно в точности тогда, когда / ложно). f3. Если / и g — формулы, то / Д g и / V g — формулы (/ Д g истинно в точности тогда, когда и / и g истинны; f \J g истинно в точности тогда, когда среди fug есть истинная формула). {4. Если χ — переменный кортеж, / — формула, включающая х а ^ _ подмножество U, то g* (R) / — формула (она истинна, если существует кортеж t над R, при подстановке которого вместо х в / формула становится истинной). f5. Если χ — переменный кортеж, / — формула, включающая ^ а ^ _ подмножество U, то V* (R) f — формула (она истинна, если для каждого кортежа t над R формула / становится истинной при подстановке t вместо х). {6. Если / — формула,' то и (/) — формула. Скобки необходимы для того, чтобы изменить порядок действий,
236 Гл. 10. Системы запросов диктуемый старшинством связок. Связки 3 и V имеют самое высокое (и равное) старшинство, затем следуют "|, Д и у в порядке убывания старшинства. Пример 10.5. Атомы из примера 10.4 являются одновременно формулами (по И). По f2 выражение -\х (КОЛИЧЕСТВО) < 20 тоже формула. По f3 и f6 (χ (ЧАСТЪ-№) = у (ЧАСТЬ-№) V 1 х (КОЛИЧЕСТВО) < 20) тоже формула. Применяя опять f3, получаем, что наличие (х) Д (* (ЧАСТЪ-№) = у (ЧАСТЬ-№) V 1 х (КОЛИЧЕСТВО < 20) — формула. Наконец, по f6 и f4 Зх (ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО) (наличие (х) Д (х (ЧАСТЬ-№) - у (ЧАСТЬ-№) у 1 χ (КОЛИЧЕСТВО) < 20) ) является формулой. Добавленные по f6 скобки необходимы, так как без них формула имеет вид Зх (ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО) наличие (х) Д χ (ЧАСТЬ-№) - у (ЧАСТЬ-№) V 1* (КОЛИЧЕСТВО) <*20, что эквивалентно, по принятому старшинству связок * ( (з х (ЧАСТЪ-№ АДРЕС КОЛИЧЕСТВО) наличие (х)) Д χ (ЧАСТЬ-№) = у (ЧАСТЬ-№) ) у χ (КОЛИЧЕСТВО) < 20. 10.2.2. Типы; свободное и связанное вхождения До того как мы определим формально интерпретацию формулы, необходимо точно сформулировать, что означают высказывания «формула / включает х» и «при подстановке t вместо лс». Необходимо исключить также некоторые бессмысленные формулы типа использование (х) Д χ (АДРЕС) = «Нью-Йорк». Проблема здесь: какого типа х? Ведь наличие (х) означает, что л: — переменный кортеж над ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО, но вхождение χ (АДРЕС) приводит к другой схеме. Для переменного кортежа χ будет определен его тип или схема для х. Будет также определено множество ссылок переменной х, т. е. множество атрибутов, с которыми χ встречается в формулах. Хотелось бы,
10.2. Реляционное исчисление кортежей 237 чтобы множество ссылок всегда содержалось в типе х. Будет также определено, когда вхождение χ в формулу свободно, а когда связано. Понятие свободного и связанного вхождения переменного кортежа аналогично глобальной или локальной переменной в программе на языке с вложенными декларациями процедур. prac MAIN; (1) declX, Г, Ζ; [body of MAIN] proc SUB1; (2) decl-Y, W\ [body of SUB1] proc SUB12; (3) decl Z; [bodyofSUB12J end SUB12; end SUB1; end MAIN. Рис. 10.1. Пример 10.6. Рассмотрим набросок программы с рис. 10.1. Каждое упоминание Ху Υ, Ζ в теле МАШ отсылает к переменной, записанной в декларации (1). Каждое упоминание Υ и Ζ в теле SUB1 также отсылает к декларации (1), в то время, как упоминание X или W — к декларации (2). Переменные Υ и Ζ — глобальные в SUB1. Они укажут на то же место хранения, если появятся вне программы SUB1. Переменные X и W в SUB1 — локальные. Они указывают на место хранения, недоступное процедурам извне SUB1, хотя и доступное процедурам из SUB1. В теле SUB 12 переменные Χ, Υ и W — глобальные, a Z — локальная. Отметим, что в процедуре SUB 12 зсе вхождения Ζ в декларацию (3) и в тело процедуры могут быть одновременно изменены на другую букву без изменения смысла программы, если только новая переменная не совпадает с глобальной переменной процедуры SUB 12. Однако переименование всех вхождений W в SUB 12 может в значительной степени изменить смысл программы, так как эти вхождения W глобальны для SUB 12. Итак, отметим, что вхождение переменной может быть глобальным или локальным. Вхождение Ζ в тело SUB 12 локально, а в тело SUB1 глобально. Свободные и связанные вхождения переменной в формулу соответствуют глобальным и локальным вхождениям переменной
238 Гл. 10. Системы запросов в программу. Кванторы, т. е. связки V и 3> соответствуют декларациям; они связывают вхождения переменных, находящихся в сфере их действия. Кванторы служат также для описания типа переменной в формулах (точно так же, как декларации в программах). Свободные и связанные вхождения переменных определяются рекурсивно одновременно с type (χ, /) — типом переменной χ в формуле / и теп (х, /) — множеством ссылок переменной χ в f. И type (x, /), и men (x, f) определены только, если χ имеет свободное вхождение в f [χ «появляется в / свободно»). Понятия свободы, связанности, типа и множества ссылок используются для определения класса разрешенных формул через ограничения на употребление различных связок. Рассмотрим сначала случай, когда / — атомарная формула. al. Если f = г (х)у то χ свободно в Д a type (x, f) = men (x, f) = = R, где R — схема отношения г. а2. Если f = χ (A) Qy (β), то χ и у свободны в /, type (x, f) и type (у, f) не определены, а теп (х, /) = Л, теп (у, /) = β. аЗ. Если f = χ (А) Эс или / = свх (Л), то χ свободна в Д type (x, f) не определен, а теп (х, /) = Л. Атомарные формулы всегда разрешены (если удовлетворяют требованиям на домены и знаки сравнения). Рассмотрим далее случай, когда / строится из меньших формул, предполагая, что g и /ι — разрешенные формулы. Ϊ2. Если / = lg, то f разрешена, а вхождения переменных в / свободны или связаны в зависимости от того, свободны или связаны вхождения этих переменных в g. Если χ входит в g свободно, то type {x, f) = type (x, g) и men (χ, f) = men (χ, g). 13. Если f = g Д h или / = g V К то вхождения переменных в / свободны или связаны в зависимости от того, свободны или связаны они в g или Λ. Для переменной х, входящей свободно в / типы type (x, h) и type (x, g) должны совпадать, если они оба определены, для того чтобы / была разрешенной. Если же тип определен только для одной из подформул, скажем для g\ и χ появляется свободно в Λ, то, чтобы / была разрешена, должно быть выполнено включение type (x, g) ^ men (x, h). В обоих случаях type (χ, f) = type (x, g). Если же тип χ не определен в обеих подформулах, то type (x, f) не определен. В любом случае теп (х, /) = = теп (х, g) U теп (х, А). f4. Если f — 3х (#) §> то> чтобы / была разрешена, переменная χ должна входить свободно в g. Более того, type (x, g) должен быть R, если он определен, и R должно содержать men (x, g). Все вхождения χ в / связаны, a type (x, f) и men (x, f) не определены, так как χ не входит свободно в f. Если у φ χ, то любое вхождение у в / свободно или связано в соответствии с тем, свободно
10.2. Реляционное исчисление кортежей 239 или связано вхождение у в gy причем type (*/, /) = type (у, g) и теп (у, /) = теп (г/, g). f5. Если f=yx(R)g, то все определения и ограничения такие же, как и в случае f4. f6. Если f = (g·), то / разрешена, а свободные вхождения, связанные вхождения, тип и множество ссылок переменных остаются теми же, что и yg. В формулах вида э χ (R) g и у х (R) 8 полезно определить, какие вхождения переменной χ в g связаны внешним квантором, а какие нет. Будем говорить, что вхождение χ в g связано квантором з х (R) S"» если х входит свободно в g. To же самое применимо и к квантору V· Если же χ входит связано в g, то он должен быть связан некоторым квантором из g. В следующих пяти примерах используется база данных из табл. 10.1. Положим Яг = ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ НАЗВАНИЕ-ЧАСТИ, R2 = ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО, Я3 = ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО. Пример 10.7. Рассмотрим формулу /: V* (#з) Π наличие (х) V х (КОЛИЧЕСТВО) <: 100). Все вхождения χ связаны, причем все они входят в сферу действия χ (R3). Эта формула истинна, если для каждого кортежа t из отношения наличие имеет место t (КОЛИЧЕСТВО) <: 100. Для краткости будем использовать запись V* (Я) € rf вместо у * (R) (1 г (х) V /)· Аналогично, вместо дя (R) (г (х) Д f) используем з* (R) £ г /· Пример 10.8. Рассмотрим формулу /: V* (Rs) G наличие (з# (R3) £ наличие (х (АДРЕС) = = у (АДРЕС) Λ х (ЧАСТЬ-№) = ζ (ЧАСТЬ-№))). Все вхождения χ и у связаны, причем χ связано квантором ух (R3), ay — квантором Vi/ №)· Единственное вхождение ζ свободно, type (z, f) не определен, теп (ζ, /) = ЧАСТЬ-№. Пример 10.9. Рассмотрим формулу /: 3х (Rs) G наличие (χ (АДРЕС) = «Нью-Йорк» Д W (R*) € использование ((х ,(ЧАСТЬ-№) φ у (ЧАСТЬ-№) У у (ТИП-САМОЛЕТА) ^=«747») V 3 * (Rs) 6 наличие (х (ЧАСТЬ-№) = у (ЧАСТЬ-№) Λ х (АДРЕС) = ζ (АДРЕС)))).
240 Гл. 10. Системы запросов (Кавычки вокруг значений из нечисловых доменов используются во избежание путаницы переменных и значений. Для единообразия кавычки используются даже в тех случаях, когда конкретное значение оказывается числом.) Пусть хг, х2, ..., xQ — шесть вхождений χ в / по мере их появления. Все они связаны, но xlt x2i x3 связаны первым квантором з* С?з)> а #4, л:5, #6 связаны вторым квантором з* (#з)· Все вхождения у связаны, а единственное вхождение ζ свободно. Отметим, что подформулу 3* (#а) € наличие (х (ЧАСТЬ-№) = у (ЧАСТЬ-№) Д χ (АДРЕС) = ζ (АДРЕС)) для облегчения прочтения полезно заменить на 3™ (Rb) € наличие (w (ЧАСТЬ-№) =* у (ЧАСТЬ-№) Д w (АДРЕС) = ζ (АДРЕС)). Пример 10.10. Рассмотрим формулу /: 3х (#а) (использование (х) Д χ (АДРЕС) = у (АДРЕС)). Видно, что в подформулах g = использование (х) и h = (χ (АДРЕС) = у (АДРЕС)) type (x, g) = R2, a men (xy h) = АДРЕС. Значит, подформула g Д h не разрешена, так что / не разрешена. Пример 10.11. Рассмотрим формулу /: Зх (#2) {наличие (х) Д χ (АДРЕС) = у (АДРЕС)). Для подформулы g = {наличие (х) Д χ (АДРЕС) = у (АДРЕС)) type {x, g) = i?3> значит, формула / не разрешена. Еще одним сокращением, которое пока не появлялось в примерах, служит запись х (S) = у (S), где S — множество атрибутов Αλ ... Ak. Оно заменяет формулу (х (Αι) = У (А,) Д χ (Л2) = у (Л2) Д ... Д χ (Ah) = у (Ah)). При обсуждении формул будем писать / (хъ х2, ..., хп) в тех случаях, когда в / есть свободные вхождения хъ ..., хп (однако это не будет означать, что хъ ..., хп исчерпывают все свободно входящие в / переменные). 10.2.3. Выражения исчисления кортежей Исчисление кортежей ΤΉ будет обозначаться как (U, 2>, domy R, d, Θ),
10.2. Реляционное исчисление кортежей 241 где U — универсум атрибутов, φ — множество доменов, dom — отображение из U в 55, R —множество схем отношений над U, d — база данных со схемой из R, а Θ — множество знаков сравнения, включающее как минимум равенство и неравенство для каждого домена из 2D. Выражение исчисления кортежей над ΖΓΉ имеет вид {*(Я)1/(*)Ь где 1. формула / разрешена над U, 3), dom, R, d и Θ; 2. единственная свободно входящая в / переменная — это х; 3. множество R является подмножеством U; 4. если type (χ, /) определен, то он должен быть равен R, иначе R з теп (х, /). Расширим немного обозначения: пусть dom (R) означает множество всех кортежей со схемой R. Для определения значения выражения исчисления кортежей необходимо понятие подстановки кортежа вместо переменной. Определение 10.1. Пусть f (х) — разрешенная формула. Положим R = type (xy f), если type (x, f) определен, иначе R — произвольное подмножество U, содержащее теп (х, /). Тогда в результате подстановки t вместо χ в f получится формула, обозначаемая как / (Их), которая определяется следующим образом: модифицируем каждый атом из /, содержащий свободное вхождение χ в /, по следующим правилам. al. Если χ в г (х) свободен в /, заменим г (х) на истина, если t £ г, в противном случае заменим г (х) на ложь. а2. Если χ в χ (А) 6у (В) свободен в /, заменим в случае χ Φ у χ (А) на константу с £ dom (А), где t (А) = с. То же самое проделаем для атома у (В) θχ (А). Если же χ = у, т. е. атом имеет вид χ (Α) θχ (В), заменим весь атом на истина, если выполнено с^Съ, где сг = t (A), a c2 = t (В). В противном случае заменим атом на ложь. аЗ. Если χ в χ (A) Qc входит свободно в /, заменим весь атом на истина, если выполнено cfic, где сг = t (А); в противном случае заменим атом на ложь. Аналогично поступаем с сдх (Л). Отметим, что мы слегка расширили определение формулы, разрешив в качестве атомов булевы константы истина и ложь. При таком расширении / {Их) становится разрешенной формулой (если / (х) была разрешена (см. упр. 10.4)). Пример 10.12. Рассмотрим формулу f (х): У У (Rs) (1 наличие {у) У Л у (ЧАСТЬ-№) = χ (ЧАСТЬ-№) V У (КОЛИЧЕСТВО) <: χ (КОЛИЧЕСТВО) V * (АДРЕС) = «Нью-Йорк»).
242 Гл. 10. Системы запросов Пусть t — кортеж (2114 Чикаго 28) над схемой R3 = ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО. Тогда / (t/x) — это формула Vy(Rs) С] наличие (у) V Л У (ЧАСТЬ-№) = 2114 V у (КОЛИЧЕСТВО) < 28 V ложь). Пример 10.13. Рассмотрим формулу / (у): ^наличие (у) V Л У (ЧАСТЬ-№) = 2114 V У (КОЛИЧЕСТВО) <: 28 V ложь. Пусть t — кортеж (2116 Бостон 341) над схемой R3. Тогда / (tly) есть ~\ истина V 1 ложь V ложь V ложь. Пусть t = (2114 Нью-Йорк 6). Тогда / (tly) есть ~\ истина \J ~] истина \J истина V ложь. Определение 10.2. Пусть / — разрешенная формула без свободных переменных, в которой могут встречаться атомы истина и ложь. Интерпретация I (/) формулы /определяется рекурсивно посредством Н. Если / = истина, то / (/) = истина. Если / = ложь, то / (/) = ложь. 12. Если / = "]£, то в g нет свободных переменных, а / (/) = = истина, если / (g) = ложь; I (f) = ложь, если / (g) = истина. f3. Если f = g /\ h или f = g\Jh, roBguh нет свободных переменных. Если / = g Д А, то положим / (/) = истина в точ-ч ности тогда, когда I (g) = I (A) = истина, в противном случае / (/) = ложь. Если / = g \J А, то положим / (/) = ложь в точ- t ности тогда, когда I (g) = I (А) = ложь, в противном случае / (/) = истина. f4. Если f = 3х (R) 8у то х — единственная свободно входящая в g переменная (см. упр. 10.5). Положим / (/) = истина, если в dom (R) есть по крайней мере один кортеж t, такой, что / (g (t/x)) = истина-, в противном случае / (/) = ложь. f5. Если f — \/х (R) gy то χ — единственная свободно входящая в g переменная. Положим / (/) = истина, если для каждого кортежа t из dom (R): I (g (t/x)) = истина; в противном случае / (/) = ложь. f6. Если / = (g), то /(/) = / (g). Пример 10.14. Рассмотрим формулу /: 3* (R3) (наличие (х) Д χ (АДРЕС) = «Нью-Йорк» Д V У (#з) (1 наличие (у) V Л У (ЧАСТЬ-№) = х (ЧАСТЬ-№) V у (КОЛИЧЕСТВО) < χ (КОЛИЧЕСТВО))),
10.2. Реляционное исчисление кортежей 243 где, как и прежде, R3 = ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО. Интуитивно ясно, что / (/) = истина, если для некоторой запчасти ее запасы в Нью-Йорке больше, чем в любом другом месте. Вычислим / (/) для базы данных из табл. 10.1. Формула / имеет вид 3х (Rs) g (х)> так что нужно узнать, выполнено ли / (g (t/x)) = = истина для некоторого t ζ dom (R3). Вместо того чтобы проверять все такие кортежи, заметим, что g (χ) имеет вид наличие (х) Д g' (x), так что нужно проверять только те кортежи из dom (R3), которые появляются в отношении наличие. (С использованием сокращений / можно представить в виде з* (Rs) (: наличие 8' (*)·) Дополнительное изучение формулы позволяет заключить, что необходимо испытать только те кортежи из наличие, значение которых в столбце АДРЕС есть Нью-Йорк. Сначала испытаем кортеж t = (2114 Нью-Йорк 6). Получим g (β/χ) == (истина Д истина Д V У (Rs) (1 наличие (у) у 1 у (ЧАСТЬ-№) = 2114 V У (КОЛИЧЕСТВО) <: 6)), что упрощается до УУ (Rs) (1 наличие (у) У Л у (ЧАСТЬ-№) = 2114 V у (КОЛИЧЕСТВО) <: 6). Эта формула имеет вид Vi/ (Rs) h (у)> так что необходимо проверить, верно ли / (h (и/у)) = истина для каждого кортежа и £ £ dom (Rs)- Исследование можно и в этом случае ограничить: так как h (у) имеет вид ~] наличие (у) V Α' (ί/)> необходимо рассматривать только кортежи из отношения наличие. Переходя к делу, выбрав и = (2114 Чикаго 28), мы получим h (и/у) = (1 истина V 1 истина У ложь). Ясно, что / (h (и/у)) = ложь, так что / (g (t/x)) = ложь. Вернемся назад и испытаем t — (211 Нью-Йорк 106). Теперь g (t/χ) = (истина Д истина Д \'у (R3) (] наличие (у) У 1 у (ЧАСТЬ-№) =211 \J у (КОЛИЧЕСТВО) <: 106)), что упрощается до V У (Rs) (1 наличие (у) У 1 у (ЧАСТЬ-№) = 211 V у (КОЛИЧЕСТВО) <: 106). Мы опять получили формулу вида γ у (R3) h (у), так что необходимо проверить, что / (h (и/у)) = истина для каждого кортежа и £ dom (R3). Как и прежде, необходимо проверять лишь кортежи из наличие. Любой выбор и дает / (h (и/у)) = истина.
244 Гл. 10. Системы запросов Например, если и = (2116 Чикаго 29), то h (и/у) = Q истина V ~] ложь V истина), так что / (h (и/у)) = истина. Если и = (211 Бостон 28), то h (и/у) = ("| истина V "| истина V истина), так что / (/ι (α/y)) = истина. Значит, / (g (t/x)) = истина и, следовательно, / (/) = истина. Отметим, что / (/) = ложь, если неравенство у (КОЛИЧЕСТВО) <: χ (КОЛИЧЕСТВО) заменить на у (КОЛИЧЕСТВО) < χ (КОЛИЧЕСТВО) (см. упр. 10.7). Теперь можно определить, какое отношение определяет выражение исчисления кортежей. Определение 10.3. Пусть Ε = \х (R) \ f (x)} — выражение над исчислением кортежей Т^в = (U, 2D, dom, R, d, Θ). Значением выражения Ε на текущем состоянии базы данных d назовем отношение Ε (d) со схемой R, содержащее все кортежи t ζ dom (R)9 такие, что I (/ (β/χ)) = истина. Пример 10.15. Выражение Ε = \х (ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ) | з У (Ri) £ £ детали (у (ДЕТАЛЬ-ЧАСТИ-№) = 211 Д χ (ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ) = у (ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ))}, где R± = ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ ДЕТАЛЬ-ЧАСТИ-№ является формализацией выражения из прим. 10.2. Пусть / (х) — формула из этого выражения. Чтобы вычислить Ε (d), где d — база данных из табл. 10.1, нужно найти все кортежи t £ dom (ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ), такие, что / (/ (t/x)) = истина. Изучение формулы показывает, что проверять нужно только кортежи из ячасть-яо название-части (детали). Если ί = (211 кресло), то / (t/χ) = зу (fli) £ детали (у (ДЕТАЛЬ-ЧАСТИ-№) = 211 Λ 211 = у (ЧАСТЬ-№) Λ «кресло» = = у (НАЗВАНИЕ-ЧАСТИ)). Соотношение / (/ (t/x)) = истина имеет место только тогда, когда в детали имеется кортеж (211 кресло). Но его там нет,' поэтому (211 кресло) не лежит в Ε (d).
10.2. Реляционное исчисление кортежей 245 Если t = (2114 чехол кресла), то / (Их) = ЗУ (Ri) 6 детали (у (ДЕТАЛЬ-ЧАСТИ-№) = 211 Д 2114 = у (ЧАСТЬ-№) Д «чехол кресла» = у (НАЗВАНИЕ-ЧАСТИ)). Значение / (/ (t/x)) = истина, так что (2114 чехол кресла) лежит в Ε (d). Единственный другой выбор ί, такой, что / (/ (t/x)) — истина, — это t = (2116 привязной ремень), поэтому Ε (d) — отношение из табл. 10.2. Пример 10.16. Выражение из примера 10.3 может быть формализовано как Ε = \х (ЧИСЛО) | э * (#а) 6 использование (х (ЧИСЛО) = ζ (ЧИСЛО) Λ * (ТИП-САМОЛЕТА) = «727» Λ ЗУ (#ι) € детали (ζ (ЧАСТЬ-№) Д у (ЧАСТЬ-№) Λ У (НАЗВАНИЕ-ЧАСТИ) = «кресло»))}, где R2 = ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО, a Rx остается таким же, как и в предыдущем примере. Значение Ε (d), где d — база данных из табл. 10.1, приводится в табл. 10.3. Отметим, что и в этом, и в предыдущем примере для перехода от неформальной версии выражения к формальной понадобилась дополнительная переменная. Эта дополнительная переменная служит обозначением проекции, которая неявно используется в неформальной версии. Пример 10.17. Рассмотрим выражение Ε = \х (R2) | 1 использование (х) V х (ТИП-САМОЛЕТА)^ «707»}. где R2 остается таким же, как и в предыдущем примере. Если хотя бы один из доменов для ЧАСТЬ-№, ТИП-САМОЛЕТА или ЧИСЛО бесконечен, то Ε (d) будет бесконечным отношением, так как вне использование лежит бесконечно много кортежей. Дополнение к Ε (d), где d — база данных из табл. 10.1, см. в табл. 10.4. В данном случае (но не во всех) дополнение конечно (см. упр. 10.13). Таблица 10.4. Дополнение к Ε (d) (ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО) 211 727 134 2114 727 134 2116 727 296 21164 727 592
246 Гл. 10. Системы запросов Таблица 10.5. Отношение названий частей и типов самолетов (НАЗВАНИЕ-ЧАСТИ ТИП-САМОЛЕТА) привязной ремень 707 привязной ремень 727 крепление ремня 707 крепление ремня 727 Пример 10.18. Рассмотрим выражение Ε = \х (НАЗВАНИЕ-ЧАСТИ ТИП-САМОЛЕТА) | ЗУ (#ι) € £ детали gz (R2) £ использование (у (ЧАСТЬ-№) = ζ (ЧАСТЬ-№) Λ х (НАЗВАНИЕ-ЧАСТИ) = у (НАЗВАНИЕ-ЧАСТИ) Д * (ЧИСЛО) > 200 Д χ (ТИП-САМОЛЕТА) = ζ (ТИП-САМОЛЕТА))}, где Rx и R2 остаются, как в предыдущих примерах. Значение Ε (d) дает типы самолетов и название деталей, которые используются в самолете в количестве более 200 штук. Для базы данных из табл. 10.1 Ε (d) дано в табл. 10.5. ДО.З. СВЕДЕНИЕ РЕЛЯЦИОННОЙ АЛГЕБРЫ С ДОПОЛНЕНИЕМ К РЕЛЯЦИОННОМУ ИСЧИСЛЕНИЮ КОРТЕЖЕЙ В этом разделе сначала показывается, что исчисление кортежей не менее выразительно, чем реляционная алгебра с дополнением. Затем устанавливается, что они одинаково выразительны. В разд. 10.4 будет дана иная интерпретация формул исчисления кортежей, при которой исчисление кортежей и реляционная алгебра без дополнения одинаково выразительны. Теорема 10.1. Пусть 31 = (U, 3), domt R, d, Θ, Ο) — реляционная алгебра с дополнением, а Т<& = (U, £D9 domf R, d, Θ) — исчисление кортежей. Тогда для любого выражения Ε над 01 найдется эквивалентное выражение F над ЗГ<&9 т. е. Ε (d) = F (d) для любого состояния d. Доказательство. Как было отмечено в разд. 10.1, можно считать, что Ε возникло из подалгебры Ж', где О заменено следующим множеством операций: переименование, выбор с одним знаком сравнения, проекция, естественное соединение, объединение, разность и дополнение, причем допускаются только одноатрибутные постоянные отношения с одним кортежем. Доказательство будем проводить индукцией по числу операций в Е.
10.3. Сведение к реляционному исчислению кортежей 247 База индукции (нет операций). В этом случае Ε или постоянное отношение, или отношение из d. В случае Ε = (а : А) положим F = \х (А) | χ (А) = а}. В случае Ε = г, где г — отношение со схемой R, положим F = \х (R) \ г (х)}. Шаг индукции. Предположим, что утверждение теоремы справедливо для любого выражения реляционной алгебры, содержащего менее k операций. Пусть выражение Ε содержит k операций. Случай 1 (переименование): Ε = δΑν А^ апГв1, в2 вт(Е\). Так как в Ег менее чем k операций, то существует выражение исчисления кортежей \х (R) | / (х)\, эквивалентное Ег. Положим F равным \y(S)\3*{R){f(x) he(x> y))l где S = (R — АгА2 ... Am) ВгВ2 ... #m> a g (x, у) — формула, являющаяся конъюнкцией атомов у (С) = χ (С) для каждого С из R — АгА* ... Ат и у (Bi) = χ (At) для 1 < i <: m. Случай 2 (выбор): Ε = σΜο (Ег) или σΜΒ (£Ί). Пусть \х (R) | / (х)} — выражение исчисления кортежей, эквивалентное Е1ш Положим F равным \х (R) \ f (χ) Д χ (A) Qc\ или \x(R)\f(x) Ax(A)Qx(B)\. , Случай 3 (проекция): Е = πχ (Ег). Этот случай оставляется читателю (см. упр. 10.10). Случай 4 (соединение): Ε = Е1>< £2. Пусть \х (QR) \ f (x)\ и \у (RS) | g (y)\ — выражения исчисления кортежей, эквивалентные Ех и E2i причем QR fl RS = R- Положим F равным \z (QRS) \ зх (QR) ЗУ (RS) (f (x) Л 8 (у) Λ ζ (QR) = χ (QR) Λ ζ (RS) = у (RS))\. Случай 5 (объединение): Ε = Ех [} £2. Этот случай оставляется читателю (см. упр. 10.10). Случай 6 (разность): Ε = Ех—£2. Этот случай оставляется читателю (см. упр. 10.10). Случай 7 (дополнение): Ε = Ег. Пусть \х (R) \ f (x)\ — выражение исчисления кортежей, эквивалентное Ег. Положим F ={*(/?) Π/(*)}. Пример 10.19. Рассмотрим алгебраическое выражение Ε = Ядеталь-части-яо число (детали >< аТИП-сАМ0ЛЕтА=«747» (использование))
248 Гл. 10. Системы запросов для базы данных из табл. 10.1. Выражения исчисления кортежей, эквивалентные выражениям отношений детали и использование — это \х (RJ | детали (х)} и {у (R2) \ использование (у)\, где Ri = ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ НАЗВАНИЕ-ЧАСТИ, a R2 = ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО. Для огтип-самолета=«747» (использование) получаем выражение \У (Rz) | использование (у) Д У (ТИП-САМОЛЕТА) =«747»}. Положим R = ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ ТИП-САМОЛЕТА ЧИСЛО. Тогда выражение, эквивалентное детали >< атип-сАмолЕТА=747 (использование), — это \z (R) | 3х (Ri) ЗУ №) (детали (х) Д использование (у) Д у (ТИП-САМОЛЕТА) = «747» Д ζ (Rx) = χ (R±) Д z(Rt) = y(RM\. Наконец, выражение исчисления кортежей, эквивалентное £, — это {w (ДЕТАЛЬ-ЧАСТИ-№ ЧИСЛО) | а* (R) (3* (Ri) ЗУ (R%) (детали (х) Д использование (у) Д у (ТИП-САМОЛЕТА) = = «747» Α ζ (RJ = χ (RJ Д ζ (R2) = у (R2)) Д w (ДЕТАЛЬ-ЧАСТИ-№) = ζ (ДЕТАЛЬ-ЧАСТИ-№) Д w (ЧИСЛО) = ζ (ЧИСЛО))}. 10.4. ОГРАНИЧЕННАЯ ИНТЕРПРЕТАЦИЯ ФОРМУЛ ИСЧИСЛЕНИЯ КОРТЕЖЕЙ В случаях когда исчисление кортежей используется как основа системы запросов, данная выше интерпретация формул исчисления кортежей представляет на практике некоторые трудности. Во-первых, эти формулы могут определять бесконечные отношения. Во-вторых, неясно, можно ли эффективно интерпретировать произвольную формулу вида Э* (R) f (x) или у* (R) Ϊ ДО- Данная выше интерпретация требовала бы, похоже, исследования всего dom (R)> который может быть бесконечным. Даже если все атрибуты из R имеют конечные домены, dom (R) может оказаться слишком велик, чтобы с ним можно было работать. Мы представим альтернативную интерпретацию формул, при которой кортежи будут ограничены так, чтобы они состояли из значения доменов, которые появляются в формуле или в отношениях, упоминаемых в формуле. Интерпретация, введенная первой, будет называться неограниченной, а вторая — ограниченной. Будет вве-
10.4. Ограниченная интерпретация формул 249 ден также класс выражений исчисления кортежей, для которого обе интерпретации совпадают. В последующих построениях предполагается, как и в гл. 3, что домены для разных атрибутов либо совпадают, либо не пересекаются. Это предположение делается исключительно в целях упрощения изложения. Можно допустить произвольные пересечения доменов при условии, что имеется средство перечислить значения из данного домена, появляющиеся где-либо в отношении. Определение 10.4. Пусть / — формула исчисления кортежей, а Л — атрибут. Расширенным активным доменом А по отношению к /, обозначаемым как edom (Л), назовем множество всех значений из dom (Л), которые появляются в отношениях, упоминаемых в /, или являются константами в /. Не исключена возможность того, что edom (Л, /) = 0. Это может случиться, если в / не упоминаются атрибуты с доменами dom (Л). Обозначим через edom (R, /), где R — множество атрибутов, множество кортежей t со схемой R, таких, что / (Л) £ £ edom (Л, /) при Л £ R. Пример 10.20. Предположим, что атрибуты ЧАСТЬ-№ и ДЕ- ТАЛЬ-ЧАСТИ-№ из базы данных из табл. 10.1 имеют один и тот же домен. Рассмотрим формулу /: МУ (Ri) € детали (217 Φ у (ДЕТАЛЬ-ЧАСТИ-№) V В* (R*) € наличие {ζ (ЧАСТЬ-№) = у (ЧАСТЬ-№) Λ г (АДРЕС) = χ (АДРЕС) Λ ζ (КОЛИЧЕСТВО) > 0))), где R1 и R3 остаются теми же, что и в предыдущих примерах. Эта формула описывает места, в которых хранятся детали запчасти 217. При состояниях отношений детали и наличие из табл. 10.1 edom (ЧАСТЬ-№, /) = edom (ДЕТАЛЬ-ЧАСТИ-№, /) = = |0, 206, 211, 217, 318, 2061, 2066, 2068, 2114, 2116, 21163, 21164}. Существует некоторое алгебраическое выражение, которое описывает edom (ЧАСТЬ-№, /) через текущее состояние детали и наличие. Это Ячасть-яо {детали) {] яЧасть-№ (наличие) [} (217: ЧАСТЬ-№) U 6деталь-части-№^часть-№(ядеталь-части-№ (детали)).
250 Гл. 10. Системы запросов По теореме 10.1 имеется также выражение исчисления кортежей, эквивалентное данному. Отметим, что edom (Л, g) s ^ edom (A, /), если g— подформула формулы / исчисления кортежей, а А — атрибут. Дадим теперь ограниченную интерпретацию формулы / исчисления кортежей без свободных переменных. Эта интерпретация будет обозначаться через i (/); ее определение отличается от определения / (/) только в случаях f4 и f5, касающихся кванторов з и V· Эти случаи будут заменены на f4'. Если f = 3х (R) §> т0 i (f) = истина, если существует по крайней мере один кортеж t £ edom (R, g), такой, что i (g (t/x)) = истина. В противном случае i (/) = ложь. В'. Если / = V* (R) g> T0 i (/) = истина, если для каждого кортежа t £ edom (R, g) выполнено i (g (t/x)) = истина. В противном случае i (/) = ложь. Ограниченной интерпретацией выражения Ε = \х (R) \f(x)\ исчисления кортежей назовем отношение над /?, состоящее из кортежей t £ edom (R, /), таких, что i (f (t/x)) — истина. Определенные раньше интерпретации формул и выражений будем называть неограниченными. В примерах 10.15, 10.16 и 10.18 ограниченная и неограниченная интерпретации дадут одно и то же значение. Однако значением выражения из прим. 10.17 при ограниченной интерпретации окажется конечное отношение. Ограниченная интерпретация выражений всегда дает конечное отношение, так как edom (/?, /), которым ограничен выбор, является конечным множеством для любой формулы /. Точно так же ограниченная интерпретация формул вида \/х (R) §[ и ]х (R) g эффективна, так как i (g (t/x)) необходимо вычислять только для кортежей из edom (R, g). Пример 10.21. Следующее выражение {* (ЧАСТЬ-№) | чу (RB) ζ наличие χ (ЧАСТЬ-№) Φ у (ЧАСТЬ-№)} для любого состояния базы данных с табл. 10.1 даст при ограниченной интерпретации пустое отношение (переменный кортеж χ изменяется только в пределах списка значений, появляющихся в наличие). Пример 10.22. Предположим, что в базе данных из табл. 10.1 dom (ЧАСТЬ-№) = dom (ДЕТАЛЬ-ЧАСТИ-№). Тогда выражение Е = \х (ДЕТАЛЬ-ЧАСТИ-№) | уу (Rx) £ детали χ (ДЕТАЛЬ-ЧАСТИ-№) φ у (ДЕТАЛЬ-ЧАСТИ-№)}
10.4. Ограниченная интерпретация формул 251 Таблица 10.6. Значение Ε (d) при ограниченной интерпретации (ЧАСТЬ-№) 21 163 2 061 2 066 2 068 не всегда дает при ограниченной интерпретации пустое отношение. Переменная χ меняется в пределах списка запчастей, появляющихся в столбцах ЧАСТЬ-№ и ДЕТАЛЬ-ЧАСТИ-№ отношения детали. Для состояния базы данных d, приведенного в табл. 10.1, значение Ε (d) при ограниченной интерпретации дано в табл. 10.6. 10.4.1. Сведение реляционной алгебры к исчислению кортежей при ограниченной интерпретации ^ Как было замечено, при ограниченной интерпретации выражение исчисления кортежей всегда дает конечное отношение. Точно так же алгебраическое выражение, в котором не употребляется операция дополнения, всегда обозначает конечное отношение. Это совпадение не случайно: Теорема 10.2. Пусть Ж = (U, £), domf R, d, Θ, О) —реляционная алгебра (без дополнения), а Т<ё — (U, к), dom, R, d, Θ) — исчисление кортежей. Тогда для любого алгебраического выражения Ε над Ж существует выражение F исчисления кортежей 5ΓΨ, такое, что при ограниченной интерпретации Ε эквивалентно F. Доказательство. К данной теореме применимо доказательство теоремы 10.1 с опущенным случаем 7. Действительно, использованные во всех остальных случаях выражения исчисления кортежей имеют одинаковые значения как при ограниченной, так и при неограниченной интерпретации. Детали доказательства оставляются читателю (см. упр. 10.18). 10.4.2. «Безопасные» выражения исчисления кортежей Хотя исчисление кортежей при ограниченной интерпретации не менее выразительно, чем реляционная алгебра, оно оставляет желать лучшего при использовании в качестве основы языка запросов. Значение выражения может зависеть от столбцов в отношениях, атрибуты которых даже не упоминались в выражении.
252 Гл. 10. Системы запросов Еще один подход к проблеме конечности значений выражений и эффективности интерпретаций формул с кванторами — это использование только таких выражений, для которых ограниченная и неограниченная интерпретации заведомо совпадают. Определение 10.5. Выражение \х (R) \ f (х)\ исчисления кортежей называется безопасным, если выполнены следующие три условия: si. / (/ (t/x)) = истина влечет за собой t £ edom (R, f). s2. Если ί/, zlf 22, ..., zk суть все свободные переменные, входящие в g, а ЗУ (S) ё (Уу гъ h, .·> zk) — подформула формулы /, то I (ё (Му> ul/z1, u2/z2f ..., uk/zk)) = истина влечет за собой t £ edom (S, g). s3. Если у, zlf z2, ..., zk суть все свободные переменные, входящие в g·, a Vi/ (S) g (у, г19 г2, ..., zk) — подформула формулы /, то t φ edom (S, g) влечет за собой / (g (t/y, ujzly u2/z2t ..., uhlzh)) = истина. Условие si гарантирует конечность значения выражения при неограниченной интерпретации. Условия s2 и s3 гарантируют эффективность неограниченной интерпретации формулы, так как для интерпретации з# (S) g и у у (S) g необходимо проверить только конечное число кортежей. Если каждый квантор, встречающийся в формуле /, является частью сокращения з# (S) € G s£ (У) или W (S) £ SS (У)» то условия s2 и s3 выполняются. Действительно, сокращение з# (S) £ sg (у) обозначает з# (S) h (у), где h (у) = s (у) /\ g (у). Каждый кортеж t £ s лежит, очевидно, в edom (S, Λ), так что наличие в h (у) атомарной формулы s (у) гарантирует, что при t φ S формула h (t/y) не может быть интерпретирована как истина независимо от значений остальных свободных переменных. Аналогично, у у (S) £ sg (у) заменяет Μ У (S) h (у), где h(y) = 1 s (#) V ё (#)· Ясно, что кортеж t φ φ edom (S, h) не лежит в s, так что g (ί/ί/) интерпретируется как истина для любой такой переменной t. Если же формула / (х) имеет вид г (х) Д /' (я) для некоторого отношения г, то выполнено условие si. Пример 10.23. Выражение \х (R2) | использование (х) Д з# (#з) 6 наличие (х (ЧАСТЬ-№) - у (ЧАСТЬ-№) Д у (КОЛИЧЕСТВО) ^ 100)} над базой данных из табл. 10.1 безопасно по указанным выше причинам. Здесь, как и ранее, R2 и R3 обозначают схемы отношений использование и наличие.
10.4. Ограниченная интерпретация формул 253 Пример 10.24. Выражение \х (R2) | использование (х) V ЗУ (Rs) £ наличие (х (ЧАСТЬ-№) Л у (ЧАСТЬ-№) Л У (КОЛИЧЕСТВО) ^ 100)} не безопасно, так как его неограниченная интерпретация для базы данных из табл. 10.1 содержит, например, кортеж (2116 707 83), который не лежит в расширенном активном домене R2 для формулы из выражения. Пример 10.25. Выражение {х (НАЗВАНИЕ-ЧАСТИ ТИП-САМОЛЕТА) | чу (Λι) £ детали 3Ζ (Яг) € использование (у (ЧАСТЬ-№) = ζ (ЧАСТЬ-№) Λ х (НАЗВАНИЕ-ЧАСТИ) - у (НАЗВАНИЕ-ЧАСТИ) Д χ (ТИП-САМОЛЕТА) = у (ТИП-САМОЛЕТА))} безопасно, хотя в нем и нет члена вида г (х). Кортеж tf который лежит в значении этого выражения, сдолжен иметь значение в столбце НАЗВАНИЕ-ЧАСТИ, встречающееся в отношении детали, и значение в столбце ТИП-САМОЛЕТА, встречающееся в отношении использование. Некоторый класс «безопасных» выражений, к которому принадлежит и это выражение, описан в упр. 10.20. Лемма 10.1. Для любого безопасного выражения Ε исчисления кортежей ограниченная и неограниченная интерпретации Ε совпадают. Доказательство предоставляется читателю (см. упр. 10.21). Теорема 10.3. Для любого выражения Ε исчисления кортежей найдется безопасное выражение F, эквивалентное Ε при ограниченной интерпретации. Доказательство. Как видно из упр. 10.22, для произвольной формулы g исчисления кортежей существует другая формула А, такая, что значение \у (X) \ h (y)\ при неограниченной интерпретации есть edom (S, g), где S — заданное множество атрибутов. Более того, edom (S, g) = edom (S, /ι), так что edom (S, g) = = edom (S, g Д h) = edom (S, g V 1 A)· Пусть Ε имеет вид \х (R) \ f (x)}. Найдем сначала формулу /', такую, что i (f (t/x)) = I (/' (tlx)) для произвольного t £ dom (R). Единственное, чем отличается i и I — это интерпретация подформул с кванторами. Определим /', модифицируя такие подформулы. Для подформулы ЗУ (S) g (у) возьмем упомянутую выше формулу h (у) и заменим эту подформулу на з# (S) (g (у) Д h (у)). Тогда ί (ё (t/y)) = / (g (t/y) Д h (t/y)) для произвольного t £ edom (S, g) и I (g (tly) Λ h (tly)) = ложь ПРИ t Φ edom (Sf g) (если i (g (t/y)) = = / (g (t/y)). Значит, модифицированная подформула имеет не-
254 Гл. 10. Системы запросов ограниченную интерпретацию, совпадающую с интерпретацией первоначальной подформулы. Для подформулы вида γУ (S) g (у) пусть снова h (у) — упомянутая выше формула. Заменим подформулу на уу (S) (g (у) V 1 h (у)). Предположим, что i (g (t/y)) = I (g (t/y)). Тогда i (g Ш) = I (g (t/y)) Л 1 A (t/y) при t £ edom (S, g)9 a J (g Wy)) V 1 A (t/y) = истина при ί ^ Ыот (S, g). Значит, модифицированная подформула имеет неограниченную интерпретацию, совпадающую с ограниченной интерпретацией первоначальной подформулы. Если проделать эти модификации над всеми подформулами /, начиная изнутри, то в результате получится формула /', такая, что i (f (tlx)) = / (/' (t/x)) (так как подформулы в появляющихся формулах к не модифицируются, то процесс должен когда-нибудь закончиться). Для завершения доказательства найдем формулу Ь!, такую, что \х (R) \ К (х)\ = edom (#, /). Тогда \х (R) \ f (χ) Д Д к (х)\ будет искомым выражением F. 10.5. РЕЛЯЦИОННОЕ ИСЧИСЛЕНИЕ ДОМЕНОВ Реляционное исчисление доменов напоминает реляционное исчисление кортежей, за тем исключением, что переменные этого исчисления являются переменными значениями из доменов, а не переменными кортежами. Кроме того, символы отношений не унарные, а могут иметь несколько переменных. Чтобы не допустить путаницы в обозначениях, необходимо будет зафиксировать порядок атрибутов в отношении. Так как исчисление доменов и исчисление кортежей напоминают во многом друг друга, изложение исчисления доменов будет много короче. Дадим сначала несколько неформальных примеров, использующих базу данных из табл. 10.1. Пример 10.26. Выражение \ху \ детали (xzy) Д ζ = 206} представляет все пары «номер части» — «название части», которые отвечают деталям запчасти 206. Выражение \ху \ детали (х206у)} представляет те же самые пары. Общее значение этих двух выражений представлено в табл. 10.7. Пример 10.27. Выражение \ХУ I 3 ζ 3 w (использование (zxy) Д детали (zw («кресло»))} представляет число кресел, используемых в каждом типе самолетов. Значение этого выражения показано в табл. 10.8. Исчисление доменов определяется тем же способом, что и исчисление кортежей, а именно как шестерка (U, 3), dom, R, d, θ). Формулы исчисления доменов строятся из переменных исчисления
10.5. Реляционное исчисление доменов 255 Таблица 10.7. Пары «название части»—«номер части» (ЧАСТЬ 2061 2066 2068 -№ Таблица 10.8. Число НАЗВАНИЕ-ЧАСТИ) кнопка вызова выключатель освещения вентилятор используемых кресел (ТИП-САМОЛЕТА ЧИСЛО) 707 727 86 134 доменов с использованием отношений, знаков сравнения и связок 1, Д, V» Э и V· Основными строительными блоками являются атомы: al. Если г — отношение из d со схемой АгА2 ... Ап, то г (а^ ... ап) — атом, где каждый символ а% — либо переменная исчисления доменов, либо постоянная из dom {At). а2. Если χ и у — переменные исчисления доменов, θ — знак сравнения, ас — произвольная постоянная, то хву, хЬс и свх — атомы. аЗ. Булевы постоянные истина и ложь — атомы. Атомы можно рекурсивно комбинировать, получая при этом формулы И. Произвольный атом является формулой. f2. Если / — формула, то 1/ — формула. f3. Если fug — формулы, то f /\ g и f \J g тоже формулы. f4. Если / — формула, то gx (A) f тоже формула, где А — атрибут из U, а л: — переменная исчисления доменов. f5. Если / — формула, то V* (A) f тоже формула, где А — атрибут из U, ax — переменная исчисления доменов. f6. Если / — формула, то (/) тоже формула. Старшинство связок остается тем же, что и в исчислении кортежей. Пример 10.28. Следующая формула исчисления доменов аналогична формуле исчисления кортежей из примера 10.5: 3*ι (ЧАСТЬ-№) з*2 (АДРЕС) з*з (КОЛИЧЕСТВО) (наличие (ХгХ2Хз) Λ (*ι = У Λ 1 хз < 20)). Правила для определения свободных и связанных вхождений переменных остаются теми же, что и для исчисления кортежей.
256 Гл. 10. Системы запросов Для обсуждения понятия разрешенной формулы исчисления доменов необходимо ввести типы переменных. Тип переменной χ в формуле / — это или домен из ^>, или неопределенная величина. Предположим опять для простоты изложения, что домены двух атрибутов не пересекаются или совпадают. Формально определять тип переменной и понятие разрешенной формулы мы не будем. Как и в исчислении кортежей, разрешенность — это просто требование согласования типов переменной в подформулах, а также требование, чтобы переменная, связываемая квантором, входила свободно в формулу, следующую за квантором. Пример 10.29. Рассмотрим отношения г (А В С) и s{CD). Для того чтобы формула / = 3* (Ε) Μ у {А) (г (угх) Л s {хх) Л У < *) была разрешена, должно выполняться равенство dom (С) = = dom (D) = dom (£), а атрибуты А и В должны быть осравнимы. При этом условии type (ζ, /) = dom β. Если g — подформула {г (угх) Л s {хх) Л У < ^)» то type (x, g) = dom С, type (у, g) = dom (A). В тех случаях, когда переменные связываются кванторами, полезно использовать домены, а не атрибуты для обозначения типов. Однако впоследствии, когда исчисление доменов будет сводиться к реляционной алгебре, будет полезно работать с атрибутами. Подстановка постоянной с из домена вместо переменной χ исчисления доменов, свободно входящей в формулу /, результат которой обозначается как / (с/х), определяется так же, как и в исчислении кортежей. При этом предполагается, что с ζ £ type (χ, /). Каждое свободное вхождение χ заменяется на с, после этого атомы, целиком состоящие из постоянных, заменяются на булевы постоянные истина и ложь по известным правилам. Пример 10.30. Рассмотрим формулу / = использование (х «707» у) /\ yw (КОЛИЧЕСТВО) (1 наличие (х «Нью-Йорк» w)\Jw^y\Jx = 2116). Переменная χ свободна в /; /(211/л;)—это g= использование (211 «707» у) Д V^ (КОЛИЧЕСТВО) Π наличие (211 «НЬЮ-ЙОРК» 2) \J w ^ у \J ложь). Переменная у свободна в g-; g- (86/y) — это
10 5. Реляционное исчисление доменов 257 истина Д V w (КОЛИЧЕСТВО) (1 наличие (211 «Нью-Йорк» 2) V w ^ 86 V ложь), что можно упростить до V w (КОЛИЧЕСТВО) (1 наличие (211 «Нью-Йорк» 2) V w ^ 86). Неограниченную интерпретацию формулы / исчисления доменов обозначим через / (/). Определение совпадает по существу с определением для случая формулы исчисления кортежей. Для формулы f = 3х (A) g (χ) значение / (/) = истина тогда и только тогда, когда существует с £ dom (А), такое, что / (g (с/χ)) = истина. Для формулы / = V* (Л) g (χ) значение / (/) = истина тогда и только тогда, когда для каждого с £ dom (А) выполнено I (ё (°/χ)) = истина. Пример 10.31. Рассмотрим формулу^ h: V w (КОЛИЧЕСТВО) (1 наличие (211 «Нью-Йорк» w) у w ^ 86) из конца примера 10.30. Чтобы вычислить / (/ι), необходимо вычислить I(h' (с/х)) для каждого с £ dom (КОЛИЧЕСТВО), где Ы (w) — это формула "| наличие (211 «Нью-Йорк» w) V w ^> 86. Часть К до знака дизъюнкции интерпретируется как истина при любом выборе w, отличном от 106, а часть после знака дизъюнкции интерпретируется как истина для каждого с ζ dom (КОЛИЧЕСТВО). Значит, / (h) = истина. Выражение исчисления доменов 2)Ψ имеет вид \Х1 C^l) %2 (^2/ · · · хп \Лп) I / \ХЪ Χ2ι · · ·> хп)\> где 1. Формула / исчисления доменов разрешена, а х19 х2, ..., хп — все свободные переменные, входящие в /. 2. Атрибуты Alf А2, ..., Ап из U различны. 3. type (xi9 f) = dom (At) при 1 < i < п. Значение такого выражения при неограниченной интерпретации— это отношение со схемой АгА2 ... Ап, содержащее все кортежи (clt с2, ..., сп), такие, что ct £ dom (Αι) при 1 < i < η, a I (f (ci/xi, c2/x2t ..., cn/xn)) = истина. Как и прежде, значение выражения Ε на базе данных d обозначается Ε (d). Пример 10.32. Используем формулу из примера 10.30 в выражении исчисления доменов Ε = \х (ЧАСТЬ-№) у (ЧИСЛО) | использование (х «707» у) Д \jw (КОЛИЧЕСТВО) (1 наличие (х «Нью-Йорк» w) \J w ^ ^у V х = 2116)}.
258 Гл. 10. Системы запросов Таблица 10.9. Номера частей и число использованных Таблица (ЧАСТЬ-№ 211 2116 ЧИСЛО) 86 244 10.10. Значение при ограниченной интерпретации (ЧАСТЬ-№) 21 163 2 061 2 066 2 068 Теперь Ε указывает номера частей и количество, в котором они используются в Боинге-707, для тех частей, количество которых в Нью-Йорке равно как минимум количеству, используемому в Боинге-707, а также для запчасти 2116. Значение Ε (d) при неограниченной интерпретации для базы данных, данной в табл. 10.1, показано в табл. 10.9. Как и в случае исчисления кортежей, можно определить ограниченную интерпретацию формул и выражений. Расширенным активным доменом атрибута А в формуле / исчисления доменов (обозначение: edom (Л, /)) назовем множество элементов dom (Л), которые появляются в виде констант в / или встречаются в отношениях, упомянутых в /. Ограниченная интерпретация формулы / исчисления доменов без свободных переменных (обозначение: i (/)) будет отличаться от неограниченной только при наличии в / кванторов. Точнее если f = 3х И) ё (*)» т0 * (/) = истина тогда и только тогда, когда в edom (Л, g) есть постоянная с, такая, что i (g (c/x)) = истина. Аналогично, i (\fx (Л) g (χ)) —- истина тогда и только тогда, когда для каждой постоянной с ζ edom (Л, g) выполнено i (g (c/x)) = истина. При ограниченной интерпретации выражения {*! (AJ х2 (Л2) . . . хп (Ап) \f(xux2,..., хп)}> xt изменяется в пределах edom (Л*, /), 1 < / < п, а / интерпретируется ограниченно. Пример 10.33. Рассмотрим выражение \х (ЧАСТЬ-№) | у/у (ЧАСТЬ-№) уг (НАЗВАНИЕ-ЧАСТИ) 1 детали (ухг) Λ х Φ 318} на примере базы данных из табл. ЮЛ. Предположим, что dom (ЧАСТЬ-№) = dom (ДЕТАЛЬ-ЧАСТИ-№) — множество неотри-
10.6. Сведение исчисления кортежей к исчислению доменов 259 дательных целых чисел. При неограниченной интерпретации значение этого выражения оказывается бесконечным отношением. Значение же при ограниченной интерпретации приведено в табл. 10.10. Определим также класс безопасных выражений исчисления доменов. Выражение К (Λι) х2 (А2) ...хп (Ап) | / (хъ х2, . . ., хп)} безопасно, если выполнены следующие три условия: si. Если / (/ (сг/х1У с2/х2, ..., сп1хп)) = истина, где clf с2, ... ..., сп — постоянные, то ct £ edom (At, /), 1 < i < п. s2. Если ЗУ (A) g (у) — подформула /, то / (g· (с/у)) = истина влечет за собой с £ edom (A, g"). s3. Если \/у (A) g (у) — подформула /, то с^ edom (A, g) влечет за собой / (g· (с/у)) = истина. Эти три условия служат тем же целям, что и соответствующие условия на безопасную формулу исчисления кортежей. Пример 10.34. Выражение из примера 10.32 безопасно. И χ и у должны встречаться в использование, а "| наличие (х «Нью- Йорк» 2) V w ^ У V х = 2116 интерпретируется как истина, если w не встречается в наличие. Выражение из примера 10.33 не безопасно, так как имеются значения х, не появляющиеся в отношении наличие, которые придают формуле значение истина. Следующие два утверждения аналогичны лемме 10.1 и теореме 10.3. Они формулируются без доказательства. Лемма 10.2. Если Ε — безопасное выражение исчисления доменов, то ограниченная и неограниченная интерпретации для Ε совпадают. Теорема 10.4. Для любого выражения Ε исчисления доменов найдется безопасное выражение F этого исчисления, которое эквивалентно Ε при ограниченной интерпретации. 10.6. СВЕДЕНИЕ ИСЧИСЛЕНИЯ КОРТЕЖЕЙ К ИСЧИСЛЕНИЮ ДОМЕНОВ Как мы видели в примере 10.9, каждая формула исчисления кортежей может быть так модифицирована к эквивалентной, что в полученной формуле никакая переменная не связывается в двух различных местах. На протяжении этого раздела мы будем предполагать, что в выражении {х (R) | / (х)\ исчисления кортежей χ не входит связанно в /, а остальные переменные связываются не более чем одним квантором.
260 Гл. 10. Системы запросов Перевод выражения Ε исчисления кортежей на язык исчисления доменов будет проводиться прямолинейно. Пусть Ε имеет вид {л: (R) | / (х)\. Каждая входящая в / переменная у исчисления кортежей соответствует некоторой схеме отношения S, причем либо у входит в ЗУ (S) или \/у (S), либо у = х, a S = R. Пусть S = АгА2 ... Ак. Заменим переменную у исчисления кортежей к переменными уъ ..., yk исчисления доменов. Заменим каждый атом г (у) на г (угу2 ... Уъ)> атомы у (At) θα и аду {At), где а или постоянная, или другая компонента исчисления кортежей на угда и aQyt соответственно. Формулу с квантором ЗУ (S) g преобразуем в ЗУ ι (Аг) ЗУг(А2) .. 3yh(Ak)g, a V!/(S)?-b ШШ Vi/2^2) ··· Vyh(Ah)g. Если же у = χ, a S = R, то заменим χ (R) в начале выражения Ε на у1(А1)у2(А2) ... уп (Ап). Пример 10.35. Выражение исчисления кортежей Ε = \χ (ЧИСЛО) | з * (R2) (использование (ζ) Д χ (ЧИСЛО) = = ζ (ЧИСЛО) Λ * (ТИП-САМОЛЕТА) = «727» Д ЗУ (#ι) (детали (у) Д г (ЧАСТЬ-№) = у (ЧАСТЬ-№) Д у (НАЗВАНИЕ-ЧАСТИ) = «кресло»))} является выражением из примера 10.16 с расшифрованными сокращениями. Заменим χ на хг; ζ на zlt z2, z3, a у на уъ у2, у3. В результате получится выражение исчисления доменов: F = \хг (ЧИСЛО) | з*1 (ЧАСТЬ-№) 3*2 (ТИП-САМОЛЕТА) 3*3 (ЧИСЛО) (использование (ζγζ2ζ3) Д хг = z3 Д z2 = «727» Λ ЗУг (ЧАСТЬ-№) 3ί/2 (ДЕТАЛЬ-ЧАСТИ-№) ЗУз (НАЗВАНИЕ-ЧАСТИ) (детали (уху2у3) Λ *ι = = У1 А Уз = «кресло»))}. Его можно упростить до {хг (ЧИСЛО) | з^1 (ЧАСТЬ-№) (использование (z1«727» xt) Λ ЗУ г (ДЕТАЛЬ-ЧАСТИ-№) (детали (z,y2 «кресло»))) |. Теорема 10.5. Пусть Ε — выражение исчисления кортежей, α F — полученное из Ε указанным выше образом выражение исчисления доменов. Тогда 1. Ε = F при неограниченной интерпретации. 2. Ε = F при ограниченной интерпретации. 3. Если Ε безопасно, то и F безопасно.
10.7. Сведение исчисления доменов к реляционной алгебре 261 Доказательство. 1. Доказательство предоставляется читателю (см. упр. 10.27). 2. Эта эквивалентность следует из утверждения 1 теоремы и наблюдения, что для любого атрибута Л и подформулы g формулы Ε выполнено edom (Л, g) =^= edom (Л, g'), где g' — соответствующая g подформула формулы /. Это же равенство следует из того, что в g и g' упоминаются одни и те же отношения и постоянные. 3. Сочетание з#г (Ai) может появиться в F только как часть подформулы ЗУг (Аг) ЗУ2 (А2) ...ЗУи (Ah) g' (у19 у2, · · ·> Ук)> которая является переводом подформулы з# (S) g (у) формулы Е, где S = АгА2 ... Ak. Пусть с% £ dom (Ai) при 1 <: i < k. Предположим, что / (gf {cjyi, c2ly2, ···> ck/yk)) — истина. Если t — кортеж {съ с2, ..., Ck), то / (g(t/y)) = истина по правилам соответствия между g и g\ Если Ε безопасно, то ί £ edom (R, g), значит, Ci £ edom (Aif g'). Поэтому условие s2 из определения безопасного выражения исчисления доменов выполнено для F. Аналогично может быть показано, что выполнены условия si и s3 этого определения. 10.7. СВЕДЕНИЕ ИСЧИСЛЕНИЯ ДОМЕНОВ К РЕЛЯЦИОННОЙ АЛГЕБРЕ В этом разделе будет показано, что реляционная алгебра с дополнением не менее выразительна, чем исчисление доменов с неограниченной интерпретацией, а реляционная алгебра (без дополнения) не менее выразительна, чем исчисление доменов с ограниченной интерпретацией. Эти результаты вместе с результатами разд. 10.3, 10.4.1 и 10.6 показывают, что реляционная алгебра с дополнением и исчисления доменов и кортежей при неограниченной интерпретации одинаково выразительны. Также окажутся одинаково выразительными реляционная алгебра и исчисления доменов и кортежей при ограниченной интерпретации, поэтому исчисления доменов и кортежей при ограниченной интерпретации полны. Теорема 10.6. Пусть Ε — выражение исчисления доменов ФЪ = (U, 2ΰ, dom, R, d, Θ), а Ж = (U, SD, dom, R, d, Θ, Ο) — реляционная алгебра с дополнением. Если для каждого домена из & существует достаточно много соответствующих ему атрибутов из 11, то существует алгебраическое выражение F над 31, эквивалентное Ε при неограниченной интерпретации.
262 Гл. 10. Системы запросов Доказательство. Пусть Ε = \χλ (Лх) х2 (Л2) ... хп (An) I / (%> Х21 ···> χη)\· Найдем для каждой подформулы g формулы / алгебраическое выражение Fg, эквивалентное {yi(Bi)y2(B2) · ·. Ут(Вт) | g(yi, Уъ · · ·, Ут)), где уг, ..., ут— все свободные переменные в g·, атрибуты Bt выбираются так, чтобы они имели подходящие домены. Во-первых, заменим переменные в / так, чтобы никакая переменная не входила одновременно и свободно и связано в /, а также не связывалась кванторами в двух разных местах. Отметим далее, что каждая переменная ассоциирована теперь с атрибутом, либо (если переменная связана в /) входящим в квантор ух (Л) или 3* (Л), которым связывается переменная, либо (если переменная свободна в /) входящим в сочетание xt (Аг), стоящее слева от вертикальной черты в выражении Е. Пусть att (χ), где χ — переменная из /, обозначает атрибут β, такой, что dom (В) = йот (Л), где А — атрибут, ассоциированный с х, причем att (x) выбирается так, чтобы при χ Φ у было att (χ) Φ att (у) (именно на этом шаге используется условие теоремы о существовании достаточного числа атрибутов для каждого домена). Можно выписать для каждого атрибута А алгебраическое выражение со значением dom (А), например (с : А) {] (с : Л), где с — произвольный элемент из dom (Л). Далее, [Л J будет обозначать алгебраическое выражение со значением dom (Л). Определим теперь рекурсивно для каждой подформулы g формулы / алгебраическое выражение Fg, которое будет эквивалентно исчислению доменов \Уг № (Уг)) У* (att (у2)) · · · Ут (att (ym)) \ g (Уъ У* · · · Ут) \\- Случай 1- Подформула g есть атом вида χ θ у, χ θ χ, χ θ с или с θ χ, где χ и у — переменные исчисления доменов, ас — постоянная из домена. Пусть Л = att (χ), Β = att (у). Алгебраические выражения для этих атомов суть Оавв([А]х[В]), σΑΒΑ([Α])9 aABe([A]) и acBA([A]). Соответственно отметим, что соединение в первом случае обязательно является декартовым произведением. Случай 2. Подформула g есть атом вида г (аг а2 ... ak), где at либо постоянная, либо переменная исчисления доменов. Пусть £>! D2 ··· Dk — схема отношения для г. Положим Bt — att (af), если at — переменная, иначе Bt = Dj. Положим алгебраическое выражение Fg равным πχ(6Ν(σ0(ή)),
10.7. Сведение исчисления доменов к реляционной алгебре 263 где С — условие выбора, являющееся конъюнкцией сравнений Dt = at по всем ί, для которых at — константа; N — переименование Dl9 D2, ..., Dk <- Бь β2, ..., Bk\ Χ — множество атрибутов \Bt \ at — переменная}. Случай 3. Подформула g имеет вид ~] А. Пусть Fh — алгебраическое выражение для А. Положим Fg = Fh. Случай 4. Подформула g имеет вид А Д А'. Пусть свободные переменные из А — это гъ z2, ..., zki vlf υ2, ..., νρ, а из А' — это Zi, z2, ..., 2k, wl9 w2, ..., wq, где переменные υΐ9 υ2, ..., υρ и wu w2, ..., wq попарно не совпадают. Пусть Fh и Fk — алгебраические выражения для А и A', att (vt) = Bt, 1 <: i <: ρ, a att (wt) = = Ci, 1 < ί <: q. Положим ^i = Fh >< [Ci] >< [C2] ><..·>< [Cq], F2 = Fh >< [B\] >< [B2] ><···>< [Bp]. Выражение Fx — это Fh с добавленными столбцами (по одному для каждого атрибута из sch (Fh) — sch (Fh) = C\C2 ... Cq). Выражение F2 — это Fh с добавленными столбцами (по одному для каждого атрибута из sch (Fh) — sch (Fh) = B\B2 ... Bp). Заметим, что sch (F-i) = sch (F2) = [att (у) \ у свободно в g}. Положим Fg равным Fi f] F2. Случай 5. Подформула g имеет вид h \J h'. Этот случай оставляется читателю (см. упр. 10.28). Случай 6. Подформула g имеет вид зх (A) h. Пусть Fh — алгебраическое выражение для A, a att(x) = В. Заметим, что dom (A) = dom (В). Положим Fg равным просто πχ-в (Fh), где Х= sch (Fh). Случай 7. Подформула g имеет вид ух (А) А. Пусть Fh — алгебраическое выражение для A, a att (χ) = В. Положим Fq равным Fh-r-[B] (именно ради этого случая была введена операция деления). Используя рекурсивно эти семь случаев, можно построить выражение F/, эквивалентное \хг (att (хг)) х2 (att (х2)) . .. хп (att (xn)) \ f (хъ х2, .. ., хп)\. Так как att (хг) не обязательно равен Лг·, необходимо еще одно окончательное переименование, которое приводит к алгебраическому выражению F, эквивалентному Е.
264 Гл. 10. Системы запросов Пример 10.36. Пусть Ε = \χ (ЧАСТЬ-№) у (ЧИСЛО) | использование (х «707» у)/\ yw (КОЛИЧЕСТВО) (1 наличие (х «Нью-Йорк» w) V w^y V x= 2116)} выражение исчисления доменов из примера 10.32. Пусть att(x) = = ЧАСТЬ-№, att (у) = ЧИСЛО, a att (ζ) = КОЛИЧЕСТВО. Для сохранения разумного объема соответствующего алгебраического выражения положим FP = [ЧАСТЬ-№], FN = [ЧИСЛО], FQ = = [КОЛИЧЕСТВО]. Алгебраическим выражением для наличие (х «Нью-Йорк» w) является F\ = Ячасть-Яо количество (огадрес=нью-йорк (наличие)). (В данном случае переименование излишне.) Алгебраическое выражение для "1 наличие (х «Нью-Йорк» w) — это Fx. Алгебраические выражения для w 5> у и χ — 2116 — это ^2 = ^КОЛИЧЕСТВО > ЧИСЛО (F Q X Fn) И Fs = СТчАСТЬ-№=2116 (Fp)> Алгебраическим выражением для ~] наличие (х «Нью-Йорк» w) \J w ^ у у χ = 2116 является f4 = (Fi χ FN) (J (F2 χ FP) (J (F3 >< FQ >< FN). После добавления квантора yw (КОЛИЧЕСТВО) получится алгебраическое выражение Fb = F^FQ. Алгебраическое выражение для использование (х «707» у) — это Fq = Ячасть-Яо число (отип-самолета=«707» (использование)). Эквивалентное Ε алгебраическое выражение — это F = F6 f| Fb. Окончательное переименование не требуется. Любопытства ради, выпишем выражение F полностью: Ячасть-№ число (^тип-самолета^^о?» (использование)) Π (((ячасть-яо количество (сгадрес=нью-йорк (наличие)) χ Fm) U (^КОЛИЧЕСТВО > ЧИСЛО (Fq X Fы) >< Fp) U (аЧАСТЬ-№=2116 (FP)xFQxFN)) + FQ). Если же взглянуть снова на неформальное значение Е, которое приведено в примере 10.32, то видно, что существует более простое алгебраическое выражение, эквивалентное £, а именно ЯЧАСТЬ-Яо ЧИСЛО (^КОЛИЧЕСТВО > ЧИСЛО V ЧАСТЬ-Я9=2116 (использование χ наличие)).
10.8. Табло запросов 265 Следствие. Для 2D, ^, Ж и Ε из теоремы 10.6 существует алгебраическое выражение F над 01 без дополнения, эквивалентное Ε при ограниченной интерпретации. Доказательство. (Детали доказательства в основном оставляются читателю (см. упр. 10.30).) Доказательство сходно с доказательством теоремы 10.6, за исключением некоторых модификаций. Первой трудностью является построение правильного выражения для [Л]. Для этого преобразуем Ε так, чтобы для встречающихся в Ε кванторов V* (Л) и з* (А) было выполнено att (χ) = Л. Для переменных хи входящих в хх (Αι) х2 (А2) ... хп (Ап) из Е> можно положить att(Xi) = Aif 1 <: ί <: /ι, так как At Φ Aj при i Φ j. После этих модификаций каждый символ атрибута А встречается в Ε максимум по одному разу. Если А входит в з* (A) g или \/х (A) g, то [А ] должно быть алгебраическим выражением для edoin (Л, 7). Вторая модификация — устранение использования случая 3. Третья трудность заключается в том, что алгебраическое выражение Fg для каждой подформулы g формулы / не должно быть эквивалентным Eg = \уг (att (уг)) у2 (att (у2)) ... ут (attym) \ g(уъ y2i ..., ут)\ при ограниченной интерпретации, как может показаться с первого взгляда. Формула Fg должна представлять Eg, где подформулам с кванторами дается ограниченная интерпретация, а yt меняется в пределах множества [att (у*)], 1 < ' < /π, которое может содержать edom (att (yt)y g) собственно. 10.8. ТАБЛО ЗАПРОСОВ В этом разделе рассматривается система запросов, основанная на табло, точнее на табло запросов. Табло запросов не обладают такой выразительной силой, как реляционная алгебра, но они могут представить любое алгебраическое выражение, включающее только выбор по равенству, проекцию и соединение. После некоторых расширений можно работать и с алгебраическими выражениями, включающими объединение и разность. Табло запросов представляют особый интерес благодаря тому обстоятельству, что их можно оптимизировать для уменьшения до минимума количества соединений в соответствующем алгебраическом выражении (хотя сам процесс минимизации может оказаться вычислительно трудоемким). Имеется также подкласс табло запросов, оптимизация которого может быть проведена эффективно. Кроме того, возможна модификация табло запросов для использования преимуществ функциональных и других зависимостей в базе данных, до некоторой степени сходная с вычислением посредством прогонки.
266 Гл. 10. Системы запросов Табло запросов предстают перед нами в двух ипостасях: «неразмеченные» и «размеченные». Первые предназначены для запросов к базе данных, состоящей из одного отношения (с их помощью можно работать и с базами данных, состоящими из нескольких отношений, если эти отношения являются проекциями одного возможного состояния). Вторые используются в запросах к базам данных, которые состоят из нескольких отношений, не обязательно происходящих из общего возможного состояния. Введем класс алгебраических выражений, которые можно выразить с помощью табло запросов. Определение 10.6. Назовем ограниченным алгебраическим выражением Ε алгебраическое выражение, построенное из отношений и отношений-постоянных, содержащих один кортеж, с использованием следующих операций: 1. выбор вида <5а=с\ 2. проекция; 3. естественное соединение. Можно разрешить также и операцию пересечения, так как она выражается через соединение. Выбор не обязательно включать в этот список, так как он выражается в виде соединения с постоянным отношением. Хотя этот класс и не включает многие интересные запросы, большое количество запросов может быть выражено ограниченными алгебраическими выражениями. Пример 10.37. Запрос «Какие запчасти используются в Боин- ге-707.^» к базе данных из табло 10.1 может быть выражен ограниченным алгебраическим выражением ^название-части (отип-самолета=747 {детали ><з использование)).- 10.8.1. Табло запросов для одного отношения В этом разделе развивается теория табло запросов к базам данных, состоящих из одного отношения. Хотя такие запросы сами по себе не представляют большого интереса, мы используем их для демонстрации техники доказательств, которые потом перенесены на случай баз данных, состоящих из нескольких отношений. Кроме того, табло запросов к одному отношению могут представлять и запросы к базам данных из нескольких отношений, если все отношения из такой базы данных являются проекцией общего возможного состояния. Так как база данных для запчастей уже слегка наскучила, введем для последующих примеров новую базу данных. Показанная на табл. 10.11 база данных описывает меню нашей небольшой авиалинии. Атрибуты PC, ПТ, ДТ, ВР, КЛ символизируют рейс, питание, дату, выбор и количество.
10.8. Табло запросов 26 7 Таблица 10.11. Отношения обслуживаются, выбор и заказано обслуживаются (PC ПТ) выбор (ПТ ДТ В Ρ 56 56 57 106 106 107 3 О У О У У 3 3 О О О У У У У У 15 авг. 15 авг. 15 авг. 16 авг. 16 авг. 15 авг. 15 авг. 16 авг. 16 авг. 16 авг. яйца вафли сэндвич лапша по-итальянски салат тушеное мясо рыбный рулет тушеное мясо камбала цыплята заказано (PC 56 56 56 56 56 57 57 106 106 106 106 106 106 106 107 107 ДТ 15 15 16 15 15 15 16 16 16 16 15 15 16 16 15 16 авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. авг. ВР яйца вафли яйца сэндвич салат тушеное мясо тушеное мясо сэндвич лапша по-итальянски салат тушеное мясо рыбный рулет камбала цыплята тушеное мясо цыплята КЛ) 27 23 50 50 50 55 60 80 45 35 40 40 40 40 60 60 (ПТ) 3 3 3 О О У У О О О У У У У У У Отношение обслуживается обозначает, каким питанием обслуживается обычно каждый рейс. Отношение выбор обозначает, каков ассортимент каждого стола на текущий день. Отношение заказано обозначает, какое количество каждого блюда заказано на текущий день в каждом рейсе для каждого стола. К этому отношению относится только часть таблицы, стоящая слева от пунктирной черты. Отметим, что эти три отношения полностью соединяются. Пусть питание — соединение трех отношений из базы данных. Это отношение получается из заказано присоединением столбца, стоящего в таблице справа от пунктирной черты. Табло запросов — это модифицированная версия табло, введенных в гл. 8. Как и прежде, переменные делятся на выделенные и невыделенные. Кроме того, в табло запросов встречаются постоянные и пробелы. Выделенные переменные, невыделенные переменные и постоянные будем называть собирательно символами. Табло запроса содержит также резюме — выделенную строку. Резюме табло запроса будет записываться над строками табло запроса и будет выделяться линиями сверху и снизу. Табло
268 Гл. 10. Системы запросов запроса к отношению г (Аг А2 ... Ah) должно удовлетворять следующим ограничениям: ql. Столбцы снабжены метками Аъ Л2, ..., Ah. q2. Каждая переменная может встретиться лишь в одном столбце. q3. Если в столбце стоит выделенная переменная, то она должна стоять и в резюме этого столбца. q4. В строках должны стоять только символы (а не пробелы). q5. В резюме должны стоять только выделенные переменные, постоянные и пробелы. q6. Если в столбце с меткой А-ъ стоит постоянная с, то с ζ dom (Ai). Резюме будет обозначаться буквой wQ, а строки — wl9 w2, ... wn. Пример 10.38. В табл. 10.12 показано табло запроса к отношению питание — соединению отношений из табл. 10.11. Чтобы присвоить значение табло запроса Q к отношению г (R), необходимо расширить определение присвоения значения. Назовем присвоением значения табло запроса Q такую функцию р, действующую из множества символов Q в значения из доменов, что если а — символ из Л-столбца Q, то ρ (α) ζ dom (A), a также ρ (с) = с для каждой постоянной с. Присвоение значений ρ может быть естественно продолжено так, чтобы оно отображало строки Q в кортежи из dom(R), а резюме в dom (S), где S—множество столбцов Q, в которых резюме не содержит пробела. Продолжим ρ до отображения Q в отношение ρ (Q) = {ρ (wt) \ wt — строка Q\. Отметим, что ρ (α>0) не включается в ρ (Q). Пример 10.39. Пусть Q — табло запроса из табл. 10.12, ар — присвоение значения, показанное в табл. 10.13. Тогда имеем ρ (йу0) = (15 авг. тушеное мясо 40), а р (Q) приведено в табл. 10.14. Назовем значением Q (г) табло запроса Q на отношении г отношение \Q (г) = {Р (и>о) Ι Ρ — присвоение значения для Q, такое, что ρ (Q) <=/-}. Таблица 10.12. Табло запроса к отношению питание Q (PC ДТ ВР КЛ ПТ) W0 «2 (Ц <Ч wx Ьг Ь2 а3 а4 Ьь w2 106 α2 α3 α4 Ьь w3 107 be b7 b8 Ь±
10.8. Табло запросов 269 Таблица 10.13. Таблица значений ρ Ρ fe) ~ 15 авг. Ρ (аз) — тушеное мясо Ρ Μ =40 ρ (106) = 106 ρ (107) = 107 Ρ (W = 57 ρ (b2) = 16 авг. Ρ (« = 60 Ρ (h) = У Ρ (W = У ρ (be) = 15 авг. Ρ (fy) = тушеное мясо Ρ (bs) = 60 Таблица 10.14. P(Q) (PC 57 106 107 Таблица 10.15. Таблица значений ρ (Q) ДТ ВР 16 авг. тушеное мясо 15 авг. тушеное мясо 15 авг. тушеное мясо Q (питание) кл 60 40 60 ПТ) У У У Q (питание) (ДТ ВР КЛ) 15 авг. тушеное мясо 40 15 авг. рыбный рулет 40 16 авг. цыплята 40 16 авг. камбала 40 Пример 10.40. Пусть Q — табло запроса из табл. 10.12. Тогда Q (питание) содержит кортеж (15 авг. тушеное мясо 40) (здесь питание — соединение всех отношений из табл. 10.11). Действительно, ρ (wQ) = (15 авг. тушеное мясо 40) и ρ (Q) ^ ^ питание для присвоения значений ρ из табл. 10.13. Отношение Q (питание) — это ответ на вопрос: «В каком количестве в какой день заказывались для рейса 106 блюда, которые входили когда-нибудь в столы, обслуживаемые на рейсе 107?». Это отношение показано в табл. 10.15. Табло Q эквивалентно алгебраическому выражению Ядт вр к л (явр пт (питание)) >< ядт вр кл (аРс=юб) (питание)) >< χ πΠτ (σρο=ιο7 (питание))). Оно в свою очередь эквивалентно Ядт вр кл (лВр пт) (выбор) >< ядт вр кл (арс=юб) (заказано)) >< >< яПт (ffpc=io7 (обслуживается))), если отношения обслуживается, выбор и заказано — проекции отношения питание.
270 Гл. 10. Системы запросов Легко выписать и выражение исчисления кортежей, эквивалентное данному табло запроса. Пусть Q — табло запроса к отношению г (R), состоящее из строк wl9 w2, ..., wn и резюме wQ, a S — множество атрибутов, в которых wQ содержит символ, а не пробел. Эквивалентное Q выражение исчисления кортежей — это E={x(S)\3yi(R)€r3yt(R)£r...3yn(R)erf(x,yl9y29...9yn)\, где / — конъюнкция атомов следующего вида: 1. χ (Л) = Уг (Л), если уш0и^в столбце Л стоит выделенная переменная. 2. yt (А) = уз (Л), если wt (Л) = wj (Л), причем wt (A) — не постоянная. 3. χ (Л) = су если wQ (Л) = с, а с — постоянная. 4. yt (Л) = с, если Wi (Л) = с, а с — постоянная. Ясно, что Ε — безопасное выражение. Кроме того, оно эквивалентно алгебраическому выражению, содержащему не более η — 1 соединений (см. упр. 10.35). Отметим, что выбор таких строк у19 уъ ..., уп из г соответствует некоторому присвоению значений ρ с ρ (Q) g г, причем ух = ρ (wt)9 i = 1, ..., п. Пример 10.41. Положим Rm = PC ДТ ВР КЛ ПТ. Тогда \х (ДТ ВР КЛ) | 3 Ух (Rm) 3 У* (Rm) 3 Уз (Rm) (* (ДТ) = = у2 (ДТ) Λ х (ВР) = Уг (ВР) Λ χ (ВР) = у2 (ВР) Λ *(КЛ) = = Уг (КЛ) Λ Уг (ПТ) = у3 (ПТ) Д Уг (PC) = 106 Λ Уз (PC) = 107)} — выражение исчисления кортежей, эквивалентное табло запроса с рис. 10.13. Отметим, что в это выражение можно включить и атом уг (ВР) = у2 (ВР), но он будет выводиться из остальных.. Определение 10.7. Пусть Q—табло запроса со схемой R, w — строка Q, а Л — атрибут из R. Будем говорить, что строка w парная по столбцу Л, если w (Л) = с, где с — константа, или w (Л) = wQ (Л), где wQ — резюме Q, или w (A) = w' (Л), где w' — строка Q, w' Φ w. Символ w (Л) будем называть в этом случае парным символом. Положим match (w) = \А | w парная по столбцу А\. Определение 10.8. Пусть Q — табло запроса со схемой R, d — база данных над R со схемой R = \Rl9 R2, ..., Rp\. Будем говорить, что Q применимо к d, если для каждой строки w из Q найдется схема отношения Rt ζ R, такая, что match (w) ζ Rt. Пример 10.42. Для табло запроса с табл. 10Л2 match К) = ДТ ВР ПТ, match (w2) = PC ДТ ВР КЛ, match (w3) = PC ПТ.
10.8. Табло запросов 271 Значит, Q применимо к базе данных из табл. 10.11, однако не- применимо к базам данных со схемой ЩТ ВР ВР ПТ PC ДТ ВР КЛ PC ПТ}. Рассмотрим табло запроса Q с резюме wQ и строками wl9 w2, ..., wn9 применимое к базе данных к. Если все отношения из d — проекции общего возможного состояния г, то значение Q на базе данных d можно вычислить следующим образом. Выберем для каждой wt из Q отношение r(i (Rt) из d, такое, что matchx (wt) ^ s Ri- Будем говорить, что для присвоения значения ρ выполнено ρ (Q) = d, если ρ (wt (Ri)) s rl9 т. е. р отображает часть wi9 содержащую match (wt)9 в кортеж из п. Положим теперь Q (d) = \р (щ) | Ρ — присвоение значения для Q, такое, что p(Q)£=d}. Ясно, что Q (d) = Q (г). Действительно, для присвоения значений ρ с ρ (Q) s г выполнено и ρ (Q) s d. Если же ρ (Q)^ d, то существует присвоение значений р', такое, что р' (w0) = p(w'0) и р' (Q) е г, так как если ρ (wt (Ri)) = tt ζ ri9 то существует кортеж t ζ г, такой, что ί (#г·) = ii. Положим ρ' (wt) = ί. rx{A_B) r2(A С) 13 2 4 Рис. 10.2. Для того чтобы Q (d) было корректно определено, необходимо, чтобы отношения из d были проекциями общего возможного состояния. В противном случае на значение Q(d) может повлиять проведенный выше выбор отношения rt для каждой строки wt. Пример 10.43. Для базы данных d (рис. 10.2) и табло запроса А(А В С) 01 wx аг bx b2 в зависимости от выбора гг или г2 для строки wx значение Q (d) окажется или (1 : Л), или (2 : А).
272 Гл. 10. Системы запросов 10.8.2. Табло запросов для ограниченных алгебраических выражений В этом разделе будет рассмотрен вопрос о переводе ограниченного алгебраического выражения в эквивалентное ему табло запроса. Как видно из определения ограниченного алгебраического выражения, если некоторое подвыражение обозначает пустое отношение, то и все выражение обозначает пустое отношение. Для обозначения специального табло запроса, вычисление которого всегда приводит к пустому отношению, будет использоваться знак Q0 г). Определим рекурсивно табло запроса Q, эквивалентное заданному ограниченному алгебраическому выражению г над схемой А1 А2 ... Ат. Случай 1. Ε = г. Положим Q равным Ах А2 ··· Ат w1a1 a2 · · · ат. Случай 2. Ε = (сг : В± с2 : В2 ... ck : Bk), где Вг В2 ... Bk s s Аг Л2 ... Ат, a ct — постоянная из dom (Bt). Пусть Q — табло запроса, состоящее из резюме до0, причем в столбцах Biy 1 < i < <: k, у Wq стоят сь а в остальных столбцах — пробелы (см. упр. 10.34). Случай 3. Ε = оа.=с (Е'). Пусть Q' — табло запроса для Е'. Возможны три варианта. a. Если Q' = Q0, положим Q = Q0. b. Если w'0 (Ai) = с', где w'Q — резюме Q\ то положим Q= = Q', если с = с, иначе Q = Q0. c. Если w'0 (Ai) = аи где w'Q — резюме Q', то положим Q = = (Q' со всеми вхождениями аи замененными на с). г) Легко видеть, что для любого табло запроса Q над схемой R с резюме, состоящим не из одних пробелов, найдется отношение г со схемой R, такое, что Q (г) непусто (можно в качестве г взять строки табло Q, заменив произвольным образом каждую переменную из столбца Ai на значение из dom А{). Поэтому формулируемое далее утверждение о том, что для любого ограниченного алгебраического выражения найдется эквивалентное ему табло запроса, неверно. Например, для σ^>===(7 (оА:=с (г)\ не найдется эквивалентного табло запроса, если Ci Φ с2. Автор далее неявно обходит эту трудность, дополнив множество табло запросов символами Q0 R s, где R э S, R и S — схемы отношений, причем для любого отношения г над схемой R табло Q0 R s — это пустое отношение над схемой S. При этом индексы R, S в обозначении Q0 R s автор не указывает, но подразумевает. — Прим. перев.
10.8. Табло запросов 273 Случай 4. Ε = кх (Ε'). Пусть Q' — табло запроса для Е'. Если Q' = Q0, положим Q = Q0. Иначе заменим в резюме w'0 табло запроса Q' все символы в столбцах, не входящих в X, на пробелы, а все выделенные переменные, появляющиеся в этих столбцах, — на новые выделенные переменные. Положим Q равным результату этой замены. Случай 5. Ε = Ε' χ £". Пусть Q' и Q" — табло запросов для Е' и £". Предположим, что в Е' и £" нет совпадающих невыделенных переменных. Возможны три варианта. a. Если Q' или Q" есть Q0, положим Q = Q0. b. Если для некоторого атрибута А в резюме w'Q и Шо табло запросов Q' и Q" стоят разные константы, положим Q = Q0. c. В противном случае i. если w'o (At) = с или w'q (At) = с, положим w0 (At) = с (если оуо (ЛО или w'0 (Αι) при этом — выделенная переменная, то изменим все ее вхождения в Q" и Q' соответственно на с); П. если случай i неприменим, положим wQ (At) = аи если или w'0 (Αι) = аи или Шо (Л£) = а4; iii. иначе ау0 (Лг·) = пробел, а строки Q — это строки Q' и Q", вместе взятые (с указанными изменениями). Пример 10.44. Рассмотрим ограниченное алгебраическое выражение Е: ярс дт (ядт пт (яре вр пт (σρο=56 [питание)) >< >< ^дт вр ((питание)) >< питание для отношения питание — соединения отношений из табл. 10.11. Переведем Ε в табло запроса пошагово так, как указано выше. Табло запроса для аРС=5б (питание) показано на рис. 10.3, табло для лРС Вр пт (σΡα=56 (питание)) — на рис. 10.4. На рис. 10.5 приведено табло для ярс ВР пт (аРС=:5б (питание)) >< ядт вр (питание). На рис. 10.6 приведено табло для ядт Пт (°рс вр пт (σΡο=56 (питание) ·>« πдт ВР (питание)) >< питание, и, наконец, на рис. 10.7 приведено табло запроса для Е. (PC ДТ ВР КЛ ПТ) (PC ДТ ВР КЛ ПТ) 56 а2 аз а4 аь 56 <ц аъ 56 а2 а3 а4 аь 56 Ьх а3 Ь2 аъ Рис. 10,3, Рис. 10.4,
274 Гл. 10. Системы запросов (PC ДТ ВР КЛ ПТ) (PC ДТ ВР КЛ ПТ) 56 56 h а2 Ьг а2 а3 Яз Ь2 а3 64 Рис. 10.5. Ч Ч h (PC «1 56 bs аг ДТ а2 h а2 а2 ВР h ьв bs кл h ь4 ь» Рис. 10.7. 56 b3 аг ПТ) 6, h b7 a2 bi a2 a2 аз be bQ «3 Рис. 4 b2 b, #4 10.6. 4 4 Ьъ 4 Теорема 10.7. Если Е — ограниченное алгебраическое выражение для отношения г, a Q — полученное данным выше методом табло запроса, то Ε эквивалентно Q. Доказательство приведем раздельно для каждого случая. Случай 1. Ε = г. Читатель, должно быть, узнал в табло запроса для этого случая тождественное отображение. Значит, Q (г) = г. Случай 2. Ε = (сг : В1 с2 : В2 ... ck : Bk). Если wQ — резюме Q, а ρ — присвоение значений Q, то ρ (wQ (Bt)) = си 1 < < i < k, так что Q (r) = (сг : Вг с2 : В2 ... с& : Sfe). Случай 3. Ε = vA.=c (£'). Для вариантов а и b табло Q, очевидно, эквивалентно Е. Пусть имеет место вариант с. Пусть t — кортеж из Ε (г). Тогда t (Αι) = с, причем t ζ Ε' (г). Значит, имеется присвоение значений ρ для Q', такое, что p(Q')^ru ρ (w'Q) = t, откуда ρ (at) = с. Расширим ρ, если это необходимо, так, чтобы ρ (с) = с. Тогда ρ (Q) g г и ρ (w0) = t. Значит, t £ £ Q (г). Аналогично если t £ Q (г), то t £ £ (г); поэтому Q и Ε эквивалентны. Случай 4. Ε = пх (£'). Если Q' = Q0, то £' при применении к любому отношению г дает пустое отношение над sch (£"), значит, и Ε (г) будет пустым отношением над схемой X, поэтому Ε эквивалентно Q. В противном случае пусть t £ Ε (г). В Ε' (г) имеется кортеж /', f (X) = ί. Пусть ρ — присвоение значений для Q', такое, что ρ (Q') gr и ρ (шо) = f. Если атрибут Л* теряется при проекции πχ, то положим ρ (bj) = ρ (at)9 где b,- — невыделенная переменная, которая заменена переменной щ.
10.8. Табло запросов 275 Тогда ρ (Q) s г и ρ (wQ) = t, так что t £ Q (r). Аналогичные рассуждения показывают, что для t ζ Q (г) выполнено t ζ Ε (ή, так что £ и (J эквивалентны. Случай 5 оставляется читателю (см. упр. 10.38). Хотя для каждого ограниченного алгебраического выражения имеется эквивалентное ему табло запроса х), не каждое табло запроса происходит из ограниченного алгебраического выражения. QU в) а{ Ъг Ъх Ъ2 ь\ а2 Рис. 10.8. Пример 10.45. Рассмотрим табло запроса Q (рис. 10.8). Это табло запроса не может получиться указанным выше способом ни из какого ограниченного алгебраического выражения. Предположим, что оно происходит из выражения Е. Тогда Ε должно иметь вид Е' >< Е". Пусть Q' и Q" — табло запросов для Е' и Е". Какие строки Q получены из Q', а какие — из Q"? Можно предположить без потери общности, что строка w± Ёозникала из Q'. Тогда и w2 должна быть получена из Q', поскольку она согласуется с w1 по невыделенному символу. Точно так же и w3 произошла из Q'. Так что из Q" не получено ни одной строки, поэтому Е" — постоянное отношение. Мы приходим к противоречию, так как Q не содержит постоянных. Таким образом, Q не происходит ни из какого ограниченного алгебраического выражения (см. упр. 10.39). Описанный выше метод перевода ограниченного алгебраического выражения над одним отношением годится также и для выражений над базой данных d, если все отношения из d — проекции общего возможного состояния г. Если Ε — ограниченное алгебраическое выражение над d, то заменим каждое вхождение rf на nR. (г), где Rt—схема для ги и продолжим процесс, как раньше. Полученное в результате табло запроса Q заведомо применимо к базе данных d. Происхождение каждой строки w из Q может быть прослежено, и мы придем в результате к подвыраже- !) См. предыдущее примечание. — Прим. перев.
276 Гл. 10. Системы запросов нию π/?, (г), откуда match (w) ^ Rt. Действительно, предположим для примера, что г — отношение со схемой А В С D, a Rt = = А С. Табло запроса для π^. (г) —это Q'(A В С D) а, а2 м> а\ Ь\ αϊ Ζ>2 Строка w' становится в конце строкой w в Q. Ни при выборе, ни при соединении невыделенные символы w' не могут стать парными. Следовательно, match (w) в Q содержится в Rt = А С. Пример 10.46. Пусть Ε — выражение явр пт (<7ро=юб, дт=15 авг. (обслуживаютсях выбор)) для базы данных из табл. 10.11. Табло запросов, эквивалентное Е, показано на рис. 10.91) (PC ДТ ВР КЛ ПТ) «з Дб 106 Ьг b2 b3. аъ Ъ± 15 авг. а3 Ьь аь Рис. 10.9. 10.8.3. Табло запросов, которые получаются из алгебраических выражений Следующая теорема выделит некоторые табло запросов, получающиеся из ограниченных алгебраических выражений, хотя она не охватит все такие табло запросов. Теорема 10.8. Пусть Q — табло запросов к отношению г (R). Если в каждом столбце Q стоит не более одного парного символа, то Q получается указанным выше способом из ограниченного алгебраического выражения. Доказательство. Достаточно рассматривать-только такие табло запросов, у которых в резюме нет постоянных. Действительно, если в столбцах Въ В2, ..., Bk в резюме у Q стоят постоянные, то Q — табло запроса для выражения (с± : Вг с2: В2 .. . ck : Bh) χ Ε', *) Эквивалентность здесь понимается в ином смысле, нежели в разд. 10.1; точнее запросы Ег и Е2 эквивалентны, если Ег (d) = E2 (d) для каждой базы данных d над некоторой схемой, такой, что все отношения из d являются проекциями одного возможного состояния. — Прим. перге.
10.8. Табло запросов 277 где Е' — алгебраическое выражение для табло запроса, полученного из Q заменой всех постоянных в резюме на пробелы. Пусть тъ w2, ..., wn — строки Q. Построим для каждой строки wt алгебраическое выражение Et. Пусть Xt — множество столбцов, в которых в wt стоят постоянные, a Yt = match {wt) — Xt. QX(A BCD) a\ a\ >(A *i В «3 «3 С «4 О 4 D) «3 bA {A 2 В a2 яз С 3 D) а4 b5 a2 b6 а4 Рис. 10.11. Начиная с выражения г, применим для каждого атрибута Α ζ Xt выбор oa=w. (А), а затем применим проекцию яу.# Полученное выражение назовем Et. Пусть Ε = πγ (Ег\>< Е2 >«... ...><Еп), где Υ — множество столбцов, в которых в резюме Q стоит не пробел. Доказательство того, что Ε переводится указанным выше процессом в Q (при правильном выборе невыделенных переменных), предоставляем провести читателю (см. упр. 10.41). Отметим, что доказательство зависит только от того, что ни в одном столбце не встречается одновременно выделенной переменной (по необходимости парной) и парной невыделенной переменной. При этом условии в любом столбце может стоять сколько угодно постоянных. Пример 10.47. Пусть г — отношение со схемой А В С D, a Q — табло запроса к г, показанное на рис. 10.10. Табло запроса Q является переводом ограниченного алгебраического выражения пА в{па с d (г) >< пс (σΒ=2 (oD=3 {г)) >< п>в d (г))). На рис. 10.11 показаны табло запросов Ql9 Q2, Q3» которые эквивалентны подвыражениям пА с d (г), пс (ов=2 (<*d=3 (/"))) и пв D(r). А(А В С D) ах Ъх Ъ2 &з Ь4 2 Ь2 3 bs <г2 Ъь Ь3 Рис. 10.10.
278 Гл. 10. Системы запросов 10.8.4. Табло запросов к базам данных, состоящих из нескольких отношений Здесь табло запросов будут модифицированы для представления ограниченных алгебраических выражений к базам данных, в которых отношения не обязательно являются проекциями общего возможного состояния. С каждой строкой запроса будет ассоциировано некоторое отношение. Фактически мы предположим, что отношения в базе данных имеют разные схемы, так что со строками будут ассоциированы просто схемы отношений. Q (Ч№ ДЧ НЧ ТС ЧС АД К Л) а>ь Дб сц (Ч№ ДЧ НЧ) 707 аъ (Ч№ ТС ЧС) а6 αΊ (Ч№ АД КЛ) 727 bs (Ч№ ТС ЧС) Рис. 10.12. Q(d) (ЧС 86 86 244 244 АД Нью-Йорк Чикаго Бостон Чикаго Рис. 10.13. КЛ) 6 28 341 29 Пусть d — база данных со схемой R над R. Размеченное табло запроса к d аналогично обычному табло запроса, за исключением того, что строки Q могут содержать пробелы, а каждая строка имеет ярлык. Ярлыком строки w является схема отношения S £ R, которая обозначается tag (w). Пробелы в строке w стоят в точности в местах R — tag (w). Присвоение значений ρ для Q будет отображать строку w в кортеж над tag(w). Включение ρ (Q) g d означает, что ρ (w) £ s для каждой строки w из Q, где s — отношение из d со схемой tag (до). Пусть wQ — резюме Q. Положим Q {d) = {ρ (wQ) I ρ — присвоение значений для Q, такое, что p(Q)=d}. Пример 10.48. Вернемся к базе данных из табл. 10.1. Пусть Ч№, ДЧ, НЧ, ТС, ЧС, АД и КЛ — сокращения для ЧАСТЬ-№, ДЕТАЛЬЧАСТИ-№, НАЗВАНИЕ-ЧАСТИ, ТИП-САМОЛЕТА, ЧИСЛО, АДРЕС и КОЛИЧЕСТВО. Рассмотрим размеченное табло запроса Q, показанное на рис. 10.12. Ярлыки показаны на рисунке справа от каждой строки в скобках. Значение Q(d) дано в табл. 10.13. Ъх 211 Ь< bi Ьг h
10.8. Табло запросов 279 Ярлыки на рис. 10.12 выписаны только для большей выразительности. Их можно вычислить по части каждой строки, состоящей из пробелов. Процедура перевода ограниченного алгебраического выражения в размеченное табло запроса остается в основном той же самой, что и в случае запроса к одному отношению. Единственное изменение — это построение табло запроса для эквивалентного отношения s со схемой Лх Л2.... Ak. Табло для s состоит из резюме с выделенными символами в столбцах А± А2 ... Ak и пробелами в остальных местах и единственной строки, тождественной резюме. Пример 10.49. Табло запроса Q с рис. 10.12 — перевод алгебраического выражения ячс ад кл (адч=2П (детали) >< сгтс=707 (использование) >< >< хранение χ Ячя° (отс=727 (использование))). Если все отношения в базе данных — проекции общего возможного состояния, то построенное на основе алгебраического выражения размеченное табло запроса оказывается эквивалентно неразмеченной версии. Оба табло в основном совпадают, за исключением того, что некоторые непарные символы в неразмеченной версии оказываются пробелами в размеченной. 10.8.5. Наборы табло запросов Можно расширить сферу алгебраических выражений, которые моделируются посредством табло запросов, если мы разрешим запросу состоять из нескольких табло. В этом разделе мы вернемся к обычным табло запросов, хотя описываемые модификации применимы точно так же и к размеченным табло запросов. Определение 10.9. Назовем монотонным алгебраическим выражением Ε алгебраическое выражение, построенное из отношений и постоянных отношений с одной строкой с помощью следующих операций: 1. выбор вида Оа=с\ 2. проекция; 3. естественное соединение и 4. объединение. Заметим, что вместе с объединением и пересечением г) можно разрешить и выбор со связками у и Д · Объединение можно использовать и для построения постоянных отношений из нескольких кортежей. г) Пересечение — это частный случай соединения (см. разд. 10.8).— Прим, перев.
280 Гл. 10. Системы запросов Определение 10.10. Табло запросов Q1 и Q2 называются совместимыми, если их схемы совпадают, а резюме имеет пробелы в одних и тех же позициях. Множество табло запросов называется совместимым, если каждая пара его элементов совместима. & (PC ДТ ВР КЛ ПТ) Q2 (PC ДТ ВР КЛ ПТ) аг_ 56 аг 03 04 15 авг. а3 b2 bz 15 авг. ав а4 ^з Рис. Q (питание) (PC CD 56 56 56 56 56 106 Рис. «1 56 10.14. ВР яйца вафли яйца сэндвич салат сэндвич 10.15. 16 авг. 16 авг. КЛ) 27 23 50 50 50 80 аз а3 а3 а4 Ь а4 из h Определение 10.11. Набором табло запросов над схемой R назовем множество Q = {Qi> Q2> ···» Qm\ совместимых табло запросов, каждое из которых имеет схему R. Значением Q на отношении г у обозначаемым Q (г), назовем Qi(r) U Q2(r) U... U Qm(r). Пример 10.50. Пусть питание — соединение отношений из табл. 10.11, a Q —набор табло запросов \Qly Q2|, где Q1 и Q2 показаны на рис. 10.14. Значение (Х(питание) приведено на рис. 10.15. Теорема 10.9. Пусть Ε — монотонное алгебраическое выражение. Тогда существует набор табло запросов, эквивалентный Ε г). Доказательство. Согласно теореме 10.7, достаточно доказать, что любое монотонное алгебраическое выражение эквивалентно монотонному алгебраическому выражению вида Ελ \] Е2 U ··· U Ет, где каждое Et — ограниченное алгебраическое выражение. Это же следует из того, что выбор, проекция и соединение дистрибутивны относительно объединения. г) Эта теорема в отличие от утверждения разд. 10.8.2 (см. примечание переводчика в этом разделе) справедлива без оговорок, так как символ Q0 из этого раздела моделируется пустым набором табло запросов (который, однако, имеет схему и определенное множество столбцов, в которых в резюме стоят не пробелы!). — Прим. перев.
10.9. Конъюнктивные запросы 281 Из разд. 2.2 известно, что <*а=с (Ει U Е2) = оА=с (Ег) оА=с (Е2) для любых выражений Еъ Е2. По упр. 2.8а пх (Ег U Е2) = пх (Ег) U пх (Е2). Нетрудно показать, что Ех >< (Е2 U Ед) = (Ех >< Е2) U (Ег χ Е3). Повторные применения этих тождеств преобразуют монотонное выражение в объединение ограниченных алгебраических выражений. Отметим, что если Ε содержит k знаков объединения, то т может достигнуть 2*., Пример 10.51. Набор табло запросов Q из примера 10.50 может произойти из выражения Яре вр кл (ядт вр пт (<*рс=56 (оцт=15 авг (питание) U U стдт^бавг (питание))) >< питание). 10.9. КОНЪЮНКТИВНЫЕ ЗАПРОСЫ Конъюнктивные запросы'—это подкласс выражений исчисления доменов. Хотя их выразительная сила не столь велика, как у выражений исчисления доменов, они все же могут выразить много полезных запросов. Кроме того, они встречаются как подвыражения в выражениях исчисления доменов. Причина интереса к ним, как и к табло запросов, кроется в том, что для них возможна эффективная оптимизация. Конъюнктивным запросом к базе данных d называется выражение исчисления доменов вида \хг (Л0 х2 (А2).. .хп (Ап) | з Уг (В г) 3 У* (В*). ..ЗУт (Вт) I (хъ х2> ···» хп> Уъ #2> ···» ym)\i где / — конъюнкция атомов вида г (аъ Оа, ..., ар), причем г ζ d, а каждое аг либо постоянная, либо xj при некотором /, либо yk при некотором k. Пример 10.52. Размеченное табло запроса с рис. 10.12 эквивалентно конъюнктивному запросу \Xl (ЧС) х2 (АД) х3 (КЛ) | 3 Уг (Ч№) 3 Уг (НЧ) 3 Уъ (ЧС) детали (уг211у2) Д использование (уг «707» хг) Д наличие (у^х2х^ Д использование (уг «727» у3)\. Каждый конъюнктивный запрос — безопасное выражение исчисления доменов. Они так же выразительны, как и размеченные
282 Гл. 10. Системы запросов табло запросов без постоянных в резюме (см. упр. 10.45). По существу конъюнктивные запросы — это размеченные табло запросов, в которых символы могут появляться в нескольких столбцах. Конъюнктивные запросы легко переводятся в эквивалентные алгебраические выражения (см. упр. 10.46). 10.10. УПРАЖНЕНИЯ 10.1. Представьте алгебраические выражения Еъ Е2 и £3> такие, что Ег = Е2 и Е2 ξ Ε3 по второму определению эквивалентности, согласно которому выражения должны иметь совпадающие значения на всех взаимно совместимых базах данных, но существует база данных, взаимно совместимая с Ег и Е3, такая, что Ει (d) и Е3 (d) — отношения с разными схемами. 10.2*. Рассмотрим базы данных с той же схемой, что и у базы данных из табл. 10.1. Докажите, что не существует выражения реляционной алгебры, которое означало бы отношение г (ЧАСТЬ ДЕТЧАСТИ'), такое, что кортеж ρ s принадлежит г тогда и только тогда, когда s — деталь р, или деталь детали /?, или деталь детали детали ρ и т. д., т. е. s используется в р. Следующие упражнения часто будут использовать базу данных из табл. 10.16. Отношение использование дает для каждого типа самолета число используемых, суммарный налет (в десятках тысяч миль) и суммарное полетное время (в сотнях часов). Отношение происшествия дает для каждого типа самолета число летных происшествий каждого типа и количество пострадавших людей. Доменом атрибутов ИСПОЛ, СМИЛИ, СЧАСЫ, ЧСПРО и ПОСТРАД является множество неотрицательных чисел, dom (ТИПСАМ) = {707, 727, 747, А100, DC8, DC10}, a dom (ТИППРО) = {взлет, посадка, в полете, рулежка}. Для неотрицательных целых чисел используются знаки сравнения =, Ф, <, ^, ^, ;>, а для оставшихся двух доменов — только = и Ф. Обозначим схему отношения использование через Rit а происшествия — через R2. 10.3. Определите, какие из приведенных ниже формул разрешены. Для разрешенных формул определите, какие вхождения переменных свободны, а какие связаны. Для связанных вхождений в разрешенные формулы найдите type и теп. Напомним, что Rx — это схема использование, a R2 — схема происшествия. Таблица 10.16. Отношения происшествия и использование использование (ТИПСАМ ИСПОЛ СМИЛИ СЧАСЫ) 707 727 747 А100 DC 8 (ТИПСАМ 14 12 8 3 21 ТИППРО 7358, 6621 3784 1213 11016 ЧСПРО 1839 1642 841 397 2803 ПОСТРАД) 707 727 727 А100 А100 DC 8 взлет взлет посадка посадка в полете в полете 6 3 17 12 6 26
10.10. Упражнения 283 (a) χ (ТИПСАМ) = у (ТИПСАМ) Д У (СЧАСЫ) > 1000. (b) χ (ТИППРО) Л х (ИСПОЛ). (c) χ (ТИППРО) Д использование (х). (а) з х (Ri) (использование (х) /\ 3 х (R2) (происшествия (х) Д χ (ТИПСАМ) = χ (ТИПСАМ) Д χ (ЧСПРО) = у (ЧСПРО))). (е) у х (Яι) 6 происшествия (х (ТИПСАМ) = у (ТИПСАМ) Д з ζ (RiR2) (ζ (ИСПОЛ) > у (ИСПОЛ) Д ζ (ТИПСАМ) > χ (ТИПСАМ))). (0 V * (*ι) 3 * №) (х (ЧСПРО) < 6). (g) V* (Ri) € происшествия (И χ (ТИПСАМ ТИППРО) = ^(ТИПСАМ ТИППРО) V (х(ЧСПРО) > г/(ЧСПРО) Д х(ПОСТРАД) > >#(ПОСТРАД))). 10.4. Допустим, что атомы истина и ложь — разрешенные формулы. Покажите, что если / (х) разрешена, то / (t/x) тоже разрешена. 10.5. Покажите, что если в разрешенной формуле f = 3 х (R) ё нет св0" бодных переменных, то χ — единственная переменная, входящая свободно в g. 10.6. Используя базу данных из табл. 10.6, дайте (неограниченную) интерпретацию следующих формул (здесь ^и^ — схемы использование и происшествия) : (a) у* (Ri) (x (ИСПОЛ) < 60). (b) у* (Ri) (Π использование (х) V х (ИСПОЛ) < 60). (c) у* №) € происшествия (х (ТИПСАМ) Φ «727» Д (х (ТИППРО) = «посадка» V х (ТИППРО) = «взлет»)). (d) 3х (Ri) € использование ЗУ (R2) 6 происшествия (х (ТИПСАМ) =у (ТИПСАМ) Д у (ТИППРО) = «в полете» Д χ (СМИЛИ) > 5000 Д у (ЧСПРО) < 1). (e) зх (Ri) € использование ЗУ (Ri) € использование у г (R2) £ происшествия \fw (R2) ζ происшествия (И (χ (ТИПСАМ) = z (ТИПСАМ) Д у (ТИПСАМ) = w (ТИПСАМ)) V * (ТИППРО) Φ w (ТИППРО) V * (ЧСПРО)^w (ЧСПРО)). (Указание: в этой формуле скрыто соединение.) 10.7. Рассмотрим формулу /: 3* (R3) (наличие (х) Д χ (АДРЕС) = «Нью-Йорк» V \/У (#з) Π наличие (у) V И у (ЧАСТЬ-№) - χ (ЧАСТЬ-№) \J у (КОЛИЧЕСТВО) < χ (КОЛИЧЕСТВО))) в применении к базе данных из табл. 10.1 (здесь R3 = ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО). Покажите, что при любом состоянии отношения наличие I (/) = = ложь. 10.8. Найдите значения {х (Rt) \ f (x)} (при неограниченной интерпретации), где /—каждая из приведенных ниже формул. (Бесконечное отношение можно выписать на одном листке бумаги, если действовать следующим образом: выписать первый кортеж на половине листка; затем выписать два следующих кортежа на половине оставшейся части; затем выписать четыре следующих кортежа на половине того, что осталось. Продолжив действия тем же способом, вы можете выписать все кортежи. (Предупреждение: этот метод не сработает для несчетных отношений.) , ' (a) / (х) = использование (х) Д χ (СЧАСЫ) > 1000. (b) / (х) = использование (χ) λ у у (R2) £ происшествия (х (ТИПСАМ) Φ Фу (ТИПСАМ)). (c) f (χ) = з V (Ri) € использование (χ (ТИПСАМ ИСПОЛ СМИЛИ) = = у (ТИПСАМ ИСПОЛ СМИЛИ)). (d) / (χ) = использование (χ) Д γ У (Rz) 6 происшествия (χ (ТИПСАМ) Φ ^(ТИПСАМ) V V * (R2) € происшествия (у (ТИПСАМ) = г(ТИПСАМ) V г/(ТИППРО) Φ ζ (ТИППРО) V У (ЧСПРО) > г (ЧСПРО))).
284 Гл. 10. Системы запросов (e) f (х)= з У (Ri) € использование (х (ТИПСАМ) = у (ТИПСАМ) Л 3 ζ (Ri) € использование (χ (ИСПОЛ СМИЛИ СЧАСЫ) = ζ (ИСПОЛ СМИЛИ СЧАСЫ) Λ * (ИСПОЛ) < 5))). (f) / (χ) = ЗУ (%) С происшествия (χ (ТИПСАМ) = у (ТИПСАМ) Д g ζ (Rt) ξ использование (χ (ИСПОЛ СМИЛИ СЧАСЫ) = ζ (ИСПОЛ СМИЛИ СЧАСЫ) Д ζ (ИСПОЛ) < 5))). 10.9. Найдите выражения исчисления кортежей, которые для базы данных из табл. 10.16 дадут ответ на следующие вопросы: (a) Для каких типов самолетов не приведены данные о происшествиях в полете? (b) Какой тип самолета покрыл максимальное суммарное расстояние, и чему оно равно? (c) Какой тип самолета имел большее полетное время, но меньшее число летных происшествий, чем остальные типы самолетов? (Предположим, что имеется атрибут ТИПСАМ' с тем же доменом, что и ТИПСАМ, и что в отношения происшествия не заносятся данные о происшествиях данного типа с данным типом самолета, если таких происшествий не было.) 10.10. Завершите доказательство в случаях 3, 5, и 6 теоремы 10.1. 10.11. Найдите эквивалентные выражения исчисления кортежей к следующим алгебраическим выражениям над базой данных из табл. 10.16: (a) ятипсам {использование X происшествия). (b) огтипсам=«707» ν испол < ю (использование). (с) происшествия. (а) («707»: ТИПСАМ 12: ИСПОЛ 1213 : СМИЛИ). 10.12. Пусть Е — алгебраическое выражение· Ег-г-Е2, где sch (Ег) = RS, a sch (Е2) — 5. Выпишите эквивалентное Ε выражение исчисления кортежей, используя формулы / и g из выражений {х (RS) \ f (χ)} и {у (S) \ g (у)} для Ε ι и Е2. 10.13. Найдите выражение Ε исчисления кортежей для базы данных d из табл. 10.16, такое, что и Ε (d), и его дополнение бесконечны при неограниченной интерпретации. 10.14. Пусть г — отношение над схемой А В CD, a S — отношение над С D Е, где dom (A) = dom (С) = dom (Ε) = (положительные целые числа). Найдите для каждой формулы алгебраическое выражение исчисления кортежей для edom (А, /), где / — это (a) r(x)f\x (с) < 10, (b) 3г(Л BCD)3y(CDE)(z(B) = x(B) Д ζ (D) = у (D) А х (С D) = у (CD)), (c) э * (А Я С D) (х (С) < ζ (С) V (г (£)< 15 Д ζ (Ε) > 5)). 10.15. Повторите упр. 10.6 с заменой неограниченной интерпретации формул на ограниченную. 10.16. Повторите упр. 10.8 с заменой неограниченной интерпретации выражений на ограниченную. 10.17. Найдите такое выражение Ε исчисления кортежей для базы данных из табл. 10.16, что Ε (d) конечно как при ограниченной интерпретации, так и при неограниченной, но значения при этих интерпретациях отличаются. 10.18. Покажите, что все выражения исчисления кортежей, использованные в доказательстве теоремы 10.1 (за исключением использованных в случае 7), имеют одно и то же значение при ограниченной и неограниченной интерпретациях (предполагается, что читатель выполнил упр. 10.10 надлежащим образом). 10.19. Какие выражения из упр. 10.8 безопасны?
10.10. Упражнения 285 10.20. Пусть г1у г2, ..., гр — отношения со схемами Rt, R2, ..., Rp, a E — произвольное выражение вида {*($) I ayi(«i) 6^зй(«|) €'■... 3yP(RP) £rp (/(*. 0i. ^2, ···> Ур) ЛЖ^ *i. г2, ..., г9))}, где 1. /— произвольная разрешенная формула исчисления кортежей без кванторов; 2. {Zi, z2, ..., zq}~ подмножество {ylt y2, ..., yp}; 3. g — конъюнкция атомов, причем для каждого атрибута Α ζ S в g имеется атом χ (А) = Zi (А) или χ (А) = с. Покажите, что Ε — безопасное выражение. Остается ли Ε безопасным, если некоторые из кванторов g будут заменены на у? А если / будет разрешено содержать кванторы? 10.21. Докажите лемму 10.1. Читатель может определить безопасную формулу исчисления кортежей как формулу, удовлетворяющую условиям s2 и s3 из определения безопасного выражения. 10.22. Пусть R — множество атрибутов. Покажите, что для разрешенной формулы g исчисления кортежей найдется другая формула А, такая, что значение {У (R) 18 (У)} ПРИ неограниченной интерпретации есть edom (R, g), a edom (R, g) = edom (R, h). 10.23. Найдите ограниченную и неограниченную интерпретацию следующих выражений исчисления для базы данных из табл. 10.16: (a) {х (ТИПСАМ) у (ИСПОЛ) | (д ζ (СМИЛИ) д w (СЧАСЫ) использование (xyzw) Д (ζ > 4000 V я> > 1000))}. (b) {х (ТИППРО) | у У (ТИПСАМ) у * (ЧСПРО) у w (ПОСТРАД) -\npo- исшествия (у χ ζ w)}. (c) {χ (ТИПСАМ) у (ИСПОЛ) | у > 10 Д у Ч (СМИЛИ) у Ч (СЧАСЫ) ("1 использование [х у zYz2) V 3W (ПОСТРАД) происшествия (х «в полете» 1 w))}. 10.24. Какие выражения из упр. 10.23 безопасны? 10.25. Найдите выражения исчисления доменов, которые отвечают на вопросы из упр. 10.9. 10.26. Преобразуйте выражения исчисления кортежей из упр. 10.8 в эквивалентные выражения исчисления доменов. Сделайте возможные упрощения. 10.27. Докажите утверждение 1 теоремы 10.5. 10.28. Завершите доказательство случая 5 теоремы 10.6. - 10.29. Найдите выражения, эквивалентные выражениям исчисления доменов из упр. 10.23 при неограниченной интерпретации. 10.30*. Завершите доказательство следствия из теоремы 10.6. 10.31. Какие выражения исчисления доменов из упр. 10.23 эквивалентны ограниченным алгебраическим выражениям? 10.32. Вычислите Q (питание) для следующих табло запросов (питание — это соединение отношений из табл. 10.12): (PC «1 а1 (PC fli «1 «1 дт а2 а2 дт а2 15 авг. аа ВР яйца ВР h h кл h КЛ а4 Ь2 аА ΠΤ) ь2 ΠΤ) Ьз ь*
286 Гл. 10. Системы запросов (c) Q (PC ДТ ВР КЛ ПТ) 57 а2 57 15 авг. Ьг b2 Ь3 57 а2 bi α4 ^4 (d) Q (PC ДТ ВР КЛ ПТ) αχ 6Х 62 Ь3 а4 ^4 ^5 «з Ь6 α4 10.33. Найдите алгебраические выражения, эквивалентные табло запросов из упр. 10.32. 10.34. В чем заключается разница между табло запросов Q и Q'? Q(A) Q'(A) 5 5 bi • 10.36. Пусть R — схема отношения, а АгА2 ... Лт ^ R. Рассмотрим выражение исчисления кортежей Ε = {χ (АгА2 ... Ат) \ ЗУг (R) ^r^y2(R)^r ... ЗУп (R) 6 г х (Αι) = &ι Λ х Иг) = b2 /\ ... /\х (Ат) = 6Ш Д где 6j или постоянная из dom (Л/), или yj (Лг·) для некоторого 1 ^ / ^ я, a g — конъюнкция атомов вида у ι (Л&) — yj(Ak) и #$ (Л^) = с, где с — постоянная из йот (Лft). (a) Покажите, что Ε — безопасное выражение. (b) Покажите, что Ε эквивалентно алгебраическому выражению, в котором не более η — 1 естественных соединений и нет 0-соединений. (c) Покажите, что Ε эквивалентно табло запроса. (d) Покажите, что если g— произвольная формула без кванторов, содержащая атомы вида Уг(Аъ) θ У]{А^) и yt(A^) = с, то (а) и (Ь) справедливы, а (с) — нет. 10.36. Пусть Q — табло запроса, применимое к базе данных d. Предположим, что отношения из d— проекции общего возможного состояния г. Укажите способ нахождения выражения исчисления кортежей для базы данных d, эквивалентного Q. 10.37. Найдите табло запросов, эквивалентное следующим алгебраическим выражениям для базы данных из табл. 10.12, в предположении, что все отношения — проекции общего возможного состояния. (a) πΒΡ πτ(σΡθ=ΐ06 (обслуживаются) ><ο^Ύ=ι5 авг (выбор)). (b) JtBp пт (сгрс=106 (обслуживаются) >< сгдт=15авг. (заказано) >< выбор). (c) (3 : ПТ яйца : ВР) >< заказано. (a) jxpc (адт=15 авг Вр=салат (обслуживаются >< выбор)). 10.38. Докажите случай 5 теоремы 10.7. 10.39*. Покажите, что табло запроса Q с рис. 10.8 неэквивалентно никакому табло запроса Q', полученному из ограниченного алгебраического выражения.
10.11. Библиография и комментарии 287 10.40. Найдите табло запроса, происшедшее из ограниченного алгебраического выражения, но не охватываемое условием теоремы 10.8. 10.41. Завершите доказательство теоремы 10.8. 10.42. Повторите упр. 10.37 без предположения о том, что все отношения — проекции общего возможного состояния. 10.43. Пусть г — отношение со схемой А В CD. Найдите наборы табло запросов, эквивалентные следующим алгебраическим выражениям: (a) аЛ=6 V (Я=7 Л С=2) (г)' (b) (ал=6 (г) U оА==7 (г) χ κ0Ό (σΑ=Β (г)). 10.44. Пусть Ε — алгебраическое выражение, включающее отношение г, постоянные отношения с одним кортежем, выбор вида оА==с, проекцию, соединение, объединение и разность. Обязательно ли существуют наборы табло запросов Qx и Q2, такие, что Ε (г) = Qx (r) — Q2 (r)? 10.45. Пусть Q — размеченное табло запроса без постоянных в резюме. Покажите, что существует конъюнктивный запрос, эквивалентный Q. 10.46. Покажите, что для конъюнктивного запроса {*ι Μι) Ч (А*) ...хп (Ап) I 3 Уг Ш 3 Уг (В%) ..-ЗУт (Вт) /(*ь х2, ..., хп, уъ уъ ..., ут)}, где / — конъюнкция k атомов, имеется эквивалентное алгебраическое выражение, использующее переименование, k — 1 эквпсоединений и одну проекцию. 10.11. БИБЛИОГРАФИЯ И КОММЕНТАРИИ В работах Codd [1971a, 1972b] было предложено рассматривать реляционное исчисление как мерило полноты языков запросов и была показана его эквивалентность реляционной алгебре. Концепция безопасных выражений, так же как и общая структура доказательств эквивалентности, ведет начало от работы Ullman [1980]. Однако Кодд и Ульман приводят свои доказательства для случая, когда столбцы упорядочены, а имена атрибутов отсутствуют. Понятие конъюнктивного запроса введено в статье Chandra, Merlin [1976]. Оно послужило основой для определения в работе Aho, Sagiv, Ullman [1979a, b] табло запросов. Понятие набора табло запросов принадлежит Sagiv, Yanna- kakis [1980], которые также работали с оператором разности в ограниченном виде. В работах Klug [1980b, 1980c] расширено понятие табло запроса для работы со сравнениями на неравенство. Как показывает структура исчислений доменов и кортежей, имеется тесная связь между логикой предикатов и базами данных. Галлэр и Минкер редактировали сборник статей (Gallaire, Minker [1979]), посвященный этой связи. Джекобе в работах Jackobs [1979, 1980а, 1980b) широко исследовал использование логики в теории баз данных. Как мы увидим в гл. 14, имеются естественные операции над отношениями, которые нельзя выразить на языке реляционной алгебры. Таким образом, остро встает вопрос об уместности существующего определения полноты системы запросов.
Глава 11 Модификация запросов Центральным элементом каждой системы базы данных является процессор запросов. Его задача — принять запрос на языке запросов данной системы, сделать анализ запроса, совершить обращение к файлам и провести вычисления, необходимые для нахождения ответа на запрос. Часто процессор только порождает коды этих обращений и вычислений, а не вычисляет само значение запроса (обычно имеется пакет прикладных программ управления файлами, к которому процессор запросов обращается для выполнения собственно доступа к файлам). Процессор может при анализе запроса модифицировать запрос — обычно для повышения эффективности вычислений. Если язык запросов основан на исчислении доменов или кортежей, то обычно первая модификация запроса — перевод его на язык реляционной алгебры (хотя алгебраическое выражение может лишь неявно присутствовать в некотором внутреннем представлении запроса). Исчисления домецов и кортежей по своей сути —непроцедурные системы запросов: они выражают только то, каким должен быть ответ на запрос, а не то, как его вычислить. В гл. 10 уже были описаны методы непосредственного вычисления значений безопасных выражений исчисления доменов и кортежей, но, если в формулы, участвующие в запросе, входят кванторы, изложенные методы становятся неприемлемыми с вычислительной точки зрения. С другой стороны, алгебраические выражения можно вычислять непосредственно, если только существуют процедуры для каждой использованной операции. Таким образом, перевод запроса в алгебраическое выражение — это средство, позволяющее определить, каким образом должно вычисляться значение запроса. Отметим, что процессор запросов использует не те методы перевода, которые встречались в теоремах гл. 10, а совсем иные. Основанные на исчислениях доменов и кортежей
Гл. 11. Модификация запросов 289 языки запросов могут обычно представить лишь некоторое ограниченное подмножество возможных выражений исчисления доменов или кортежей. Ограничения, наложенные на вид этих выражений, позволяют обычно применять более непосредственные схемы перевода, которые дают довольно компактные алгебраические выражения. Следующая модификация — это, вероятно, подстановка виртуальных отношений. В реляционных системах часто поддерживаются два вида отношений: базовые отношения, которые хранятся физически, и виртуальные отношения, которые определяются через базовые. Виртуальные отношения, по одному или собирательно, называются иногда точками зрения. Виртуальные отношения нигде не хранятся, но пользователь системы может назвать их при формулировке запросов точно так же, как и базовые отношения. Вхождения виртуальных отношений должны быть заменены при обработке запроса на их выражения через базовые отношения. В результате получится эквивалентное выражение, включающее лишь базовые отношения. Пример 11.1. Пилоты нашей авиалинии регулярно проходят проверки и сравниваются между собой. Информация об этих проверках содержится в трех отношениях. on (№П ФП АД), оэ (№Э ФЭ), ор (№П №Э ДТ РЗ), где №П, ФП, АД, №Э, ФЭ, ДТ, РЗ соответственно обозначают номер пилота, его фамилию, адрес, номер экзаменатора, фамилию экзаменатора, дату экзамена и результат экзамена. Можно образовать виртуальное отношение плохо, которое содержит информацию о пилотах с плохим результатом. Оно определяется как плохо — on χ π№π дт рз (<?рз < 6.5 (ор))- Такие выражения, как афп^джекобс (плохо), перед вычислением будут модифицированы до ОфП^Джекобс (ОП >< Я№П ДТ РЗ (<?РЗ < 6.5 (ор)))- Некоторые реляционные системы, например INGRES, при модификации запросов принудительно вводят ограничения совместности и обеспечивают защиту информации. Пример 11.2. Предположим, что одному из пользователей разрешен лишь ограниченный доступ к отношению on. Ему разрешается, скажем, доступ только к кортежам для пилотов, живущих в Нью-Йорке или в Атланте. В системе INGRES можно поставить условие, что каждый раз, когда этот человек использует on, к данному отношению применяется выбор СХАД=Нью-Йорк V АД=Атланта»
290 Гл. 11. Модификаций запросов Еще одна причина для проведения модификаций — невозможность использовать алгебраические операции, которые не поддерживаются данной системой или поддерживаются не в полной мере. Некоторые системы поддерживают только те соединения, которые относятся к одному атрибуту в каждом отношении. Соединения, включающие несколько атрибутов, должны быть предварительно преобразованы в соединения по одному атрибуту и последовательность выборов. Некоторые системы поддерживают лишь выборы с конъюнкциями и отрицаниями сравнений. Для того чтобы вычислить значение выбора с дизъюнкцией, нужно преобразовать запрос в объединение выборов разрешенного вида. Обширный класс модификаций объединяют в одно целое и называют единым термином оптимизация запросов. Цель таких модификаций — получить выражение, эквивалентное данному, но требующее для его вычисления меньше времени и памяти. Наверное, это было бы лучше называть «улучшением», а не «оптимизацией», так как редко удается эффективно найти выражение, эквивалентное данному и минимизирующее время или память, требуемые для его вычисления. Некоторые модификации—это, скорее, упрощения: удаление избыточной операции или комбинирование двух операций в одну. Пример 11.3. Используем отношение из упр. 11.1. Начнем с выражения πΦΠ (on >< плохо); сделаем подстановку значения плохо: πΦΠ (on χ on χ π№π дт рз (<*рз <6.5 (on))), что упрощается до πΦΠ (on χ π№π дт рз (σΡ3 <б.*5 (op))), так как on χ оп=оп. В выражении я^п (яюп дт рз {(ор)) можно объединить проекции и получить я№п (ор). Некоторые модификации проводятся для использования преимуществ вида дополнительных операций, поддерживаемых процессором запросов. Пример 11.4. Предположим, что в нашем распоряжении имеется операция «ограничение», которая совершает выбор с последующей проекцией. Для вычисления выражения <7цт=7 июн (Jtjfen №Э Дт (°Р)) на отношении ор из примера 11.1 требуется два обращения к ограничению, так как выбор выполняется после проекции. Однако для вычисления эквивалентного выражения Я№П №Э ДТ (<7ДТ=7 июн (ор)) потребуется только одно такое обращение, так как теперь сначала выполняется выбор.
Гл. 11. Модификация запросов 291 Цель любой оптимизации —эффективность вычислений. Даже если запрос в первозданном виде выглядит вычислительно эффективным, последующие модификации (такие, как перевод в другую систему запросов, подстановка виртуальных отношений и т. п.) могут значительно снизить его эффективность. Соединение — это решающая операция с точки зрения эффективности, так как требуемое для вычисления о соединения время часто оказывается пропорциональным произведению размеров операндов х). Улучшить временную эффективность вычисления соединения может модификация запроса, которая сократит размеры операндов соединения. Пример 11.5. Рассмотрим выражение ^Фп=Джекобс (ОП >< Я№П ДТ РЗ (^РЗ < 6.5 (Ор))) из примера 11.1, полученное после подстановки виртуального отношения. Надо думать, что (7Фп=джекобс (on) состоит из одного только кортежа, и, значит, оно намного меньше, чем on. Для сокращения времени вычисления нужно использовать эквивалентное выражение <7фП=Джекобс (ОП) >< Я^П ДТ РЗ (<?РЗ < 6.5 (Ор))- Иногда при оптимизации запросов полезно использовать ограничения, наложенные на базу данных. Пример 11.6. Предположим, что если номер пилота встречается в отношении on, то он обязательно встречается и в ор. Тогда выражение яФП (оп\>< ор) может быть заменено просто на яФП (on), хотя без наложенного ограничения эти выражения неэквивалентны. Выбор порядка вычисления выражения тоже имеет отношение к оптимизации.-Процессор запросов должен решить, какой из промежуточных результатов вычислить в первую очередь и в каком порядке выполнять коммутирующие операции и ассоциативные операции. Если же в выражение входит несколько раз одно и то же подвыражение, то можно сэкономить время, сохранив значение подвыражения, а не вычисляя его дважды. Также важен порядок вычисления соединений в цепочке этих операций. Пример 11.7. Рассмотрим выражение Я№П (<7ДТ=7 Июн (Ор ><\ аФэ=Люиы (Од))) — — Я№П (<7ДТ=8 Июн (Ор >< ОфЭ=Люин (ОЭ))) *) См., однако, разд. 11.9. Там приводится оценка О (я log я), где η — число кортежей. Поэтому для больших отношений, когда О (п log η) < я2, ситуация с соединением не такая катастрофическая. Для маленьких же отношений большая величина постоянной пропорциональности делает алгоритм со сложностью О (п log ή) неэффективным. — Прим. перев.
292 Гл. 11. Модификация запросов над отношением из примера 11.1. Выгоднее вычислять сначала г = ор\>< аФэ=люин (оэ), а затем Π№π(θΤνΓ=7ΗΐθΗ (ή) — Я№П (θΉΤ=:8 июн (г)). Пример 11.8. Рассмотрим соединение о/г tx 05 ιχι о/? отношений из примера 11.1. Если вычислять это соединение как (оп\>< >< оэ) \>< ор9 то может получиться промежуточный результат, больший по объему, чем конечный, поскольку опхоэ— это декартово произведение. Лучше вычислять это соединение как on >< (оэ >< ор). Теперь никакое соединение не будет декартовым произведением. Наконец, оптимизация запросов включает в себя и выбор способа вычисления, поскольку процессор запросов может располагать несколькими способами вычисления данной операции. Выбранный способ может определяться либо тем, как хранится отношение, либо имеющимися в наличии дополнительными структурами. Вычисление выбора может проводиться просмотром всего отношения кортеж за кортежем, однако при наличии индекса для атрибута, по которому проводится выбор, он может быть вычислен просмотром индекса. Проецировать можно или с удалением дубликатов, или без него. Если одна проекция расположена в сфере действия другой, то удаление дубликатов можно отложить до вычисления последней, если это улучшит эффективность. Указатели из кортежей одного отношения на кортежи другого помогают иногда вычислять соединения. Порядок кортежей в отношении, которого в формальной модели просто не существует, оказывается существенным при вычислении запроса. Почти в каждом языке запросов пользователь может потребовать сортировку результата по одному или нескольким атрибутам. Упорядочение промежуточного результата может упростить последующую операцию. Если оба операнда одинаково упорядочены, то объединение, пересечение и разность можно вычислять за один проход по обоим операндам. Упорядочение операндов также является одним из лучших способов вычисления соединения. Пример 11.9. Рассмотрим вычисление соединения rixis, где схема г — это А В, as — это В С. Предположим, что каждое отношение хранится на диске по 20 кортежей в блоке, причем считывание с диска может производиться только целыми блоками. Допустим, что г требует для хранения 30 блоков, s — 40, а в памяти есть место только для 5 блоков одновременно. Сложность вычисления будем характеризовать количеством обращений к диску.
11.1. Уровни информированности при модификации 293 Если г или s не отсортированы по В, то не остается ничего лучшего, как считывать блоки из s в память по четыре, а для каждой четверки блоков из s считывать все блоки из г по одному, вычисляя при этом соединения всех кортежей из блока г с кортежами из четырех блоков s. При этом каждый блок из s считывается один раз, а блоки из г — по 10 раз. Всего получается 340 обращений. Фактически этот способ обращения состоит из двух вложенных циклов: внешнего — по блокам s, и внутреннего — по блокам г. Если же и г, и s отсортированы по β, можно применить более эффективный метод. Допустим, что кортежи с данным β-значением не встречаются более чем в двух подряд идущих блоках. Вычислим rixis, рассматривая каждое β-значение по очереди и соединяя кортежи из г и s с этим β-значением. При этом в памяти необходимо держать только два блока г и 2 блока s одновременно. Если рассматривать β-значения в порядке сортировки, то каждый блок из г и s считывается по разу. Всего получается 70 обращений. Этот способ можно рассматривать как «сращивание» г и s путем единого прохода через оба отношения. Рассматриваемые далее модификации запросов почти не зависят от деталей реализации базы данных. Для этого пришлось бы постичь тонкости техники управления файлами и взаимосвязи между обращениями к внешней памяти и скоростью вычислений. Мы будем стараться использовать общие принципы, справедливые в большинстве реализаций баз данных, такие, как «сокращение числа соединений или размеров промежуточных результатов улучшает эффективность». Несмотря на это, предполагается, что читатель знаком со структурами данных и техникой указателей, используемой во внешней памяти (это наделит его интуицией в применении общих принципов). 11.1. УРОВНИ ИНФОРМИРОВАННОСТИ ПРИ МОДИФИКАЦИИ ЗАПРОСОВ В этом разделе мы немного отвлечемся от общего плана изложения и покажем, каким образом диапазон возможных модификаций зависит от количества информации, доступного в данной базе данных или в системе, поддерживающей ее. При этом надо иметь в виду, что даже в том случае, когда в распоряжении имеется много информации, может оказаться неразумным обращаться к ней каждый раз. Если запрос вычисляется только один раз, то непродуктивно тратить на его оптимизацию больше времени, чем на вычисление первоначальной версии. Если же можно предположить, что запрос будет встречаться много раз, то большое количество времени, потраченное на оптимизацию запроса, может окупаться за время жизни запроса,
294 Гл. 11. Модификация запросов При минимальном уровне информированности об отношениях из базы данных неизвестно ничего, кроме их имен. Пример 11.10. Выражения г f| г, пх (r U s), оа=вав=Сла=с (ή можно модифицировать в эквивалентные выражения г, пх (г) (J U пх (s) и оа=влв=с (г) соответственно, даже если про них неизвестно ничего, кроме того, что неявно указано в выражениях. Заметим, однако, что если дано выражение пх (г) U nx (s), то выражение пх (г U s) не обязательно корректно х), так что такая модификация незаконна. Если же известны схемы отношений, то возможен более широкий класс модификаций. Пример 11.11. Рассмотрим отношения г (А В) и s (В С). Выражение оА==а (rxs) эквивалентно оА=а Μ >< s. Если же мы переставим схемы этих отношений, то эквивалентность будет потеряна. Еще большее количество модификаций законно при наличии ограничений. Пример 11.12. Если отношение г удовлетворяет F-зависи- мости В -»■ С, то пА в (г) >< пв с (г) можно заменить на яА в с (г). Полезность или необходимость различных модификаций зависит от операций, поддерживаемых данной системой базы данных, и методов поиска, применимых во внешней памяти. Возможно, что соединения нескольких отношений осуществимы как одна операция. Если поддержан только выбор по конъюнкции сравнений, то выбор по дизъюнкции должен быть преобразован в объединение выборов. В некоторых системах возможны выборы в процессе вызова отношения из внешней памяти. Некоторые модификации зависят от реализации базы данных рассматриваемой системы. Способ вычисления выбора и соединения может зависеть от наличия или отсутствия указателя. На самом высоком уровне информированности в игру вступает уже текущее состояние базы данных. Относительные размеры q, r и s могут определить, соединение каких двух отношений вычислять в первую очередь при интерпретации q >< r>< s. Если | q | X X |r|<|s|, то, по-видимому, лучше вычислять сначала qxr (даже если это окажется декартовым произведением). Использованный для вычисления выражения метод может зависеть и от того, какие промежуточные результаты поместятся в оперативную память. Если в выражении встречается несколько раз одно и то же подвыражение, то от размера соответствующего отношения зависит, вычислять его каждый раз заново или сохранить в памяти. *) Напомним, что выражение пх (г (J s) корректно, если схемы г и s совпадают. — Прим. ред.
Π.2. Упрощения и повторяющиеся подвыражения 295 11.2. УПРОЩЕНИЯ И ПОВТОРЯЮЩИЕСЯ ПОДВЫРАЖЕНИЯ В АЛГЕБРАИЧЕСКИХ ВЫРАЖЕНИЯХ Для удаления бесполезных операций из выражения можно использовать следующие эквивалентности: r{Jr = r, rf\r = r, γιχιγξγ, г — r = 0, где 0 — пустое отношение с подходящей схемой. Коль скоро в выражении может появиться пустое отношение, то применимы следующие упрощения: /*υ0ΞΞΓ, ΓΠ0Ξ0, ΓΧ0ΞΞ0, Г - 0 ΈΞ Г, 0-ΓΞ0, ПХ(0) = 0, σο(0)Ξ0, Г[С]0 = 0, 0[С]г=09 δΝ(0) = 0. Здесь С — произвольное условие выбора или θ-соединения, а N — произвольное переименование. Пример 11.13. Выражение (г — r)x(r\Jr) упрощается до 0 ><г9 а затем до 0. Указанные выше упрощения применимы и для любого выражения Е, поставленного на место г. Например, (г >< s) {] (г >< s) = ξ r\xs. Для применения таких упрощений необходимо найти повторяющиеся подвыражения в данном выражении. Хотелось бы, в идеале, находить эквивалентные подвыражения, например rxs и sxr. Опишем метод обнаружения повторяющихся и некоторых эквивалентных подвыражений. Последние должны быть эквивалентны по ассоциативности или коммутативности. Как упоминалось, искать такие подвыражения полезно как для определения, каким образом вычислять выражение, так и для применения упрощений. Алгебраические выражения будут представлены посредством деревьев выражений, т. е. ориентированных деревьев, внутренние узлы х) которых помечены операциями, а листья 2) — отношениями или постоянными. Выходящие из внутреннего узла ребра указывают на^ операнды данной операции 3). *) То есть узлы, из которых выходят ребра. — Прим. перев. 2) То есть узлы, из которых не выходят ребра. — Прим. перев. 3) Для выражений с некоммутативными операциями (т. е. с разностью и делением) представление в виде ориентированного дерева невозможно, так как необходимо ввести два типа стрелок: указывающую на левый операнд узла и на второй (на рисунках это стрелки «налево вниз» и «направо вниз»). — Прим. перев.
296 Гл. ll. Модификаций запросов Рис. 11.1. Рис. 11.2. Рис. 11.3. Рис. 11.4. Пример 11.14. Дерево выражения для пх (s >< г) — пх (q >< г >< s) показано на рис. 11.1. Идея предлагаемого метода — преобразовать дерево выражения в DA-граф путем отождествления листьев с одинаковыми пометками, а затем отождествления внутренних узлов с одними и теми же операциями и операндами. Порядок операндов для внутренних узлов с двумя операндами имеет значение, если узлы помечены разностью и делением. Пример 11.15. Начнем с дерева выражения с рис. 11.1. Отождествим листья — получим DA-граф (рис. 11.2). Теперь можно отождествить два узла-соединения — получим DA-граф, изображенный на рис. 11.3.
11.2. Упрощения и повторяющиеся подвыражения 297 Если ассоциативные операции в выражении снабжены скобками не в полной мере, то при построении дерева выражения возможны варианты. Это может помешать найти эквивалентные подвыражения. Пример 11.16. Поддерево для qxrxs в дереве выражения с рис. 11.1 могло бы быть построено, как показано на рис. 11.4. В этом случае повторяющееся подвыражение не было бы найдено. Рис. 11.5. Рис. 11.6. Чтобы не пропустить подвыражения из-за неправильного выбора дерева выражения, разрешим внутренним узлам с ассоциативными и коммутативными операциями иметь произвольное число входящих ребер. Если два внутренних узла, отмеченные одной и той же операцией, имеют по крайней мере два общих операнда, этот «перехлест» операндов можно выделить как подвыражение. ПГример 11.17. Дерево выражения для (гг >< г2 >< r3) U (^2 >< Η >< г4) показано на рис. 11.5; вариант после отождествлений — на рис. 11.6. Даже после разрешения иметь несколько операндов внутренним узлам нельзя гарантировать, что будут найдены все повторяющиеся подвыражения. Выбор какого-либо отождествления может помешать другим отождествлениям. Если выражение из примера 11.17 является в действительности частью большего выражения, включающего также гг >< г2, то после выбора отождествления с рис. 11.6 подвыражение г1\хг2 не будет идентифицировано как повторяющееся. После того как найдены повторяющиеся подвыражения, можно приступить к поиску возможных упрощений.
298 Гл. 11. Модификация запросов Пример 11.18. Узлы дерева выражения для можно отождествить — получится DA-граф, представленный на рис. 11.7. Его можно упростить; новый DA-граф приведен на рис. 11.8. Рис. 11.7. Рис. 11.8. Рис. 1 1.9. Рис. 11.10. Отдельные упрощения основаны на включениях; некоторые из них перечислены в упр. 11.1. Хотя на уровне базы данных включение отношений — явление необычное, на уровне выражений оно вполне ординарное. Пример 11.19. На рис. 11.9 показан DA-граф, полученный для выражения ((г— (г U s))\><q) (J aA=a (s). Если мы умеем распознавать г ^ г (J s, то можно произвести последовательность упрощений, представленную на рис. 11.10-
11.3. Оптимизаций алгебраических выражений 299 Унарные операции можно комбинировать (это упрощает выражения) с использованием тождеств <*С, (Осш (Г)) ΞΞ 0СхАСг (Γ), Κχ (πу (г)) Ξ ΊΙχ (г), δ^ (б^2 (г)) = б^3 (0 при соответствующем выборе Ns. Разумеется, такие упрощения могут замаскировать повторяющиеся подвыражения. Эти тождества можно применить для расщепления унарных операторов и получения повторяющихся выражений. Пример 11.20. В выражении (г >< GA=a (qXS)) — {r>< GA=aAB=b (<7 >< S)) может оказаться полезным расщепить оА==аАВ=ь (qxs) до <*в=ь (ол=а (q >< s)) Для использования подвыражения оА=а (q>< >< s). 11.3. ОПТИМИЗАЦИЯ АЛГЕБРАИЧЕСКИХ ВЫРАЖЕНИЙ Все приемы оптимизации, рассматриваемые здесь, основаны на том, что с ростом количества кортежей в операндах и размеров схем операндов происходит рост объема памяти и времени, необходимых для вычисления бинарной операции. Используемая стратегия — спуск выборов и проекций вниз по дереву выражения. При спуске выборов сокращается число кортежей в операндах бинарной операции, а при спуске проекций сокращается еще и схема операнда (при сокращении количества кортежей). Еще один общий принцип — вычислять выборы до проекций, так как для выбора необходим лишь один проход по кортежам отношения, а для проекции нужно к тому же совершить сортировку для удаления дубликатов. Цель'такой оптимизации — спустить, начиная с дерева выражения, выборы и проекции как можно ниже по дереву, а затем скомбинировать проекции и выборы так, чтобы для любого пути вниз по дереву между двумя узлами для бинарных операций оказалось не более одного узла с выбором и не более одного узла с проекцией. Интуиция в таких операциях должна основываться на следующем способе вычисления с помощью дерева (или DA-графа) выражения: для внутреннего узла, операндами которого являются отношения, вычислим результат операции, сохраним его как промежуточное отношение и заменим внутренний узел на лист, помеченный этим отношением. Процесс повторяется до тех пор, пока дерево не превратится в единственный лист. Пример 11.21. Рассмотрим дерево выражения с рис. 11.11. Вычислим Si = /Ί >< гг\ изменим дерево, как показано на рис. 11.12. Вычислим теперь s2 = ях (sj и изменим дерево, как показано на рис. 11.13. Вычисление завершается подсчетом ss = s2 ><r9.
300 Гл. 11. Модификация запросов Почему накладывается требование на количество выборов и проекций между узлами для бинарных операций? Дело в том, что унарные операции можно вычислять одновременно с выполнением предыдущей или следующей бинарной операции. В то время как кортежи выбираются из отношения для выполнения бинарной операции, ничего не стоит отбросить атрибут или отсеять кортеж, т. е. применить проекцию или выбор. То же самое можно сделать при записи кортежей — результатов бинарной операции. Вдобавок к этому система управления файлами может в процессе записи удалить дубликаты. Рис. 11.11. Рис. 11.12. Рис. 11.13. Пример 11.22. В примере 11.21 можно объединить проекцию с последующим соединением; при этом промежуточное отношение s2 сохранять не нужно. Ниже перечислены тождества, которые можно использовать для спуска выбора по дереву выражения. Предположим, что θ-соединение г [С] s преобразовано в ос (rixis), где естественное соединение — обязательно декартово произведение. Вот эти тождества: ос (π* (0) ξ η χ (oc (г)), oc (δΝ (ή) ξ δΝ (ос> (г)), ос (г U s) = ос (г) U ос (s), ос (г П s) = ос (г) П ос (s), ос {r — s) = ос (г) - ос (s), где С — это условие С с соответствующими переименованиями. Трудности появляются при пронесении через соединение, так как С может содержать сравнения, включающие атрибуты обоих отношений. Если отношения — это г (R) и s (S), то предположим, что С можно записать как Сг Д С2 Д С3, где С2 применяется только к атрибутам из R, а С3 — к атрибутам из S. В этом случае применимо тождество <*сглсялсл {г >< s) Ξ <*Cl (ос2 (г) >< оСя (s)).
11.3. Оптимизация алгебраических выражений 301 Пример 11.23. Пусть q, r и s — отношения со схемами А В, В Си CD. Тогда выражение <*b^cac=aad<a (q >< г >< s) можно модифицировать до Отметим, что <*d<a (q >< Ов<с {г) >< ас=4 (s)) — также эквивалентно первоначальному, однако мы всегда будем выбирать тот способ, в котором выборы спускаются вниз по как можно большему числу ветвей. Все перечисленные выше тождества для выборов применимы, естественно, и тогда, когда г и s заменены на произвольные алгебраические выражения Ег и £2- Для спуска проекций можно использовать следующие тождества: пх (6jv (г)) ξ бл (πχ, (г)), пх (σ0 (г)) = пх (σσ (пх Y (r)), nx(r[}s) = nx(r)\Jnx(s), где X' — соответствующее переименование X, a Y — наименьшее множество атрибутов, такое, что Χ Υ содержит все атрибуты, перечисленные в С. Отметим, что проекцию нельзя проносить сквозь пересечение и разность. Для соединения опять необходимы некоторые ухищрения. Пусть R и S — схемы отношений для г и s; пусть R' = R Π XS> S' = S Π XR- Тогда применимо тождество Ζίχ (Г >< S) Ξ Пх (nR- (г) >< US' (s)). Необходимо сохранять все атрибуты из X и из R (] S. Как и прежде, в тождество можно подставлять вместо отношений выражения. Путем использования этих тождеств можно проводить алгебраическую оптимизацию. При этом выборы и проекции спускаются вниз по дереву выражения так далеко, как только это возможно. Если возникает конфликт между возможностью спуска выбора и спуска проекции, то по изложенным выше причинам необходимо спускать выбор. Последовательность вида «проекция — выбор — проекция» упрощается до «проекция — выбор». Все проекции на схему операнда как целое удаляются.
302 Гл. 11. Модификация запросов ( σΦΠ*ΦΓΤ^ с аФЭ=Рэндольф Λ РЗ ^ 6.5 (^ΦΓΝ-ΦπΟ Рис. Г Г. 14. Пример 11.24. Рассмотрим следующее выражение, в котором используются отношения из примера 11.1. Оно дает всех пилотов, которые получили у Рэндольфа плохой результат и живут там же] где какой-нибудь другой пилот, получивший плохой результат с 1 июня. Это ЯфП ((ТфП^ФП' (сГфЭ=РэндольфЛРЗ<6,5 (0П >< оэ >< Ор) >< Г>< ЯфП'АД (бфПч-ФП' (0ДТ>1 июняЛРЗ<6,5 (ОП >< Ор))))). На рис. 11.14 показано соответствующее дерево выражения. Наивысший выбор не может быть спущен сквозь соединение, а остальные два могут, как показано на рис. 11.15. На рис. 11.16 изображен результат спуска верхней проекции сквозь выбор и соединение. На рис. 11.17 показан результат дальнейшего спуска проекций и удаления второй сверху проекции. Если мы не будем заботиться об удалении дубликатов в результатах двух проекций, предшествующих всем бинарным операциям, а тройное соединение выполним как два бинарных, то для вычисления дерева
11.3. Оптимизация алгебраических выражений 303 ( ^ФП^ФГУ ) ^ФГГАД^) /S \>~^ \ ( *фп*-фпО у;ФЭ = Рэндоль(^) ^ °Р3^6.5 J ч τ у Рис. 11.15. Q ^ФП^ФПу ( *ФП ФГТ J ( *фг>-фгг) ^опХ<ГФЭ=Рэндол^(^ tfP3^6.5 J © Θ Рис. 11.16.
304 Гл. 11. Модификация запросов Рис. 11.17. с рис. 11.17 необходимо четыре этапа. Если же удалять дубликаты после этих проекций, то необходимо шесть этапов: /*! Ч-ЯяоП Я°Э РЗ (tfp3sC6.5 (Op)), Г2 <- (ТфЭ=Рэндольф (ОЭ) ><Г\ Г3Ч-Яфп Αά(0Π>< Г2), Га <~ ЯяоП (<?ДТ>1 июняЛРЗ<6.5 (Ор)), г5ч- бфп«-Ф'п- (яфп ад (on >< г4)), Г6 Ч-Яфп ((ТфП^ФП' (/"3 >< >*5))· Взаимоотношение между поиском повторяющихся подвыражений и алгебраической оптимизацией довольно сложное. Алгебраическая оптимизация может, разумеется, замаскировать повторяющиеся подвыражения. В примере 11.24 подвыражение on хор повторяется в первоначальном выражении, но не в оптимизированном. Однако вовсе не очевидно, что вычисление on >< op и использование результата в двух поддеревьях окажется более быстрым, чем оптимизированная версия. Трудности возникают и при спуске выборов и проекции вниз по DA-графу, так как узел может быть операндом нескольких операций. Похоже, что луч-
11.4. Декомпозиция запросов 305 ший способ — это оптимизация с последующим поиском повторяющихся подвыражений. В оптимизированной версии могут появиться даже повторяющиеся подвыражения, которых не было в первоначальной. Пример 11.25. Пусть q> r и s — отношение со схемами А В, В С и С D. Выражение (q >< г) — ηА в c(q>< oD=d (r >< s)) не содержит повторяющихся подвыражений. В оптимизированной же версии (q >< г) — ял вс (q >< г >< пс (aD=d (s))) выражение q >< r — повторяющееся. Напомним еще раз, что «оптимизация» — не совсем точное название для производимых нами преобразований. Спуск проекций и выборов вниз по дереву — это эвристика; нет никаких гарантий, что модифицированное выражение при текущем состоянии базы данных сэкономит в действительности сколько-нибудь памяти или времени в сравнении с первоначальным. 11.4. ДЕКОМПОЗИЦИЯ ЗАПРОСОВ В этом разделе разбирается метод вычисления запросов, используемый процессором запросов QUEL системы реляционной базы данных INGRES. Цель метода — превратить запрос в программу, включающую лишь присваивания, выбор, проекции и циклы for. Алгоритм системы INGRES использует также рекурсивные выводы, но мы для простоты используем вместо них присваивания. Метод декомпозиции применим к классу запросов, описываемых выражениями исчисления кортежей вида \х (АгА2. ..Ап)\зУх (Ri) € ri 3 Уг(Яг) € г2... з Ут (Rm) € гт (/ (*, Уъ У* ..·, Ут) Л 8 (Уъ #2, ···> Ут)))· Формула / должна быть конъюнкцией атомов, причем для каждого i, 1 < i < η, она должна содержать атом вида χ (At) = tjj (В) для некоторого tjj и некоторого атрибута β. Формула g не должна содержать ни кванторов, ни атомов вида г (ζ). Выражение исчисления кортежей такого вида легко переводится в эквивалентное алгебраическое выражение. Пусть sf = δΝ, (rf), где Nt переименовывает каждый атрибут В из Rt в *уг.Въ. Эквивалентное алгебраическое выражение имеет вид δ^ (ях (σα (sj, χ s2 χ ,., χ sm)),
306 Гл. 11. Модификация запросов где для каждого атома χ (At) = у^ (В) из / выражение N включает Αι -+-yj.B, a X содержит θ. Условие выбора С получается из g заменой каждого атома уг (A) Qyj (В) на сравнение yt.A Θ yj.B. Отметим, что, поскольку все атрибуты переименованы указанным выше образом, все соединения — обязательно декартовы произведения. Пример 11.26. Рассмотрим выражение \х (ФП РЗ) | з Ух (№П ФП АД) £ on 3 у% (№П №Э ДТ РЗ) £ ор ((х(ФП)=У1 (ФП) Л х (РЗ)=Л (РЗ)) Л (Уг (АД) = «Нью- Йорк» Л Уг (№П) = у2 (№П) Л Уг (РЗ) > 9))}, в котором используются отношения on и ор из примера 11.1. Эквивалентным алгебраическим выражением будет бфПч-^.ФП, РЗ<-д2.РЗ (%!.ФП г/2.РЗ (^1.АД=«Ныо-Йорк» yt.No Tl=y2.No ΠΛ#2·Ρ3>9 (^' >< °Р')))> где on и ор — это on и ор с соответствующими переименованиями. Далее будет предложено графическое представление для алгебраических выражений вида ас (sx t><i s2 tx ... t><sm), но прежде нужно преобразовать С. Определение 11.1. Будем говорить, что условие выбора С находится в конъюнктивной нормальной форме (КНФ), если оно имеет вид Сх Д С2 Д ... Д Ckf где никакое Ct не содержит знака «Д», а отрицания применяются лишь к отдельным сравнениям. Произвольное условие выбора С без труда переводится в КНФ. Применим сначала два следующих тождества (законы де Моргана) для «продвижения отрицаний внутрь», пока они не будут применяться к отдельным сравнениям: 1. l(Ci /\С%) = -\Сг V1C2, 2. 1(Сх V С2) = 1Сх Д1С2. Затем применим два закона дистрибутивности для «вынесения Д наружу»: 3. (Сг Д С2) V С3 = (Сг V С,) Д (С, V С8), 4. сх ν (С. Д с,) = (d V Q л (d ν с9). Пример 11.27. Начнем с условия выбора 1 ((Аг = А2 γ А* < а) V 1 Hi = А3 у ^з = а)) и продвинем первое отрицание вперед; получим 1 (Л* = Л, γ А* < а) Л Hi = ^з V ^з = «)·
11.4. Декомпозиция запросой 307 Повторим еще раз эту операцию; получим (1 А1 = Л2 л 1 А* < а) Л Hi = А3 у As = α). Теперь отрицания применяются лишь к отдельным отношениям. Применим законы дистрибутивности; получим (1 Аг = А2 γ (Аг = А3 γ Л3 = а)) д Π А2 < а у (Аг = А3 ν А3 = а)). Это выражение находится в КНФ. -/1 ·Α = /2 ·Α ;^7^ч\ !—/2 б^з -С ν у2 .f<y4 .F у/ у у, В = у2 ЧВ у У У ώ У У У / У^\ (W L-/3 .о У ■У ι У V"N N \^У/ У* -Д<Кб -А Рис. 11.18. Пусть Ε — алгебраическое выражение gc (sx ><s2 >< ... ><ism), где условие С = Сх д С2 д ... д Cfe представлено в КНФ, а все соединения—декартовы произведения. Представим £ размеченным гиперграфом HEi который будет называться графом связей для Е. Ребра гиперграфа могут содержать один узел или более (а не ровно 2, как в обычном графе). Гиперграф НЕ имеет по узлу для каждого из sl9 s2, ..., sm. Для каждого из Ct гиперграф НЕ содержит ребро eiy которое включает узел Sj, если tjj.B входит в С ι (В — некоторый атрибут). Ребро е-г снабжено меткой Ct. Пример 11.28. Рассмотрим алгебраическое выражение Ε = = σσ (sii><iS2 >< s3 >< S4XIS5), где С — условие выбора: уг.А = yt.A д уг.В = у2.В д y3.D = = d Л (Ув-0 = ί/3-G V У+Р < У+F) А У ι-А < уь.А. Граф связей НЕ для Ε изображен на рис. 11.18, ребра обведены пунктиром. Отметим, что два ребра могут содержать одни и те же узлы — в этом случае они должны иметь разные метки. Для простоты во всех следующих ниже примерах ребра будут иметь не более двух узлов. Граф связей будет изображаться как обычный граф, а ребра, содержащие только один узел, будут представляться петлей, идущей от узла в него же.
308 Гл. 11. Модификаций запросов Декомпозиция запроса начинается с однострочной программы вида г ч- πχσ0 (sx ><! s2 χ ... χ sm), где схемы st дизъюнктивны. Конечный результат — программа из нескольких команд, которая содержит присвоения, выбор, проекцию и циклы for, но не соединения. Вместо соединений используются циклы for. Для достижения этой цели к программам применяются две трансформации — первичная обработка и итерация. Эти трансформации соответствуют удалению ребра и удалению узла в графе связей. Цель трансформаций — получить из графа для ос {s1\><s2i\>< ... χ sm) граф без ребер. Исследуем детально каждую трансформацию. 11.4.1. Первичная обработка Первичная обработка аналогична спуску выборов вниз по дереву выражения. Начнем с команды г ч- пхос (sx >< s2 χ ... ><J sm)f где С = Сг д С2 Л ··· Л Съ, — условие выбора в КНФ. Пусть Ε обозначает выражение ос (sx i><i s2 χ ... xsm). Первичная обработка начинается с выбора подмножества множества \slf s2, ..., sm\. Предположим, что выбрано \sl9 s2, ...,sp}. Пусть elf e2f ..., eq — ребра графа НЕ, содержащие только узлы из \sl9 s2, ..., sp]. Напомним, что ребро et снабжено меткой Сг. Преобразованная программа состоит из двух команд: г,ч-яу(асглс2л...лс<7(51><152><1 ... ><sp)); Г<-ПХ (%41Л^+2Л...ЛСЛ (Г' X Sp+i X Sp+2>< Sw)). Здесь Υ — множество атрибутов отношений sb s2, ..., sp, которые упоминаются в Cq+1, Cq+2y ..., Ch или содержатся в X. Отношение г' промежуточное; в нем сохраняется промежуточный результат. Соответствующая замена в графе связей заключается в подстановке г' вместо slf s2, ..., sk в ребра eq+l9 eq+2y ..., ek. В результате получился граф с двумя компонентами: одна — с узлами Si, s2, ..., sp и ребрами еъ е2, ..., eq, а другая — с узлами г', sp+1, sp+2, ···> sk и модифицированными ребрами eq+l9 eq+2i ..., ek. Пример 11.29. Рассмотрим команду Г+-ПУ1.а Уь-В y4G(GC(S\XS2XS3XS4)), где С — это уг.А = у2Л д У^А = у3-Л Д #2-# < Уз-В д ί/3-D < y±.D д у4·^ = 6. Граф связей для этого выбора показан
11.4. Декомпозиция запросов 309 у2 .А-Кз ·Α Рис. 11.20. на рис. 11.19. Первичная обработка по js2, s3\ дает программу г' ■<-пУя.а Уя.'в y*.D (ас- (s2 >< s3)); где С есть у2-Л = уъЛ д у2.5 < у3.В, а С" — это угЛ = = ί/2-^4 Λ Уз-D < y^.D л ί/4-Ρ = 6. Модифицированный граф связей показан на рис. 11.20. Полезен следующий частный случай, когда для первичной обработки выбрано одно отношение, скажем sx. При этом командами в трансформированной программе будут Г' <-Ηγ (GClAC2A...ACq(S\))] r<-nx (aCmAC^%A...ACk(r' ><s2><s3>< ... sm)).
310 Гл. 11. Модификация запросов Рис. 11.21. Пример 11.30. Предложим, что в программе примера 11.29 произведена первичная обработка по {s4}· В результате получится программа г <- Щх.а Уз.в у4.а (σο- (г' х s\ χ s2 >< s3)), где С — это С без сравнения y^.F = 6. Модифицированный граф связей показан на рис. 11.21. 11.4.2. Итерация Эта трансформация называется также подстановкой кортежей. Начнем, как и раньше, с команды Г Ч- ПхОс (Sx X S2 Χ . . . >< Sm). Выберем одно из отношений, скажем sl9 для итерации. Трансформированная программа — это for каждый кортеж t из sx do begin Г' 4- ΊΙγΟα (/) (S2 XS3X... X Sm)] добавить г' к г с соответствующим дополнением end Здесь C(t) обозначает С с каждым вхождением атрибута ухЛ, замененным на значение t (уг-А), множество Υ содержит те атрибуты из X, которые не входят в схему sx. Соответствующее дополнение для г' — это t (X — Υ), точнее, г расширяется частью t, которая входит в X. Итерации соответствует изменение графа связей, заключающегося в удалении узла s±. Те ребра, которые включали sb становятся петлями.
11.4. Декомпозиция запросов 311 /ι Л*УгЛ у2 D<y3.D 0 g> (7£) У, .F-* Рис. 11.22. @/, A = tCy2 А) С^)*(У2 -ω<ν3 -D Рис. 11.23. Пример 11.31. Рассмотрим команду г*-пУ1.а у,.в ί/3σ (^с (5ι >< s2 i><i s3)), где С — это уг.А = у2.А д */2.D <: */3·£> Д г/3·^ = 6· Эта команда отличается от одной из команд примера 11.29 лишь некоторым переименованием. Граф связей для нее показан на рис. 11.22. Итерация по s2 дает for каждый кортеж t из s2 do begin τ' ■+- пУ1.А,Уя.а (<*с (s\ >< s3)); добавить г* >< (t (Уъ-В)) к г end. Здесь С (t) — это уг.А = t (у2.А) д t (y2.A) < ya.D д y3.F = 6. Модифицированный граф связей показан на рис. 11.23. 11.4.3. Алгоритм декомпозиции запроса Алгоритм декомпозиции запроса можно сформулировать так: начиная с программы, состоящей из одной команды, применять последовательно первичную обработку и итерацию до тех пор, пока все команды присваивания не- станут вида г +-пхас (s), гч-% (st >< s2 >< ... >< sk) или гч-0. Команда второго вида может быть трансформирована дальше применением итерации. Однако, так как операция выбора в этой команде не участвует, ее можно использовать просто как сокращение для цикла for длины k — 1, необходимого для вычисления
312 Гл. 11. Модификация запросов декартова произведения. Кроме того, не обязательно для каждого соединения применять цикл for (это зависит от атрибутов проекции; см. упр. 11.6). В терминах графа связей цель алгоритма в сущности состоит в том, чтобы изолировать каждый узел, т. е. добиться того, чтобы никакое ребро не соединяло разные узлы. На самом деле, даже после того как все узлы изолированы, могут понадобиться некоторые применения первичной обработки. Рис. 11.24. Рис. 11.25. Пример 11.32. В графе связей с рис. 11.23 для трансформированной программы примера 11.31 все узлы изолированы. Вторая команда присваивания включает выбор, примененный к соединению. Но так как условие выбора не включает сравнений между атрибутами sx и s3, итерация необязательна — можно применить первичную обработку. Полностью трансформированная версия программы — это for каждый кортеж t из s2 do begin Л +-пУ1тА {aCt(t) (si)); г'з+-пУяМасли) (sa)); f +- r\ >< /y, добавить г' >< (t(y2.B)) к г end. Здесь Сг (t) — это уг.А = t (y2-A), a C2 (ή — это t (y2.D) < < Уз-D Л Уз-F = 6· Пример 11.33. В этом примере используются отношения sw, Sjc. sy и sz. Предположим, что атрибуты из sw имеют префикс «w»f атрибуты из sx — «χ» и т. д. Исходная команда — Г <- Пш.А г.О (^ЛС.ЛС.Л^ЛС.ЛСв {Sw >< S* >< Sy >< Sz)),
11.4. Декомпозиция запросов 313 где Сх — это w.B < 7, С4 — это x.D = y.Df С2 — это w.A = х.А, С5 — это y.F = z.F, С3 — это w.A < у.А, С6 — это x.F < 2.F. Граф связей для нее показан на рис. 11.24. ^ Рис. 11.26. Начнем с итерации по sz. Получится 1. гч-0 for каждый кортеж t из sz do begin 2· Π «- Яда.л (аС1АС2АС,АС4АС6 </)ЛСв (О ($оу >« S* >« S^)) добавить гх ><з (t(z.G)) к г end. где С5 (0 — это y.F = / (2.F), а С6 (*) — это x.F < / (z.F). Граф связей для данной программы показан на рис. 11.25. Произведем теперь первичную обработку команды 2; получим 2.1. r2<-nw.A (oCl (Sw))\ 2.2. г3 ч- яХшА XmD (aCe (0 (sx))\ 2.3. г4 ч- я^.л y.D (оСь (о fe)); 2.4. γι ч- я^.л (^с1Лс3лс4 (>*2 >< гг >< г4)). Граф связей этой программы показан на рис. 11.26. Произведем теперь итерацию г3 в команде 2.4; получим 2.4.1. ^4-0; for каждый кортеж и из г3 do begin 2.4.2. ГЬ<~ПШшА (<Уся(1>)ЛСзЛС4<и)(г2 >« r4)); добавить г5 к Г! end.
314 Гл. 11. Модификация запросов Рис. 11.28. где С2 (и) — это w.A = и (х.А), а С4 (и) — это и (x.D) = y.D. Граф связей теперь стал как на рис. 11.27. Наконец, произведем первичную обработку по г4, а затем итерацию получившегося нового отношения г6, в 2.4.2; получим 2.4.2.1. Гъ*-Пу.А (Ос4(г) (г4)); 2.4.2.2. г5+-0; for каждый кортеж ν из r6 do begin 2.4.2.3. г7 ч- nw.A(aCt («)лсз (да) (г2)); добавить г7 к г5 end. где С3 (и) — это w.A < ϋ (у.^4). Окончательный граф связей приведен на рис. 11.28. Алгоритм декомпозиции запроса в том виде, в каком он описан, оставляет большой простор для свободы действий, поскольку не уточняет, какие операции первоначальной обработки и итерации совершать и в каком порядке. Одни варианты дадут лучшие программы, другие — худшие. Мы представим эвристический метод выбора способа выполнения алгоритма декомпозиции для уменьшения временной сложности полученной программы. Отметим, что
11.4. Декомпозиция запросов 315 процессор запросов QUEL не использует первоначальной обработки по нескольким отношениям (см. упр. 11.8). Хотя такая первоначальная обработка и необязательна для получения желаемой программы, она полезна для применения эвристик в процессе декомпозиции. Первый принцип — уменьшение числа повторений каждого цикла for. Отсюда следует, что необходимо проводить первоначальную обработку до итерации, если только это возможно, что сократит количество кортежей, которые просматриваются циклом for. Θ-^ Рис. 11.29. Второй принцип — уменьшение количества примененных итераций. Вообще говоря, число необходимых итераций на единицу меньше числа отношений в первоначальной формуле. Иногда для команд вида г <- пх (sx ><is2 >< ... ><sk) некоторые из этих итераций проводить необязательно (см. упр. 11.8). Третий принцип — уменьшать глубину вложения циклов for, так как вложение циклов мультипликативно отражается на временной сложности (см. упр. 11.10). Для того чтобы удовлетворить второму и третьему принципам, надо всегда стараться выбрать для итерации узел, при выкидывании которого граф связей разбивается на части. Пример 11.34. Предположим, что граф связей команды имеет вид, показанный на рис. 11.29. Выбор итерации по sx означает необходимость (как минимум) еще одной итерации. Если же итерировать сначала по s2, то можно больше итерации не применять. В предлагаемом методе производятся грубые оценки размеров отношений. Назовем простым ребро графа связей, которое содержит один или два узла, причем условие выбора этого ребра — дизъюнкция сравнений по равенству. Пусть г — новое отношение, полученное первоначальной обработкой одного отношения s, т. е. г ч- пх (ос (s)). Если какое-либо условие выбора из С возникает из простого ребра, отметим г как «малое» отношение, так как* по-видимому, равенства справедливы только для небольшого числа кортежей из s.
316 Гл. 11. Модификация запросов d Рис. 11.30. с, Θ с* Θ Рис. 11.31. Описание эвристики строится на основе графа связей. Оно содержит пять вариантов, причем всегда надо выбирать вариант с наименьшим возможным номером. 1. Проведите первоначальную обработку отношения, входящего в ребро с одним узлом. Если при этом в обработку включено простое ребро, отметьте полученное отношение как «малое». 2. Проведите итерацию малого отношения, лучше из простого ребра. 3. Проведите итерацию отношения, удаление которого разбивает некоторую часть графа; предпочтение отдается отношению из простого ребра. 4. Проведите первоначальную обработку набора отношений, удаление которого разбивает некоторую часть графа, предпочтение отдается наборам a) из небольшого количества отношений; b) связным в графе; c) которые содержатся в простых ребрах. 5. Проведите итерацию отношения, лучше из простого ребра. Идея варианта 4: полученное в результате отношение — кандидат для варианта 3 на следующем этапе. Пример 11.35. Многократно применим алгоритм декомпозиции запроса к первоначальной команде из примера 11.33, на этот раз с использованием эвристики. «Малые» отношения будем обо-
11.4. Декомпозиция запросов 317 С, Ш С, ( (sw 0 с4 Θ Рис. 11.32. значать на графах связей жирными кругами. Граф первоначальной команды приведен на рис. 11.24. Отметим, что ребра для С2, С4 и С5 — простые. Вариант 1 применим к отношению sw\ первоначальная обработка по sw дает 1. /Ί ч- яш.л (aCl (sw)); 2. г <- nw.A 2.g (ас2лс3лс4лсблсв (Γι ><] Sx ><] Sy ><3 Sz^' Так как ребро с меткой Сх — не простое, узел гг — не «малый». Модифицированный граф связей приведен на рис. 11.30. Варианты 1—3 теперь неприменимы; применим вариант 4. Первоначальная обработка команды 2 по \sX9 sy\ дает 2.1. Г2 <- Пх.А x.F у. A y.F (<7c4 (sx >< Sy))\ 2.2. r <~ nx,A Z,G (<Ус2лс3лсьлс* (П >< r2 >^ sz)). Новый граф связей показан на рис. 11.31. Используем вариант 3; итерация г2 в команде 2.2 дает 2.2.1. г+- 0; for каждый кортеж t из r2 do begin 2.2.2. r3<-nw.A z.g (σσ2 (олсз (Олг5 (олсв (О (0 (r\><sz))\ добавить г3 к г end. где С2 (0 — это w.A = t (χ. А), Съ (t) — это t (y.F) = z.F, С3 (t) — это w.A < t {уЛ), С6 (t) — это t {x.F) < z,F, Новый граф связей приведен на рис. П.32,
318 Гл. 11. Модификация запросов с, Θ с3 ш \ с5 ш Θ Рис. 11.33. Θ Используем вариант 1: в команде 2.2.2 можно провести первоначальную обработку /*! и s2; получаем 2.2.2.1. г4 <- nw.A (<*с2(олс3(о (н)); 2.2.2.2. г5 +- n2.G (аСб (0ЛСв (0 (%)); 2.2.2.3. r3<- r4 d><] г6. Новый граф связей представлен на рис. 11.33. Поскольку ребра для С2 (t) и Съ (t) — простые, то г4 и г5 — «малые» отношения (однако на оставшуюся часть процесса декомпозиции это уже не повлияет). Наконец, итерация sx в команде 2.1 даст 2.1.1. г2+- 0; for каждый кортеж и из sx do begin 2.1.2. г6 ч- π^ ^.F (аС4 {и) (sy))\ добавить г6>< (и (х.А) и (х./7)) к г2 end. где С4 (и) — это и (x.D) = y.D. Окончательный граф связей показан на рис. 11.34. Отметим, что, если бы Сг было w.B = 7, то порядок итераций и первоначальных обработок изменился неузнаваемо. После первоначальной обработки sw, /Ί стало бы «малым», значит, на следующем шаге оно было бы проитерировано (см. упр. 11.7). Сравнение полученной декомпозиции с декомпозицией из примера 11.33 показывает, что там имелось три явные итерации, причем все вложенные, а здесь две явные итерации, причем невложенные.
11.5. Оптимизация табло запросов 319 Θ C'QZ) 1 с 2 т V ^)cz ш Рис. (1 cs м Gl) \уо5ш 11.34. (Ю С4 (и) Приведенную эвристику можно улучшить несколькими способами. Один — это введение сравнительных степеней «малости», зависящих от имеющихся условий выбора. Другой — это учет при выборе первоначальных обработок и итераций текущих размеров отношений и итераций. Однако при этом значительное изменение размеров отношений может потребовать проведения повторной декомпозиции. 11.5. ОПТИМИЗАЦИЯ ТАБЛО ЗАПРОСОВ Число строк в табло запроса — это мера количества соединений в эквивалентном алгебраическом выражении. Наша цель — найти для данного табло запроса эквивалентное с минимальным количеством строк. Хотя сформулированная задача является, вообще говоря, NP-полной, поиск эффективен для подкласса табло запросов, состоящего из простых табло запросов. Будет исследован также вопрос об использовании зависимостей данных для сокращения числа строк табло запроса. Предлагаемый метод является вариантом алгоритма прогонки. Большое количество результатов этого раздела сходно с результатами гл. 8. На доказательства, сходные с приведенными там, мы терять много времени не станем. Исследование будет сосредоточено на неразмеченных табло запроса. Модификация для размеченных табло обсуждается в конце раздела. 11.5.1. Эквивалентность табло запросов Определение 11.2. Пусть Qi и Q2— совместимые табло запросов со схемой R. Будем говорить, что: (a) Qj включает Q2, и писать Qi 5 Q2, если для каждого отношения г (R) Qi (г) э Q2 (&, (b) Qi эквивалентно Q2 (обозначение: Qx ξ Q2), если Qi (r) = Q2 (r) для каждого отношения г (R). Очевидно, что Qi ξ Q2 равносильно Qi = Q2 и Q2 3 Ql
SUO Гл. 11. Модификация запросов В следующем определении отображение символов табло в символы табло расширяется до отображения строк в строки естественным способом. Определение 11.3. Пусть Qx — табло запроса со схемой Аг А2 ... Ап, резюме w0 и строками wl9 w2f ..., wpu Пусть, далее, Q2 — табло запроса с резюме а0; аь — выделенная переменная из столбца At в обоих табло. Отображение ψ из символов Qx в символы Q2 называется отображением включения из Qx в Q2, если: 1. Ψ (с) = с для каждой постоянной с из Qlt 2. ψ (α/0) = σ0, 3. Ψ (^) — строка Q2, 1 < i < p. Условия 2 и 3 влекут за собой, что Q1 и Q2 совместимы. Из условия 2 следует также, что ψ(αέ) — это Я; или постоянная из столбца Αι резюме ϋ0· Положим ψ (Qi) = {ψ (α>£) | 1 < i < ρ}. Теорема 11.1. Пусть Qi и Q2 — совместимые табло запросов со схемой R и соответственно резюме w0 и υ0. Включение Qx 3 Q2 имеет место тогда и только тогда, когда существует отображение включения ψ из Q1 в Q2 *). Доказательство. Достаточность. Пусть г — отношение со схемой R. Если ρ — присваивание значений для Q2, такое, что ρ (Q2) ^ г, то ρ ο ψ — присваивание значений для Qb причем ρ ο ψ (Qx) с г и ρ ο ψ (иу0) = ρ (ο0). Значит, каждый кортеж из Q2 (r) лежит в Qx (r). Необходимость. Рассмотрим Q2 к^к отношение и как табло запроса одновременно, причем при интерпретации Q2 как отношения не будем обращать внимания на резюме. Так как Qi5Q2> имеем Qx (Q2) з (Q2 (Q2))· Пусть р7 — тождественное присваивание значений для Q2. Понятно, что р7 (Q2) Щ Q2» так Что Р/ fao) = = Щ € @2 (Q2). Следовательно, о0 должно лежать в Qx (Q2). Пусть ψ — присваивание значений для Ql9 такое, что ψ (Qx) s Q2, а ψ (ю0) = ϋ0. Ясно, что ψ — отображение включения из Qx в Q2. Следствие. Два совместимых табло запроса Qx и Q2 эквивалентны тогда и только тогда, когда существуют отображения включения из Qt в Q2 и из Q2 в Q1. Отметим, что эквивалентность табло запросов Q1 и Q2 приводит к совпадению их резюме, так что отображения включения из следствия всегда переводят помеченные переменные в помеченные. *) При этом отображение включения действует в «обратную» сторону — из включающего множества во включаемое. — Прим. перев.
11.5. Оптимизация табло запросов 321 QMi Л2 Аз Λα) ^,(α,) = α, фх{Ьх) = £>, а\ а3 Φ Лаз) = а3 Ф\(Ь2) = Ъ2 Φι(4) = 4 фх(Ь3) = Ь3 а{ Ьх b2 Ь3 Ф\{Ъ4) = Ь4 Ъ4 Ъх а3 4 Ф\(Ь5) = Ъ2 h(h) = Ь3 &"■ Лг Л, Л,) *'<™ Ζ tl αχ α3 αι Ъ\ Ъ2 Ъ3 Ь4 Ъх а3 4 ах Ъх bs b6 Ъ1 bi b$ 4 Q3(Ai A2 A3 A4) "l a3 Рис. 11.36. a\ 6 bt b2 b\ a3 Рис. 11.35. Ьз 4 Фг(а\) = flj Фг{аз) = a3 Ф2(4) = 4 ф2(Ьх) = Ъх ф2(Ь2) = Ъг ф2(Ь3) = Ь3 ф2(Ь4) = 6 Рис. 11.37. Пример 11.36. Рассмотрим табло запросов Ql9 Q2 и Q3 (рис. 11.35). Тождественное отображение — отображение включения из Q1 в Q2, так Что Qi 5 Q2· Отображение включения я^ из Q2 в Qi с Рис· 11 -36 показывает, что Q2 ^ Qi, значит, Q1 ξ Q2. Отображение включения ψ2 из Q1 в Q3 с рис. 11.37 доказывает Qi 5 Q3- Однако, Q3 ^ Qx, так как не существует отображения включения из Q3 в Qi во второй строке Q3 встречается 6, поэтому она не может быть отображена ни в какую строку Qle Следствие. Если табло запросов Q1 и Q2 совпадают с точностью до взаимно однозначного переименования невыделенных переменных у то Q1 ξ Q2. Утверждение, обратное этому следствию, неверно, как можно увидеть из существования табло запросов Q1 и Q3 из примера 11.36. Следующие определения расширяют определения поглощения (разд. 8.3) и замены (упр. 8.17).
322 Гл. 11. Модификация запросов Определение 11.4. Пусть w1 и w2— строки со схемой R. Строка w1 поглощает строку w2, если для каждого атрибута Α £ ζ R, такого, что w2 (А) или выделенная переменная, или постоянная, выполнено w1 (A) = w2 (A). Определение 11.5. Пусть Т1 и Т2— множества строк со схемой R. Будем говорить, что 7\ покрывает Т2, если для каждой строки υ из Т2 существует строка w из Тъ которая поглощает υ. Табло запроса Qx покрывает табло запроса Q2, если строки Q1 покрывают строки Q2. Будем писать Qi ~ Q2> если Qx покрывает Qz> a Q2 — соответственно Q1# Q(A{ Л2 Л3 А4) м>о ах а2 а3 Wj а\ αϊ Ь{ Ь2 и>2 6 а2 а3 4 w3 b3 а2 а3 Ъ2 ч>4 bs a2 Ьв Ь7 Рис. 11.38. Определение 11.6. Пусть Q — табло запроса со схемой R9 a w± и w2 — строки Q. Строка w± заменяет строку w2, если wi И) == w2 И) Для каждого атрибута А из match (w2)u Пример 11.37. Пусть Q — табло запроса (рис. 11.38). Строка w2 поглощает строку до4, но не заменяет ее. Строка w3 заменяет строку а;4. Табло запроса Q покрывает табло запроса Q3 с рис. 11.35. Лемма 11.1. Пусть Qx — табло запроса, a Q2—это Ql9 из которого выкинута одна или несколько заменяемых строк. Тогда Ql Ξ Q2. Доказательство предоставляется читателю (см. упр. 11.13). Пример 11.38. В табло запроса Q2 с рис. 11.35 первая строка заменяет третью, а вторая — четвертую, причем Qx — это Q2 с выкинутой второй и четвертой строкой. В примере 11.35 мы видели, что Qi ξ Q2. Определение 11.7. Назовем табло запроса Q минимальныму если табло запроса, эквивалентное Q, не может иметь меньше строк, чем Q. Отметим, что минимальное эквивалентное Q табло запроса — это то же самое, что эквивалентное Q минимальное табло запроса.
11.5. Оптимизация табло запросов 323 Определение 11.8. Пусть Qx и Q2—совместимые табло запросов. Назовем Q2 подтабло табло Qlf если Q2 — это Qlf из которого выкинуто нуль или более строк. Теорема 11.2. Для табло запроса Qx существует такое подтабло Q2, что Q2 — минимальное эквивалентное Qx табло. Доказательство. Пусть Q3 — минимальное эквивалентное Qx табло, ψ13 — отображение включения из Qx в Q3, а ψ31 — из Фз в Q1# Пусть, далее, Q2 — подтабло Q^ состоящее из строк Ψβι (Ψΐ3 (Qi))'· Композиция ψ31 ° Ψΐ3 — это отображение включения из Qx в Q2, а тождественное отображение — из Q2 в Qlt значит, Q1 ξ Q2. Так как ψ13 (Qx) — подмножество строк Q3, то в ψ31 (ψ13 (Qx)) не больше строк, чем в Q3, значит, Q2 тоже минимально. Следующий результат обращает частично второе следствие из теоремы 11.1. Теорема 11.3. Пусть Qx и Q2 — совместимые минимальные табло запросов. Тождество Qx ~ Q2 справедливо тогда и только тогда, когда имеется биективное отображение включения из Q1 в Q2, обратное к которому — отображение включения из Q2 в Qlf т. е. Qi и Q2 совпадают с точностью до взаимно однозначного переименования невыделенных переменных. Доказательство предоставляется читателю (см. упр. 11.14). Вообще говоря, проверка эквивалентности табло сопровождается большими трудностями. Задача определения, выполнено ли Qx = Q2 для заданных табло запроса Qx и Q2, является NP-пол- ной. Она остается NP-полной, даже если Q± и Q2 происходят из ограниченных алгебраических выражений, a Q2 есть подтабло табло Qx. 11.5.2. Простые табло запросов В этом разделе вводятся простые табло запросов и показывается, что их можно эффективно минимизировать. Показывается также, что эффективно проверяется эквивалентность минимальных простых табло запросов, т. е. что можно эффективно проверять эквивалентность произвольных простых запросов. Определение 11.9. Табло запроса называется простым, если в любом столбце, где есть парная невыделенная переменная, никакой другой символ не повторяется.
324 Гл. 11. Модификация запросов Пример 11.39. Рассмотрим табло запросов Q± и Q2 с рис. 11.39. Табло Qi не простое, так как Ь4 — парный в столбце Л2, но а2 повторяется; Ь3 — парный в столбце Л4, но 4 повторяется. Табло Q2 отличается от Q± только последней строкой, но Q2— простое. а\ «2 аз «1 Ъг а\ а\ Qi(Ax а2 аг Ь4 Ь4 Аг *1 аг «3 h Аг 4 Ъг h 4 А4) а{ а2 а3 а1 а2 Ъ\ 4 Ь2 а2 а3 Ъг а\ Ь4 а3 Ъг ах а2 bs Ъг Рис. 11.39. Цель этого раздела — показать, что простые табло запросов эффективно минимизируются и что эквивалентность минимальных простых табло легко проверяется. Таким образом, получится эффективный алгоритм проверки эквивалентности простых запросов. Пусть Q1 — простое табло запросов, которое не минимально. По теореме 11.2 у Q1 имеется подтабло Q2, эквивалентное Qx. Пусть w — строка Qlt которая не входит в Q2. Имеются отображение включения ψ из Qx в Q2 и строка υ из Q2f такие, что ψ (w) = = ψ (υ) = υ (см. ниже лемму 11.2). Чтобы минимизировать данное табло запроса Qlt попытаемся найти такие строки w и υ и такое отображение включения ψ из Q1 в Ql9 что ψ (w) = ψ (ν) = υ. Помощью при этом поиске послужит сопровождающее множество строк w относительно υ, COMPv (w), состоящее из тех строк, которые ψ отобразит в ν> если ψ отображает w в υ. Если {у} покрывает COMPv (w), то можно так выбрать ψ, что оно отобразит каждую строку из COMPO (w) в υ, а все остальные строки в себя. Подтабло Q2 табло Qx, состоящее из строк
11.5. Оптимизация табло запросов 325 ψ (Qi), эквивалентно Q1 и имеет меньшее число строк. Если Q2 не минимально, процесс можно повторить с новыми w, ϋπψ. Теперь остановимся на деталях и докажем корректность предложенного метода. Лемма 11.2. Пусть Qx — табло запроса, a Q2—собственное подтабло Q±. Если ψ — отображение включения из Qx β Q2, a w — строка Ql9 не лежащая в Q2, то имеется отображение включения ψ0 из Qx в Q2 и строка υ из Q2, такие, что ψ0 (w) = ψ0 (υ) = υ. Доказательство. Отметим сначала, что композиция отображений включения — отображение включения. Пусть ψ — отображение включения, полученное i-кратной композицией ψ. Рассмотрим последовательность строк ψ1 (w)9 ψ2 (w), ψ3 (w), ... . Так как каждая строка содержится в Ql9 в последовательности встретятся две одинаковые строки. Выберем i и / так, что i < / и ψ (w) = ψ/ (w). Пусть ψ0 = ψ'(/-О, а υ = % (w). Покажем, что ψ0 (и) = v. Прежде всего ψ0 (ν) = ψί (/-0 (у) = ψ2ί (/-0 (^)# Но ψ2'(/-О можно переписать как ψί </-ί-ΐ) (φί (/-ο (ψί (a;)))f что упрощается до ψ^~ι~*> (ψ1* (до)), так как ψ/-' (ψ** (до)) = ψ7' (до) = ψ1' (до). Наконец, ψ (/-ί-ΐ) (ψί (Ш)) = ψί (/-о (ш) = ψ0 (μή = Vt Определение 11.10. Пусть Q — простое табло запроса со схемой R9 a до и ν — строки Q. Назовем сопровождающим множеством до относительно υ (обозначение: COMPv (до)) наименьшее множество Т, содержащее до и удовлетворяющее следующему условию замкнутости: Если w1 — строка из Т, до2 — строка из Q, а Л — атрибут из R, такой, что w1 (Л) — невыделенная переменная, причем дох (A) = до2 (Α) Φ υ (Л), то до2 лежит в Т. Пример 11.40. Пусть Q — табло с рис. 11.40. Вычислим СОМРт (до4). Начинаем со строки до4. Для до5 выполнено до5 (Л4) = = до4 (Л4) = *ιι Φ тъ (Аа)> так что wb наД° включить в Т. Аналогично, до5 (Лб) = до6 (Аь) = Ь1е φ до3 (Л5), так что и до6 надо включить в Т. Значит, COMPm (до4) = |до4, до5, ^е} (строка w2 не включается, так как хотя до2 (Л2) = до6 (Л2) = &х, но до3 (Л2) =
326 Гл. 11. Модификация запросов Лемма 11.3. Пусть Q — простое табло запроса, a w и υ — строки Q. Если ψ — отображение включения из Q в Q, такое, что ψ (w) = υ, то ψ («) = υ для каждой строки и из COMPv (w). Доказательство предоставляется читателю. Теорема 11.4. Пусть Q — простое табло запроса со схемой R, a w и υ — различные строки Q. Отображение включения ψ из Q в Q, отображающее и в υ для каждого и £ COMPv (w), существует тогда и только тогда, когда \υ\ покрывает COMPv (w). Q{AX А2 А3 А4 А5\ w0 W\ w2 w3 w4 w5 w6 «1 «1 «1 bi b9 Ьм Ьм b. b\ b> bw b\4 b> Рис. «3 b2 b4 «3 «3 6l5 b 18 11.40. 4 Ъь Ьь b\\ bu b)9 Ьз Ьь I bn Ь\ь Ь\ь Доказательство. Достаточность. Пусть ψ тождественно на всех символах, кроме невыделенных переменных, появляющихся в строках COMPv (w). Для каждого атрибута Α ζ R и каждой строки и из COMPv (w), положим ψ (и (Л)) = ψ (υ (Α)) (так как υ и до различны, υ не лежит в COMPv (w) (почему?)). Мы утверждаем, что ψ корректно определено. Пусть 6 — невыделенная переменная из столбца А. Если Ь появляется и в строке иг из COMPv (w), и в строке и2 не из COMPv (w), то или «х (Л) = «2 (А) = t; (Л), или и2 лежит в COMPv (w). Значит, ψ (6) = 6, откуда ψ — тождественное отображение на строках, не лежащих в COMPv (w). Далее, если в какой-нибудь строке и из COMPv (w) в столбце Л стоит выделенная переменная или постоянная, то тот же символ стоит иву, так как υ соотносит и. Значит, ψ — тождественное отображение на выделенных переменных и постоянных. Нетрудно доказать, что ψ (и) = и, если и φ COMPv (w), и ψ (и) = ϋ, если α £ COMPv (w). Значит, ψ — искомое отображение включения. Необходимость. Так как ψ — отображение включения, оно переводит постоянные в себя. Оно должно быть тождественным и на выделенных переменных, так как если в столбце Л имеется выделенная переменная, то в резюме в столбце Л стоит не постоянная. Для каждой строки и £ COMPv (w) из ψ (и) ~ υ еле-
11.5, Оптимизация табло запросов 327 Вход: Простое табло запроса Q. Выход: Минимальное эквивалентное Q подтабло. MINEQ (Q) begin пусть Τ — строки Q; while T изменяется do for каждая строка υ из Τ do for каждая строка w Φ υ из Τ do if ν покрывает COMPv (w).b Τ then Τ := T—COMPv(w)\ пусть Q' — это Τ с резюме из Q; return (Q') end. Рис. 11.41. дует, что в тех столбцах, где у и есть выделенная переменная или постоянная, у υ стоит тот же самый символ. Поэтому υ поглощает и, а {υ} покрывает COMPv {w). Пример 11.41. Как мы видели в примере 11.40, для табло запроса Q с рис. 11.40 имеет место СОМРт (ш4) = |о;4, wb, w6]. Видно, что \w3\ покрывает |ш4, wb, wb\. Значит, имеется отображение включения ψ из Q в Q, такое, что ψ (шх) = wl9 ψ (ш2) = до2, а ψ (α>8) = ψ (ш4) = ψ (α;5) = ψ (α;β) = α>8. Аналогично, COMPW6 (w3) = |ш3, α>4» ^s}· Однако |ш6} не покрывает \w3i до4, ^5}· Отображений включения, переводящих w3 в α>β, не существует, так как w3 (Аь) = 7, а ш6 (Л5) = 61в. Объединим полученные результаты в виде алгоритма MINEQ с рис. 11.41. Для данного табло запросов Q ищутся различные строки who, такие, что \υ} покрывает COMPv (w). Если Q не минимально, то по леммам 11.2, 11.3 и теореме 11.4 такие υ и w существуют. Строки из COMPv (w) можно удалить из Q и получить меньшее эквивалентное табло. Если же таких w и ν нет, то Q минимально. Пример 11.42. Пусть Qx — табло запроса с рис. 11.42. Тогда COMPWi (w2) = |ш2}, причем {wx\ покрывает \w2\. Удалим строку w2. Аналогично, COMPWl (w3) = \w3\ и {w±\ покрывает |ш3}, поэтому удалим w3. Остались строки wl9 до4, wb9 w6i w7. Но COMPWx (w6) = \w6, w7\ покрывается \wb\, поэтому удалим w6, w7. Больше никаких строк удалить нельзя. Минимальное эквивалентное подтабло Q[ показано на рис. 11.43. Определим временную сложность алгоритма MINEQ. Предположим, что в Q имеется k строк и η столбцов. Множество COMPv (w) можно найти за О (k2n) шагов (см. упр. 11.24). Проверка того, что υ покрывает COMPv (w), может быть произведена за время О (kn). Каждый из циклов for повторяется не более k раз, так что тело цикла while занимает не более О (k^ri) времени. При
328 Гл. 11. Модификация запроооВ каждом изменении Τ из него выкидывается не менее одной строки, так что цикл while повторяется не более k раз. Значит, суммарная временная сложность программы MINEQ равна О (къп). Фактически же временная сложность не превышает О (№п): цикл while не нужно выполнять более одного раза, потому что, если строка не удаляется при первой итерации, она не будет удалена и при любой последующей итерации, как показывает следующая ниже лемма. QM\ Л5) w0 Wl i H>2 vv3 Vt>4 *>5 ^6 H>7 *1 (h bu bxs b\s bn bx 1 bx bi bx Ьхб bi9 bv, 5 b4 Ьъ bn bxi bio bio Рис. 11.42. 7 b2 bs b, 1 1 7 b 24 a$ b3 be bxo bl4 "s Ьц «5 <2ί(Αχ_ Щ Wl w4 W5 «1 «1 Am *15 A2 *I bx bib Рис. Аг 5 Ь12 Ь17 11.43. Л4 7 *2 7 7 _ii" «5 *з ^ 14 «5 Определение 11.11· Пусть Q — простое табло запроса со схемой jR, а υ и до — строки Q. Пусть, далее, К = wl9 до2> ... ..., wm — последовательность различных строк Q. Назовем К построением COMPO (до), если: 1. COMPO (до) = {щ, до2, ..., дот}. 2. Для каждого /, 1 < / < т, найдется i < j и атрибут А из i?, такие, что wt (А) и до,- (А) — одна и та же непомеченная переменная и Wj (Α) Φ υ (Α). Ясно, что любое сопровождающее множество имеет построение. Первой строкой построения может быть любая строка из сопровождающего множества. Лемма 11.4. Пусть Q — простое табло запроса со схемой R. Предположим, что Q содержит различные строки щ и до0, такие, что СОМРщ (до0) покрывается \υ0\. Пусть Q' — подтабло, полученное из Q выкидыванием строк из COMPVo (до0), т. е. Q' — это Q после одного шага работы MINEQ. Пусть υ и до— строки Q', a COMPv (до) и COMPv (до) — сопровождающие множества до относительно υ в Q и Q' соответственно. Если \υ\ покрывает COM Pi (до), то \υ} покрывает и COMPv (до).
11.5. Оптимизация табло запросов 329 Доказательство. Изучим сначала свойства щ и w0. Отметим, что если w' — строка из COMPv (w), то COMPO (w) = COMPO (wr) (см. упр. 11.26). Если СОМРщ (w0) не содержит никакой строки из COMPv (w), то COMPv (w) = COMPv (w)9 и все ясно. Пусть COMPVo (w0) содержит строку и из COMPv (w). Если υ = υθ9 то COMPVo (wQ) = = COMPVo (и) = COMPO (a) = COMP0 (w), так что ш — не строка из Q'. Таким образом, удаленные при переходе от Q к Q' строки — это строки из COMPOo (и)> гДе νο Φ ν· Мы утверждаем, что υ0 лежит в COMPv (w). Почему? Во- первых, заметим, что COMPVo (и) 55 COMPv (w), иначе бы w не лежала в Q'. Пусть иъ и2, ..., ит — построение COMPv (ш), такое, что их = и. Пусть / — наименьшее целое число, такое, что Uj не лежит в COMPOo (и). Обязательно найдутся i < / и атрибут А из R, такие, что щ (А) и Uj (A) — одна и та же невыделенная переменная, и щ (Α) Φ υ (А). Должно быть, щ (А) = uj (A) = = vQ (Л), иначе щ лежало бы в COMPVo (и). Отсюда заключаем, что щ (А) и υ0 (А) — один и тот же невыделенный символ. Значит, поскольку ut принадлежит COMPv (w) и υ0 (Α) = ut (Α) φ υ (А), строка υ0 тоже из COMPv (w), что и утверждалось. Покажем теперь, что щ — строка из COMPv (w). Пусть wl9 w2i ..., wp — начало такого построения COMPv (w), что w = щ, a vQ = wp. Если все тъ w2, ..., wp лежат в Q', то щ лежит в COMPv (w). Пусть /, 1 < / < ρ, — наименьшее целое число, такое, что Wj не лежит в Q'. Должно найтись i < } и атрибут В из R, такие, что wt (В) и Wj (В) — один и тот же невыделенный символ, не совпадающий с υ (В). Известно, что w не является строкой COMPOo (и), a Wj является. Отсюда имеем wt (В) = = wj (В) = щ (В). Все wl9 w2, ..., wt — строки из COMPv (w) и щ (В) = Wt (В) Φ υ (β), так что щ также принадлежит COMPv (w). Наконец, каждая строка tio из COMPv (w) должна быть строкой COMPVo (и). Так как щ принадлежит COMPv (w)9 a \v} покрывает COMPv (w)9 то υ поглощает Uq9 так что \υ\ покрывает COMPv (ш). Программу MINEQ можно использовать для эффективной проверки эквивалентности. Пусть Qx и Q2 — простые табло запросов со схемой R, которые нужно проверить на эквивалентность. Сначала вычислим Q{ = MINEQ (Qi) и Q'2 = MINEQ (Q2), а затем проверим Qi и Q2 на эквивалентность. И Qi, и Q2 минимальны, и если они эквивалентны, то по теореме 11.3 имеется биективное отображение включения ψ из Qi в Q2, тождественное на выделен- ных переменных, причем обратное к нему — отображение включения из Q'2 в Qi. Если Qi содержит повторяющуюся выделенную переменную Ьх в столбце Л, где Л — атрибут из R, то и ψ (ί^) = = b% — повторяющаяся невыделенная переменная в столбце А
330 Гл. 11. Модификация запросов Q2(Al А2 А3 А4 А5) v0 аг 7 α5 vi bx b2 b3 7 b4 V2 bs b2 bb 7 b7 v3 bs b9 bb 7 bl0 v4 bn bx2 bX3 7 as v5 ax b2 5 bX4 bl5 Рис. 11.44. Q['(Ai A2 A3 A4 As) w0 ax 7 as н>! ax 1 5 b2 b3 w4 bxx 1 fen 7 614 n>5 6 is *16 bl7 7 as Qj'(Ax A2 A3 A4 A5) v0 a\ 7 as v\ bx 1 b3 7 b4 v4 fen 612 6i3 7 «5 v5 αϊ 1 5 bl4 bis Рис. 11.46. Рис. 11.47. табло Q2. Если образовать Qi и Q2 заменой bi и Ь2 на новую постоянную с в Qi и Q2, то Qi и Q2 тоже эквивалентны. Проверку эквивалентности Qi и Q2 будем проводить следующим образом: для каждого атрибута Л, такого, что Q[ содержит повторяющуюся невыделенную переменную Ьх в столбце Л, проверим, содержит ли Q2 повторяющуюся невыделенную переменную, скажем Ь2, в столбце Л. Если да, то заменим Ьх и Ь2 на какую-нибудь новую постоянную с. Если нет, то Q[ и Q2 не эквивалентны. Проведем такую подстановку для всех повторяющихся невыделенных переменных из Q[. Назовем получившиеся табло запросов Q'{ и Q2. Теперь Q[ и Q2 эквивалентны тогда и только тогда, когда Qi и QI эквивалентны. Если в Q2 есть повторяющиеся невыделенные Q2(AX A2 А3 А4 А5) vo «5 Vl V4 ^5 6. bn a\ b2 b3 Ь\г bl3 b2 5 Рис. 11.45. 7 7 6,4 Z>4 «5 bis Q.,04, Л2 Л3 Л4 Л5) «ι as 6j 62 b3 b4 b5 bb by bs b4 a5 a\ b2 5 69 6jo
11.5. Оптимизация табло запросов 331 переменные, то оно не эквивалентно Q{. В противном случае соотношение Q[ ξε Q2 можно проверить, показав, что их резюме совпадают и что Q'{ ~ Q2 (напомним, что Qi ~ Q'2 означает, что каждое табло запроса покрывает другое). Пример 11.43. Пусть Qx — табло запроса, представленное на рис. 11.42, a Q2— на рис. 11.44. На рис. 11.43 показано табло Qi = MINEQ (Q0, на рис. 11.45 — табло Q2 = MINEQ (Q2). В Qi имеется повторяющаяся невыделенная переменная Ъг в столбце Л2, в Q2 в том же столбце повторяется Ь2. Заменим Ь\ и Ь2 на постоянную 1; получается табло запросов Q'{ и Q'2 с рис. 11.46. Но Qi и QI эквивалентны, так как строки w\, w4 и w$ можно отобразить в строки ϋ5, υ± и ϋ4, переименовав лишь невыделенные переменные. Значит, Qi ξ Q2. Для табло запроса Q3 с рис. 11.47 имеем Q8 = MINEQ (Q3). Так как у Q3 в столбце Л4 есть повторяющаяся невыделенная переменная, а у Qi нет, то Q\ Φ Q3. 11.5.3. Эквивалентность при наличии ограничений Как и следовало ожидать, при наличии функциональных зависимостей и зависимостей соединения неэквивалентные табло запросов могут стать эквивалентными. Qi (PC ДТ ВР КЛ ПТ) Q2 (PC ДТ ВР КЛ ПТ) h 106 107 а2 ь* а2 а3 а3 а3 а4 h а± Ь6 Ь7 Ь8 Рис. 11.48. ь. Ьь h а2 106 а2 107 Ь6 а3 «3 Ь7 а4 а4 ь* Рис. 11.49. ь, ь, Пример 11.44. Табло запроса Q± на рис. 11.48 совпадает с табло примера 10.38 из предыдущей главы. На рис. 11.49 показано другое табло запроса Q2 с той же схемой. Ясно, что Q1 5 Q2, так как имеется отображение включения, переводящее первые две строки Qi в первую строку Q2, а последнюю строку Q1 в последнюю строку Q2. Однако Q2 jg Qi· И Ql9 и Q2 — простые, причем оставляются неизменными процедурой MINEQ, так что они минимальны. Так как в Q1 больше строк, чем в Q2, то Q1 φ Q2. Предположим, что нас интересуют только отношения, удовлетворяющие F-зависимости ВР ->- ПТ. Никакое блюдо не подается вторично. (Больше никакой пиццы на завтрак!) Пусть г — отношение из SAT (ВР -+ПТ). Любое присвоение значений ρ для Qb такое, что ρ (Qi) s г, должно удовлетворять ρ (bA) = ρ (Ьъ). Следовательно, ρ (Q2) <Ξ г, a Qi (r) s Q2 (г). На множестве ЯЛ Τ (ВР -+- -> ПТ) табло Qi и Q2 определяют одно и то же отображение.
332 Гл. 11. Модификация запросов Если Qi и Q2 — совместимые табло запросов со схемой R, а С — множество F- и J-зависимостей, то Qx .Зс Q2 означает, что Qi (г) э Q2 (г) для каждого отношения г (R) из ЯЛ Τ (С). Аналогично, Qi ξ с Q2 означает, что Q± (r) = Q2 (r) для каждого отношения из SAT (С). Вычисления с помощью прогонки можно обобщить на табло запросов благодаря двум небольшим модификациям. Во-первых, F-правило отдает предпочтение при переименовании постоянным. Предположим, что есть F-зависимость Х-+-А, причем для строк wx и w2 выполнено равенство wx (X) = w2 (X). Если wx (А) и w2 (A) — различные постоянные, то заменяем табло запроса целиком на табло запроса 0, которое отображает каждое отношение в пустое1)." Ясно, что для любого отношения г £ £ SAT (X-+■ А) не будет ни одного присвоения значений ρ с ρ (Q) s г. Если щ (А) — постоянная, a w2 (A) — нет, то заменим w2 (А) этой постоянной. Вторая модификация — при замене выделенной переменной на постоянную, изменение проводится и в резюме. Пусть chasec (Q) — результат применения F- и J-правил для С к табло запроса Q (правила применяются, пока в табло происходят изменения). Доказательство из гл. 8 с минимальными изменениями показывает, что chasec (Q) корректно определен. Сформулируем также две теоремы без доказательства. Теорема 11.5. Пусть Q — табло запроса, а С — множество F- и J-зависимостей. Тогда Q =c chasec (Q). Теорема 11.6. Пусть Qx и Q2— табло запросов, а С — множество F- и J -зависимостей. В этом случае Qi „5C Q2 тогда и только тогда, когда chasec (Qi) .9 chasec (Q2). Следствие. Qi ξ€ Q2 равносильно chasec (Qi)' ξ chasec (Q2). Пример 11.45. Вернемся к предыдущему примеру. Пусть С = = {ВР ->ПТ|. Тогда Q2 = chasec (Q2), a Q\ = chasec (Qi) показано на рис. 11.50. Кроме того, MINEQ (QI) = Q2, так что Qi ^CQ2. Q* (PC ДТ ВР КЛ ПТ) U2 аз а* b\ b2 a3 b3 64 106 а2 аз а4 Ь* 107 b6 b7 b8 64 Рис. 11.50. *) Ср. с примечанием в разд. 10.8.2.— Прим. перев.
11.5. Оптимизация табло запросов 333 Пример 11.46. Табло запросов Q± и Q2 на рис. 11.51 явно не эквивалентны, так как их резюме различны. Если С = \А1 -> Л2, А4~+А\\, то табло Q\ = chasec (Q2) показано на рис. 11.52. Третья строка Q\ заменяет остальные, так что Qt = Q3, где Q3 показано на рис. 11.53. Аналогично, первая строка Q5 заменяет последнюю, так что Q$ = Qs = Q\. Значит, Q\ =c Q2· QX(A\ Μ Λ3 Α4) QfjAi Λ2 А3 А4) а{ 7 а3 «1 Я2 а, а2 Ь3 7 'Αχ Α2 а, 7 «ι Ьх а, 7 «3 «3 л3 аз «з *3 Рис. 11.51. 62 *2 _Л4) *2 Ъа <23(dj «1 αϊ ι А. 7 7 Рис. ζ А3 «3 «3 11.53. «1 αϊ *3 Q*(du_ «1 «1 «1 Л4) Ьг 7 7 7 7 Аг 7 7 7 Рис. «з 61 -43 аз «3 *>з 11.52. Ьг Ь-> Ьг Ъг _А±. Ьг Ь4 Определение 11.12. Пусть С — множество F- и J-зависимо- стей. Назовем табло запроса Q1 С-минимальным, если не существует табло запроса Q2 с меньшим числом строк, чем у Ql9 причем Q =cQ2. Очевидно, что найти С-минимальное табло запроса, эквивалентное данному табло запроса, где С — множество F- и J-зави- симостей, не проще, чем найти минимальное эквивалентное табло запроса. Можно было бы надеяться, что комбинация MINEQ и вычислений с помощью прогонки даст алгоритм для нахождения С-минимального эквивалентного табло к простому табло запроса. Но даже если Q — простое табло запроса, MINEQ не
334 Гл. 11. Модификация запросов обязательно применим к chasec (Q): заметьте, что в примере 11.46 табло Q\ было простым, но chasec (Q\) — нет. Проблема может возникнуть даже для одних F-зависимостей, и удаление заменяемых строк не всегда возобновляет простоту (см. упр. 11.29). Также и применение прогонки к MINEQ (Q) не всегда дает желаемый результат (см. упр. 11.30). 11.5.4. Обобщение на базы данных из нескольких отношений Рассмотрим сначала базу данных d со схемой R над U, в которой каждое отношение — проекция общего возможного состояния г (U). На эту ситуацию наши результаты об эквивалентности переносятся легко, так как если табло запроса Q применимо к d, то применимо и любое минимальное эквивалентное Q табло запроса. Пример 11.47, Пусть d — база данных \q (А В), г (В С), s (А С)}, которая является проекцией некоторого общего возможного состояния над Л β С. На рис. 11.54 показано табло запроса Qx для алгебраического выражения π вс (σβ=<? (q)><rxs). Табло запроса Q1 простое, так что можно применить MINEQ и получить табло запроса Q[ (рис. 11.55). Приведенное выше алгебраическое выражение эквивалентно σΒ=ε (ή· Однако табло запроса Q2 с рис. 11.56 для алгебраического выражения я>в c(oA=c(q)><r><]s) минимально. Если приходится иметь дело с зависимостями, то ситуация усложняется, так как chasec (Q) может быть неприменимо к d, даже когда Q применимо. В этом случае результат Q =cchasec (Q) можно интерпретировать как утверждение об эквивалентности запросов к разным базам данных — проекциям одного и того же возможного состояния. QM в с) Ql{A в с) Q{(A В С) Ъ\ с а3 ь] ь2 ь2 С С С ь5 «3 «3 ь. ЙЗ Ьх с с а2 а2 а2 ь3 яз «3 ь2 «3 Рис. 11.54. Рис. 11.55. Рис. 11.56.
11.5. Оптимизация табло запросов 335 Q(A В CD) Q'(A BCD) ~ Q"(A BCD) a4 aj α, α4 «1 b4 bi Ьх Ьх Ьь Рис. ь2 bs bs 11.57. Ьз Ьь «4 «1 ь4 Ьп Ьх Ьх bs Рис. ь7 bs bs 11.58. ь3 а4 а4 αχ b4 Ьх Ьх Рис. , ь2 bs 11.59. 63 «4 Пример 11.48. Рассмотрим базы данных d = (д(Л В), г(ВС), s(CD)( и d' = {?' (Л β С), г' (β CD)}, которые являются проекциями общего возможного состояния ρ над A BCD. Пусть С= {C-**D\. На рис. 11.57 показано табло запроса для алгебраического выражения л a d(q >< г >< s) к базе данных d. На рис. 11.58 приведено Q1 = chasec (Q), а на рис. 11.59 — Q" = MINEQ (Q'). Ни Q', ни Q" неприменимы к d, однако они оба применимы к d'. Утверждение Q =c Q' можно понимать как то, что алгебраическое выражение кА D (кА в (q') >< г') для базы данных d' эквивалентно указанному выше выражению для базы данных d независимо от возможного состояния г из SAT (С). Если в С содержатся только F-зависимости, то имеется еще один способ интерпретировать chasec (Q). Строки, которые не соответствуют никакому отношению из d, можно рассматривать как соответствующие соединению таких отношений, если только F-правила применялись в некотором ограниченном виде. Эти соединения относятся к типу, который можно вычислять эффективно, так что минимизации, которые предпринимаются при вычислении chaser (Q), можно рассматривать как замену произвольных соединений на эффективные. Займемся теперь этими соединениями. Пусть d — база данных со схемой R, которая является проекцией общего возможного состояния г (U). Пусть F—множество F-зависимостей, которым удовлетворяет г. Если гг (XY) и r2 (YZW) — два отношения из d, такие, что ΧΥ Π YZW = Υ, а зависимость Υ -> Ζ принадлежит F+, то гг >< nYZ (r2) назовем Ь-расширением^г с помощью Υ -> Ζ. Заметим, что /^-расширение гх с помощью Υ -»■ Ζ содержит столько же кортежей, сколько и гъ и может быть вычислено за один проход через гг и г2, если оба они отсортированы по Υ. Отметим, что гг><Пу2 (г2) = π>χγζ (О· Такое соединение, в котором общие атрибуты функционально определяют все атрибуты одного из отношений, называется соединением расширения. Подмножество R ^ U назовем R^-расширением, если πΗ (г) можно вычислить на основе базы данных d с использованием
336 Гл. 11. Модификация запросов лишь соединений расширения и проекций. Таким образом, либо R — это подсхема некоторого отношения из d, либо существует программа Ρ вида qi<- s\ ><] nYlZl(s\), q2<- s2 >< nYaz2(s2), qk <- Sk >< ttYkzk(s'k), где 1. st — либо отношение из d, либо q^ при / < i; то же самое для si; 2. qt есть si-расширение St с помощью некоторой F-зависи- мости Υ ι -> Zt из F+; 3. схема qk — это R' з R. (См. упр. 11.34.) Пример 11.49. Пусть d = \гг (А В), г2 (В С), г3 (С D), г4 (В D Ε /)} — база данных со схемой R = {А В, ВС, CD, В D Ε /}; d — проекция возможного состояния г (А В С D Ε I) из SAT (F), где F = \С -+D, В D -> Е\. Тогда С £ — это RF- расширение. Действительно, рассмотрим программу Яг <- г2 >< г3; Яъ+- Яг><^в d е(г4). Оба соединения — соединения расширения, схема q2 — это В С D Е, т. е. она содержит С Е. Но А Е не является расширением. Атрибут Л появляется только в отношении rl9 которое не может принимать участие в соединении расширения, так как ни А у ни 5, ни А В не входят в левые части нетривиальных зависимостей из F+. Если имеется множество F-зависимостей F и схема базы данных R над U, то модификация вычислений с помощью прогонки позволяет решить, является ли множество R s U R^расширением или нет. Модификация состоит в том, что нельзя применять F-правило для отождествления двух невыделенных переменных, зато можно использовать любую зависимость из F+ как основу для F-правила. Назовем такие вычисления прогонкой расширением по отношению к F (обозначение: echaseF). Теорема 11.7. Пусть F — множество функциональных зависи мостей, R—схема базы данных над атрибутами U. Пусть у далее, TR —табло для R, R s U. Если echaseF (TR) содержит строку, которая выделена по всем атрибутам из R (и, возможно, еще где-нибудь), то R—это ^-расширение. Доказательство. Начнем с того, что если некоторая строка самого Tr выделена по атрибутам из R, то должна найтись схема отношения R' из R, R' = R^ так что R — это ^-расширение,
11.5. Оптимизация табло запросов 337 Предположение индукции состоит в том, что если в некоторый момент вычисления echaseF (TR) какая-нибудь строка w выделена по атрибутам из S, то S — это RF-расширение. Предположим, что в этот момент имеются строки w± и до2, выделенные в S± и S2, и мы применим F-правило для X -> Л, в результате чего w1 (A) становится выделенной (значит, w2 (А) уже было выделено). Так как невыделенные переменные никогда не повторяются, а щ (X) = w2 (X), toXcSiHXcS2. TR(A В С Ρ Ε 1 ) αχ а2 b{ b2 b3 bi b$ a2 a3 b6 by b$ b9 blQ a3 a4 bn byi Ь\з a2 bu a4 as ae Рис. 11.60. ecfJasefjTjdiA В С D Ε I ) #t a2 b\ b2 b3 b4 bs a2 a3 a4 a5 bs b9 bi0 a3 a4 bn bn b\3 a2 bX4 a4 a5 a6 Рис. 11.61. Нужно показать, что SXA — это Rjr-расширение. Предположим, что d — база данных над R, которая является проекцией возможного состояния г (U). Так как Sx и S2 суть RF-pacuiHpe- ния, отношения q± (SJ = itSt (г) и q2 (S2) = %2 (г) можно построить из d, используя лишь соединения расширения и проекции. Затем можно построить q3 (SH) как ^2"РасшиРение Qi c помощью Х-+А. Значит, SiA —это R/7-расширение. Отметим, что единственный способ, которым w± (А) может стать выделенным, — это непосредственное применение F-правила к шх. Пример 11.50. На рис. 11.60 показано TR для схемы базы данных R = \А Б, В С, CD, В D Ε Ι\ из примера 11.49. На рис. 11.61 показан echaseF (TR), где F={C-+D9 BD-+E]. Видно, что если R<=AB,R<=BCDE,R<=BDEI,toR — это R^-расширение. То, что chaseF (TR) выделен по R, еще не достаточно для того, чтобы R было RF-pacuiHpeHHeM. На самом деле теорема 11.7 допускает обращение (см. упр. 11.37),
338 Гл. 11. Модификация запросов «1 «1 Ьь Ьь bi а1 /ι ·, Рис. ь2 h bi «3 11.62. аА bA «4 b\o b3 Ьь «5 «5 Пример 11.51. На рис. 11.62 приведено табло TR для схемы базы данных R = \А D, А 5, В D Е, С £}, с которой мы встречались в последний раз в примере 8.41. Пусть F = \А -> С, В-+С, CD-+E]. Видно, что echaseF (TR) = 7V Однако c/iaseF (TR) ^ TR, как видно на рис. 11.63. В c/ias£F (Гр) есть строка, выделенная по A D Е, но A D Ε — не R/7-расширение (см. упр. 11.39). TR(A В С D Е) chase ЛТ*)(А В С D £) ах Ъ2 Ь2 аА аъ а{ а2 b2 bA bs . Ьь а2 Ь2 аА а$ Ьъ b9 a3 b10 us Рис. 11.63. Вернемся к табло запросов. Пусть d — база данных со схемой R, которая является проекцией возможного состояния г (U). Пусть, далее Q — табло запроса, применимое к d. Для набора F-зависимостей F можно применить echaseF к Q. Однако теперь мы не будем требовать, чтобы символ заменялся только выделенной переменной, а потребуем/ чтобы он заменялся только парным символом. Парные символы из Q отвечают выделенным переменным в TR. Так как Q применимо к df то для каждой строки w из Q найдется схема отношения S из R с match (w) ^ S. Пусть Q' = echaseF (Q). В Q' может найтись строка w', такая, что S' = match (w') не содержится ни в какой схеме из R. Однако S' — обязательно Rjr-расширение. Таким образом, Q' применима к базе данных d! = {rx (i?i), r2 (Я2)> ···> fp(Rp)}> где Rt при 1 < i < ρ является RF -расширением. Каждое отношение из d вычисляется по отношениям из d посредством соединений расширения и проекций. Если Q — табло запроса для ограниченного алгебраического выражения для d, то Q' — табло запроса для некоторого ограниченного алгебраического выражения для d' (см. упр. 11.40). Пример 11.52. Возвращаясь к примеру 11.48, рассмотрим табло запроса алгебраического выражения πΑ D (q >< г ><s) для базы данных d = \q (А В, г (В С), s (С D)\. Оказывается, что Q' = = chaseF (Q) = echaseF (Q), где F = \С->- D\f так что Q ξ fQ\ где Q'—табло запроса, представленное на рис. 11.58. Табло запроса Q' неприменимо к d из-за того, что парное множество второй строки — это В D. Однако В D — это RF -расширение схемы базы данных R = \А В, ВС, CD]. Поэтому приведенное выше алгебраическое выражение эквивалентно при наличии зависи-
11.5. Оптимизация табло запросов 339 мости F выражению nAD (q >< г'), где г' можно вычислить по г и s с помощью соединения расширением и проекции. В действительности при вычислении echaseF (Q) имеются еще некоторые возможности для свободы действий. Предположим, что w — строка Q, match (w) = S, причем имеется отношение s (S') из d, такое, что S' ^ S. Мы можем обращаться с w (Л), где Α ζ ζ S', как с парным символом, даже если Α Ψ S. Действительно, QX(A В С) с а, Ωι(Λ В С) Ъх с (АВ) с а3 (ВС) а2 а3 (ВС) Ъх а3 (АС) Ь, а3 (АС) Рис. 11.64. Рис. 11.65. если мы добавим строку w' к Q, где w' (S') = w (S'), а во всех остальных местах w' стоят новые невыделенные переменные, то отображение, определенное Q, не изменится, так как w заменяет а/. Кроме того, Q остается применимым к d, a match (w) = S'. В завершение этого раздела перейдем к размеченным табло запросов и обобщениям полученных результатов об эквивалентности на базы данных, которые не являются проекциями общего возможного состояния. Существенное изменение, которое позволит сохранить результаты, основано на требовании, чтобы отображение включения между размеченными табло запросов сохраняло ярлыки. Точнее оно должно переводить пробелы в пробелы, и никакой символ не должен переводиться в пробел. Пример 11.53. Пусть d — база данных \q (A D), г (В С), s (А С)}, которая не обязательно является проекцией одного возможного состояния. Размеченное табло запроса Q± для алгебраического выражения πΒ с (ов=с (q) >< г >< s) показано на рис. 11.64. На рис. 11.65 показано размеченное табло запроса Q2 для алгебраического выражения пвс (г >< s). Отображение ψ, определяемое как ψ (а2) = с, φ (а3) = α3ι φ (Ьг) = Ьъ — это отображение включения из Q2 в Qlt так что Q2.5 Q. Значит, пв с (ав=с (q) >< г \>< s) ^ пв с (г >< s) независимо от выбора q, r и s. Напомним, что в примере 11.46 было получено равенство πΒ с (<*в=с (q) >< г >< s) = ов==с (г),
340 Гл. 11. Модификация запросов если q, r и s — проекции общего возможного состояния. На рис. 11.66 показано размеченное табло запроса для ов=с (/"). Отметим, что Q± φ Q3i так как не существует отображения включения из Q1 в Q3. Qi(A BCD) А В С) с аз с а3 Рис. 11.66. (ВС) г(А_ 1 2 В 3 4 5 5 Рис. «1 «1 Q2(A_ «1 s(B_ 3 4 11.68. ъх в Ьх с 5 6 ь2 С ь2 Ь2 Рис. 7 8 «4 «4 α4 α4 11.67. (ЛЯС) (ЛЯС) (BCD) Полученные для случая одного отношения результаты о зависимостях данных переносятся на случай размеченных табло не полностью. Вообще говоря, при вычислениях с помощью алгоритма прогонки в случае размеченных табло запроса, можно применять только F-правила, причем только к строкам с одним и тем же ярлыком. Пример 11.54. На рис. 11.67 показано два размеченных табло запроса Q± и Q2 к базе данных d = {г (А В С), s (В С D)}. Если г и s удовлетворяют F = \В-+С\> то можно было бы подумать, что Qx и Q2 эквивалентны (в присутствии F). Однако, как читатель может проверить, Qx (d) Φ Q2 (d) для состояний г и s, показанных на рис. 11.68. В примере 11.54 камнем преткновения послужило то, что хотя и г и s удовлетворяют В ->- С, но функция из В в С, определяемая г, не совместна с функцией, определяемой s. К строкам с разными ярлыками F-правила можно применять только тогда, когда имеется совместимость F-зависимостей. Отметим,
11.5. Оптимизация табло запросов 341 что если база данных d имеет схему, которая находится в нормальной форме Бойса—Кодда относительно F, то вопрос оказывается бессмысленным — никакая F-зависимость из F+ неприменима к двум строкам с разными ярлыками из размеченного табло запроса для d. 11.5.5. Эквивалентность наборов табло запросов Вернемся к неразмеченным табло запросов. Напомним, что набор табло запросов Qco схемой R есть множество совместимых табло запросов {Qi, Q2, ..., QJ, каждое из которых имеет схему R. Напомним также, что Q (R) — это Qi(r) U Qi(r) U ... U QP(r). Понятия включения и эквивалентности непосредственно обобщаются на наборы табло запросов. Определение 11.13. Пусть Qlf Q2 — наборы табло запросов со схемой R. Скажем, что: а) 0Х ^ Q2, если Qx (r) с Q2 (r) для любого отношения г (R); b) Q1 = Q2, если Qx (r) = Q2 (r) для любого отношения г (/?). Следующая теорема характеризует включение наборов табло запросов. Теорема 11.8. Пусть Qx и Q2 —совместимые табло запросов со схемой R. В этом случае Qx _5 Q2 тогда и только тогда, когда для каждого табло .запроса Q2 из Q2 найдется табло запроса Q1 из Qlf такое, что Q1 J5 Q2. Доказательство. Достаточность утверждения следует непосредственно из определения Qx (r) и Q2 (r). Для доказательства необходимости используем опять технику интерпретации табло запроса как отношения. Пусть Q2 — какое-нибудь табло запроса из Q2. Рассмотрим Q2 (Q2). Пусть w0 — резюме Q2. Тогда Щ G Q2 (Фг)> так как ^о G Q2 (Q2) (при тождественном присваи· вании значений.) Поскольку Qx i5 Q2, то wQ £ Qi(Q2)· Должно найтись табло запроса Q1 из Qx, такое, что w0 ζ Qx (Q2). Пусть щ — резюме Qx. Присваивание значений р, такое, что ρ (Qx) cr g Q2, а ρ (ν0) = w0 — это отображение включения из Q± в Q2. Значит, Q1 Л Q2. Пример 11.55. Используя табло запросов Q± — Q4 (рис- 11.69), определим наборы табло запросов Ох = {Qx, Q2, Q3\ и Q2 = {Q3, QA\. Тогда Q2^Qx, так как Q42Qlt Q4 = Q2, a Q3_3Q3, hoQx^ Q2, так как никакое из Ql9 Q2 или Q3 не включает Q4.
342 Гл. 11. Модификация запросов Определение 11.14. Назовем набор табло запросов Q несократимым, если в нем не содержится различных табло запросов Q1 и Q2, таких, что Q1 _5 Q2. Теорема 11.9. Пусть Q± и Q2 — несократимые наборы табло запросов. Если Qx ξ Q2, то для любого табло запроса Qx £ Qx существует одно и только одно табло запроса Q2 £ Q2 с Qx ξ Q2. QM В С) Qt(A В С) 3 0з ах А 3 /м яз αϊ 6ι ό2 3 5 62 3 Ζ?! 4 Q4Q4 Д С) Q2(A В С) fli «з «ι 4 ах b{ b2 αχ bx b2 b3 bx a3 b3 bx 4 Рис^ 11.69. Доказательство. Пусть Qx — табло запроса из Qx. Так как Qx Ε. Q2, в Q2 имеется табло запроса Q2, такое, что Qx Ε. Q2. Аналогично, так как Qx J5 Q2, в Qx имеется табло запроса Q3 с Q2E QB. Отсюда Q1 Ε. Q3, τ· e· Qi = Q3 (иначе бы Qx было бы сократимо). Поэтому Qx ξ Q2. Если в Q2 имеется другое табло запроса Q4 с Qj ξ Q4, to Q2 ξ Q4 и Q2 сократимо. Значит, в Q2 имеется только одно табло запроса, эквивалентное Qx. Следствие. £&ш Q — несократимый набор табло запросов, то не существует эквивалентного Q набора табло запросов с меньшим количеством табло запросов. Доказательство предоставляется провести читателю (см. упр. 11.43). Пример 11.56. Рассмотрим набор табло запросов Qx = \Ql9 Q2, ф3}изупр. 11.55. Набор Qx сократим, так как Q22Q1. Положим Q3= = {Q2, Q3}· Тогда Qj ξ Q3. Набор Q3 несократим, так как Q2 ^ 2 Qs и Q3 g Q2.
11.6. Оптимизация конъюнктивных запросов 343 11.6. ОПТИМИЗАЦИЯ КОНЪЮНКТИВНЫХ ЗАПРОСОВ Напомним, что конъюнктивный запрос к базе данных d — это такое выражение исчисления доменов Ε {Χι Ш х2 (А2) ... х% (Ап) | з Уг (£ι) 3 У% (Β2) ...ЭУт (Вт) I \ХЦ %2> ···> Хп> Уъ У2ч ···» ί/τη)ί> что / — конъюнкция атомов вида г (ага2 ... aft), где г £ d, a каждое щ либо один из хь либо один из уь либо постоянная. Каждый атом из / символизирует отношение, которое нужно соединять при вычислении Е. Хотелось бы найти эквивалентный Ε конъюнктивный запрос с минимальным числом атомов. Метод минимизации конъюнктивного запроса совпадает почти полностью с методом минимизации табло запросов. Банальное требование дйя эквивалентности конъюнктивных запросов состоит в том, чтобы они определяли отношения над одной и той же схемой. Конъюнктивный запрос £', эквивалентный приведенному выше запросу Е, должен иметь вид {w1 (Л J w2 (А2) ...wn (Ап) | э *i (СО 3 *2 (Са) ... Э 2Р (Ср) g{wly α>2, ..., wn, zl9 z2, ..., zp)\. Назовем накрытием ψ из Е в Ε' такое отображение переменных исчисления доменов и постоянных из Ε в переменные исчисления доменов и постоянные из £", что cl. ψ (Xi) = wi9 1 <s£ i <: η; с2. ψ (с) = с для каждой постоянной с; сЗ. если г (а±а2 ... afe) — атом из /, то г (ψ (αχ) ψ (α2) ·-· ... φ (afe)) — атом из g. Накрытия совершенно аналогичны отображениям включения размеченных табло запросов. Пример 11.57. Рассмотрим базу данных d = \q (А В С), г (В CD), s (A D)}. Предположим, что dom (С) = dom (D). Пусть Ε — конъюнктивный запрос \хг (А) х2 (D) | з Уг (В) 3 Уг (С) 3 Уз (D) 3 У, (D) Ц (*ι Ул. Уг) Λ г (уг уг х2) Λ г (уг х2 Уз) Λ s (хг #4)Ь а Е — конъюнктивный запрос \w1 (A) w2 (D) | з Ζι (В) q (щ z1 w2) Д г (гг w2 w2) /\ s {w1 6)|, Отображение, показанное на рис. 11.70,—это накрытие из Ε в Е'. Из Е* в Ε накрытий нет, так как атом s (wx 6) из Е' нельзя отобразить ни з какой атом Е.
344 Гл. 11. Модификация запросов Пусть Ег 2 Е2 для конъюнктивных запросов Ег и Е2 обозначает то же, что и обычно. Доказательство следующей теоремы аналогично доказательству теоремы 11.1; оно оставляетсяТчи- тателю в качестве упр. 11.44. Теорема 11.10. Пусть Ег и Е2—конъюнктивные запросы, которые определяют отношения с одной и той же схемой. В этом случае Ег Л Е2 тогда и только тогда, когда существует накрытие из Ег в Е2. Ф(хг) = w2 Ф(у2) = и>2 Ф(уз) = ^2 Ф(уд = 6 Рис. 11.70. Определение 11.15. Назовем конъюнктивный запрос Ε мини- мальным, если не существует эквивалентного Ε конъюнктивного запроса Е' с меньшим числом атомов. Опираясь на теорему 11.10, можно доказать, что минимальный запрос, эквивалентный данному конъюнктивному запросу, единствен с точностью до взаимно однозначного переименования переменных, т. е. если Ег к Е2 — инимальные конъюнктивные запросы, эквивалентные £, то существует накрытие ψ из Ег в Е2, обратное к которому — накрытие из Е2 в £Ί. Пусть Ег есть i*i (Αχ) х2 Ш · · · χη (Ап) I 3 Уг (Вг) 3 Уг (В2) · · · 3 Ут (Вт) I (-^1» ^2» ···» хп> Уъ Уъ ···» Ут)\> а Е2 — \щ (Аг) w2 (A2) ...wn (Ап) | э Zi (Ci) 3 Ч (Q ... 3 *v (Cv) g(wl9 w2, ..., wn, zlf z2, ..., zp)}. По теореме 11.10 имеется накрытие ψ12 из Ег в Е2 и накрытие ψ21 из Е2 в Ег. Если ψ21 отображает два атома из / в один и тот же атом g, то ψ2ι0,Ψΐ2 ~ накрытие, которое отображает множество атомов Ег в некоторое собственное подмножество этого множества. Тождественное отображение отображает атомы подмножества в атомы формулы. Поэтому из Ег можно удалить некоторые атомы (и,· может быть, некоторые из уг·), получив эквивалентный конъюнктивный запрос, что противоречит минимальности Ег. Следовательно, φ12 — взаимно однозначное отображение на атомах /.
11.6. Оптимизация конъюнктивных ЗапроооЁ 34S По аналогичным соображениям ψ12 — взаимно однозначное отображение на переменных и постоянных (если нет, то некоторые из tji не упоминаются в /). Поэтому действительно существует обратная к ψ12 функция. Обратная функция к тому же определена на всех переменных и постоянных из Е2, иначе бы некоторый атом из g не лежал бы в образе ψ12, а отсюда следует, что Е2 не минимально. Чтобы показать, что ψ^1 — накрытие, нужно проверить условия cl—сЗ определения накрытия. Так как ψ12 (xt) = wu то ψϋ1 (щ) = %i- Если г (Ь\ &2 ··· bh) — атом из g, то в него отображается какой-то атом г (а1а2 ... ah) из / — иначе бы Е2 было неминимальным. Поэтому /-(ψ^1 (b\) φ]^1 (&г) ...Ψ121 (bh)) = г (а1а2... ... an) — атом из /. Осталось только проверить условие с2: ψ^1 (с) = с для любой постоянной с. Единственный случай, в котором могут возникнуть трудности — это когда ψ12 (tji) = с для некоторого 1 < i < m. Для атома г (ах а2 ... ah) из / и накрытия ψ положим Ψ (г (^ι ^2 ··· ^а)) = г (ψ (αχ) ψ (α2) ... ψ (α*))· Рассмотрим накрытие ipu = ψ2ΐ0,Ψΐ2Η3 ^i B себя. Все, что мы получили для ψ12, справедливо по симметрии и для ψ21. Отображение ψη должно быть взаимно однозначным на атомах Еъ поскольку ψη — композиция двух таких отображений. Пусть ах — атом Е1у содержащий в позиции / переменную уг. Рассмотрим последовательность аъ а2, ... атомов Еъ такую, что ψη (аг) = ai+lf I ^ 1. В некоторый момент какой-нибудь атом из этой последовательности должен повториться. Предположим, что aq = α^ при q < q', где q — минимальное возможное. Если q > 1, то o|)n (ag«i) = ag = == ψιι (<V—0» откуда ψπ не является взаимно однозначным на атомах. Итак, q = 1. Но, поскольку ψ12 (#f) = с, а ψ21 (с) = с, имеем ψη (ί/г) = с, а грп (с) = с, так что все α2, α3, α4, ... должны содержать в позиции / постоянную с, что противоречит аг = = <ν. Поэтому посылка ψ12 (yj) = с ложная. Подытожим полученный результат. Теорема 11.11. Пусть Еги Е2 — минимальные конъюнктивные запросы. В этом случае Ех = Е2 тогда и только тогда, когда су- ществует накрытие ψ из Ех в Е2, такое, что ψ"1 — накрытие из Е2 в Ех. Нетрудно показать, что теорема 11.11 означает существование для любого конъюнктивного запроса Ε минимального эквивалентного конъюнктивного запроса Е\ который получается из Ε удалением некоторых атомов и связанных кванторами переменных. Задача минимизации конъюнктивного запроса Ε сводится к задаче нахождения накрытия из Ε в £", которое отображает множество атомов Ε в собственное подмножество.
346 Гл. 11. Модификация запросов Пример 11.58. Пусть база данных d та же, что и в примере 11.57. Рассмотрим конъюнктивный запрос Ε = \хх (А) х2 (А) | 3Ui (С) 3 У2 (Q 3 Уз (С) 3 У* (С) 3 Уъ Ψ) Я (*ι 3 Уг) Л Я (χι Уъ Уз) Л г (3 уг х2) Л г (у2 у4 х2) Л s (хг 5) Л s (хг уъ)\ к базе данных d. Накрытие φχ для Е, отображающее у2 в 3, ys и ί/4 в у19 а все остальное в себя, показывает, что конъюнктивный запрос Е' - {*ι (А) х2 (А) | з Уг (С) ЗУь (D) Я (*ι 3 Уг) Л г (3 ух х2) Л s (хг 5) Д s (хг Уь)\ эквивалентен Е. Накрытие φ2 для Е\ отображающее уь в 5, а все остальное в себя, показывает, что запрос Ε" = \χχ (А) х2 (А) | ЗУ ι (О q (хг Ζ Уг) N г (3 ух х2) Д s (^i 5)1 эквивалентен Ε' и, следовательно, £. Ясно, что Е" минимален (почему?), так что Е" — минимальный эквивалентный Ε конъюнктивный запрос. Определение того, минимален ли данный конъюнктивный запрос — это NP-полная задача. Ни один из известных^ методов проверки минимальности существенно не улучшает простой просмотр всех накрытий из Ε в себя на предмет выявления отображений множества атомов Ε в собственное подмножество. Тем не менее, если в Ε мало атомов, такой просмотр не будет чрезмерной тратой времени, если запрос Ε должен вычисляться много раз. 11.7. МОДИФИКАЦИЯ ЗАПРОСОВ В РАСПРЕДЕЛЕННЫХ БАЗАХ ДАННЫХ Некоторые системы баз данных поддерживают реляционные базы данных, которые физически разделены на части. Различные отношения могут размещаться в разных пунктах, многочисленные копии одного отношения могут быть записаны в нескольких местах, или же одно отношение может быть разбито на куски, а куски распределены. Для вычисления запроса, сформулированного в одном пункте, может оказаться необходимым обмен данных между различными пунктами. В требуемом на обработку запросе времени львиная доля может приходиться на время передачи данных, а не на время, потраченное на вызов из внешней памяти или время вычисления. Эффективность вычисления запроса зависит от минимизации необходимых коммуникаций между пунктами хранения.
11.7. Модификация запросов в распределенных базах 347 Пример 11.59. Предположим, что выражение г >< ал=а (s) должно вычисляться в пункте 1 распределенной системы баз данных, причем г хранится в пункте 1, a s — в пункте 2. Из пункта 1 в пункт 2 можно послать требование передать всё отношение s9 а затем вычислять сам выбор. Более разумный подход (если s велико) заключается в том, чтобы передать из пункта 1 в пункт 2 условие выбора А = а. Затем выбор будет вычислен в пункте 2, а результат, который предположительно много меньше, чем s, передан назад в пункт 1. В этом разделе мы изучим полусоединение — полезную операцию для вычисления соединения в распределенных базах данных — и фрагментированные отношения, т. е. отношения, разбитые на фрагменты, которые хранятся в разных местах. 11.7.1. Полусоединение До определения полусоединения продемонстрируем его полезность на примере. Пример 11.60. Рассмотрим отношения г (А В) и s (В С D) с рис. 11.71. Пусть они храняться соответственно в пунктах 1 и 2 распределенной базы данных. Предположим, что нам нужно вычислить rxs в пункте 1. Можно передать все s из пункта 2 в пункт 1 и вычислить соединение в пункте 1. Для этого надо передать 21 значение. Или же можно вычислить г' = пв (г) в пункте 1, послать г* в пункт 2, вычислить s' = r'xs и послать s' в пункт 1. Затем можно вычислить rxs как rxs'. Отношения г' и s' показаны на рис. 11.72. Для этого метода требуется передача 15 значений: 6 для г' и 9 для s'. Определение 11.16. Пусть г (R) и s (S)—два отношения. Полусоединением res назовем отношение nR (г >< s) (обозначается r|Xs). Таким образом, r|Xs — это часть г, которая соединяется с s. 1 1 1 2 2 3 3 3 4 5 6 4 6 7 8 9 4 4 7 10 10 11 11 12 13 14 13 14 15 15 15 15 16 16 17 16 17 16 16 16 г'(А) 4 5 6 7 8 9 s'(B С D) 4 13 16 4 14 16 7 13 17 Рис. 11.71. Рис. 11.72.
348 Гл. 11. Модификация запросов Вспоминая некоторые преобразования из разд. 11.3, получим nR (г χ s) = nR (г) χ nRf]s (s) = rx nRr]s (s). Поэтому для вычисления r\Xs необходимо знать только nRr)S($)> а не все s (в примере 11.60 г' = пв (г), a s' = s\K r). Полусоединение представляет интерес ввиду следующего его свойства: (rtXs)i><!s = rxs (см. упр. 11.46). Если г и s размещены в разных пунктах, вычисление (г D< s)xs вместо вычисления rxs д(Л В) г(В С) s(C D) 1 1 2 2 3 4 5 4 6 6 4 5 5 6 6 Рис. 7 7 8 9 10 11.73. 7 8 9 10 11 11 12 11 экономит передаваемые данные, если только г больше, чем Ядг|5(г) и г D< s, вместе взятые. Конечно же, если г и s воссоединяются полностью, то никакой экономии не будет. Однако даже если в базе данных все отношения — проекции общего возможного состояния, то запросы могут включать соединения отношений, которые не воссоединяются полностью (из-за проведенных выборов). В таких случаях полусоединение может оказаться эффективным. Иногда же полусоединения могут полностью заменить соединения. Пример 11.61. Пусть q (А В), г (В С) и s (С D) — три отношения, показанные на рис. 11.73. Предположим, что q, г и s разбросаны по трем пунктам 1, 2, 3 соответственно, а нам нужно вычислить алгебраическое выражение Ε =nD (ga=i (q x г х s)) в пункте 3. Отметим, что Ε эквивалентно Е' = nD (ga=\ (q) x r x s). Для нахождения значения £", вычислим сначала в пункте 1 q' = Од=\ (q). Пошлем затем пв (qf) в пункт 2 и вычислим там г' = г [X q\ потом пошлем яс {г') в пункт 3 и вычислим там s' = = s \Xr'. Результат — это %> (s'), что можно вычислить в пункте 3. Отношения q'y r' и s' показаны на рис. 11.74. Отметим, что ни одно отношение не передавалось полностью. Часто в процессе вычисления запроса к распределенной базе данных есть момент, в который промежуточные результаты —
11.7. Модификация запросов в распределенных базах 349 отношения гъ г2, .., гр — находятся в разных пунктах, а на следующем шаге необходимо вычислить в одном из пунктов гг>< г2\>< ... >< гр. Было бы полезным уметь вычислять часть каждого отношения, которая примет участие в соединении. д'(А В) г'{В С) s'{C D) 14 4 7 7 11 15 5 7 8 И 5 8 Рис. 11.74. д(А В) г(В С) s(A С) 14 4 7 18 15 5 7 2 7 2 4 5 8 2 8 2 6 6 8 3 7 3 6 Рис. 11.75. д'(А В) г'{В С) s'(A С) 15 4 7 18 2 4 5 8 2 7 2 6 6 8 2 8 Рис. 11.76. Определение 11.17. Рассмотрим базу данных d и отношение г (R) из d. Назовем πΗ (><(d)) полной редукцией г относительно d (обозначение: FR (r, d)), т. е. FR (r, d) — часть г, которая принимает участие в соединении со всеми остальными отношениями из d. Пример 11.62. Пусть d — база данных \q (А В), г (В С), s (А С)}, где отношения q, r и s показаны на рис. 11.75. На рис. 11.76показаны^ (?, d) = q\ FR (r, d) = г' и FR (s, d) = s'. Определение 11.18. Пусть d= \rlf r2, ..., rp\ — база данных. Назовем последовательностью полусоединений SP для d последовательность команд присваивания вида ri+-rtK г Пусть SP (о, d) означает конечное значение rt после применения SP к d.
350 Гл. 11. Модификация запросов Определение 11.19. Скажем, что последовательность полусоединений SP для базы данных d = \rlf r2, ..., rp\ производит полную редукцию, если для произвольного состояния d FR (ru d) = SP (ri9 d), 1 < i < p. Отметим, что независимо от того, производит ли SP полную редукцию или нет, FR (rif d) ^ SP (rit d) (см. упр. 11.48). гх(Ах А2) г2(А2 А3 А4 As) 5Р,: 1. r2^r2txr3) 2. r2 <- r2 cx r4; 3. rx *- r\ Cx rt. Рис. 11.77. SPi(n,d)(A2 A3 A4 3 5 7 4 5 7 Рис. 11.79. As) 9 10 1 2 r3(d 5 6 SP2(r2,d)(A2 3 Рис. 1 3 3 3 Л, 7 8 Лз 5 11.81. 3 5 7 9 3 6 7 9 4 5 7 10 ι Аь) r4(A4 Аъ Αη 11 12 SP Ал 7 7 9 13 7 10 13 Рис. 11.78. 2· 1 r3 «- r3 cx r4; 2. r4 <- r4 cx r3; 3. r2 <- r2 tx r3; 4. r2 «- r2 IX r4; 5. r2 *-г2 Cxr,; 6. rx <- r, Dx r2; 7 r3 «- r3 cx r2; 8. r4 <- r4 cx r2. Рис. 11.80. al) 9 Пример 11.63. Пусть d —■ база данных \гх (Аг Л2), г2 (А2 А3 Л4 Л5), г3 (Л3 Л4 Л6), г4 (Л4 Л5 А7)\. На рис. 11.77 по- показана последовательность полусоединений SPX для d. Она не производит полную редукцию d. Рассмотрим состояние d с рис. 11.78. На рис. 11.79 показано SP± (r2, d). Это отношение содержит кортеж (4 5 7 10), который не лежит в FR (r2, d), так как он не соединяется ни с каким кортежем из гг.
11.7. Модификация запросов в распределенных базах 351 Последовательность же соединений SP2 с рис. 11.80 производит полную редукцию d. Например, в состоянии базы данных d с рис. 11.75 отношение SP2 (r2f d) показано на рис. 11.81. Оно совпадает с FR (r2, d). Доказательство того, что SP2 производит полную редукцию, нетривиально; кроме того, SP2 — не самая короткая из таких последовательностей (см. упр. 11.49). Покажем для примера, почему SP2 (r2i d) обязательно совпадает с FR (r, d). По упр. 11.48 SP2 (r2, d) з FR (r2, d). Нужно показать, что каждый кортеж из SP2 (r2, d) действительно соединяется с кортежами из остальных трех отношений. Отметим, что из этих трех отношений только схемы г3 и г4 пересекаются, причем пересечение содержится в схеме г2. Если кортеж t2 из г2 соединяется по отдельности с каждым из кортежей tu t3t ί4 из гъ г3 и г4, то он соединяется и со всеми ними, вместе взятыми. Так как в SP2 производится полусоединение г2 с гъ г3 и г4 на шагах 3, 4 и 5, то такие кортежи tl9 t3 и /4 должны существовать для каждого кортежа t2 из г2. Пример 11.64. Для базы данных d из примера 11.62 не существует последовательности полусоединений, которая бы производила полную редукцию. Состояние d, показанное на рис. 11.75, остается без изменений при любых полусоединениях, но никакое из отношений из d не редуцировано полностью. В гл. 13 мы вернемся к последовательностям полусоединений и охарактеризуем те базы данных, для которых существуют последовательности, производящие полную редукцию. 11.7.2. Фрагменты отношений Отношение в распределенной базе данных не обязательно хранится полностью в одном единственном пункте. Кортежи этого отношения могут быть из соображений производительности разбросаны по нескольким пунктам. Например, база данных о предварительных заказах авиалинии может быть разбита так, чтобы кортежи каждого рейса хранились в пункте, где рейс начинается. Иногда один и тот же кортеж хранится в нескольких местах. Назовем куски отношения, размещенные в каждом из пунктов, фрагментами отношения. При обработке запроса в одном пункте может потребоваться вызов фрагментов из остальных пунктов. Если распределение кортежей по фрагментам следует некоторому правилу, то это правило можно использовать для сокращения числа фрагментов, вызываемых при обработке запроса. Фрагменты будут определяться у нас условиями выбора. Фрагмент отношения г будет всегда иметь вид ос (г), где С — некоторое условие выбора.
352 Гл. 11. Модификация запросой Пусть, далее, slt s2, ..., sp—фрагменты отношения г; причем S}, 1 < i < р> определяется как ас. (г) при некотором условии выбора Ct. Назовем \СЪ С2, ..., Ср\ схемой фрагментации для /. Условие, которое будет всегда предполагаться выполненным, состоит в том, что г = Si U s2 U ... U sp; оно означает, что г можно восстановить по его фрагментам. Предположим, что г удовлетворяет некоторому условию С0, т. е. г = = оСо (г). Чтобы г наверняка представлялся в виде объединения своих фрагментов, схема фрагментации должна удовлетворять требованию Co + d vc2v - VCP, т. е. что любой кортеж, удовлетворяющий С0, обязательно удовлетворяет одному из условий схемы фрагментации. Назовем схему фрагментации, удовлетворяющую этому требованию, допустимой. Пример 11.65. Пусть г — отношение со схемой A BD, причем домен каждого атрибута — множество положительных целых чисел. Предположим, что г всегда удовлетворяет условию С0 (А < В У В <D) /\A=£D. Схема фрагментации [Си С2, С3}, где С± — это А = В, С2 — это В = D, а С3 —это А <: D, допустима для / (почему?). Знание схемы фрагментации может помочь при обработке запроса. Предположим, что нужно вычислить ас (г) в заданном пункте (возможно, как часть большего запроса). Можно выслать требования на ас \$г) для каждого фрагмента $j, который не хранится в данном пункте. Однако при С Д Ct = ложь назад ничего наверняка не вернется. Поэтому нужно требовать только те <*с (st)> для которых С Д СгФ ложь. В действительности процесс сокращения количества рассматриваемых фрагментов можно продолжить. Предположим, что найдется условие Cjy такое, что С Д Сг => С Д С7·. Любой кортеж t из г, входящий во фрагмент s1 и удовлетворяющий С, должен входить и во фрагмент sj. Таким образом, фрагмент s 1 при вычислении ас (г) вызывать не обязательно. В общем случае, если с л с1=> [(с л с,) ν (с Λ с3) ν -. V (с Λ ср)\, то фрагмент Si можно не рассматривать. Назовем эту импликацию условием исключения. Пример 11.66. Пусть г — отношение со схемой A BD, причем домен каждого атрибута — положительные целые числа. Пусть г удовлетворяет условию С0, где С0 — это А < В Д В < D.
11.8. Упражнения 353 Пусть sχ, s2, s3, s4 — фрагменты r, соответствующие схеме фрагментации {Съ С2, С3, С4}, где Сх — это А < Б, С3 — это В > 3, С2 — это В < 3 Л В < D, а С4 — это Л = D. Читатель должен проверить, что эта схема фрагментации допустима. Предположим, что нам нужно вычислить ас (г), где С — это А < В Л В <D. Какие фрагменты надо для этого вызывать? Фрагмент s4 вызывать не надо, так как С Д С4 ξ ложь. Аналогично, так как с АСг^ [(С /\с2) ν (С л с,)], Sx можно исключить. Или же, так как С Л С2 =* С Л С1Э С Л С3 =* С Л С19 можно исключить s2 и S3 и оставить лишь Si. В общем случае при определении фрагментов, которые можно не рассматривать при вычислении ос (г), вместо С используем С Д С0. Если С т^ С0, то эта замена позволяет исключить большее число фрагментов. Мы не коснулись вопроса об алгоритмах проверки допустимости и условий исключения. Вычислительные свойства таких алгоритмов сильно зависят от конкретного вида доменов атрибутов и разрешенных видов условий выбора. Как видно из последнего примера, может оказаться несколько вариантов, которые нужно вызывать при вычислении ас (г). При этом выбор множества, наименьшего по размерам среди минимальных, может оказаться не оптимальным при вычислении запроса. Существуют и другие соображения, такие, как стоимость коммуникаций (с одним пунктом разговор может стоить дороже, чем с другим), находится ли один из фрагментов в том месте, где вычисляется запрос, а также количество дубликатов среди кортежей минимальных множеств. 11.8. УПРАЖНЕНИЯ 11.1. Пусть г и s — отношения из примера 11.9. Найдите число обращений к диску, необходимых для вычисления г >< s следующими способами: (a) считывать блоки г в память по 4 одновременно, и для каждой четверки считывать блоки s по одному; (b) считывать блоки s по 2 одновременно, и для каждой пары считывать блоки г по 3 одновременно. 11.2. Рассмотрим отношения г и s из примера 11.9. Предположим, что отсортировано по В только г. Сможете ли вы найти более эффективный способ вычисления rtxis, чем применимые в том случае, когда ни г, ни s не отсортированы по В? Предполагается, что каждый блок диска содержит 5 кортежей.
354 Гл. .11. Модификация запросов 11.3. Рассмотрим отношения г и s, r s s. Упростите выражения (a) rX s; (b) σ4=α (г) - s; (с) πχ (г) Π πχ (s). 11.4. Найдите деревья выражений для каждого из следующих выражений, затем отождествите узлы и сделайте возможные упрощения: (a) (гг X г2 X r3) U (г2 >< г3 X r4) U (/"ι >< г3 >< /*4) U U (г\ X г2 χ г4); (b) (r><q)n (вА=а (s) - s); (c) %оП фп АД ДТ РЗ (оп ^ плохо)> гДе оп и плохо даны в примере 11.1. 11.5. Найдите деревья выражений для каждого из следующих выражений, затем примените к каждому из них алгебраическую оптимизацию. Схемы q, r, s — это А В D, В D F, F G. (a) σΰ=ά (πΒ D F (Я >< г) — πΒ D F (r X s)); (b) πΑ D(q>< r>< cG=ssg (s)); (c) Η (°A=a {°D=d (Я) >< {r - ?B D E (r X s)))). 11.6. Рассмотрим команду /*-<-πχ (Sj χ s2 χ ... χ sft), где схемы всех Si, s2, ..., s^ попарно не пересекаются. Предположим, что X содержит лишь атрибуты из slt s2, ..., sp, где ρ < /г. Найдите способ преобразовать команду в программу, содержащую только /? — 1 циклов for, если у вас есть простой способ проверки пустоты отношения. 11.7. Примените алгоритм декомпозиции запроса к первоначальной команде из примера 11.33 при следующих вариантах сравнений Ci—С6: (a) Ci, С2, С8, Съ и С6 остаются теми же, а С4 — это г. G ^ 3; (b) Ci, С2, С3 и С6 остаются теми же, С4 — это г. G <1 3, С5 — это у. F == 4; (c) Сх, С3, С4 и С5 остаются теми же, а С2 — это л:. Л = 5, а С6 — это х. F < 9; (d) С2—С6 остаются теми же, а Сх — это w. В = 7. 11.8. Пусть Pi — программа, получающаяся при декомпозиции команды запроса г -*- ηχ (ос (Si χ s2 χ ... >< sft))y где по {sx, s2, ..., sp}, /? < £, производится первоначальная обработка, а затем все Sit s2, ..., sp итерируются. Сравните структуру Pi со структурой программы Рг> получающейся при итерации slf s2, ..., sp без предварительной обработки. 11.9. Рассмотрим выражение исчисления кортежей и соответствующее алгебраическое выражение из начала разд. 11.4. Пусть h —формула 3 Ух (Ri) € Ί ЗУ2 (R%) € г% · · · 3 Ут (Rm) 6 rm g (ylf y2i ..., ym)9 Ε — соответствующая часть алгебраического выражения, точнее это 0С (SjXJSgXl ... XSm). Сможете ли вы найти модификацию А, которая соответствует применению первоначальной обработки и итерации к команде r^-Ε? (Указание: для первоначальной обработки необходимо ввести в А новую переменную.) 11.10. Рассмотрим отношения гг (А\ А2), г2 (А2 Аз)> /*з (^з Л4) и г4 (А^ Аъ), Ниже приведены два способа вычисления ΓχΧ г2 X г3 X г4. Предположим, что в каждом из отношений η кортежей. Потребует ли второй способ меньше
11.8. Упражнения 355 времени, чем первый? Предположим, что время измеряется числом исполнения команд присваивания. Одиночный кортеж рассматривается в командах присваивания как отношение, состоящее из одного кортежа. Метод 1: г+0; for каждый кортеж ίτ из гг do for каждый кортеж t2 из r2 do for каждый кортеж t3 из r3 do for каждый кортеж tA из г4 do г<- г U (h >< h >< t3 >< f4) етод 2: for каждый кортеж tx из гг do for каждый кортеж t2 из r2 do «l^-Si U (h >< t2)\ s2+- 0; for каждый кортеж t3 из r3 do for каждый кортеж tA из r4 do s2+-s2 и (/8><i W; for каждый кортеж ux из sx do for каждый кортеж и2 из s2 do >*-*- r U («ι >< «г) 11.11. Приведите пример, в котором бы использовался вариант 5 эвристики декомпозиции запроса, точнее приведите граф связей, к которому неприменимы варианты 1—4. 11.12. Найдите табло запросов Οι и Q2, такие, что Οι покрывает Q2, но 02 t Qi- 11.13. Докажите лемму 11.1. 11.14. Найдите табло запросов Οι и Q2, такие, что Οι Ξ 02> Qz получается из Οι удалением одной строки, но эта строка в Οι не заменяется. 11.15. Покажите, что удаление всех заменяемых строк из табло запроса не обязательно гарантирует минимальность полученного табло запроса. 11.16. Докажите теорему 11.3. Заметьте, что отображение включения не может сделать ничего, кроме как переименовать невыделенные переменные. 11.17. Укажите алгоритм проверки, отличаются ли два табло запроса только переименованием невыделенных переменных? Определение 11.20. Табло запроса, которое может получиться из ограниченного алгебраического выражения методом гл. 10, назовем табло ограниченного выражения. 11.18. Докажите, что (a) Если Οι — табло ограниченного выражения, a Q2 — подтабло Οι, минимальное и эквивалентное Οι, то О2 — табло ограниченного выражения. (b) Табло запроса 0 эквивалентно табло ограниченного выражения тогда и только тогда, когда каждое минимальное эквивалентное 0 табло запроса — табло ограниченного выражения. (c) Существует табло запроса, эквивалентное табло ограниченного выражения, но которое само не является табло ограниченного выражения. 11.19. Найдите эффективный метод определения, является ли простое табло запроса табло ограниченного выражения. 11.20. Пусть 0 — табло ограниченного выражения, которое не просто. Какое минимальное число строк может иметь 0? А столбцов? 11.21. Покажите, что минимальное табло запроса для простого табло запроса тоже просто.
356 Гл. 11. Модификация запросов 11.22. Вычислите COMPw. (тЛ для табло запроса £?, представленного на рис. 11.40, где (а) ι = 1, а / = 2; (b) i == 2, а / = 1; (с) i = 3, а / == 6; d) ί = 4, а / = 3. 11.23. Докажите лемму 11.3. В доказательстве используется простота Q. 11.24. Найдите алгоритм вычисления COMPv(w) за О (k2n) шагов, где табло запроса Q имеет k строк и η столбцов. 11.25. Найдите MINEQ (Q) для табло запроса Q, изображенного на рис. 11.40. 11.26. Пусть Q — простое табло запроса, a v и w — строки Q. Покажите, что если w — строка из COMPv (w), то COMPv (w) = COMPv (w). 11.27. Эквивалентны ли какие-нибудь из следующих табло запросов? QMl Al А> Лд QiiA, A2 А3 А4) b\ a2 b2 b3 b4 a2 bs Ъь b7 bs b2 be ах b9 b2 4 QM\ Μ Л3 А4) Q4(Ai Л2 А3 А4) <*г а2 а\ а2 «1 «1 Ъ) а7 ь> а2 ь2 Ьг 4 *з а\ Ъх Ь2 4 ах а2 Ь2 4 а\ b3 b4 bs b3 a2 b2 b3 ьь «2 b2 bs bs a2 b2 4 11.28. Какие табло запросов из упр. 11.27 эквивалентны при наличии SAT(A3-+ Л4)? 11.29. Предъявите табло запроса Q и множество С F- и J-зависимостей, такие, что Q — простое, но chasec (Q) — нет, причем удаление заменяемых строк не делает chasec (Q) простым. 11.30. Покажите, что для данных простого табло запроса Q и множества С F- и J-зависимостей chasec (MINEQ (0)) не обязательно С-минимальное эквивалентное Q табло запроса. 11.31. Если Q — табло ограниченного выражения, а С — множество F- и J-зависимостей, то будет ли chasec (Q) обязательно табло ограниченного запроса? 11.32. Пусть d ■=. {q (А В), г (В С), s (А С)} — база данных, являющаяся проекцией общего возможного состояния над ABC. Используйте оптимизацию табло запросов для нахождения алгебраических выражений, эквивалентных данным, с меньшим числом соединений (если такие существуют) (a) πΒ (q >< г >< s); (b) nAC (q χ r); (c) nAC (q χ r χ s); (d) nAC{oAssCi (q) χ oc=sCi (r) χ;).
11.8. Упражнения 357 11.33. Пусть d — база данных со схемой R, причем d — проекция возможного состояния r(U) из SAT (F), где F — множество F-завйсимостей. Пусть, далее, q±> q2, .... qm — последовательность' отношений, такая, что q% при 1 ^ < i ^ m, — это либо i. отношение из d, либо и. ^-расширение qk с помощью Y-+ Z, где / < i, k < i, a (F->- Ζ) ξ F. Пусть S — схема qm. Покажите, что qm = л8 (г). 11.34. Пусть F — множество F-зависимостей, R = {Rly R2, ..·, Rp}— это SYNTHESIZE (F), где SYNTHESIZE — алгоритм из гл. 6. Пусть, далее, U = R1R2 ... Rp. При каком условии U есть Rf-расширение? 11.35. Пусть F — множество F-зависимостей, a R = {Rly R2, ..., Rp} — схема базы данных, причем U = RxR2 ... Rp. Предположим, F\=* [R]. Обязательно ли U есть Rf-расширение? 11.36. Пусть F — множество F-зависимостей, a R — схема базы данных над U. Покажите, что если R ζ U есть Rp-расширения, то echasep(T^\ содержит строку, выделенную по меньшей мере в атрибутах из R. 11.37. Пусть F — множество F-зависимостей, a R — схема базы данных. Докажите, что, если F навязана R, то echasep (TR) = chasep (TR). Напомним, что F навязано R, если некоторое покрытие G множества F применимо к R. 11.38. Покажите, что ADE не является Rf-расширением для F = {А ->- -> С, В ->- С, CD -+■ Ε} и R = {AD, АВ, BDE, СЕ}. 11.39. Покажите, что если F — множество F-зависимостей, a Q — табло ограниченного выражения, то echasep (Q) — табло ограниченного выражения. 11.40. Найдите отношения включения между наборами табло запросов Qi = Wi, ад, q3 = {Pi, л, ад, q2 = {<?2, ад, Q4 = {08, ад, где тафю запросов Qi, Q2, Фз и £?4 приведены ниже. Какие из Qx—Q4 несократимы? Qx (А В С D) & (Л В С D) αχ α3 αχ аз а\ b\ Ь2 Ь3 αγ b\ b2 63 b4 b{ a3 b5 ' b4 bl a3 b5 b4 b6 b7 b3 Q8 (А В С D) Q^(A B c D) "3 *j аз a\ bx b2 b3 ax 5 bi b2 b4 bi a3 - b3 b3 5 a3 b4 11.41. Докажите следствие из теоремы 11.9. 11.42. Докажите теорему 11.10. 11.43. Пусть d— база данных {q (А В С), г (В CD), s (A Z))}, где dom (В) =zdom(Q* Найдите минимальные эквивалентные конъюнктивные за-
358 Гл. 11. Модификация запросов просы к следующим конъюнктивным запросам. Укажите накрытия, подтверждающие каждый ответ. (a) {хх (А) х2 (В) х3 (С) \ з уг (D) Э у% (С) Tq (хг х2 х3) Л г (х2 х2 уг) \г(х у2 ух) Д г (х2 х3 6)}; (b) {хх (В) х2 (D) | з ух (А) з у2 (С) з Уз (Л) 3 У* (В) 3 Уъ (С) ЗУ6(А)ЗУ7(В)ЗУ8(0) q (Уг Ч Уг) Л Я (Уз Уь Уъ) Л Я (Ув Уч Уъ) Л s (Ух У а) Л s (Уз Уз) Л s (Уе хг)У> (c) fa (A) x2 (D) | з Ух (D) 3 Уг (Л) s (хг ух) Д s (у2 ух) Д s (y2 х2)}. 11.44. Докажите, что для отношений г и s имеет место г X s= (гСК s) >< s. 11.45. Покажите, что для отношений г и s отношения г' = rtKs hs' = = st><r' всегда соединяются полностью, и что г X s —г' X s'. 11.46. Если SP — последовательность пол у соединений для базы данных d, а г — отношение из d, то SP (r, d) з FR (r, d). 11.47. (а) Покажите, что последовательность полусоединений SP2 из примера 11.63 производит полную редукцию d. (b) Найдите последовательность пол у соединений, которая короче SP2, но производит полную редукцию базе данных d из примера 11.63. (c) * Докажите, что если для базы данных d = {r1} r2, ..., гр} есть последовательность полусоединений, производящая полную редукцию d, то имеется такая же последовательность из 2р — 2 команд. 11.48. Пусть г — отношение со схемой А В D Е, где домен каждого атрибута — множество положительных целых чисел. Предположим, что г всегда удовлетворяет условию Со, где С0 — это Л<5 Д В ^.D Д D ^ Е. Пусть d — это А < В Д В < D, С2 — это Л = D, С3 — это А < D, С4 — это Α Φ Β \] Β Φ D, Съ — это В < £. Какие из следующих схем фрагментации допустимы для г: (a) {Clf C2}, (b) {С2, С3}, (с) {С19 С4, С.}, (d) {C2, С4, С5}? 11.49. Пусть г то же, что и в упр. 11.48, sx, s2, s3, s4 — фрагменты г, соответствующие схеме фрагментации {Сь С2, С3, С4}, где условия Ci—С4 те же, что и в упр. 11.48. Найдите минимальные наборы фрагментов, которые можно использовать для вычисления ос (г) при следующих вариантах С: (а) АФВ h 5 = D; (b) B<D A D < Ε; (с) Л<5 Д Я< 6. 11.9. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Модификация запросов в системе INGRES обсуждалась в работах Stonebraker, Wong [1974], Stonebraker [1975] и Stonebraker, Rubenstein [1976]. Многочисленные исследователи изучали алгоритмы для операторов в реляционной алгебре и вопросы их сложности. Низшая граница на соединение двух отношений, пропорциональная η log η, где η — число кортежей в каждом из отношений, найдена в работах Gotlieb [1975] и Pecherer [1975]. В работе Blasgen, Eswaren [1977] сравниваются различные алгоритмы вычисления соединения. Стокмайер и Вон (Stockmeyer, Wong [1979]) показали, что вычисление
11.9. Библиография и комментарии 359 пересечения двух отношений из к столбцов требует в худшем случае не менее (т-\- п) log т \- (т Л- η — \) к сравнений, где отношения состоят из т и η кортежей, т < я. Ким (Kim [1980, 1981b]) рассмотрел наилучший способ использования основной памяти при вычислении соединений. Раздел 11.2, посвященный упрощениям и повторяющимся подвыражениям, следует в основном работе Hall [1976]. Полезность спуска выборок вниз по дереву выражения была обнаружена несколькими исследователями; первым, по-видимому, был Палермо (Palermo [1974]). Раздел 11.3, посвященный оптимизации алгебраических выражений, следует исследованию Ullman [1980]. Несколько стратегий эффективного вычисления реляционных запросов, таких, как использование сортировки промежуточных результатов и информации о базе данных, содержащейся в системном каталоге, обсуждаются Смитом и Чаном (Smith, Chang [1975]). В работе Yao [1977] приведены методы оценки различных стратегий для последовательностей выбор — проекция — соединение. В работах Selinger, Astrahan, et al. [1979] и Chamberlin, Astrahan, et al. [1981] описываются стратегии обработки запросов, применяемые в системе System/R реляционной базы данных фирмы IBM, где широко используются статистики базы данных для выбора различных методов поиска, упорядочения промежуточных результатов, а также типа и порядка выполнения соединений. В работах Kim [1981a, b] охвачены типы классификации и оптимизации запросов в математическом обеспечении System/R. Алгоритм декомпозиции QUEL принадлежит Вонгу и Юссефи (Wong, Youssefi [1976]), графическое представление принадлежит Ульману (Ullman [1980]). Результаты об эквивалентности табло запросов и минимизации простых запросов взяты из работы Aho, Sagiv, Ullman [1979a, b], где показано также, что проверка эквивалентности табло запросов представляет собой NP-полную задачу даже в нескольких ограниченных случаях. Соединения расширением восходят к Honeyman [1980a], где улучшены идеи из работы Osborn [1979b]. Задача вычисления соединения без потерь, охватывающего определенные множества атрибутов, исследовалась во многих публикациях: Kambayashi [1979], Lozinskii [1980], Schenk, Pinkert [1977], Tanaka, Tsuda [1977]. Материалы о наборе табло запросов взяты из статьи Sagiv, Yannakakis [1979]. Накрытия как средство минимизации конъюнктивных запросов введены в сообщении Chandra, Merlin [1976]. Там же показано, что эта проблема NP-полна. Полусоединения были определены в статье Bernstein, Chili [1981], где можно найти и ответ к упр. 11.47с. Материалы о фрагментах взяты из работы Maiег, Ullman [1981b]. Фрагменты широко используются в системе распределенной базы данных SDD-1, описанной в публикациях Goodman, Bernstein, et al. [1979] и в Rothnie, Bernstein, et al. [1981]. Различные аспекты разбиения на фрагменты в реляционных базах данных исследовались в работах Epstein, Stoneb- raker, Wong [1978], Ceri, Pelagatti [1980], Paredaens [1980] и Paredaens, DeBra [1981]. Упражнения 11.18а и 11.19 взяты из статьи Aho, Sagiv, Szymanski, Ullman [1979], упражнение 11.18b—Connors, Vianu [1981]. Минкер изучил обработку реляционного запроса с точки зрения индуктивной выводимости (Minker [1975a, b, 1978]). В работе Shopiro [1979] разработан язык программирования для манипуляций над отношениями. Взаимосвязь между избыточностью записей и скоростью вычислений исследована в статьях Lozinskii [1978] и Schkolnick, Sorenson [1981]. В работах Klug [1980a], Klug, Price [1980] и Tanaka, Kambayashi [1980] показано, как вычислять ограничения, которым удовлетворяет значение алгебраического выражения, по ограничениям, которым удовлетворяют отношения-операнды.
Глава 12 Неопределенные значения, неоднородная информация и семантика баз данных Следует предупредить, что характер обсуждения тематики этой главы соответствует личной точке зрения автора. Оценки правильности предлагаемых подходов и определений, возможно, будут самыми разнообразными в зависимости от индивидуальной интуиции. Здесь обсуждаются отдельные проблемы, возникающие из предположения, что информация любого вида может быть отражена с помощью реляционной модели. В настоящей главе не дается полного решения этих проблем, однако предлагаются некоторые частичные решения, которые могут подсказать направления будущих исследований. Фраза, услышанная при обсуждении семантики данных, хорошо отражает сегодняшнюю ситуацию: «Это все понятно, если немного зажмуриться и не слишком задумываться». Реляционная модель базы данных основывается на оптимистическом предположении о том, что представляемая информация хорошо укладывается в ящички, организованные в прямоугольные таблицы. Это предположение может нарушаться по двум причинам: 1. структура информации не соответствует такой простой форме; 2. структура информации соответствует предложенной форме, но часть информации отсутствует. Пример первого типа — это трудности, возникающие с отношением детали (ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ НАЗВАНИЕ-ЧАСТИ) из разд. 10.2. В этом примере нужно искусственное значение для атрибута ДЕТАЛЬ-ЧАСТИ, когда деталь не является чьим- нибудь компонентом. В качестве этого искусственного значения выбран 0. В таком подходе кроется некоторая опасность. Выражение исчисления доменов
Гл. 12. Неопределенные значения и семантика баз 361 \х (ЧАСТЬ-№) у (ЧАСТЬ-№) | з Ч 3 Ч 3 Ч (детали (хггг2) Д детали (уг^)} может показаться на первый взгляд правильным запросом на поиск всех пар деталей, которые являются компонентами одной и той же детали. Однако это выражение соберет в пары также те детали, которые вообще не являются компонентами. Проблема состоит в том, что необходим способ представления неоднородной информации — хотелось бы иметь в отношении такие строки, которые определены лишь на некоторой части схемы отношения 1.) В некоторых случаях выражение «нет значения» может рассматриваться как полновесное значение. Возьмем отношение книги (ЗАГЛАВИЕ ИМЯ ВТОРОЕ-ИМЯ ФАМИЛИЯ) для описания названий и авторов книг. Если у автора нет второго имени, можно употребить вместо него особое значение домена ВТОРОЕ- ИМЯ- Если у двух таких авторов совпадают имя и фамилия, то это один и тот же автор. В этом примере можно расширить домен введением элемента «нет» или «не существует», который используется так же, как и всякий другой элемент. Отличие от примера с атрибутом ДЕТАЛЬ-ЧАСТИ можно проиллюстрировать, сопоставив два утверждения: «Два автора, у которых нет второго имени, могут считаться имеющими одинаковое второе имя», и «Две детали, не являющиеся компонентами никакой детали, могут считаться компонентами одной и той же детали». Возвращаясь ко второй причине, отмеченной выше, вспомним отношение использование (ЧАСТЬ-№ ТИП-САМОЛЕТА ЧИСЛО) также из разд. 10.2. Допустим, что деталь 318 используется для самолета Боинг-1011, но неизвестно, в каком количестве. Хотелось бы хранить строку с той частью информации, которая у нас есть, т. е. строку U У которой t (ЧАСТЬ-№) = 318 и ί (ТИП-САМОЛЕТА) = 1011. Какое значение нужно хранить в t (ЧИСЛО)? В отличие от примера с атрибутом ДЕТАЛЬ-ЧАСТИ мы знаем, что в домене существует нужное нам значение. Однако использование любого конкретного значения на этом месте (кроме разве что случайно угаданного) приведет к неправильным ответам на запросы. Поэтому нужны средства для представления неизвестных значений. В этой главе вначале будет рассмотрена проблема неизвестных значений. Для их представления вводятся неопределенные значения (неопределенности). Будет показано, что функциональ- *) См. также обсуждение в главе 9 после примера 9.2 некоторых проблем, связанных с ограничением допустимых состояний баз данных наборами вполне соединимых отношений (что соответствует принятию предположения об универсальном отношении, см. ниже разд. 12.5.1). В разделе 12.5 предлагаются попытки частичного решения этих проблем. — Прим. перев.
362 Гл. 12. Неопределенные значения и семантика баз ные зависимости и помеченные неопределенные значения могут иногда использоваться для заполнения неизвестных значений. Мы рассмотрим ограничения на существование как средство контроля за употреблением неопределенных значений. Наконец, будут введены функции возможных расширений в качестве инструмента для сравнения различных обобщений реляционной алгебры, связанных с введением неопределенностей. Затем мы перейдем к проблеме неоднородной информации. Эта проблема связана с возможностью представления базы данных как единого семантического целого. Будут введены W-функции х) в качестве инструмента для работы с базой данных, как с единым целым. 12.1. НЕОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ Термин неопределенное значение широко применяется в литературе по базам данных для специальных значений домена, которые возникают по целому ряду причин. Здесь этот термин используется в узком смысле: «значение существует, но неизвестно». Для обозначения неопределенности будем пользоваться символом J_. Хотя этот символ может встретиться несколько раз в отношении, однако различные его вхождения обозначают, вообще говоря, различные неизвестные значения. Пример 12.1. Предположим, что сотрудники отдела кадров нашей авиалинии не лишены любознательности и хранят отношение анкеты (СЛУЖАЩИЙ ЗАРПЛАТА ПРЕЖНЕЕ-МЕСТО- РАБОТЫ ПРЕЖНЯЯ-ДОЛЖНОСТЬ ПРЕЖНЯЯ-ЗАРПЛАТА). Это отношение фиксирует нынешнюю зарплату служащего, а также его предыдущее место работы, должность и зарплату. Однако отдел кадров может и не получить эту информацию от отдельных служащих, так что это отношение может быть неполным, как показано в табл. 12.1. Поскольку проблемы неизвестных значений и неоднородной информации представляются достаточно неясными и до конца Таблица 12.1. Таблица отношения, представляющего анкеты служащих анкеты /СЛУЖА- ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- ПРЕЖНЯЯЛ \ЩИЙ РАБОТА ДОЛЖНОСТЬ ЗАРПЛАТА^ *! Ламберт 39 500 SWA пилот 36 000 t2 Ларсон 24 100 1 JL J_ t3 Латен 17 300 WIA клерк ± U Лю 18 260 WIA ± 17 800 *) Употребленный в оригинале термин window function (оконная функция) заменен аббревиатурой W-функция. — Прим. ред.
12.1. Неопределенные значения 363 не решены, наше рассмотрение будет тяготеть скорее к примерам, чем к доказательствам. Однако, недостаток в строгости мы постараемся восполнить обилием обозначений. Обозначения. Строка, содержащая некоторое число (может быть, 0) вхождений неопределенного значения, называется частичной. Строка без неопределенностей называется полной. Таким образом, каждая полная строка является частичной (аналогично тому, как каждая всюду определенная функция является также частичной функцией). Строка t со схемой, включающей атрибут Л, определена на А (обозначение: t (A) \ ), если t (А) не является неопределенным значением. Это обозначение распространяется на множество атрибутов: t (X) | означает t (A) J для всех атрибутов А из X. Обозначение t \ используется в случае, когда t — полная строка. Если t — строка со схемой R, то полагаем DEF (t) = {Α £ R | t (А) | }. Для строк t и и с одной и той же схемой, t частично расширяет и (обозначение: t^u), если и (А) \ влечет за собой и (А) = t (А) для всякого атрибута А из X. Если t ^ и и t J , то ί называется расширением и (обозначение: t \ ^ и). Пример 12.2. В табл. 12.1 все строки являются частичными, причем tx одновременно является и полной. Для строки t2 имеет место U (СЛУЖАЩИЙ) \ , t2 (ЗАРПЛАТА) | и DEF (f2) = = {СЛУЖАЩИЙ ЗАРПЛАТА}. Строка t = (Ларсон 24 100 J_ менеджер _]_} частично расширяет строку t2. Для и = (Ларсон 24 100 WIA менеджер 22 050) выполняется и \ ^ t. Обозначения (продолжение). Отношение г полно (обозначение: г j), если все его строки являются полными. Отношение, содержащее некоторое число (может быть, 0) неопределенных значений, называется частичным. Обозначим через Rel t (R) множество всех частичных отношений со схемой R и через Rel (R) множество всех полных отношений со схемой R. Вплоть до разд. 12.5 под отношением будет подразумеваться частичное отношение. Если даны два отношения г и s со схемой R, то г частично расширяет s (обозначение: r^s), если для каждой строки ts ζ s найдется tr ζ г, такая, что tr ^ ts. Если при этом г — полное отношение, то г есть расширение s, что обозначается как г \ ^ s. Если г ^ s и s ^ г, то будем писать г ~ s. Если г может быть получено из s заменой некоторых неопределенностей в s конкретными значениями, то г частично пополняет s (обозначение: r>^s). Ясно, что г >z s влечет за собой г ^ s. Если r>^s и г — полное отношение, то будем говорить, что г пополняет s, или г является пополнением s, и писать г \ >^s. Если r>:s и s >: г, то r = s (см. упр. 12.4). Очевидно, что г частично пополняет s, если существует отображение α строк из s
364 Гл. 12. Неопределенные значения и семантика баз Таблица 12.2. Расширение отношения анкеты анкеты' /СЛУЖА- ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- ПРЕЛШЯЯЛ УЩИЙ РАБОТА ДОЛЖНОСТЬ ЗАРПЛАТА; Ламберт Ларсон Латен Латен Лю 39 500 24 000 17 300 17 300 18 260 SWA WIA WIA WIA WIA пилот менеджер клерк клерк агент 36 000 22 050 16 400 16 850 17 800 Таблица 12.3. Пополнение отношения анкеты анкеты" /СЛУЖА- ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- ПРЕЖНЯЯ-^ 1ЩИЙ РАБОТА ДОЛЖНОСТЬ ЗАРПЛАТА; Ламберт Ларсон Латен Лю 39 500 24 000 17 300 18 260 SWA WIA WIA WIA пилот менеджер клерк агент 36 000 22 050 16 400 17 800 на строки из г, такое, что α (t) ^ t для всех t £ s. Отметим, что термин пополнение в данной главе имеет другой смысл, нежели в разд. 8.7. Пример 12.3. Отношение анкеты' из табл. 12.2 есть расширение отношения анкеты из табл. 12.1, но не пополнение этого отношения, так как в нем присутствуют строки (Латен 17 300 WIA клерк 16 400) и (Латен 17 300 WIA клерк 16 850). Отношение анкеты' из табл. 12.3 является пополнением отношения анкеты. Отметим, что, вообще говоря, ни из г ^ s, ни из г У s не следует | r\ ^ | s |. г) Частичное отношение можно рассматривать как множество аксиом о том полном отношении, которое представляет это частичное отношение. Пример 12.4. Отношение анкеты из табл. 12.1 можно рассматривать как множество аксиом (записанных на языке исчисления доменов) о полном отношении анкеты: 1. анкеты (Ламберт 39 500 SWA пилот 36 000); 2. 3 χι 3 х2 3 хз анкеты (Ларсон 24 100 х^Хз)', 3. q*4 анкеты (Латен 17 300 WIA клерк х4)\ 4. з *ь анкеты (Лю 18 260 WIA хъ 17 800). Любое расширение частичного отношения г может интерпретироваться как конечная модель, удовлетворяющая аксиомам, задаваемым отношением г. Кроме того, если г и s рассматривать г) \г\ обозначает количество строк в г. — Прим. перев.
12.1. Неопределенные значения 365 как множества аксиом о полном отношении, то из г ^ s вытекает, что s является логическим следствием из г. Изучим теперь те расширения, которые являются пополнениями. Это означает, что каждая строка в частичном отношении представляет единственную строку в полном отношении, но две строки в частичном отношении могут представлять одну и ту же строку в полном отношении. Здесь используется тот принцип, что для удовлетворения аксиом, задаваемых частичным отношением, используется не больше информации, чем необходимо для этого. Здесь могут встретиться тонкие проблемы. Если отношение г' получено из отношения г удалением строки /, причем t частично расширяется в г какой-нибудь другой строкой, тогда г'^ги, следовательно, г' ~ г. Отсюда следует, что г' и г имеют одинаковое множество расширений. И хотя г' У^г (почему?), не обязательно, чтобы выполнялось г>^.г'. Более того, гУ^г' никогда не выполняется, так как из этого следовало бы, что г — г' (см. упр. 12.4). Таким образом, существуют такие пополнения г, которые не являются пополнениями г'. Соотношение >^ не соответствует логическому следованию на множествах аксиом, х) поскольку используется вид аксиом, чтобы ограничить множество возможных моделей. Логикам не понравилась бы такая система, в которой модели зависели бы от синтаксиса, в котором пишутся аксиомы, где эквивалентные на вид множества аксиом имели бы различные модели. Лингвистов это беспокоило бы меньше, так как они знают: «Неважно, что вы говорите, главное, как вы это говорите». Исследователи в области искусственного интеллекта вообще бы не поняли, по какому поводу весь этот шум. Однако мы увидим в гл. 14, что даже предположение о конечности наших моделей приводит к интересным последствиям при выводе зависимостей. Можно, разумеется, обойти всю проблематику с раширяемыми строками, рассматривая только отношения без таких строк, но мы не будем вводить такого предположения. Как только допускается появление частичных отношений в базе данных, немедленно возникает задача интерпретации запросов к ней. Сейчас кратко будет описан принцип замены неопределенностей, используемый при интерпретации формул исчисления на частичных отношениях. Разберем только случай, когда в формулу входит одно отношение; формулы с несколькими отношениями рассматриваются аналогично. Определим интерпретацию как функцию /, которая отображает формулы исчисления во множество [истина, неизвестно, ложь]. Пусть / — формула исчисления λ) Т.е. из логического следования s из г не следует г У· s (для г ^ s это верно). Заметим, что это можно установить и проще, без применения расширяемых строк. — Прим. перев.
366 Гл. 12. Неопределенные значения и семантика баз кортежей, которая содержит только одно отношение г (R) и не содержит свободных переменных. Пусть Is (/) обозначает обычную интерпретацию формулы /, где вместо г использовано полное отношение s (R). Определим / (/) = истина, если Is (/) = истина для каждого пополнения s отношения г; I (f) = ложь, если Is (/) = ложь для каждого пополнения s отношения г; / (/) = неизвестно в остальных случаях. Таким образом, / (/) есть истина в точности тогда, когда всякая возможная подстановка значений вместо неопределенностей делает формулу / истинной в обычном смысле. Пример 12.5. Пусть анкеты — отношение из табл. 12.1 и R — его схема. Рассмотрим формулу 3 х (R) 6 анкеты (х (ПРЕЖНЕЕ-МЕСТО-РАБОТЫ) = = «WIA» Л х (ПРЕЖНЯЯ-ДОЛЖНОСТЬ) = «клерк»). /(/]) = истина, так как чем бы ни было заменено неопределенное значение в /3, формула t3 (ПРЕЖНЕЕ-МЕСТО-РАБОТЫ) = «WIA» Λ U (ПРЕЖНЯЯ-ДОЛЖНОСТЬ) = «клерк» будет истинна. Теперь рассмотрим формулу 3 χ (R) 6 анкеты (х (СЛУЖАЩИЙ) = = «Лю» Avy(R) 6 анкеты (χ (ПРЕЖНЯЯ-ЗАРПЛАТА) > > у (ПРЕЖНЯЯ-ЗАРПЛАТА))). I (/2) = ложь, поскольку чем бы не заменять _L, только строка /4 может сделать χ (СЛУЖАЩИЙ) = «Лю» истинной, а при подстановке tj в у вся формула делается ложной. Наконец, рассмотрим формулу /3 вида 3 χ (R) 6 анкеты (х (СЛУЖАЩИЙ) - = «Ламберт» Д VУ (R) € анкеты (^(ПРЕЖНЯЯ-ЗАРПЛАТА) > > у (ПРЕЖНЯЯ-ЗАРПЛАТА))). I (f3) = неизвестно, так как /3 может стать истинной или ложной в зависимости от заполнения U (ПРЕЖНЯЯ-ЗАРПЛАТА) и U (ПРЕЖНЯЯ-ЗАРПЛАТА). Неудобство принципа замены неопределенности заключается
12.2. Зависимости и неопределенные значения 367 в том, что он не позволяет определить / индуктивно. Это значит, что мы не можем определить / (/) через значения / на непосредственных подформулах формулы /. Следующий пример показывает, что если / = g" V А. то / (/) не может быть определено как 7(g) V />П· Пример 12.6. Пусть анкеты — отношение из табл. 12.1 и R — его схема. Пусть формула / имеет вид 3 х (R) ^ анкеты (х (ПРЕЖНЕЕ-МЕСТО-РАБОТЫ) = = «WIA» Л х (ПРЕЖНЯЯ-ЗАРПЛАТА) < 16 000) УЗУ(Ю € анкеты {у (ПРЕЖНЯЯ-ДОЛЖНОСТЬ) = - «клерк» Λ У (ПРЕЖНЯЯ-ЗАРПЛАТА) > 16 000). / (/) = истина, но / (g) — I (h) = неизвестно, где g и h — две дизъюнктивные составляющие формулы /\ Хотя мы и не имеем индуктивного определения /, все же нет необходимости проверять все возможные подстановки значений домена на место неопределенностей в формулу /\ чтобы вычислить ее значение / (/). Нужно только просмотреть достаточно значений, чтобы каждый атом стал либо истинным, либо ложным (если это возможно). Для формулы из примера 12.6 вместо неопределенного значения в столбце ПРЕЖНЯЯ-ЗАРПЛАТА следует пробовать только значения 16 000 и 15 000. Тем не менее, нахождение значения / (/) является трудной вычислительной задачей, поскольку по существу это задача проверки на тавтологичность. 12.2. ФУНКЦИОНАЛЬНЫЕ ЗАВИСИМОСТИ И НЕОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ На полное отношение, представленное некоторым частичным отношением, могут быть наложены ограничения, например требование, чтобы оно удовлетворяло некоторым Р-завнсимостям. Пример 12.7. Рассмотрим пример отношения анкеты, показанный в табл. 12.4. Допустим, что в полном отношении, представленном этим отношением, СЛУЖАЩИЙ является ключом. Тогда будет допустимым пополнение анкеты'', приведенное в табл. 12.5, но не пополнение анкеты", представленное в табл. 12.6. г) Это, разумеется, не исключает возможности более сложного индуктивного определения для 1(f). — Прим. перев.
368 Гл. 12. Неопределенные значения и семантика баз Таблица 12.4. Отношение анкеты с атрибутом СЛУЖАЩИЙ в качестве ключа анкеты Таблица анкеты' Таблица анкеты" Таблица анкеты /СЛУЖАЩИЙ Латен ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- РАБОТА ДОЛЖНОСТЬ 17 300 WIA клерк 18 260 WIA ± 12.5. Пополнение отношения анкеты (допустимое) /СЛУЖАЩИЙ Латен Лю ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- РАБОТА ДОЛЖНОСТЬ 17 300 WIA клерк 18 260 WIA агент 12.6. Пополнение отношения анкеты (недопустимое) /СЛУЖАЩИЙ Латен Латен ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- РАБОТА ДОЛЖНОСТЬ 17 300 WIA клерк 18 260 . WIA агент 12.7. Отношение анкеты (недопустимое относительно F) /СЛУЖАЩИЙ Латен Латен ЗАРПЛАТА ПРЕЖНЯЯ- ПРЕЖНЯЯ- РАБОТА ДОЛЖНОСТЬ 17 300 WIA клерк _!_ SWA _!_ ПРЕЖНЯЯЛ ЗАРПЛАТА,) 17 800 прежняял зарплата; 16 400 17 800 ПРЕЖНЯЯЛ ЗАРПЛАТАJ 16 400 17 800 ) ПРЕЖНЯЯЛ ЗАРПЛАТА,) _L 17 800 Возникает вопрос: как для отношения г ζ Rel t (R) и множества F F-зависимостей проверить, существует ли пополнение г, удовлетворяющее множеству F? Определение 12.1. Пусть г £ Rel t (R) и F — множество F- зависимостей над R. Отношение г допустимо относительно F, если некоторое его пополнение s удовлетворяет F. Пополнение, которое удовлетворяет F, называется допустимым пополнением относительно F. Пример 12.8. Пусть F = {СЛУЖАЩИЙ -> ПРЕЖНЕЕ- МЕСТО-РАБОТЫ ПРЕЖНЯЯ-ДОЛЖНОСТЬ ПРЕЖНЯЯ-ЗАР- ПЛАТА}. Отношение анкеты из табл. 12.4 является допустимым относительно F, а отношение из табл. 12.7 таковым не является.
12.2. Зависимости и неопределенные значения 369 Таблица 12.8. Отношение отпуск отпуск /'СЛУЖАЩИЙ СТАЖ ГОДОВОЙ- НАКОПЛЕНИЕ^ [ ОТПУСК I tt Удолл 3 21 ± t2 Удолл _L J. 17 t3 Антэнк 3 J_ J_ Таблица 12.9. Частичное пополнение отношения отпуск отпуск' /СЛУЖАЩИЙ СТАЖ ГОДОВОЙ- НАКОПЛЕНИЕ { ОТПУСК *х= t2 Удолл 3 21 17 t3 Антэнк 3 21 J_ Ниже *) будет найден некоторый способ проверки допустимости частичных отношений. Оказывается, F-зависимости не только накладывают ограничения на возможные пополнения, но могут использоваться также для фактического замещения неопределенных значений определенными. Может даже случиться, что для данного неопределенного значения существует единственное пополнение, удовлетворяющее множеству F-зависимостей. Пример 12.9. Рассмотрим отношение отпуск (СЛУЖАЩИЙ СТАЖ ГОДОВОЙ-ОТПУСК НАКОПЛЕНИЕ) из табл. 12.8, которое показывает стаж работы служащего в данной авиакомпании, длительность годового отпуска и общее количество накопленных отпускных дней. Допустим, что выполняется следующее множество F-зависимостей F = {СЛУЖАЩИЙ -> СТАЖ ГОДОВОЙ- ОТПУСК НАКОПЛЕНИЕ, СТАЖ -> ГОДОВОЙ-ОТПУСК}. В любом пополнении этого отношения, удовлетворяющем F, Ь (НАКОПЛЕНИЕ) = 17, t2 (СТАЖ) = 3, t2 (ГОДОВОЙ-ОТПУСК) = 21 и *8 (ГОДОВОЙ-ОТПУСК) = 21. Поэтому мы можем заполнить эти неопределенные значения и получить «более заполненное» отношение отпуск', как показано в табл. 12.9. Может показаться, что мы обойдем все трудности, если разложим отпуск, используя F-зависимость СТАЖ -> ГОДОВОЙ-ОТПУСК, однако существуют похожие примеры, где все участвующие F-зависимости имеют ключи слева. В последующих разделах приводятся случаи, когда необходимо использовать комбинацию нескольких отношений для заполнения неопределенных значений. Стратегия проверки допустимости состоит в заполнении как можно большего числа неопределенных значений с помощью информации, доставляемой F-зависимостями. Как можно заполнить *) После примера 12.14. — Прим, перев.
370 Гл. 12. Неопределенные значения и семантика баз неопределенные значения в отношении г, если дано множество F-зависимостей? Предыдущий пример дает одно очевидное правило. Пусть в F входит F-зависимость Χ -> А. Пусть две строки ^ и t2 в г таковы, что ^ (X) |, t2 (X) | и ^ (X) = t2 (X). Предположим, что tx (А) = J_, но t2 (А) = а. Можно заменить fx (Л) на а, так как в любом допустимом пополнении г элемент ^ (А) должен быть равен а, чтобы удовлетворить Х-+А. Это правило корректно, но оно дает нам не слишком много. г(А В С D) t{ а Ъ 11 t2 a lid Рис. 12.1. Пример 12.10. Рассмотрим отношение г (ABCD) на рис. 12.1 и множество F-зависимостей F = \А -> С, С -+ D}. Простой анализ показывает, что tx (D) = d в любом допустимом пополнении г, хотя только что приведенное правило не помогает заменить ни одно из неопределенных значений в г. В этом примере 1г (D) может быть заполнено с помощью F-зависимостей из F+, а именно A -+D. Существуют примеры, когда не хватает даже F+ (см. упр. 12.10). Проблема заключается в том, что иногда необходимо указать тот факт, что два неопределенных значения представляют одно и то же, хотя и неизвестное значение. В последнем примере необходимо указать, что tx (С) = t2 (С) в любом допустимом пополнении г. С этой целью вводятся помеченные неопределенные значения. При этом с помощью индексирования мы получаем бесконечный набор различных неопределенных значений: {_]_!, _1_2, _1_з> ...}. Предполагается, что помеченные неопределенные значения различны, только если они имеют различные индексы. Пусть строки /х и t2 со схемой R содержат помеченные неопределенные значения. Для атрибута А в R строки ίχ и t2 согласованы на Л, если выполнено одно из следующих условий: 1. U{A)\ и t2(A)\ и Ь(А) = tt(A); 2. /j (A) = _U, t2 (A) = JL7· и i = /. Строки согласованы на множестве атрибутов X в /?, если они согласованы на каждом атрибуте из R. До конца этого раздела все неопределенные значения в частичных отношениях предполагаются помеченными. Каждое отношение с непомеченными неопределенными значениями может быть превращено в отношение с помеченными путем придания различных индексов непомеченным неопределенным значением. Считается, что два отношения из
12.2. Зависимости и неопределенные значения 371 Rel ] (R) совпадают, если одно может быть получено из другого взаимнооднозначным переименованием помеченных неопределенных значений. Пример 12.11. Отношение из рис. 12.1 будет выглядеть с помеченными неопределенными значениями так, как на рис. 12.2. Чтобы сформулировать правило заполнения помеченных неопределенных значений, нам потребуются два определения. г(А В С D ) r(A BCD) t{ а Ъ 1J t2 а ±з -1-4 Рис. 12.2. ^2 d t} a b _L ι t2 а ±з J-ι Рис. 12.3. d d Определение 12.2. Пусть даны г £ Rel] (R), F-зависимость Χ ->- А в R и две строки t1nt2B r, согласованные на X. Если tx и t2 определены на Л, но ίχ (Α) Φ t2 (А), то в г имеется сильное нарушение X -»■ А. Если tx и t2 не согласованы на Л и по крайней мере одна из них неопределена, то в г имеется слабое нарушение X -> А. Сильные нарушения нельзя исправить заполнением неопределенных значений, в то время как слабые — можно. Правило заполнения помеченных неопределенных значений повторяет ^-правило для прогонки. Это правило заполняет или приравнивает помеченные неопределенные значения во всех случаях слабого нарушения. Пусть даны г £ Rel\(R) и множество F F-зависимостей в R. Пусть строки ^ и /2 в г участвуют в слабом нарушении F-зависимости Χ ->- А из F. 1. Если tx (A) \ и t2 (A) = _[_j, то заменяем каждое вхождение li в г на fj. (Л). 2. Если t2 (A) J и ίχ (А) = JLb заменяем каждое вхождение li в г на t2 (A). 3. Если tx (A) = _U, t2 (A) = _Lj и i < /, то заменяем каждое вхождение J_7· на _|_г; если i > /, то заменяем каждое вхождение -ϋ на _L/. Эти замены уничтожают одни слабые нарушения, но, возможно, приводят к новым нарушениям. Пример 12.12. К отношению г из рис. 12.2 с F-зависимостями |^4 ->- С, С-+D\ применяется правило заполнения для замены _1_4 на _1_! с использованием А -»■ С. Затем применяется это правило с использованием С -> D для замены на _L2. Результат показан на рис. 12.3. Повторяющееся применение правила заполнения для множества F F-зависимостей аналогично прогонке на табло. Значения
372 Гл. 12. Неопределенные значения и семантика баз 1 1 ^3 Рис. 2 J-2 4 12.4. -Li 3 3 соответствуют выделенным переменным, а помеченные неопределенные значения — невыделенным переменным. Однако, если в табло в каждом столбце мог быть лишь один выделенный символ, отношение может содержать несколько значений в одном столбце. Разные последовательности применения правила заполнения могут дать разные результаты. Пример 12.13. Пусть г (ABCD) — отношение из рис. 12.4 и F = \А -> В, С ->■ В\. Легко видеть, что существуют два способа замены _L2: одно с использованием А -> β, и другое с использованием С-+В. г(А В С ) НА ВС) 1 2 ±ι ±2 2 3 ±2 4 ±, Рис. 12.5. Хотя отношение в предыдущем примере может быть заполнено двумя способами для данного множества F-зависимостей, оба этих способа приводят к сильному нарушению. Достаточно ясно, что любое отношение с сильным нарушением не имеет допустимых пополнений. Чтобы результат применения правила заполнения был всегда определен, будем предполагать, что в случае отношения с сильным нарушением это правило заменяет его на некоторое специальное значение, которое обозначается HV. Через nchaseF (г) обозначим результат применения правила заполнения с F-зависи- моетями из F к отношению г до тех пор, пока будут возможны какие-либо изменения. Полученное значение nchaseF (г) есть либо отношение, либо специальное значение HV. Мы хотим показать, что г допустимо относительно F в тех и только в тех случаях, когда nchaseF (г) не равно HV. Отношение nchaseF (r) может иметь несколько вхождений некоторого помеченного неопределенного значения. Следует расширить определения терминов являться частичным пополнением и пополнять для случая нескольких вхождений. По-прежнему отношение с помеченными неопределенными значениями рассматривается как множество аксиом (или как одна аксиома) относительно полного отношения, которое представлено с помощью этого частичного отношения. Однако теперь аксиомы, порожденные разными строками, могут содержать общие кванторы по одинаковым переменным. Пример 12.14. Отношение г (ABC) из рис. 12.5 представляет аксиому (в форме исчисления доменов): 3Χι3χ2(τ(12*ι) Λ г(х£3) Λ г(х24хг)).
12.2. Зависимости и неопределенные значения 373 Отметим, что эта формула не эквивалентна формуле 3*ι (г (ВД) Л Э*а(г(*223)) Л 3*i3*a(r(*84*i)). Новое определение частичного расширения приводится в упр. 12.12. Для ги5из Rel [ (R) г частично пополняет s (обозначение: г >z s), если г получается из s заменой некоторых неопределенных значений на определенные или неопределенные значения. При этом все вхождения J_t должны быть заменены на одно и то же. Кроме того, не допускается появление одного помеченного неопределенного значения в более чем одном столбце отношения. Если к тому же г — полное отношение, то будем говорить, что г есть пополнение s, и обозначать этот факт как г \ у s. Эти определения сводятся к прежним для непомеченных неопределенных значений в случае, когда г и s не содержат повторяющихся помеченных неопределенных значений. Теперь докажем два следующих результата. Будем считать, что HV не имеет допустимых пополнений ни при каком множестве F F-зависимостей. Во-первых, nchaseF (r) и г имеют одни и те же допустимые пополнения относительно F. Во-вторых, если ncha- seF (г) Φ HV, то г имеет по крайней мере одно допустимое пополнение *). Фактически мы покажем, что если г' получено из г применением правила заполнения с использованием F-зависимостей из F, то г и г' имеют те же самые допустимые пополнения относительно F. Если г' равно HV> то в г имеется сильное нарушение. Строки, составляющие сильное нарушение, останутся таковыми и после заполнения. Следовательно, г не имеет допустимых пополнений. Если г' — отношение, то оно было получено из г заменой помеченного неопределенного значения на другое помеченное неопределенное значение или на определенное значение. В любом случае г' У г, так что каждое допустимое пополнение г* является допустимым пополнением г. Посмотрим, как г' было получено из г. Должна существовать F-зависимость X -> А в F и строки t± и t2 в г, такие, что tx и t2 согласованы на X. Далее, либо t± (A) = 1^ и ί2 (Α) = α, либо *! (А) = а и t2 (A) = JLi9 либо tx (А) = 1^ и /2 (А) = ±h где / φ /. В любом пополнении s отношения г имеет место tx (X) = = t2 (X). Для того чтобы s удовлетворяло F, строки tx и t2 должны быть согласованы на А. В первых двух случаях обе строки должны быть равны α на Л, как и в г'. Если s — это допустимое пополнение г, то s есть допустимое пополнение г'. Подобным же образом в третьем случае _|_г· и _L/ должны быть заменены на одно и то же значение, чтобы удовлетворить F\ Вновь получаем, что если s до- х) Эти результаты дают требуемый алгоритм проверки допустимости г относительно F. — Прим. перев.
374 Гл. 12. Неопределенные значения и семантика баз пустимо для г, то оно есть пополнение для г' и, таким образом, допустимое пополнение для г*. Отсюда следует, что гиг' имеют одни и те же допустимые пополнения относительно F. Из этого рассуждения вытекает, что г и nchaseF (r) имеют одни и те же допустимые пополнения относительно F. г(А В С РЕ) ГЦА В С Ρ Ε ) 1 1 6 1 ±, ±2 2 3 ±з 4 5 ± 7 8 5 9 ^5 J-6 2 9 Рис. 12.6. s(A 1 1 6 1 4 в 10 10 7 10 Рис. С 11 4 8 11 . 12.8. D 2 5 5 2 1 ±, ±2 2 1 ±, 4 5 6 7 8 5 1 ±, ±2 2 Рис. 12.7. Е) 3 12 9 9 3 J-4 9 9 Рассмотрим случай, когда г* = nchaseF (r) не равно HV. Образуем пополнение s отношения г* заменой каждого помеченного неопределенного значения в г* на значение, отличное от любого значения в г*, и от любого значения, использованного для замены других неопределенных значений. Утверждается, что s удовлетворяет F. Чтобы показать, что s удовлетворяет F, выберем произвольную F-зависимость X -+ А из F. Пусть tx и t2 — строки из s, согласованные на X. В г* строки tx и t2 должны быть также согласованы на X, иначе заполнение неопределенностей может их рассогласовать. Поскольку г* не может иметь слабого или сильного нарушения, *! (Л) = t2 (Л) в г*. Отсюда t± (A) = t2 (А) в s. Следовательно, s удовлетворяет X ->■ Л. Так как X -+ А была выбрана произвольно, то s удовлетворяет F и, следовательно, является допустимым пополнением г* и г. Пример 12.15. Пусть г (ABCDE) является отношением из рис. 12.6 и F = \А -> Б, BD -+ С}. Отношение nchaseF (r) — это отношение г*, показанное на рис. 12.7. Замена неопределенностей различными значениями дает пополнение s, показанное на рис. 12.8, которое удовлетворяет F.
12.2. Зависимости и неопределенные значения 375 Введение nchase дает метод проверки допустимости отношения г относительно множества F F-зависимостей, и, кроме того, метод заполнения неопределенных значений в предположении бесконечных доменов (см. упр. 12.15). Тем не менее nchaseF (r) не охватывает некоторых аспектов понятия допустимости пополнения г: существуют неопределенности, которые нельзя заменять некоторыми значениями. Кроме того, если, вопреки нашему предположению, некоторые домены конечны, то использование F-зависимостей может дать возможность определения значений для большего числа неопределенностей. Пример 12.16· Рассмотрим отношение курительные из табл. 12.10. Предположим, что оно удовлетворяет F-зависимо- сти ЭТАЖ ПОЛ -> КОМНАТА-№ (одна комната для мужчин или для женщин на каждом этаже). Легко видеть, что t3 (ПОЛ) = ж. Если домен атрибута ПОЛ равен \м, ж\, то можно заменить t3 (ПОЛ) на м, поскольку это выполняется в любом допустимом заполнении отношения курительные. По-видимому, не существует схемы разметки неопределенных значений, позволяющей отразить информацию о том, какие значения они не могут принимать, или о том, какие неопределенности должны быть заменены на различные значения в допустимом пополнении. Есть также и другие проблемы, которые должны быть рассмотрены в связи с неопределенными значениями. Можно ли использовать помеченные неопределенные значения в различных отношениях базы данных? Можно ли использовать и другие зависимости для заполнения частичных отношений? Следует ли допускать такие отношения, как г (А В) 1 ±ι 1 -L, Отметим, что г имеет больше пополнений, чем s(A В) 1 -Ц В разд. 12.4 мы рассмотрим другие отличные от пополнений способы определения того, что представляет частичное отношение. Таблица 12.10. Отношение курительные курительные (ЭТАЖ КОМНАТА-№ ПОЛ) t± 1 8Б ж t2 2 8Б ж t3 2 8Д _Ц
376 Гл. 12. Неопределенные значения и семантика баз г h h h и {ABC 1 2 ± 1 4 ± 12 5 6 2 7 Рис. 12.9. Л) 3 JL X 8 12.3. ОГРАНИЧЕНИЯ НА НЕОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ Обычно на практике существуют ограничения относительно того, где в отношении могут появиться неопределенные значения. Типичный случай — запрещение неопределенностей в любой компоненте первичного ключа. Здесь описываются средства для выражения таких ограничений. В этом разделе помеченность неопределенного значения не играет роли. г(А ВС D) Ί -L 1 ±6 t2 2 3 4 JL Рис. 12.10. Определение 12.3. Пусть R — схема отношения. Ограничение существования (Ε-ограничение) в R — это утверждение вида Χ [Υ (читается: «X требует Y»), где X и Υ — подмножества R. Отношение г ζ Rel](R) удовлетворяет Ε-ограничению X~~[Y, если t (X) [ влечет за собой t (Υ) [ для каждой строки t в г. Пример 12.17. Пусть г (ABCD) — отношение, показанное на рис. 12.9. Отношение г удовлетворяет Ε-ограничениям D~IA, CD~~\A и 0~~[В. Последнее Ε-ограничение требует, чтобы все строки были определены на В. Ε-ограничения A~~[D и ВА~}С не удовлетворяются (см. строку ί2). Отношение удовлетворяет некоторому Ε-ограничению, если каждая его строка в отдельности удовлетворяет этому Е-ограни- чению. В этом состоит отличие от F-зависимостей, где необходимо рассматривать пары строк. Тем не менее аксиомы вывода для Е-ог- раничений имеют форму аксиом вывода для F-зависимостей. Например, если Χ~}Υ>_ύο ΧΑ~~~\Υ для любого атрибута А. Аналогично, из Χ~}Υ и Υ~[Ζ следует Χ~\Ζ (см. упр. 12.16). Если единственными ограничениями являются Ε-ограничения, то легко проверить, вызовет ли данное обновление нарушение Е-ограниче- ний. Всякое удаление допустимо, а добавление или модификация зависят только от изменяемой строки. В случае соблюдения F-зависимостей и их использования для заполнения неопределенных значений добавление и модификация могут влиять также и на другие строки. Добавляемая строка может удовлетворять Е-ограни- чениям, но заполнение некоторых неопределенных значений с использованием F-зависимостей может вызвать нарушение некоторого Е-ограничения.
12.4. Реляционная алгебра и частичные отношения 377 Пример 12.18. Отношение на рис. 12.10 удовлетворяет Е-ог- раничению А~~[ВС и допустимо относительноF-зависимости В ->- Л. Добавление строки tx = (514 J_) приведет к нарушению A~~iBC в tlt когда tx (А) будет заменено на 5 с использованием В -> Л. Остается еще много неисследованных проблем, касающихся совместного поведения множеств F-зависимостей и Е-ограничений (см. упр. 12.17). 12.4. РЕЛЯЦИОННАЯ АЛГЕБРА И ЧАСТИЧНЫЕ ОТНОШЕНИЯ Теперь перейдем к обобщению реляционной алгебры на отношения с неопределенными значениями. В этом разделе Rel] и Rel обозначают множества всех частичных и полных отношений, чьи схемы выбираются из некоторого фиксированного универсума атрибутов U. Кроме того, мы возвращаемся к использованию непомеченных неопределенных значений. Каждому отношению г из Rel](R) будет сопоставляться некоторое множество полных отношений из Rel (R). Это множество возможных расширений обозначается через POSS (г). В предыдущих разделах использовалось следующее определение: POSS (r) = \s\s есть пополнение г\. Здесь будут рассмотрены другие определения POSS. Функция POSS используется при исследовании различных способов расширения области действия реляционных операторов на Rel]. Предположим, что мы хотим доопределить оператор соединения на частичных отношениях. Желательно, чтобы для обобщенного оператора >«' выполнялось равенство POSS (г >« 's) = POSS (r) >« POSS (s) для г и s из Rel]. При этом ~если Рх и Р2 — множества отношений, то Рг>< Ρ2 есть множество 1?1><?2|?ΐ€^1 И Ϊ2 6ΛΙ- Вначале обсуждаются свойства, которыми должна обладать функция POSS, а также какими должны быть разумные обобщения реляционных операторов, соответствующие данной функции возможных расширений. Затем рассматриваются предложения по обобщению оператора соединения и обсуждаются их недостатки. И наконец, рассматривается вопрос: для каких определений POSS существует разумное обобщение реляционных операторов? 12.4.1. Функции возможных расширений Определение 12.4. Функция возможных расширений — это функция POSS: Rel]-+2Rel. Таким образом, POSS сопоставляет каждому частичному отношению множество полных отношений. При этом требуется, чтобы если г £ Rel](R), то POSS (r) s s Rel (R).
378 Гл. 12. Неопределенные значения и семантика баз Как следует из определения, функция POSS не обязана давать возможные пополнения для частичного отношения. В частности, этому определению удовлетворяет такая функция, которая сопоставляет каждому частичному отношению пустое отношение с той же самой схемой. Хотя такая замораживающая все возможности функция и могла бы быть использована в политических кругах, мы все же будем накладывать дополнительные ограничения на функции POSS. (А В С) 1 2 ± ±23 1 ± 3 Рис. 12.11. д(А В С) ίι 1 2 3 ί2 4 2 3 h 1 5 3 Рис. 12.12. q'{A_ 1 7 1 Рис. В С) 2 6 2 3' 8 3 12.13. Определение 12.5. Пусть даны отношения q и г со схемой R, такие, что q [^ г. Если для каждой строки tq £ q существует строка tr d r, такая, что tq ^ trf будем говорить, что q является тесным расширением г. Если никакое собственное подотношение q не является расширением г, a q является расширением г, то q — минимальное расширение г. Всякое минимальное расширение есть также и тесное расширение (см. упр. 12.18). Пример 12.19. Рассмотрим отношение на рис. 12.11. Отношение q на рис. 12.12 является тесным расширением г, но не минимальным, поскольку строки t2 и t3 могут быть удалены. Отношение q* на рис. 12.13 есть минимальное расширение г. Каждая функция POSS определяет частичный порядок на Rel}(R) для любого R. Если г, s ζ Rel\ (R), то г сильнее s относительно POSS (обозначение: r^POss г),если POSS (r) ^ POSS (s). Если г^possS и s^possf, будем говорить, что г ns равносильны, и писать г ^possS. Будем писать jd и = вместо J^poss и =poss, когда понятно, о какой функции POSS идет речь. Теперь можно описать дальнейшие ограничения на функции возможных расширений. Определение 12.6. Функция возможных расширений POSS является разумной, если выполнены следующие условия: 1. Каждый элемент POSS (г) есть расширение г. 2. POSS (г) содержит каждое минимальное расширение г. 3. Для каждых г и s с одинаковой схемой s £ POSS (r) тогда и только тогда, когда s _з г и s — полное отношение. Определение 12.7. Функция POSS замкнута, если POSS (r) содержит только тесные расширения г.
12.4. Реляционная алгебра и частичные отношения 379 Условие 1 отражает представление об г как о множестве аксиом для полного отношения. Это условие требует, чтобы каждое отношение из POSS (г) удовлетворяло аксиомам, задаваемым г. Условие 2 требует, чтобы не было «скрытых аксиом». Всякое полное отношение, которое удовлетворяет аксиомам, задаваемым г, и не содержит лишних с этой точки зрения строк, находится в POSS (г). Условие 3 выражает требование о том, чтобы полное отношение, проинтерпретированное как множество аксиом, было согласовано с этим отношением как моделью этого множества аксиом. Если POSS замкнута, полнота s влечет POSS (s) = js|, так что условие 3 тривиально выполняется. Замкнутая функция возможных расширений соответствует «предположению о замкнутости мира» в эвристических системах логического вывода. По этому предположению все, о чем нельзя доказать, что оно истинно, считается ложным. В ситуации с неполной информацией неясно, какие утверждения должны приниматься за истинные. Эта неопределенность порождает несколько вариантов постулата о замкнутости мира. Пример 12.20. Мы уже встречались с одной функцией возможных расширений, POSSc (ή = \s\s[>i r\· Индекс С—аббревиатура от completion («пополнение»). Доказательство разумности и замкнутости POSSc предоставляется читателю. Функция POSS0 (г) = \s\s\ ^ г] также разумна, но не замкнута (О означает «открытая»). Это единственная незамкнутая из рассматриваемых нами функций. Отметим, что г ^poss0s выполняется тогда и только тогда, когда г ^ s (см. упр. 12.25). Функция POSSE (г) == = \s\s[ S-5 r, s имеет четное число строк} не является разумной, поскольку нарушаются условия 2 и 3. В дальнейшем будут рассматриваться только разумные функции возможных расширений. Если г £ Rel (R), s £ Rel \ (R) и г _5 s для некоторой функции POSS, тогда из условий 3 и 1 следует, что г £ POSS (s) и г Ss s. Это верно и когда г £ Rel} (R). Лемма 12.1. Пусть даны функция POSS, связанный с ней на- стичный порядок^ и частичные отношения г, s со схемой R. Тогда из г _g s вытекает г ^ s. Доказательство. Предположим, что r^s. Пусть ts — такая строка в s, которая не расширяется ни одной строкой в г. Можно построить расширение q отношения г так, чтобы для каждой строки tq ζ q имело место tq^ ts. Можно предположить, что q минимально (в противном случае удалим лишние строки из q). Поскольку q является минимальным расширением г, имеем q £ POSS (г), по q $ POSS (s), так как q ^ s. Следовательно, POSS (r) <£ 3= POSS (s), откуда г J2? s. Доказательство от противнопУзавершено.
380 Гл. 12. Неопределенные значения и семантика баз Следствие. Если г = s, то г cz s. Бывают случаи, когда обращение леммы 12.1 неверно: из г ^ s не следует г ds. Пусть г S s означает, что г ^ s и s^ г (г и s несравнимы по отношению расширения). Из леммы следует, что г ^ s влечет за собой г щк s. 12.4.2. Обобщение реляционных операторов Функции возможных расширений будут использоваться для выделения тех случаев, когда обобщение реляционных операторов на Rel ] является разумным. Однако есть одно условие, которое не зависит от выбора этой функции: обобщенный оператор должен быть согласован с обычным оператором на Rel. Определение 12.8. Пусть даны оператор у на Rel и оператор γ' на Rel}; у' является естественным обобщением у при выполнении следующих условий: 1. Если γ и γ' — унарные операторы, то у (г) = у' (г) для каждого г £ Rel, для которого у (г) определен. 2. Если γ и γ' — бинарные операторы, то rys = ry's для всех г, s £ Rely для которых rys определен. Следующее определение описывает идеальное поведение обобщенного оператора. Определение 12.9. Пусть даны операторы у на Rel и у' на Rel ]. Оператор у' есть точное обобщение у относительно функции POSS при выполнении следующих условий: 1. Если γ и γ' — унарные операторы, то POSS (у' (г) ) = = у (POSS (г) ) для каждого г £ Rel]. 2. Если γ и γ' — бинарные операторы, то POSS (ry'r) = = POSS (г) у POSS (s) для всех r9 s £ Rel]. Здесь для множеств Рг и Р2 полных отношений y(Pi) = {y(4)\4£Pi} и />iV^a=^iWaki€/>i> <7a€/M- К сожалению, для некоторых функций POSS значения у (POSS (г) ) или POSS (r) yPOSS (s) не могут быть представлены в виде POSS (q) для некоторого q. В таких случаях обобщение у выбирается таким образом, чтобы оно содержало у (POSS (r) ) или POSS (r) у POSS (s) с наименьшими добавками. Определение 12.10. Пусть даны оператор у на Rel, оператор уг на Rel] и функция POSS. Оператор у' адекватен у относительно POSS при выполнении следующих условий:
12.4. Реляционная алгебра и частичные отношения 381 1. Если γ и γ' — унарные операторы, то POSS (γ' (г) ) ^ 3 у (POSS (г) ) для каждого г £ Rel\. 2. Если γ и γ' — бинарные операторы, то POSS (ry's) 3 3 POSS (г) у POSS (s) для каждых г, s ζ Rel]. Оператор у' ограничен для γ относительно POSS при выполнении следующих условий: 1. Если γ и γ' — унарные операторы, то для каждого г ζ Rel] не существует такого q в Rel], что POSS (у' (г)) zd POSS (q) => γ (POSS (ή). 2. Если γ и γ' — бинарные операторы, то для каждого г, s £ ζ jRe/ I не существует такого # в Rel f, что POSS (ry's) => POSS (?) => POSS (г) у POSS (s). Ясно, что если у' есть точное обобщение γ, то γ' адекватен и ограничен для у. В тех случаях, когда точное обобщение невозможно, мы будем пользоваться адекватными и ограниченными обобщениями. Желательно также, чтобы обобщенные операторы сохраняли некоторые* свойства обычных операторов, такие, как коммутативность и ассоциативность. Например, если γ — ассоциативный бинарный оператор, его обобщение у' должно удовлетворять (qy'r) y's ξξ qy' {ry's) для q, r, s £ Rel\. Рассмотрим теперь некоторые обобщения эквисоединения и естественного соединения, которые предлагались ранее. Пример 12.21. Кодд предлагал «возможное» эквисоединение для отношений, содержащих неопределенные значения. Рассмотрим его в упрощенном виде. Пусть даны отношения г (R) и s (S) из Rel], атрибуты Α ζ R, С £ S, причем R Π S = 0. Обобщение [А = СУ эквисоединения [А = С] определяется так: r[A=C]'s={t(RS)\t(R)£r, t(s)£s и t(A) = t(C), или по крайней мере одно из t (А) или t (С) неопределено}. (Это определение является на самом деле комбинацией «определенного» и «возможного» эквисоединений Кодда.) Для г (АВ) и s (CD), показанных на рис. 12.14, отношение г [А= C]'s показано на рис. 12.15. Заметим, что это обобщение эквисоединенияй^ не может быть использовано для получения обобщения естественного соединения, поскольку значения атрибутов Л и С в строке не обязательно согласованы.
382 Гл. 12. Неопределенные значения и семантика баз г\А = С] s(A BCD) Ί 2 2 3 г(А В ) s(C D) 4 12 3 12 2 3 12 15 41 15 4115 Рис. 12.14. Рис. 12.15. Если для трех отношений д (А В) г (С D) s(E F) 12 3 _L 4 5 вычислить q [A = СУ г [С = E]'s, мы получим д'{А В С Ρ Ε F) 1 2 _L 3 4 5 Заметим, что пустое отношение не входит в POSS (qr) ни для какой (разумной) функции POSS. Однако если [А = СУ и [С = Ε У адекватны [А = С] и [С = Е] относительно POSS, то POSS (q') э POSS (q [А =СУг) [С = Е] POSS (s) э (POSS (q) [A = С] POSS (r) ) [С = £] POSS (s), которое содержит пустое отношение. Рассмотрим любые тесные расширения ή, г и й отношений q, r и s. Тогда ή [А = C]f [C = E]s является пустым отношением. Таким образом, это обобщение экви- соединения не является адекватным при любом выборе POSS. Проблема состоит в том, что неопределенное значение в отношении г предполагается равным 1 в одном случае и равным 4 в другом. В следующем разделе дана модификация определений Кодда, лишенная этих недостатков. Пример 12.22. Лякруа и Пирот предложили обобщенный оператор естественного соединения, обозначаемый Д, при котором каждая строка попадает в соединение. Строки, которые не соединяются с другими строками, дополняются неопределенными значениями и присоединяются к результату. Для отношений г (АВ) и s (ВС) из рис. 12.16 оператор гД s показан на рис. 12.17. Лякруа и Пирот предлагают несколько решений в случае, когда неопределенное значение встречается в общем столбце. Все эти решения
12.4. Реляционная алгебра и частичные отношения 383 1 2 ] 4 Рис. 12.16. 2 5 3 6 г \М s(A ВС) г{А В) s(B С) 12 3 1 4 ± ±56 Рис. 12.17. приводят к тому, что ^ не ассоциативен. Рассмотрим отношения д(А В) г (В С) s(A С) 12 2 3 14 Вычисляя (q >< г) >< s, получим q'{A В С) в то время как ? и (г ιχι s) дает 1 2 3 1J_4 ) дает q"{A В С) 1 2 4 ±2 3 Однако q' ^ #", поэтому для любой разумной функции возможных расширений из леммы 12.1 следует, что qr щ£ q*. Пример 12.23. Заниоло предложил обобщение соединения, которое мы будем обозначать ><ζ, при котором строки соединяются, если на всяком общем атрибуте они либо согласованы, либо в точности одна из них не определена. Если строка не определена на некотором атрибуте, соединенная строка берет значение из другой строки. Если некоторая строка не соединяется ни с какой другой строкой, то она дополняется неопределенными значениями и добавляется к результату. Для отношений г (А В) и s (В С) из рис. 12.18 соединение r><izs показано на рис. 12.19. rtx3zs04 В С) г(А В) s(B С) 12 2 3 4 5 ±6 7 8 Рис. 12.18. 1 2 1 2 4 5 1 7 :. 12.19. 3 6 6 8
384 Гл. 12. Неопределенные значения и семантика баз Не существует разумной функции POSS, при которой оператор ><z был бы ассоциативен. Рассмотрим д (А В) г (А В) s(A В) 12 13 14 15 J.6 7 8 Вычисляя (q\><\z r) \><zs, получим д' {A BCD) 12 3 4 12 6 4 7 518 тогда как д ><z (г ><z s) дает д" (A BCD) 7 5 3 8 7 5 6 8 1 214 Поскольку д' ^ д", получаем из леммы 12.1, что д' φ д" для любой разумной функции возможных расширений. 12.4.3. Примеры функций возможных расширений В этом разделе для нескольких функций POSS исследуется проблема существования для них адекватных и ограниченных обобщенных операторов. Рассмотрены четыре оператора: (естественное) соединение, объединение, проекция и выбор по равенству. Вначале рассматривается POSS0, «открытая» функция возможных расширений. Напомним, что POSS0(r) = \s\sl^r} и что для POSS0 г jd s тогда и только тогда, когда г ^ s. Рассмотрим оператор соединения для POSS0', назовем его ><ι0. Он не может быть точным. Для частичных отношений г (R) и s (S), POSSo (г) xPOSSo (s) есть подмножество из SAT (* [RS]). Для всякого отношения д £ Rel\ (RS), POSS0 (g) не является подмножеством из Sy4r(*[i?S]) (см. упр. 12.26). Можно дать адек- кватное и ограниченное определение для><10. Пусть даны г (R) и s (S) из Rel\, причем R {] S = X. Пусть г ><i° s = \t (RS) I существуют tr ζ г и ts ζ s, причем tr(X)l ts(X)[y t(R) = tr и t(S) = t8]. Строки из г и s соединяются, если они определены и согласованы на X.
12.4. Реляционная алгебра и частичные отношения 385 Пример 12.24. Обобщенное соединение отношений г (ABC) и s (BCD) из рис. 12.20 показано на рис. 12.21. Это определение \><° является адекватным. Пусть q — г o<i0s, и пусть q — произвольное отношение из POSS0 (г) >< POSS0 (s). Требуется показать, что q ^ q> из чего немедленно следует, что Qi^Qy откуда q£POSS0 (q), откуда в свою очередь POSS0 (q) 3 <2 POSSo (r) >< POSSo (s). Пусть q = rxs для t ζ POSS0 (г) и έζ POSSo (s). Пусть tq — произвольная строка из q. Должны r(A В С) s(B С D) rlx20s(A BCD) 1 J. 1 2 3 3 -L 4 5 Рис. 12.20. 2 -L 3 3 3 7 4 4 4 5 3 8 9 10 ± ± 1 3 3 3 4 4 5 9 10 ± Рис. 12.21. существовать строки tr £ г и ts £ s, такие, -что ίΓ (Χ) J, is (X) J, iff (Я) = ίΓ и tq (S) = ίβ. Отсюда следует, что ίΓ(Χ) = ts (X). Поскольку t ^ г, должна существовать строка fr £ >\ такая, что tf^tr и, следовательно, ^ (Л") = t? (X). Аналогично, существует строка ts G s, такая, что t§ ^ ^ и, следовательно, k (Л") = = ίθ (Χ). Отношение q должно содержать строку tq, такую, что tq (К) = U и U (s) = **· Отсюда вытекает, что tq ^ tq. ^Поскольку строка tq была выбрана произвольным образом, имеем~<? ^ q, что и требовалось. Доказательство ограниченности ><° оставляется в качестве упр. 12.27. Объединение имеет точное обобщение для POSS0. Пусть даны г и s из Rel ] (R) и г \j°s=\t\t£r или t£s\. Положим q = r (J ° s. Покажем вначале, что POSS0 (q) ^ POSS0 (r) U POSS0 (s)- (Здесь имеется в виду поэлементное объединение.) Пусть q £ POSS0 (r) [} POSS0 (s). Должны существовать такие t ζ POSSo (ή и s ξ POSS0 (s), что q = t \] $. Пусть tq — строка из q, тогда либо tq £ г, либо tq ζ s. Если tq £ £ г, то существует строка ί^ f и, следовательно, в q, такая, что tn. Если tm £ s, то существует аналогичным образом строка #, следовательно, q \ ^ q и, '$ =-~ 'д' q tq в q, причем tq ^ tq. Отсюда q таким образом, q £ POSS0 (q). Предположим теперь, что ή £ POSS0 (q)· Так как # ^> г (почему?), то q I ^ г и отсюда $ £ POSSo (г). Аналогично, ή £ 6 POSSo (s). Следовательно, $ £ POSS0 (r) U />OSS0 (s) и, та-
386 Гл. 12. Неопределенные значения и Семантика баз ким образом, POSSq (q) <= POSS0 (г) U° POSS0 (s). Отсюда получаем, что U° является точным для POSS0. Проекция также имеет точное обобщение для POSS0. Мы оставляем определение читателю (см. упр. 12.28). г(А В С) i 1 2 1 ι 3 аО=|(г)(Л В С) oO^B{r){A_J_C) 14 5 112 112 446 1x3 446 Рис. 12.22. Рис. 12.23. Рис. 12.24. Теперь перейдем к выбору по равенству двух атрибутов или атрибута и значения. Пусть г ζ Rel\ (R) и Α ζ R. Определим °A-a(r)={t(R)\t£r и t(A) = a\. Пример 12.25. Пусть г (ABC) — отношение на рис. 12.22; g°a=\ (/") показано на рис. 12.23. При сравнении двух атрибутов Л, В £ i? получим a2-rf(r) = {f(/?)|<€r, 'ΜΗ. i(B)i и t(A) = t(B)\. Пример 12.26. Для отношения г, представленного на рис. 12.22, G°A=B (г) приведено на рис. 12.24. Эти два обобщения не являются точными, но точные обобщения невозможны. В случае σ^=α отметим, что для всякого отношения s £ GA=a (POSS0 (г)) и каждой строки t ζ s имеет место t (A) = = а. Для каждого отношения q множество POSS0 (q) содержит отношения, чьи строки не все равны α на Л. Однако эти два определения являются адекватными и ограниченными (см. упр. 12.29). Теперь рассмотрим замкнутые функции возможных расширений. По-видимому, не существует замкнутой функции, которая имела бы адекватные и ограниченные" обобщения для всех опера-, торов — соединения, объединения, проекции и выбора. Мы не рассматриваем все разумные замкнутые функции, а приводим лишь три наиболее естественные из них. Наиболее либеральное определение таково: POSSce (г) = \s\s есть тесное расширение г}. Для POSSCE из г ^ s не следует г us. Рассмотрим отношения г (А В) s(AB) 12 и 12 J.2
12.4. Реляционная алгебра и частичные отношения 387 Мы имеем r^s, но г (А В) 1 2 3 2 является тесным расширением г, но не тесным расширением s. Следовательно, POSSCE (ή SE POSSCE (s) и, значит, г $ s. POSSce имеет адекватные и ограниченные обобщения для объединения и проекции (см. упр. 12.31а). Не существует адекватного обобщения для выбора. Рассмотрим σΑ==\ (POSSCe (г)) Для f(A В) JL 2 Не существует отношения q из Rel\ (АВ)> такого, что POSSceIq) ^ <*а=\ (POSSce (/"))· Множество POSSCE (^)можетсо- держать либо непустые отношения, либо одно пустое отношение, в то время как σ^=ι (POSSce (ή) содержит пустое отношение и отношение f(A В) 1 2 Аналогичное рассуждение показывает, что не существует адекватного обобщения оператора] соединения для POSSce (cm. упр. 12.31Ь). Другая замкнутая функция такова: POSSc(r) = {s\sl^r\. Не существует адекватного обобщения проекции для POSSc. Рассмотрим г (А В) _L 1 _L 2 Множество πΑ (POSSc (r)) состоит из всех полных отношений над схемой Л, содержащих одну или две строки. Не существует такого отношения q £ Rel\ (А), что POSSc (q) содержит все такие отношения. Та же проблема возникает для функции POSSME: POSSME(r) = \s\s есть минимальное расширение г\. Функция POSSME является наиболее консервативной из всех замкнутых функций возможных расширений. Представляется маловероятным существование замкнутой функции POSS с адекватными и ограниченными определениями для соединения, объединения, выбора и проекции. Бискап (Bis- kup) вводит функцию возможных расширений, для которой такие
388 Гл. 12. Неопределенные значения и семантика баз обобщения операций существуют, но она использует модификацию частичных отношений. При его подходе отношение разделяется на действительные строки и возможные строки. Будем называть этот вид частичных отношений разделенными отношениями. Разделенное отношение может рассматриваться как упорядоченная пара частичных отношений. Если г — разделенное отношение, г(А В_ С) С) s2(A В С) 2 1 ± 2 2 i 3 2 4 Рис. 12.26. qx{A В С) q2{A В С) 13 2 13 2 1 5 2 1 3 4 1 5 4 Рис. 12.27. пусть SURE (r) обозначает множество действительных строк из r, a MAYBE (г) —множество возможных строк из г. Если г — разделенное отношение со схемой R и s — частичное отношение с той же схемой, то s аппроксимирует г (обозначение: s \> г), если SURE (r) (J MAYBE (r) => s => SURE (г). Функция возможных расширений, используемая для разделенных отношений, такова: POSSB(r) = \q\q есть тесное расширение некоторой s, причем s > г]. При изображении разделенных отношений пунктирная линия отделяет верхние действительные строки от нижних возможных строк. Пример 12.27. На рис. 12.25 показано разделенное отношение г (ABC). Оба частичных отношения sx и s2 (Рис· 12.26) аппроксимируют г, следовательно, оба тесных расширения q± отношения s1 и q2 отношения s2 (рис. 12.27) входят в POSSB (r). Если г содержит только возможные строки, то POSSB (r) будет содержать как пустые, так и непустые отношения. Такая ситуация невозможна для частичных отношений с замкнутой функцией. Ниже дается синтаксическая характеризация отношения «быть сильнее» для POSSB- 1 ± 2 -L 3 2 S^A B ι ι 1 3 ± ± 3 ± ± 4 ± 1 Рис. 12.25.
12.4. Реляционная алгебра и частичные отношения 389 Лемма 12.2. Для разделенных отношений г и s со схемой R и функции POSSB включение г jd s выполняется тогда и только тогда, когда выполнены следующие условия: 1. для каждой действительной строки из s имеется частично расширяющая ее действительная строка из г и 2. каждая строка из г частично расширяет некоторую строку из s. Доказательство. Достаточность. Требуется показать, что если эти два условия выполняются, то POSSB (r) s POSSB (s). Пусть t — некоторое отношение из POSSB(r). Чтобы показать, что Ϋ £ £ POSSB (s), необходимо убедиться, что каждая действительная строка из s расширяется некоторой строкой из f и что каждая строка из Ϋ расширяет некоторую строку из s. Пусть ts — некоторая действительная строка в s. По условию 1 найдется такая действительная строка tr £ г, что tr 55 ts. Отношение t было выбрано таким образом, что оно содержит строку U, для которой U 5=5 tr. Следовательно, tr ^ ts. Возьмем теперь произвольную строку Uf из Λ В г должна существовать такая строка иг, что и? 5=5 «г. По условию 2 отношение s содержит такую строку us, что ur ^ us и, значит, и? 5> «s. Поскольку Ϋ было выбрано произвольно, POSSB (г) ^ POSSB(s) и, следовательно, г _з s. Необходимость. Предположим, что г _zi s. Для q = SURE (r) образуем пополнение <?, заменяя неопределенные значения в q определенными значениями, не входящими в s. По построению q £ POSSB (r). Так как r^s, то q входит в POSSB (s), поэтому для каждой действительной строки ts £ s отношение q содержит такую строку ίή, что t$ ^ ts. Строка tq была получена из действительной строки tr в г с помощью значений, не встречающихся в ts. Следовательно, tr должна расширять ts, и условие 1 выполняется. Пусть теперь q = SURE (r) |J MAYBE (г). Образуем пополнение q, заменяя неопределенности значениями, не встречающимися в s. Как и прежде, q £ POSSB (г), поэтому q входит в POSSB (s). Возьмем любую строку tr £ г и пусть tq — строка в $, полученная заполнением tr (которая входит в q). Поскольку ή ^POSSB (s), отношение s содержит такую строку t89 что t$ ^ ^ ts. Так как введенные в Ц значения не встречаются в ts, имеем U ^ ts, откуда следует выполнение условия 2. Пример 12.28. Пусть г —■ разделенное отношение, представленное на рис. 12.25, и s —■ разделенное отношение на рис. 12.28. Из леммы 12.2 следует, что s зг, но г ^ s. Действительно, полное отношение q2 из рис. 12.27 входит в POSSB (r), но не входит в POSSB(s). Лемма 12.2 позволяет характеризовать избыточные строки, т. е. строки, удаление которых не изменяет силу отношения.
390 Гл. 12. Неопределенные значения и семантика баз Следствие. Пусть даны разделенное отношение г со схемой R' и строка t в нем. Пусть г* — разделенное отношение, полученное удалением t из г. Тогда г = г' в том и только том случае, когда либо 1. t £ SURE (г), при этом t расширяется некоторой действительной строкой из г и расширяет действительную или возможную строку в г; либо 2. t £ MAYBE (г) и t расширяет действительную или возможную строку в г. s(A В С) 1 ± 2 ±32 1 3 4 1 J. 4 7 J. 4 Рис. 12.28. Доказательство предоставляется читателю (см. упр. 12.37). Из п. 2 следствия вытекает, что любая строка t £ SURE (г) fl Π MAYBE (г) может быть удалена из MAYBE (r). Если г' получено из г удалением возможной строки, то г' _д г. Если г' получено удалением действительной строки, отношения г' и г не сравнимы по силе. Пример 12.29. Рассмотрим разделенные отношения г (ABC) и г' (ABC) из рис. 12.29.- Ни одно из них не содержит возможных строк; г' получено из г удалением действительной строки. Полное отношение t из рис. 12.30 входит в POSSB (г), но не в POSSB (r')\ Г входит в POSSB (r')y но не в POSSB (r). При обсуждении ограниченных обобщений необходимо выяснить, когда одно разделенное отношение строго сильнее другого. Допустим, что г и s — такие разделенные отношения, что г ^ s. Тогда должно существовать полное отношение s в POSSB (s), которое не входит в POSSB (r). Почему s может не входить в POSSB (г)? Во-первых, г может содержать такую действитель- г(А В С) г'(А В С) Г~ГТ rVT «d_*_c> па_в_с) 1 3 4 15 2 15 2 6 3 4 Рис. 12.29, Рис. 12.30,
12.4. Реляционная алгебра и частичные отношения 391 1 ± 2 1 Рис. J. 4 5 6 ± 4 3 6 12.31. ную строку tr, которая не расширяется ни одной строкой в s. Отсюда следует, что в s нет строки, расширяющей tr. Во-вторых, s может иметь такую строку t§, которая не расширяет ни одну строку в г. Откуда следует, что та строка ts ζ s, из которой получена U, не расширяет ни одну строку в г. Таким образом, выполняется г(А В С) s(B С) х 4 5 6 L 4 3 6 Рис. 12.32. Лемма 12.3. Пусть даны разделенные отношения г и s, причем г ns. Если г g= s, то выполнено хотя бы одно из следующих условий: 1. г содержит действительную строку, которая не расширяется никакой строкой из s\ 2. s содержит строку, которая не расширяет никакую строку в г. Обращение утверждения леммы 12.3 оставляется в качестве упр. 12.38. Теперь рассмотрим обобщения реляционных операторов для POSSB. Проекция имеет естественное обобщение. Если г есть разделенное отношение со схемой R и X ^ R, определим nBx(r) = s(X), где SURE (s) = \t {X)\t входит в SURE (r)} и MAYBE (s) = \t {X)\t входит в MAYBE (r)\. Пример 12.30. Пусть г (ABC) — разделенное отношение (рис. 12.31). На рис. 12.32 показано отношение s = пвс (/*)· Возможная строка (_|_ 4) может быть удалена из s по следствию из леммы 12.2. Доказательство адекватности и точности пв оставлено в качестве упр. 12.39. Теперь рассмотрим обобщение выбора по равенству с константой. Пусть дано разделенное отношение г со схемой R и Α ζ R. Определим
392 Гл. 12. Неопределенные значения и Семантика баз где SURE (s) = {/1 / £ SURE (г) и t (A) = a\, MAYBE(s) = \t\te MAYBE (г) и t(A) = a\ [} \t' (существует такое f £ г, что t (R — A) — = t' (R — A), t(A) = ± и f{A) = a\. Пример 12.31. Пусть г — разделенное отношение из рис. 12.31. На рис. 12.33 приведено отношение s = σ^=) (г). s(A В С) 1 1 4 1 5 6 1 3 6 Рис. 12.33. Лемма 12.4. Оператор оА==а является точным обобщением оператора σΑ=α для POSSB. Доказательство. Пусть s = σΑ==α (г) для некоторого разделенного отношения г (R) с атрибутом А £ R. Покажем, во- первых, что POSSB (s) з σΑ=α (POSSB (ή). Пусть q входит в σΑ=α (POSSB (г)), а г — такое отношение из POSSB (r), что q = σΑ=α (?)- Нужно показать, что q £ POSSB (s). Для ts из SURE (s) требуется найти такую строку tq из q, что tq ^ ts. Поскольку ts ξ SURE (s), то ts (A) = α и ίβ £ Si/#£ (r). Следовательно, в ^входит такая строка tn что ir s> is. Отсюда U (А) = = а, так что ^ £ q и эта строка и является искомой строкой ίς. Теперь нужно показать, что для каждой строки tq ζ q найдется такая строка ts £ s, что ίς ^ ίβ. Так как ^ £ /\ существует ίΓ £ г, такая, что tq>-tr. Возможны два случая: либо tr (A) = а, либо tr (А) = _1_. В первом случае ir £ s. Во втором — *г G s> гАе £ (А) = а и £ (R — А) = tr (R — А). Поскольку tq^z tr и tq (A) = а, имеем tq ^> t'r. Отсюда получаем q £ £ POSSB (s), что и требовалось. Во-вторых, покажем, что POSSB (s) ^ аА==а (POSSB (ή). Для <7 (Ε Ρ OSS в (s) требуется найти такое г из POSSB (г), что # = = σ^=α (>*)· Отметим, что # = σΑ=α (q). Если # g POSSB (r), значит, г содержит действительную строку tr, которая не расширяется никакой строкой из q. Пусть t содержит q и полную строку fr для каждой действительной строки tr в г, не расширяемой q. Выберем tr так, что tr (А) Ф а. Имеем г ζ POSSB (r), q= σΑ=α (ή, следовательно, q £ σΑ=α (POSSB (ή). Мы показали, что POSSB (s) = σΑ=α (POSSB (r)), следовательно, оператор σΑ==α является точным.
12.4. Реляционная алгебра и частичные отношения 393 Обобщение оператора аА=в для POSSB предоставляется читателю. Пусть даны два разделенных отношения г и s со схемой /?. Обобщенное объединение, задаваемое формулой г \JBs = q(R), где SURE (q) = SURE (r) [} SURE (s) и MAYBE (q) = MAYBE (r) U MAYBE (s), является точным (см. упр. 12.42). Наконец, рассмотрим обобщение соединения для POSSB. Пусть даны разделенные отношения г (R) и s (S), причем R (] S = = X. Будем говорить, что tr ζ г и t8 ζ s сравнимы на X, если для каждого А (= X имеет место tr (A) = ts (Л), или одно из значений tr (А) или ts (А) не определено. Положим rxBs = q(RS)y где SURE(q) = \t(RS)\ существуют tr £ SURE (r), ts £ £ SURE(s), такие, что tr(X)l ta(X)[9 t(R) = tf и i(S) = α MAYBE (q) = \t (RS)\ существуют такие сравнимые строки tr € г и t8 £ s, что ί (/? — Χ) = ίΓ (R — Χ), t (S ~ Χ) = ts (R — Χ), и для каждого А £ £ X, если *Г(Л)1, то t (A) = tr (Л), иначе *(Л) = ил)Ь Вторая (МЛГЙЯ) часть определения требует, чтобы соединялись согласованные строки с использованием более определенной строки на каждом атрибуте из X. Это определение делает SURE (q) подмножеством MAYBE (q), однако мы можем выбросить повторяющиеся строки из MAYBE (q). Пример 12.32. Пусть г (Л В) и s (В С) — разделенные отношения из рис. 12.34. На рис. 12.35 показано отношение q = г ><в s. Это обобщение соединения не является точным. В последнем примере любое отношение из POSSB (r) >< POSSB (s) удовлетворяет J-зависимости * [ЛБ, ВС]. Однако существуют полные отношения в POSSB (q), которые не удовлетворяют этой J-зависи- доости,
394 Гл. 12. Неопределенные значения и семантика баз Лемма 12.5. Оператор ><в является адекватным и ограниченным обобщением >< для POSSB. Доказательство. Пусть г (R), s (S) — разделенные отношения, X = R ft S и q = r ><Bs. (v<B адекватен.) Пусть г £ POSSB (r), s ξ POSSB (s)uq = ?>< §. Необходимо показать, что q £ POSSB (q). Если tq £ SURE (q)9 то должны существовать строки tr ζ г и ts £ s, соединением которых является tq, и, кроме того, tr (X) J, t8 (X) J и tr (X) = ts (Χ). q{A В С) 1 1 2 г{А В ) s(B С) 1 3 4 1 χ 1 Рис. 12.34. 1 5 -L 2 2 6 1 3 3 3 1 4 Рис. 1 1 5 _L 1 1 12.35. 6 2 6 6 2 6 По определению г, оно содержит такую строку U, что ί/> ^ tr. Аналогично, s содержит строиу t§, такую, что t§ ^ ts. Пусть ίή = U >< ts- Отсюда имеем t$ ^> tq. Предположим теперь, что uq — произвольная строка из q. Эта строка должна быть равна и? >< щмя некоторых и? £ г и щ ζ s. В свою очередь г должно содержать такую иг, что и? ^ аг, и такую s £ и5, что α$ ^ as. Строки иг и us должны быть согласованы и, следовательно, q содержит возможную строку uq> построенную из иг и us. Отсюда непосредственно следует, что щ ^> щ. Таким образом, q входит в POSSB (q) и тем самым POSSB (?) => POSSB (r) >< POSSB (s), что и требовалось. (\><в ограничен.) Пусть q'—такое разделенное отношение, что q'g qn POSSB(q)=> POSSB (r)>< POSSB (s). Из леммы 12.3 следует, что необходимо рассмотреть два случая. Случай 1. SURE (qr) содержит такую строку tq, для которой нет расширяющих ее строк из q. Сделаем следующее утверждение. Утверждение. Любое пополнение q отношения SURE (q) входит в POSSB (г) >< POSSB (s). Доказательство этого утверждения оставляется в качестве упр. 12.42. Образуем пополнение ή, используя значения, не входящие в q\ для заполнения^неопределенностей в SURE (q). По
12.5. Неоднородная информация и Семантика баз 395 построению не существует строки в q, которая расширяет строку t'q из qy поэтому q $ POSSB (qf). Используя утверждение, получаем, что POSSB (q') => POSSB (ή ложно. Случай 2. Отношение q содержит такую строку tq, которая не расширяет ни одну из строк в q*. Рассмотрим строку tq [ ^> L, которая получена заполнением tq значениями, не входящими в q . Никакая строка в q не расширяется строкой tq. По построению tq отношение должно содержать такую строку tn что tq (R) \ ^> tn и s должно содержать ts, где t£ (s) [ ^> ts. Выберем такое ? ζ £ POSSB (г), которое содержит tq (R), и s £ POSSB (s), которое содержит tq (s). Легко видеть, что t >< s содержит tqy следовательно fxs $ POSSB(q'), что является противоречием. Предположение о существовании q' ложно, и, таким образом, оператор ><ιΒ ограничен. ГВ этом разделе были рассмотрены обобщения реляционных операторов относительно различных функций возможных расширений. Лишь введение разделенных отношений позволило нам получить замкнутую функцию с адекватными и ограниченными обобщениями объединения, выбора, проекции и соединения. Тем не менее, может быть, такая функция существует и для частичных отношений. Вполне вероятно также, что введение помеченных неопределенных значений позволит получить- точные обобщения в тех случаях, где мы имеем пока лишь адекватные и ограниченные обобщения. 12.5. НЕОДНОРОДНАЯ ИНФОРМАЦИЯ И СЕМАНТИКА БАЗ ДАННЫХ Теперь мы переходим к рассмотрению проблемы «подстрок» над схемой отношения. Иногда удобно рассматривать отношение как множество неоднородных строек, т. е. различные строки могут иметь различные схемы. Пример 12.33. Рассмотрим атрибуты КУРАТОР, ФАКУЛЬТЕТ и СТУДЕНТ. Мы можем захотеть хранить строку (a d) с атрибутами КУРАТОР ФАКУЛЬТЕТ, означающую, что а является куратором на факультете d. Могут понадобиться также строка (ds) с атрибутами ФАКУЛЬТЕТ СТУДЕНТ, представляющая тот факт, что d — основной факультет для s, и строка (a ds) со всеми тремя атрибутами, означающая, что а является куратором s на факультете d. Возможно, что мы захотим иметьстроки с одним атрибутом СТУДЕНТ просто для записи всех студентов. Проблема использования отношений с неоднородными строками близко связана с рассмотрением базы данных как единой семантической сущности. Можно было бы представлять себе базу
396 Гл. 12. Неопределенные значения и семантика баз данных как одно отношение с неоднородными строками. В гл. 9 нас интересовали базы данных, которые были представимы отношениями с универсальной схемой, хотя мы видели там, что бывают случаи, когда состояние базы данных может не быть пред* ставлено универсальным отношением. Неизвестно эффективного алгоритма проверки того, что данное состояние базы данных состоит из проекций универсального отношения. (В гл. 13 мы рассмотрим некоторый класс схем баз данных, для которых такая проверка может быть сделана эффективно.) Условие, что база данных представима единственным отношением, может оказаться сильным ограничением. Однако если не принимать эту точку зрения, то можно ли трактовать базу данных как единое целое и'обсуждать наложение ограничений на всю базу данных х). 12.5.1. Предположения об универсальном отношении Требование о том, чтобы все отношения в базе данных были проекциями некоторого одного отношения, называется предположением об универсальном отношении (ПУО). При этом база данных рассматривается как одно отношение над универсальной схемой — обычно это соединение всех отношений в базе данных. ПУО часто является разумным предположением для целей конструирования, даже если реальные состояния базы данных не всегда ему удовлетворяют. Это предположение особенно удобно, когда конструирование начинается с единственной схемы. Можно провести широкую аналогию между ПУО и предположением о том, что язык программирования может быть описан с помощью бесконтекстной грамматики. Хотя базисный синтаксис этого языка может быть описан с помощью множества бесконтекстных подстановок, семантические действия, связанные с этими подстановками, могут привести к контекстно-зависимым конструкциям. Тем не менее бесконтекстные грамматики являются удобным инструментом при разработке компилятора с этого языка. В чем преимущество использования базы данных по сравнению с использованием одного отношения? Во-первых, при этом можно избежать избыточности. Во-вторых, может оказаться удобным г) Здесь и в некоторых местах ниже не очень ясно и последовательно затрагивается сложный вопрос о возможности адекватного представления реального мира с помощью реляционных баз. При этом автор придерживается (вовсе не обязательной) «чисто атрибутной» точки зрения, когда все стороны (свойства, зависимости) реального мира отражаются в терминах атрибутов, а имена отношений носят только вспомогательный характер и фактически несущественны. Такой подход иногда упрощает конструирование базы, однако в некоторых других случаях вызывает существенные трудности (как говорить, например, о зависимостях внутри отдельных отношений или между разными отношениями, см. также пример 12.35). — Прим. перев.
12.5. Неоднородная информация и Семантика ба^ 397 хранение в базе данных состояний, не соответствующих никакому единственному отношению. Пример 12.34. Мы можем представить отношение анкеты из таблицы 12.1 в виде базы данных с двумя отношениями: настоящее (СЛУЖАЩИЙ ЗАРПЛАТА) и прошлое (СЛУЖАЩИЙ ПРЕЖНЕЕ-МЕСТО-РАБОТЫ прежняя-должность прежняя- ЗАРПЛАТА). Тогда можно хранить строку (Ломбарды 13 200) в настоящее, не храня строки для Ломбарди в прошлое в случае, когда у Ломбарди нет предыдущих должностей. Строка (Ломбарди 13 200) в настоящее не имеет такого смысла, как строка (Ломбарди 13 200 J | L) в отношении анкеты, так как из последней видно, что у Ломбарди были предыдущие должности, но мы просто не знаем подробностей. Бывают ситуации, когда ПУО не имеет смысла даже при конструировании. Процесс построения базы не обязательно начинается со схемы одного отношения. База данных может включать факты из широкой области явлений, где не всегда осмысленно или естественно рассматривать строки над всем множеством атрибутов. Процесс проектирования может начинаться с некоторого множества реляционных схем и заключаться в комбинировании и разложении этих схем, т. е. ПУО нам не подходит, однако все же требуется некоторое предположение о целостности, говорящее о смысле атрибутов в разных схемах. Если в одной схеме ДАТА означает дату рождения служащего, а в другом месте она же означает дату назначения, то могут возникнуть семантические проблемы при комбинировании отношений с помощью естественного соединения. Если же мы предположим, что вхождения атрибута в разные схемы всегда имеют различный смысл, потеряются важные связи. Предположение об универсальной реляционной схеме (ПУРС) требует, чтобы атрибут имел одинаковый смысл всюду, где он появляется, т. е. чтобы он играл определенную роль некоторого класса сущностей1). ДАТА в том виде, как она была использована выше, представляла разные роли класса дат. ПУРС всегда удовлетворяется, когда схема базы данных получена декомпозицией одной реляционной схемы. Следствием ПУРС является то, что строки с данным множеством атрибутов имеют одинаковый смысл. Следовательно, база данных, удовлетворяющая ПУРС, не может содержать двух отношений с одной и той же схемой, так как оба отношения состояли бы из одних и тех же строк. В та- я) ПУРС в отличие от ПУО представляет собой неформальное предположение. Более подробное и продвинутое рассмотрение понятий, связанных с ПУРС, см. в D. Maier, J. D. Ullman, Μ. Υ. Vardi. On the foundations of the universal relation model ACM. Trans. Database Systems, 9 (1984), № 2. — Прим. перев.
398 Гл. 12. Неопределенные значения и семантика баз кой базе данных схема достаточна для идентификации отношения. Множество атрибутов определяет единственную семантическую связь между ними, если такая связь вообще существует. Чтобы сопоставить ПУО и ПУРС, заметим, что ПУО требует «универсальности экстенсионала», в то время как ПУРС требует «универсальности интенсионала». Чтобы удовлетворить ПУРС, иногда приходится переименовывать атрибуты. Пример 12.35. Рассмотрим отношение курирование (ПРЕПОДАВАТЕЛЬ СТУДЕНТ) для записи кураторов студентов и отношение преподавание (ПРЕПОДАВАТЕЛЬ ПРЕДМЕТ СТУДЕНТ) для записи преподавателя и предмета для каждого студента. ПУРС нарушается, поскольку есть две связи между атрибутами ПРЕПОДАВАТЕЛЬ и СТУДЕНТ. Чтобы удовлетворить ПУРС, требуется переименовать разные вхождения атрибута ПРЕПОДАВАТЕЛЬ на КУРАТОР и ЛЕКТОР, отразив тем самым их разные роли. Некоторая информация при этом теряется: КУРАТОР и ЛЕКТОР — различные роли одного и того же класса сущностей. Эта связь может быть выявлена с помощью сопоставления доменов. Она также может быть явно задана в иерархии обобщений, которая отражает различные роли класса сущностей1). 12.5.2. Пустышки и отношения на подсхемах Вернемся к проблеме неоднородных строк в одном отношении. В примере 12.34 мы видели, что разложение отношения в базу данных позволяет представление некоторых фактов над подсхемами отношения. Но декомпозиция не всегда решает проблему. Пример 12.36. Возвращаясь к примеру 12.33, мы' хотели бы иметь строки на схемах КУРАТОР ФАКУЛЬТЕТ, ФАКУЛЬТЕТ СТУДЕНТ и КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ. Базы данных с двумя отношениями гг (КУРАТОР ФАКУЛЬТЕТ), г2 (ФАКУЛЬТЕТ СТУДЕНТ) недостаточно, поскольку нет возможности представлять строки на схеме КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ. Нельзя использовать соединение гх и г2, так как из того, что а — куратор на факультете d и для студента s — это основной факультет, не следует, что а курирует s. Один из возможных подходов заключается во введении специального символа, называемого пустышкой, которым расширяется строка, действующая на подсхеме. В качестве символа пустышки используется тире. Расширенная строка рассматривается как строка на подсхеме тех атрибутов, в которые не входит пустышка. * Это предполагает обобщение реляционной точки зрения. — Прим. перев.
12.5. Неоднородная информация и семантика баз 399 Таблица 12.11. Отношение г г (КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ) t-i Томас Мат Уолкер t2 Тортон Мат — t3 — Экон Уилсон U - - By Пример 12.37. В табл. 12.11 показано отношение г (КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ), в котором подстроки представлены с помощью пустышек. Строка t2 = (Тортон Мат —) интерпретируется как обычная строка со схемой КУРАТОР ФАКУЛЬТЕТ. Строка t2 описывает только тот факт, что Тортон является куратором на математическом факультете. При этом не утверждается, что Тортон действительно кого-то курирует, как это происходит в строке (Тортон Мат _|_). Хотя в отношение могут входить и неопределенные значения и пустышки, мы на некоторое время ограничимся только пустышками. Как и в случае неопределенностей, желательно управлять использованием пустышек в отношении. Можно разрешать, например, только подстроки с определенными схемами. Так, в последнем примере запрещаются подстроки с атрибутами КУРАТОР и СТУДЕНТ. Можно использовать формализм, подобный Е-огра- ничениям, для определения допустимых схем для подстрок, однако представляется более естественным в данном случае просто перечислить все такие схемы. Назовем аспектом всякую допустимую схему подстроки. Аспекты —это фактически те множества атрибутов, на которых строки «имеют смысл». На отношение г (R) накладывается ограничение с помощью множества аспектов О = = \Wl9 W29 ..., Wn\, где Wt ^ R, 1 < i < п. Отношение г удовлетворяет О, если для всякой строки t в г множество атрибутов, в которые входит пустышка, имеет вид R — Wt для некоторого аспекта Wt £ О. Пример 12.38. Отношение г из таблицы 12.11 удовлетворяет множеству аспектов О = {КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ, КУРАТОР ФАКУЛЬТЕТ, ФАКУЛЬТЕТ СТУДЕНТ, ФАКУЛЬТЕТ, СТУДЕНТ}. Хотя пустышки удобно использовать для представления подстрок в одном отношении, мы применяем другой метод для работы с базами данных. Мы рассматриваем базы данных, которые имеют одно отношение для каждого аспекта W из данного множества аспектов О. Естественно, отношение на W содержит все подстроки со схемой W. Таким образом, мы используем О в качестве схемы базы данных. Мы отклоняемся от обычной практики, поскольку
400 Гл. 12. Неопределенные значения и семантика баз до сих пор в базе данных не могло быть двух отношений г (R) и s (S), для которых R ^ S г). В этом нет смысла, если действует ПУО, так как г = nR (s). Это осмысленно, однако, если принимается ПУРС. Использование отдельных отношений для подстрок позволяет избежать проблемы целостности, которая возникает при работе с пустышками. Действительно, если использовать пустышки, данная подстрока может правильно входить в несколько отношений. Строку (be) над ВС можно дополнить так, чтобы она входила в отношение г (ABC) или в отношение s (BCD). Кажется, что при принятии ПУРС всякая БС-строка, входящая в г, должна входить и в s. Поэтому при добавлении подстроки в отношение необходимо проверить, что она правильно включена в другое отношение. Использование различных отношений для каждого типа подстрок избавляет от необходимости таких перекрестных проверок. Пример 12.39. Рассмотрим набор аспектов О = {КУРАТОР ФАКУЛЬТЕТ, ФАКУЛЬТЕТ СТУДЕНТ, КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ, ФАКУЛЬТЕТ СТУДЕНТ ДИПЛОМ}. ДИПЛОМ — это дата получения студентом диплома на данном факультете. Можно хранить строки над этими аспектами в двух отношениях, гх (КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ) и г2 (ФАКУЛЬТЕТ СТУДЕНТ ДИПЛОМ), используя пустышки. При этом возникает необходимость проверить, что строка с атрибутами ФАКУЛЬТЕТ СТУДЕНТ, добавленная в одно отношение, добавлена также и в другое. Если же на каждый аспект имеется по отношению, то необходимость в такой проверке исчезает. 12.5.3. Семантика баз данных и W-функции В данном разделе и в нескольких последующих мы займемся рассмотрением базы данных как семантического целого. При этом в базе будут допускаться отношения со схемами, являющимися подсхемами других отношений. Для того чтобы база удовлетворяла ПУРС, необходимо накладывать ограничения на такие отношения. Пусть г (R) и s (S) — отношения в базе данных, причем R s 5. По ПУРС множество атрибутов однозначно определяет семантическую связь между ними. Поскольку R является подмножеством 5, то, какова бы ни была связь между его атрибутами, она должна быть частью связи между атрибутами S. Отсюда следует, что если t — строка в s, то t (R) должна быть строкой в г. Другими словами, в г должно входить nR (s). Это ограничение есть условие вхождения аспектов. На первый взгляд условие *) Такое предположение в явном виде ранее не формулировалось. — Прим. церев.
12.5. Неоднородная информация и семантика баз 401 вхождения аспектов приводит к хранению большой избыточной информации, тем не менее легко представить себе реализацию, лишенную избыточности. Пример 12.40. Рассмотрим базу данных, в которой условие вхождения не выполняется, и проследим, как нарушается ПУРС. Пусть эта база состоит только из двух отношений: г (ФАКУЛЬТЕТ СТУДЕНТ) и s (КУРАТОР ФАКУЛЬТЕТ СТУДЕНТ). Пусть строка (dc) ζ г означает, что студент с слушает курс на факультете d, а строка (adс) £s означает, что а курирует с на факультете d. Условие вхождения нарушается, если разрешить студенту иметь куратора на факультете, не слушая никакого курса на этом факультете. Связь между атрибутами ФАКУЛЬТЕТ и СТУДЕНТ, задаваемая отношением г, не согласуется тогда со связью, задаваемой отношением s. По крайней мере один из этих атрибутов должен выступать в разных ролях в отношениях г и s, поэтому ПУРС нарушается. Сделаем небольшое отступление, чтобы рассмотреть условие вхождения в свете проблемы обновления базы данных. Обычно в базах данных ограничивается множество пользователей, которым разрешено обновлять конкретное отношение. Предположим, что база содержит отношения г (R) и s (S), причем R ^ S. На первый взгляд может показаться, что разрешение на обновление s влечет за собой разрешение на обновление г. На самом деле вполне обоснованно разрешение на обновление s без разрешения на обновление г. Обновление г накладывает ограничение на обновление s, поскольку строка /неможет быть добавлена к s, если t (R) g ί г. Пример 12.41. Рассмотрим базу d на множестве аспектов {ФАКУЛЬТЕТ, ФАКУЛЬТЕТ КУРС-№, ФАКУЛЬТЕТ КУРС-№ СЕМЕСТР ГОД, СТУДЕНТ, ФАКУЛЬТЕТ КУРС-№ СЕМЕСТР ГОД СТУДЕНТ}. По условию вхождения строка (Экон 102 Весенний 1980) над атрибутами ФАКУЛЬТЕТ КУРС-№ СЕМЕСТР ГОД только тогда может быть добавлена к базе данных, если строка (Экон 102} над атрибутами ФАКУЛЬТЕТ КУРС-№ в ней уже существует. Другими словами, некоторый курс можно назначить на данный семестр, только если этот курс действительно существует. Обычно правом добавления ФАКУЛЬТЕТ-строки (создание нового факультета) обладает ректор университета. Проректор по научной части или декан факультета может добавлять строки вида ФАКУЛЬТЕТ КУРС-№ (создавая новый курс). Приемная комиссия распоряжается СТУДЕНТ-строками (принимая новых студентов). Декан факультета может добавлять строки с атрибутами ФАКУЛЬТЕТ КУРС-№ СЕМЕСТР ГОД (составляя список читаемых курсов на данный семестр). И наконец, студент распр-
402 Гл. 12. Неопределенные значения и семантика баз ряжается строками над ФАКУЛЬТЕТ КУРС-№ СЕМЕСТР ГОД СТУДЕНТ (записываясь на курс). Вернемся к уточнению ПУРС в базе данных. Существуют такие связи между атрибутами, которые явно не выражаются каким- либо отношением базы, а реализуются комбинацией двух или нескольких отношений. Такие производные связи должны быть согласованы со связями, явно задаваемыми в отношениях. Пример 12.42. Рассмотрим базу d с отношением гг (ФАКУЛЬТЕТ ГРУППА), задающим группы, обучающиеся на факультете, и отношением г2 (ГРУППА АУДИТОРИЯ), задающим аудиторию, в которой занимается группа. Представляется естественным связать атрибуты ФАКУЛЬТЕТ, ГРУППА и АУДИТОРИЯ с помощью соединения гг и г2. Предположим, с другой стороны, что существует также и отношение г3 (ФАКУЛЬТЕТ АУДИТОРИЯ), задающее аудиторию, в которой происходит заседание ученого совета факультета. Тогда возникает несогласованность между явной связью между атрибутами ФАКУЛЬТЕТ и АУДИТОРИЯ в г3 и производной связью между ними, задаваемой в ггхг2. Не очевидно, что взятые в отдельности отношения гъ г2 и г3 нарушают ПУРС, так как проблему создает связь гг >< г2. Все неявные связи между атрибутами, которые можно вывести из базы данных, должны быть согласованы друг с другом и с явными связями, задаваемыми отношениями. Мы расширяем понятие аспекта, чтобы включить в него схемы производных отношений. Смыслы, придаваемые разным аспектам, должны быть согласованы независимо от того, соответствуют ли аспекты хранимым или производным отношениям. Чтобы обеспечить единый взгляд на аспекты, хранимые или производные, мы используем понятие Tbf-фунщии, которая дает согласованное множество окон, по одному на каждый аспект, через которые можно наблюдать базу данных. W-функция отображает пару: [аспект, база данных] в отношение, хранимое или производное (обозначение: [W, d], где W — аспект, a d — база; или просто [W], если d подразумевается). Таким образом, [W, d]— это всегда отношение со схемой W, зависящее от состояния базы d. W-функция позволяет избежать двусмысленности. аспектов, поскольку она выдает одно отношение для каждого аспекта. Однозначное толкование аспектов диктуется, разумеется, ПУРС, но смыслы различных аспектов должны быть согласованы. Поэтому мы устанавливаем условие вложения для окон: если W и Ζ — аспекты в базе d, причем W ^ Z, то [W} d] ^ nw ([Z, d]).
12.S. Неоднородная информация и семантика баз 4θ3 W-функция легко продолжается на любое множество атрибутов. Пусть X — множество атрибутов и О — множество аспектов базы d. Положим [X, d]= U nx([Wt d)). Смысл множества атрибутов, не являющегося аспектом, складывается из смыслов аспектов, содержащих это множество. Если обычная W-функция удовлетворяла условию вхождения, то и расширенная функция этому условию удовлетворяет и согласуется с ней на любом аспекте (см. упр. 12.45). Если множество атрибутов X не содержится ни в каком аспекте, то [X, d] = 0, т. е. база данных не придает смысла атрибутам X, рассматриваемым как единое целое. Некоторые рассматриваемые ниже W-функции определяются непосредственно для произвольного множества атрибутов. Они не используют никаких аспектов кроме тех, которые соответствуют хранимым отношениям. Однако такое определение неявно задает некоторое множество аспектов. Для любого множества атрибутов из условия вложения следует, что имеет место [Χ]Ξ2 U Я*([У]). YZDX Для некоторых множеств X вложение всегда будет эквивалентно равенству. Для других Х|найдутся такие состояния базы данных, в которых это вложение будет строгим. Такое множество является неявным аспектом. Рассмотрим одну простую W-функцию и связанную с ней проблему, которая послужит мотивацией для еще одного условия, накладываемого на эти функции. Пусть дано множество U всех атрибутов схемы базы данных d. Определим W-функцию с U в качестве единственного аспекта, а именно пусть [U, а]г = \><d. (Указанный индекс выделяет эту функцию.) Эта функция рассматривает базу в виде одного отношения со схемой U. Продолжая эту функцию на произвольное множество атрибутов, получим [X]i = nx[V]x. Но беда здесь в том, что для отношения г (R) в d значение iR]± не обязательно равно г, хотя оно всегда содержится в г. Таким образом, смысл, который W-функция придает г, не совпадает со смыслом г в базе данных. То есть хотя база и могла удовлетворять ПУРС и ее интерпретация с помощью [ · ]х также удовлетворяет ПУРС, однако рассматриваемые совместно, они нарушают ПУРС.
404 Гл. 12. Неопределенные значения и семантика баз В базе, удовлетворяющей ПУРС, никакие два хранимых отношения не могут иметь одну и ту же схему, так что схемы можно использовать для идентификации отношений. Для реляционной схемы R мы употребляем г (R) для обозначения отношения со схемой R в базе данных независимо от его реального имени *). Мы накладываем условие естественности на W-функции: [R, d] = = г (R) для любой реляционной схемы R базы ά. Функция [· ]t нарушает условие естественности. Если на состояние базы данных не наложено дополнительных ограничений, условие естественности означает, что реляционная схема всегда является неявным аспектом W-функции. В последующих разделах будет исследовано несколько *W- функций. Первая из них определяется с помощью соединений некоторых отношений из базы данных. Другие функции определяются как проекции одного отношения, возможно содержащего неопределенные значения. 12.5.4. W-функция, основанная на соединениях Зафиксируем множество аспектов О с подмножеством R, являющимся схемой базы данных d. Как и прежде, г (R) обозначает отношение над R для любого R ζ R. Мы разрешаем одной реляционной схеме быть подсхемой другой, но требуем при этом, чтобы соответствующие отношения удовлетворяли условию вхождения. Исходя из свойств определяемой функции, нам потребуется еще, чтобы каждый аспект W из О был объединением аспектов (схем) из R. Мы определяем W-функцию следующим образом: [W, d)Rf о = ><г (Я), для W £ О. Пример 12.43. Рассмотрим множество аспектов О = {ФАКУЛЬТЕТ, ФАКУЛЬТЕТ КУРС-№, ФАКУЛЬТЕТ КУРС-№ ЛЕКТОР, ФАКУЛЬТЕТ КУРС-№, ФАКУЛЬТЕТ КУРС-М? СТУДЕНТ, ФАКУЛЬТЕТ КУРС-№ СТУДЕНТ КОЭФФИЦИЕНТ, ФАКУЛЬТЕТ КУРС-№ СТУДЕНТ ЛЕКТОР} и базу данных d с подсхемой ^{ФАКУЛЬТЕТ, ФАКУЛЬТЕТ КУРС-М?, ФАКУЛЬТЕТ КУРС-№ ЛЕКТОР, ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ, ФАКУЛЬТЕТ КУРС-№ СТУДЕНТ}. Множества R и О изображены на рис. 12.36. Сплошными линиями обведены схемы в R; пунктирными — аспекты в О — R. На таблице 12.12 приведено состояние базы данных d. Таблица 12.13 дает значения [ФАКУЛЬТЕТ КУРС-№ ЛЕКТОР СТУДЕНТ ]R, о и [ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СТУДЕНТ]«.0. *) Отношение г (R) зависит от базы d, поэтому для него более точным было бы обозначение d (R) или га (R)· — Прим. перев.
12.5. Неоднородная информация и Семантика баз 405 Рис. 12.36. Функция Mr, о удовлетворяет условию включения, даже если база данных d ему и не удовлетворяет (см. упр. 12.47). Можно также не выполнять соединений для некоторых аспектов (см. упр. 12.48). Эта W-функция является естественной, если база удовлетворяет условию включения. Чтобы доказать это, заметим, что для схем R и S в R, если R s S, то г (R) ><r (S) = г (S). Таблица 12.12. Состояние базы d г (ФАКУЛЬТЕТ) Экон Мат Ист Англ г (ФАКУЛЬТЕТ Экон Экон Мат Ист г (ФАКУЛЬТЕТ Экон Экон Мат Ист Ист г (ФАКУЛЬТЕТ Экон Экон Экон Ист Ист г (ФАКУЛЬТЕТ КУРС-№) Экон Экон Мат Ист Ист КУРС-№ 101 102 120 306 КУРС-№ 101 102 120 306 308 КУРС-№ 101 101 102 308 308 101 102 120 306 308 ЛЕКТОР) Галлер Гарвей Джордж Гантер КОЭФФИЦИЕНТ) 4 3 4 4 3 СТУДЕНТ) Адаме Аллен Эндрюс Адаме Эндрюс
406 Гл. 12. Неопределенные значения и семантика баз Таблица 12.13. Значения W-функций [ФАКУЛЬТЕТ Экон Экон Экон Ист Ист [ФАКУЛЬТЕТ Экон Экон Экон КУРС-№ 101 101 102 308 308 КУРС-№ 101 101 402 КОЭФФИЦИЕНТ 4 4 3 3 3 ЛЕКТОР Галлер Галлер Гарвей СТУДЕНТ ]R 0 Адаме Аллен Эндрюс Адаме Эндрюс СТУДЕНТ ]R# о Адаме Аллен Эндрюс Таблица 12.14. Значения W-функций (продолжение) [СТУДЕНТ КОЭФФИЦИЕНТ]^ 0 [СТУДЕНТ ЛЕКТОР] R 0 Адаме 4 Адаме Галлер Адаме 3 Аллен Галлер Аллен 4 Эндрюс Гарвей Эндрюс 3 Эндрюс 3 Таким образом, для любой S 6 R ><f(R) = r(S). R£R R^S Мы расширяем Mr, о на произвольные множества атрибутов способом, указанным в предыдущем разделе. Пример 12.44. Продолжаем пример 12.43. Отношения [СТУДЕНТ КОЭФФИЦИЕНТ]Ri о и [СТУДЕНТ ЛЕКТОР]к,0 показаны в табл. 12.14. Значение [ЛЕКТОР КОЭФФИЦИЕНТ]Ri 0 всегда будет пустым, поскольку ни один из аспектов в О не содержит обоих атрибутов ЛЕКТОР и КОЭФФИЦИЕНТ. Мы вернемся к этой, основанной на соединении W-функции при изучении языка запросов PIQUE в гл. 15. 12.5.5. Слабоуниверсальные отношения Понятия, лежащие в основе приводимых ниже определений W- функций, возникают из задач глобального выполнения зависимостей в базе данных. Пример 12.45. Рассмотрим"|базу данных из табл. 12.15 с отношениями на схемах ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СЕМЕСТР и ФАКУЛЬТЕТ КУРС-М? КОЭФФИЦИЕНТ СТУ-
12.5. Неоднородная информация и семантика баз Таблица 12.15. Противоречивая база данных г (ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СЕМЕСТР) 407 Экон Экон Мат Мат Мат г (ФАКУЛЬТЕТ Экон Экон Экон Мат Мат 106 108 211 211 286 КУРС-№ 106 106 108 286 286 4 4 3 3 3 II I I II I КОЭФФИЦИЕНТ СТУДЕНТ) 4 4 3 4 4 Балфур Берентс Балфур Берентс Браун ДЕНТ. Оба отношения удовлетворяют F-зависимости ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ, однако они представляют различные функции из ФАКУЛЬТЕТ КУРС-№ в КОЭФФИЦИЕНТ. Хотя состояние базы не обязано быть проекцией общего отношения, каждое состояние в некотором смысле содержится в таком отношении. Определение 12.11. Пусть d — база данных со схемой R = = \Ri> #2> ··· ι #р}> гДе U = R1R2 ··· Rp- Отношение s со схемой U называется слабоуниверсальным отношением для d, если nR.(s)^r(Ri) для каждой схемы Rt £ R. Здесь мы стоим на той точке зрения, что база данных — это множество ее слабоуниверсальных отношений. Их использование при обсуждении базы данных предполагает, что строки с универсальной схемой U имеют смысл, хотя универсального отношения с этой схемой, быть может, и не существует. Слабоуниверсальные отношения будут использоваться при обсуждении глобального выполнения зависимостей в базе данных. Определение 12.12. Пусть дана база d со схемой R = [Rly #2> ··· ι Rp], причем U = RxRz ... Rp, и пусть С — множество зависимостей на U. База d глобально удовлетворяет С, если для нее существует слабоуниверсальное отношение, которое удовлетворяет С в обычном смысле. Пример 12.46. Если d — база данных из примера 12.46 и F= {ФАКУЛЬТЕТ КУРС-№ -> КОЭФФИЦИЕНТ}, то d не удовлетворяет глобально F. Если изменить отношение/* (ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СТУДЕНТ), как показано
Экон Экон Экон Мат Мат 106 106 108 286 286 4 4 4 3 3 Экон Экон Экон Мат Мат Мат Мат 106 106 108 211 211 286 286 4 4 4 3 3 3 3 408 Гл. 12. Неопределенные значения и семантика баз Таблица 12.16. Модифицированное отношение г (ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СТУДЕНТ) Балфур Верен тс Балфур Берентс Браун Таблица 12.17. Слабоуниверсальное отношение s s (ФАКУЛЬТЕТ КУРС-№ КОЭФФИЦИЕНТ СЕМЕСТР СТУДЕНТ) II Балфур II Берентс I Балфур I Батчер II Батчер I Берентс I Браун в табл. 12.16, то d будет глобально удовлетворять F. Слабоуниверсальное отношение s для d, удовлетворяющее F, показано в табл. 12.17. Для базы данных d над U и множества С зависимостей над U отношение s (U) есть С-слабоуниверсальное отношение (C-WI) для d, если s есть слабоуниверсальное отношение для d, удовлетворяющее С. Очевидно, что d имеет C-WI тогда и только тогда, когда d глобально удовлетворяет С. С помощью слабоуниверсальных отношений можно определять W-функции. Рассматриваются общие части всех слабоуниверсальных отношений для базы данных. Пусть d — база над U, С — множество зависимостей над U и X — произвольное подмножество U. По определению, IX, d]c = П я* (s). s есть C-WI для d Иначе говоря, [X, dlc состоит из значений на X, входящих в некоторую строку, принадлежащую любой С — WI для d. Это определение удовлетворяет условию включения. Для множеств X и У, таких, что X s Υ, если t входит в πγ (s) для всякой C-WI s для d, то t (X) обязательно входит в пх (s) для каждой такой s. Это определение функции [ · ]с не дает эффективной процедуры ее вычисления, поскольку база d может иметь бесконечное множество C-WI. К счастью, когда С состоит из F- и J-зависимостей, можно использовать nchase для вычисления [·]ς.
12.5. Неоднородная информация и семантика баз 40§ Определение 12.13. Пусть дано отношение г из Rel\(R), и пусть X ^ R. Х-полная проекция г, обозначаемая л [χ (г), есть \t(X)\t £ г и i(X)j}. Х-полная проекция г есть множество «Х-ку'сков» строк из г, которые содержат определенные значения. А В С ) А_ 1 1 2 2 J*> 4 5 4 6 ?(Д С) 4 7 5 7 6 8 Рис. 12.37. 7(А 1 2 3 3 _С) 7 8 8 9 1 1 2 2 -1-5 ^6 -1-7 1 2 3 3 4 -L, 5 ±2 4 ±з 6 J.4 4 7 5 7 6 8 -L8 1 ±9 8 -Lio 8 -1-11 9 Рис. 12.38. Если г есть отношение со схемой R и U — множество атрибутов, содержащее /?, то PAD (r, U) есть отношение из Rel](U)f полученное растяжением каждой строки до схемы U с помощью различных помеченных неопределенных значений. (Отношения, с которыми мы будем иметь дело, сами не содержат неопределенностей.) Для базы данных d над U отношение PAD (d) есть U PAD (r, U). Иначе говоря, все отношения в d приводятся Γξ.ά к общей схеме. Пример 12.47. Пусть d — база данных (рис. 12.37). Отношение PAD (d) показано на рис. 12.38. Вычисление nchase из разд. 12.2 может быть легко расширено таким образом, чтобы включить аналог J-правила в обычное вычисление прогонки. Однако в отличие от F-зависимостей не существует сильного нарушения для J-зависимостей. Теорема 12.1. Пусть даны база данных d над U и множество С Fr и J-зависимостей над U. Для любого подмножества X схемы U [X, d]c - π [χ (nchasec (PAD (d))). Доказательство предоставляется читателю (см. упр. 12.56).
410 Гл. 12. Йеопределеннке значения и семантика баз Выбором С определяется своеобразие W-функции. Одна из возможностей — положить С равным {* [Rlt R2, ··· , #ΡΗ> гДе R = \Rlt R2i ... , Rv\ — схема базы. В этом случае вместе [· ]с [А В C]«R 1 4 7 2 6 8 Рис. 12.40. Пример 12.48. Пусть d — база данных из рис. 12.37, для которой R = \АВ, ВС, АС]. Отношение nchasej (s) показано на рис. 12.39, где J = {* [R]} и s = PAD (d). Рис. 12.40 представляет отношение [АВС]*ц. W-функция [·]·κ является естественной, если база удовлетворяет условию включения (см. упр. 12.57). Функция M*r почти наверняка трудно вычислима для произвольных схем баз данных, поскольку для множества атрибутов X и строки t определение вхождения ί ζ [X]*r является NP-полным. В гл. 13 мы рассмотрим класс схем, для которых функция становится легко вычислимой. При использовании [-1с возникают затруднения, если С включает множество F F-зависимостей. База d не обязана глобально удовлетворять F, следовательно, не существует множества С-слабоуниверсальных отношений (C-WI). В этом случае необходимо дополнительно потребовать, чтобы d глобально удовлетворяла F, поскольку выполнения F на отдельных отношениях недостаточно, как показывают примеры 12.45 и 12.46. Вычисление nchasep (PAD (d)) для каждого обновления базы данных слишком большая роскошь. Однако если F-зависимости из F используется обозначение [· ]«R. nchasej{s)\A 1 1 2 2 ■LS' JL6 It 1 2 3 3 1 2 Рис. 12.35 В 4 5 4 6 4 5 6 J-8 J-Q J-ю J- 11 4 6 ). С ■И J-2 J-3 -L-f 7 7 8 7 8 8 9 7 8
12.5. Неоднородная информация и семантика баз 411 представлены ключами в схеме базы, то существует более эффективный способ проверки того, что d имеет F-WI. Определение 12.14. Пусть d — база со схемой R ={#ь #2>··· ... , Rp\ и Kf — множество ключей для Rt, 1 <: i ^ p. Пусть F — множество F-зависимостей, которые полностью определяются ключами из R. База d удовлетворяет модифицированному ограничению на чужой ключ 1) (МОЧК) относительно F, если для каждого Rt £ R и t £ r (Rt) найдется такая строка f над Rt 2), что для любого Rf с Rf имеет место t' (Rj) £ г (Rj), и в частности f (Rt) = ί. НА В) 7(В С) 7(А С) 7(С D) 12 2 3 14 4 3 7 8 5 3 5 6 8 6 5 6 Рис. 12.41. Пример 12.49. Рассмотрим базу d со схемой jR = \AB, BD, AC, CD], представленную на рис. 12.41. В каждой схеме подчеркнут единственный ключ. Эти ключи полностью определяют множество F-зависимостей F = \А -> В, В -> D, А -> С, С -> D}. База d не удовлетворяет МОЧК Для F. Рассмотрим г (АВ) и строку t = (7 8). Легко видеть, что (АВ)+ = ABCD, но не существует такой строки t' над ABCD, что f (АВ) = ί и t' (R) £ г (R) для любой другой схемы R ^ ABCD. Если добавить (7 5) кг (АС), то такая строка существует, а именно t' = (7 8 5 6). С добавлением (7 5) d удовлетворяет МОЧК относительно F. Если каждое отношение базы d соблюдает свои ключи и удовлетворяет МОЧК относительно полностью характеризуемого этими ключами множества F зависимостей, то d глобально удовлетворяет F. Это следует из той структуры, которую будет иметь nchaseF(PAD) (d)). Пусть t — такая строка из PAD (d), что DEF (t) = Rt, т. е. / возникла из отношения г (Rt) из d. Если /*— соответствующая строка для t в nchaseF (PAD (d)), то DEF (/*) ^ 3 Rt, что следует из МОЧК. В самом деле, t* (Rt) будет в точности той строкой t' для t, которую требует МОЧК. Отсюда t* (Rj) G r (Rj) Для любой схемы Rj s Rt- DEF (t*) не может *) Ограничение на чужой ключ подразумевает, что если Ri содержит Kj для kj и ti£ r (Ri), то найдется такая строка tj в Rj, что U (Kj) = tj (Kj). 2) Напомним,-что /^"означает замыкание Ri относительно Ff. — Прим. перее.
412 Гл. 12. Неопределенные значения и семантика баз быть шире, чем Rf, поскольку прогонка происходит с ключевыми зависимостями базы (или с эквивалентным множеством F-зави- симостей). Предположим, что строка /*, а также некоторая строка из nchaseF (PAD (d)) нарушают F. Пусть и* происходит из строки и в PAD (d), причем DEF (и) = Rk. Поскольку ключи базы d полностью характеризуют F, то t* и и* должны нарушать Kj -*- -> Rj для некоторой реляционной схемы Rt и ключа Kj £ К/. D(d)(A 1 7 JL5 J-7 JL9 1 7 L.5 J- 17 Рис. В 2 8 2 5 8 1 1 1 1 η 13 16 18 12.42. С J-i •-L-3 -Lb J-8 -1-10 4 5 4 5 D ) J-2 J-4 3 3 6 112 -L 14 3 6 s(A 1 7 J-5 ■1-7 ^9 -L.5 J- 17 Я 2 8 2 5 8 1 1 Рис. 16 18 _c 4 5 -Lo ^8 1 10 4 5 12.43. _D 3 6 3 3 6 3 6 Так как /?/" и Rf определены на /С-, каждая из них содержит Rj. Используя замечание из предыдущего абзаца, имеем t* (Rj) £ £ г (Rj) и w* (#7·) £ f (/?*)· Если /* и «* нарушают /Су -> /?;, то г (Rj) также нарушает эту зависимость. Мы доказали следующий результат: Теорема 12.2. Пусть даны база d и множество F V-зависимостей, полностью характеризуемое ключами ά. Если d удовлетворяет Μ04К относительно F и каждое отношение из d удовлетворяет своим ключам, то d глобально удовлетворяет F. Пример 12.50. На рис. 12.42 показано отношение PAD (d) для базы d из рис. 12.41 с добавлением (7 5) к г(АС). На рис. 12.43 показано отношение s = nchaseF (PAD (d)), где F — множество F-зависимостей из примера 12.48. Неопределенные значения в s должны быть заполнены, чтобы получить F-WI для ά. 12.5.6. Независимость Соблюдение ограничения МОЧК все же не исключает просмотра нескольких отношений при обновлении одного отношения. Желательно, однако, иметь способ, гарантирующий глобальное удовлетворение и требующий просмотра только того отношения, которое подвергается обновлению.
12.5. Неоднородная информация и семантика баз 413 Определение 12.15. Пусть даны схема базы R и множество F F-зависимостей над R. Схема R называется независимой для F, если всякая база d над R, которая удовлетворяет F (каждое отношение удовлетворяет применимым к нему F-зависимостям), глобально удовлетворяет F. Независимость можно перефразировать как «локальное удовлетворение гарантирует глобальное удовлетворение». В случае когда F задается ключами из R, существует необходимое и достаточное условие независимости. До конца этого раздела будем считать, что нам дана реляционная схема R = \ЯЪ R2, ... , Rv\, где Rt имеет множество ключей Kj. Пусть Ft = [К-*· Ri\K £ £ Κι}, 1 <£ i <£ р. Пусть F = U Ft н F_j = U Ft. t+f Символ Х+ будет обозначать замыкание множества атрибутов относительно F, а Χί/ — замыкание относительно F_7·. Определение 12.16. Пусть даны R и F, определенные выше. Реляционная схема /?f £ R удовлетворяет условию уникальности относительно F, если не существует такого /?/ £ R, i =5^ /, что для некоторого ключа К £ К у и некоторого атрибута β £ /?7· — /С /СВ€(Я|)±/· Схема R удовлетворяет условию уникальности относительно F, если каждая схема /?^ ζ R ему удовлетворяет. Условие уникальности выражает следующую идею: для любого множества атрибутов X имеется всего один способ вычисления Х+. Иными словами, если даны два основанных на F-зависимо- стях DDA-графа Нг и #2 для X -> Х+, то добавление атрибута В в #! с использованием некоторой F-зависимости в Ft влечет за собой добавление его в Я2 с помощью некоторой F-зависимости в Ft (см. упр. 12.57). Если R удовлетворяет условию уникальности относительно F, то R находится в НФБК относительно F (см. упр. 12.58). В частности, никакая зависимость К ->■ А из F не может накладываться более чем на одну схему из R. Пример 12.51. Пусть R = {Rl9 R2t R3i #4|, где Rx = AB, R2 =JBD, R3 = AC и #4 = CD, причем в каждой схеме подчеркнут единственный ключ. Эти ключи представляют собой множество зависимостей F = \А -> В, В ->D, A -> С, С ->D} (подразумеваемые атрибуты не указаны). Схема R не удовлетворяет условию уникальности относительно F. Рассмотрим Rlt R± и F_4 = {Л -> β, β -> D, Α -> С}. Имеем (#0+4 = Л5С£. Атрибут С является ключом в i?4 и D £ #4 — 5, причем AD ^ (i?i)+4> поэтому /?! нарушает требование уникальности.
414 Гл. 12. Неопределенные значения и семантика баз Пример 12.52. Пусть R = \Rl9 R29 R3\, где R1 = ABC, R2 = BCD и R3 = AD£, и в каждой схеме подчеркнут единственный ключ. Далее F = \АВ -> С, ВС -> D, ^4D ->- E\\ R удовлетворяет условию уникальности относительно F. Например, (Ri)—2 = Яь которая содержит 5С, но не D из #2. Имеем также (#i)±3 = ^BCD, т. е. (Я^ содержит Ж), но не Ε из Яд- Перед тем как перейти к основной теореме данного раздела, сделаем два утверждения. Утверждение 1. Пусть даны база данных d над U и множество F F-зависимостей над U. Образуем базу d'9 добавляя строки к некоторым или всем отношениям в d. Если d' имеет F-WI s, то s является F-WI и для d. Определение 12.17. Пусть s £ Rel } (R), и t, и — строки из s. Будем говорить, что ί доминирует над и в s, если ί (А) = и (А), когда ί (А) является определенным значением, или помеченным неопределенным значением, встречающимся в других местах в s. Утверждение 2. Пусть s £ Rel \ (R) и F — множество F-зависимостей над R. Пусть ί — строка в s, которая доминирует над другой строкой и в s. Если ί* иа* — строки в s* = nchaseF (s), соответствующие / и и в s, то /* доминирует над «* в s*. Из утверждения 2 следует, что при вычислении nchaseF (PAD(d)) для определения, имеет ли d некую F-WI, можно в любое время удалить доминируемую строку, что не повлияет на результат. Теорема 12.3. Пусть R = \Rl9 R2, ... , Rp\ — схема базы над U, и пусть Ki, 1 <£ i <£ ρ, Fit 1 < i < ρ, и F определены описанным выше образом. Схема R является независимой для F тогда и только тогда, когда R удовлетворяет условию уникальности относительно F. Доказательство. Достаточность. Предположим, что R удовлетворяет условию уникальности относительно F. Покажем, что всякая база d над R, которая удовлетворяет ключам из R, имеет некую F-ψ]. Для этого мы построим базу d\ которая имеет F-WI и является расширением d. Из утверждения 1 будет следовать, что и d имеет F-WI. Мы будем вычислять nchaseF (PAD (d')) и покажем, что при этом не будет сильных нарушений. Фактически начнем с вычисления nchaseF (PAD (d)). При этом мы будем добавлять строки в d и, следовательно, в PAD (a) *). Добавление строк во время вычисления nchase не вызовет проблем, поскольку мы можем делать вид, что эти строки существовали с самого начала, но до некоторого момента мы их не трогали. *) Таким образом, а' — это d с добавлением некоторых строк, определяемых ниже, — Прим. перев.
12.5. Неоднородная информация и семантика баз 415 Вычисление nchase будет организовано таким образом, что для строки t* из PAD (d) на некотором промежуточном шаге DEF (t*) будет объединением схем из R. Кроме того, t* никогда не будет иметь неопределенных значений, которые встречаются еще где-либо в PAD (d). Пусть s* ζ Rel ] (U) — состояние PAD (d) в некоторый момент вычисления nchase, и необходимо применить F-зависимость К -+ А к строкам t* и а* в s*, которые согласованы на /С. Предположим по индукции, что t* (К) [- По условию F таково, что К — ключ для некоторой схемы Rt, и Α £ Rt — /С. Во-первых, вместо уравнения t* и и* на А уравняем их на всех Rt — К сразу (небольшое расширение правила заполнения). Во-вторых, хотелось бы избежать уравнивания помеченных неопределенных значений в /* и и*. Если существует такая строка ϋ ζ f (i?j), что υ (Κ) = t* (К) = и* (/С), то все в порядке. Тогда должна существовать такая строка ν* в s*, что υ* (К) = t* (К) = и* (К) и v* (Rt) 1· Вместо уравнивания неопределенностей в t* я и*, мы приводим t* (Ri — К) и и* (Ri — К) к υ* (^ — К). (Уравнивание /*, и* и у* на /^ — К фактически требует двух шагов в вычислении nchase.) К сожалению, нет гарантии, что г (Ri) содержит такую строку и, что υ (К) = t* (К) = и* (К)- То:да необходимо добавить ее в г (Ri). Если выбрать для υ (Ri — К) значения, не встречающиеся в г (Ri), то никакие ключи в Rt ье будут нарушены. (Почему?) Затем υ растягивается с помощью новых помеченных неопределенных значений и становится частичной строкой υ* над U. Добавляем υ* в s* и переходим к приведению t* (Rt — /С) и α* (Rt — К) к у* (Ri — К)- Теперь необходима осторожность: после изменений в t* имеем t* (Ri) = v* (Rt) иву* есть отличающиеся помеченные неопределенные значения на U — Ri. Согласно утверждению 2, можно удалить υ* из s*, так как t* ее заменяет. Удаляем у*, чтобы обеспечить завершаемость процесса прогонки. Результат всех этих действий состоит в придании t* (В) значения, когда t* (В) и и* (В) — помеченные неопределенности, аВ ζ Ri—/С. Будем считать до конца доказательства, что если s* есть некоторое состояние вычисления nchaseF (PAD (d)) и t* — строка в s*, то DEF(t*) — объединение схем из R. Кроме того, будем считать, что t* не содержит помеченных неопределенных значений. Из этих предположений относительно вычисления nchaseF (PAD (d)) можно вывести определенные следствия. Пусть t — такая строка в PAD (d), что DEF (t) = Rt. Пусть t* — соответствующая строка в некотором состоянии s* вычисления nchaseF (PAD (d)). Для Rj £ R, если Rj gt DEF (**), то (/?,)+, э 3 DEF (f). Никакие зависимости, возникающие из-за ключей
416 Гл. 12. Неопределенные значения и семантика баз в Rj, небыли использованы для заполнения ί*, иначе DEF (t*) з 3 Rj. Отсюда следует, что если DEF (t*) содержит некоторый ключ К из Rj и атрибут А £ Rj — К, то DEF (**) целиком содержит Rj. Иначе (i?f)i/ содержит /(Л, и нарушается условие уникальности. После всех этих манипуляций мы должны еще показать, что во время вычисления nchaseF (PAD (d)) не происходит сильных нарушений. Изначально в PAD (d) нет сильных нарушений, поскольку все отношения в d соблюдают свои ключи, и никакие две реляционные схемы не содержат общей зависимости. Строки, попутно добавляемые в PAD (d), выбираются таким образом, чтобы не нарушать ключей. Предположим, что в некотором состоянии вычисления nchasep (PAD (d)) впервые встречается сильное нарушение. Пусть это состояние будет s*, и пусть t* и и* нарушают F-зависимость К ->- А. Напомним, что t* и и* должны быть обе определены на КА. Пусть t* (А) = а и и* (А) = а!. Поскольку сильное нарушение впервые встретилось в состоянии s*, одна из строк t* или w* была только что изменена. Допустим, что изменилась t*, и вернем вычисление на один шаг назад, на момент перед изменением t*. Рассмотрим три случая, отличающиеся тем, как части ί* должны быть заполнены. Случай 1. С помощью F-зависимости Υ ->- А было получено значение а для t* (А) из строки υ*. При этом К φ Υ, иначе уже было бы сильное нарушение К ->- А на пути от и* до у*. Ключи К и Υ не входят в одно и то же К/, иначе было бы Rj э KYA. Множество DEF(t*) содержит /Си Y, но не содержит А и, следовательно, Rj. Мы отмечали, что способ вычисления nchase не допускает такой ситуации. Пусть t — это строка в PAD (d), из которой произошла t*. Пусть DEF(t) = Ri, и Y-+A соответствует Rj. Прежде чем t* (А) была заполнена, имело место DEF (t*) φ Rj> так что (flj)i/ з KY- Зависимость К -*- А не соответствует Rj, поэтому (Ri)-j з KYA, что означает, что Rt нарушает условие уникальности относительно Rj. Случай 2. С помощью F-зависимости Υ -> К! было получено значение для t* (К) из строки у*, где К = K'W для некоторого множества (возможно, пустого) W. Ключи К и Υ не входят в одно и то же К/, так как t* определена на Υ и W, но не на К\ следовательно, не определена на Rj. (Если W = 0, то A g У, ибо иначе и* и у* нарушали бы К -+ Y. Если Л g Y, то D£F (ί*) содержит ΥАу но не /С' = /С, поэтому не содержит fly.) Допустим, что t* получена из t в PAD (d), причем Df/7 (ί) = fl*, и К -* Λ соответствует fly. Прежде чем £* была заполнена на К\ выполнялось Df/7 (ί*) з fly, отсюда (Д£)±, з Г ГЛ. Поскольку Г -* К
12.5. Неоднородная информация и семантика баз 417 получена не из Rjy имеем (7?ι)Σ/ 3 YK'WA = У7(Л. Таким образом, Ri нарушает условие уникальности относительно Rj. Случай 3. С помощью Υ ->- /С'Л было получено значение для ί* (/С'Л) из строки у*, где /С = K'W для некоторого №. Множество ψ Φ 0, иначе w* и у* нарушали бы /С ->- Л. Ключи /С и У" не входят в одно и то же R$, так как DEF (t*) содержит YW, но не содержит К и, следовательно, Rj. Пусть /* получено из t в PAD (d), причем DEF (t) = Riy и пусть К ->- А соответствует Rj. Прежде чем t* была заполнена на К! А, имело место DEF (t*) £ 3? Rj, откуда (Ri)-j 2 КНР. Поскольку У -> /С'Л не соответствует Rj, то (Яг)±/ =2 Г/С ИМ = YKA. Следовательно, R{ нарушает условие уникальности относительно Rj. Во всех случаях мы получили противоречие с предположением об уникальности. Отсюда следует, что вычисление nchaseF (PAD (d')) не содержит сильных нарушений Т7, где d' получено из d добавлением некоторых строк. База а' и, следовательно, d имеет F-WI. Таким образом, R является независимой относительно F. Необходимость. Эта более простая часть доказательства предоставляется читателю (см. упр. 12.59). Возвращаясь к W-функциям, рассмотрим функцию l-]F, где F есть множество F-зависимостей, задаваемое ключами схемы R базы данных. Пусть R удовлетворяет условию уникальности. Вычисление [X, d]F не составит труда, если d локально удовлетворяет ключам R, так как гарантировано существование F = WI. В этом случае [X, d]F может быть эффективно вычислена с помощью соединений (см. упр. 12.60). Кроме того, 1-]р является естественной, если каждое отношение имеет нетривиальный ключ (см. упр. 12.61). 12.5.7. Другие условия на W-функции В этом последнем разделе мы рассмотрим некоторые другие условия, накладываемые на W-функции. Некоторые авторы склонны истолковывать эти условия как следствия ПУРС. Ранее было рассмотрено условие естественности, которое должно было обеспечить согласованность между хранимыми отношениями и W- функцией. Условие естественности все же не гарантирует полностью цельность семантики хранимых отношений. Естественная W-функция может индуцировать такие связи на подмножествах реляционной схемы, которые не входят в ее подразумеваемую семантику.
418 Гл. 12. Неопределенные значения и семантика баз Рис. 12.44. Пример 12.53. Рассмотрим схему базы данных R = {САМОЛЕТА ГОРОД АНГАР-№, ГОРОД АНГАР-№ МЕХАНИК, САМОЛЕТ-№ МЕХАНИК ПОСЛ-ОБСЛ}, где подчеркнуты все ключи. Это та же схема, что и в примере 12.52, с точностью до переименования. Пусть F — множество задаваемых этой схемой F-зависимостей. Предполагаемый смысл строки (р с К) над атрибутами САМОЛЕТ-№ ГОРОД АНГАР-№: самолет ρ обслуживается в ангаре h во время пребывания в городе с. Строка (с h т) с атрибутами ГОРОД АНГАР-№ МЕХАНИК означает, что т отвечает за обслуживание ангара h в городе с. Строка (р т I) означает, что последнее обслуживание механиком т самолета ρ происходило в день /. W-функция [-]F совпадает с W-функцией Mr. о, где О = R U {САМОЛЕТ-№ ГОРОД АНГАР-№ МЕХАНИК, САМОЛЕТ-№ ГОРОД АНГАР-№ МЕХАНИК ПОСЛ- ОБСЛ}. Диаграмма, изображающая R и О, приведена на рис. 12.44 Рассмотрим строку (р т) из [САМОЛЕТ-№ МЕХАНИК ]F. Вникнув в смысл САМОЛЕТ-№ МЕХАНИК ПОСЛ-ОБСЛ, можно заключить, что (р т) означает существование такой даты /, что т обслуживал ρ в день /. Однако это могло следовать из строк (р с h) и (с h т) отношений г (САМОЛЕТ-№ ГОРОД АНГАР-№) и г (ГОРОД АНГАР-№ МЕХАНИК). Иными словами, если ρ будет обслуживаться в городе с, то это будет делать механик т. Этот второй смысл не следует из САМОЛЕТ-№ МЕХАНИК ПОСЛ-ОБСЛ, которое влечет за собой, что т уже работал с р. Разница заключается в противопоставлении потенциального и реального. Таким образом, [ · ]F не сохраняет цельность схемы САМОЛЕТ-№ МЕХАНИК ПОСЛ-ОБСЛ.
12.5. Неоднородная информация и семантика баз 419 Определение 12.18. Пусть дана схема R базы данных и W- функция [·] для баз над R. Условие строгой естественности на [· ] требует, чтобы для любой схемы R £ R, любого множества X ^ R и любой базы d над R значение [X, d] зависело бы только от состояний отношений, чьи схемы содержатся в R, т. е. от |r(S)|S£R, S £=/?}. Строгая естественность нарушается в примере 12.53, так как [САМОЛЕТ-№ МЕХАНИК If зависит не только от г (САМО- ЛЕТ-№ МЕХАНИК ПОСЛ-ОБСЛ). Мы видели в примере 12.52, что R удовлетворяет условию уникальности, так что это условие не гарантирует строгую естественность (см. упр. 12.70). Для W-функций типа [· ]r, о можно дать достаточное условие строгой естественности. Теорема 12.4. Пусть R —схема базы данных над U и О — множество аспектов, содержащее R. Предположим, что каждый аспект из О есть объединение схем из R. Тогда W-функция [·]r,о строго естественна, если О замкнуто относительно непустых пересечений (т. е. для W, Ζ £ О, если W (] Ζ Φ 0, то W fl П Ζ ξ О). Доказательство, Сначала покажем, что для любого подмножества X из U и базы d значение [X, gHr, о может быть получено из [У, gHr.o для некоторого 7^0, если О замкнуто относительно пересечения. Вспомним, что №,о= U Лх([Г]и.о). У £0 У^Х Пусть Ух, У2 принадлежат О и оба содержат X. Тогда Ух f] ^2 = = Уз не пусто и, следовательно, входит в О. По условию вложения на W-функцию имеем, что ях([Уг3Ь, о) содержит πχ (I^iIr. о) и пх ([У2Ь, о). Поэтому можно выбросить Yx и У2 из объединения при вычислении [X]r,o> не изменив результат. Продолжая подобным образом, можно удалить все аспекты из объединения, кроме одного. Назовем его У; имеем [X]R,o = nx([Y]Rt0). Мы показали, что если X содержитсятв некотором аспекте из О, то существует единственный минимальный аспект У, который содержит X. Иными словами, для любого W из О, который содержит X, имеет место W ^ У. Далее, значение [X ]r, о определяется значением [Y]r, о. Следовательно, если R — схема в R и X ^ R, то существует единственный минимальный У в О, такой, что Χ ξ У ξ /? (так как /? ζ О). Значение W-функции
420 Гл. 12. Неопределенные значения и семантика баз на X зависит от ее значения на Y, которое в свою очередь зависит от {r(S)|SGR, S<=Y), которое является подмножеством множества |f(S)|SGR, S<=R}. Замкнутость относительно пересечения не является необходимой для строгой естественности. Пример 12.54. Если R = {В, С, АВ, BD, AC, CD] и О = = R (J \АВС, BCD], то Mr, о строго естественна, но О не замкнуто относительно пересечения: ABC f| BCD = ВС, но ВС не входит в О. Существует еще одно условие на W-функции типа Mr, о, которое эквивалентно замкнутости О относительно пересечения. Это определение неприменимо к W-функциям, которые не могут быть заданы непосредственно аспектами. Определение 12.19. Пусть R — схема базы данных и О — множество аспектов, содержащих R. W-функция [·]Κι0 естественна для аспектов, если для любого аспекта W £ О и любого X^W значение [X]r,o зависит только от |г(/?)|# £ R, R £= W]. Аспектная естественность предохраняет базу данных от опасности, таящейся в малости знания. Если [· ]R, 0 естественна для аспектов, то знание смысла г (R) для каждой схемы R, содержащейся в аспекте W, позволяет определить смысл [X]r, о для любого Χ ^ W. Это не выполняется в случае, когда [-]r, о не является естественной для аспектов, как показывает последний пример. (Аспектная естественность влечет за собой строгую естественность.) Теорема 12.5. Пусть R —схема базы данных и О —множество аспектов, содержащих R. Предположим, что каждый аспект из О есть объединение схем из R. VJ-функция [· ]r, о естественна для аспектов тогда и только тогда, когда О замкнуто относительно непустых пересечений. Доказательство, Достаточность следует из теоремы 12.4. Доказательство необходимости оставлено в качестве упр^ 12.65. Главная идея заключается в том, что если X есть пересечение аспектов Ζ и W, но само аспектом не является, то [X]r, о зависит и от отношений над W, и от отношений над Z. Вообще говоря, существуют различные способы модификации схемы базы данных и множества аспектов так, чтобы аспекты стали замкнутыми относительно пересечения.
12.5. Неоднородная информация и семантика баз 421 Рис. 12.45. Рис. 12.46. Пример 12.55. На рисунках 12.45 и 12.46 показаны два способа модификации R и О из примера 12.53 для получения замкнутости О относительно пересечения. При первой модификации пары САМОЛЕТ-№, МЕХАНИК могут существовать независимо. При второй модификации пары САМОЛЕТ-№, МЕХАНИК означают только, что механик, вообще говоря, имеет потенциальную возможность получить доступ к данному самолету. Механик не может обслужить самолет, если он не имеет к нему доступа.
422 Гл. 12. Неопределенные значения и семантика баз Есть определенные основания для предпочтения замкнутости аспектов относительно пересечения аспектной естественности. Во-первых, это преимущество вычислительного характера, как показывает доказательство теоремы 12.4. Во-вторых, существует и семантический аргумент в пользу замкнутости относительно пересечения. Пусть W и Ζ — аспекты, причем X = W Π Ζ Φ 0· Мы знаем, что Х-значения имеют смысл без (W — 2)-значений (в Ζ) и Х-значения имеют смысл без (Ζ — Х)-значений (в W). Представляется, что Х-значения должны иметь смысл и без (W — Х)-значений, и без (Ζ — Х)-значений, т. е. X должен быть аспектом сам по себе. Пример 12.56. Обратимся к примеру 12.53 и рассмотрим атрибуты ГОРОД и АНГАР-№. Можно связать пару ГОРОД, АН- ГАР-№ без атрибута САМОЛЕТ-№ в г (ГОРОД АНГАР-№ МЕХАНИК). Эту же пару можно связать без помощи атрибута МЕХАНИК в г (САМОЛЕТ-№ ГОРОД АНГАР-№). Таким образом, пара ГОРОД, АНГАР-№ может существовать без атрибутов САМОЛЕТ-№ или МЕХАНИК, но нет места, где можно хранить эту пару, т. е. сообщить, что город с имеет ангар h. Однако обе модифицированные схемы примера 12.55 содержат ГОРОД АН- ГАР-№ в качестве реляционной схемы и, следовательно, могут хранить такие пары. 12.6. УПРАЖНЕНИЯ 12.1. Истинны или ложны следующие утверждения? (а) Если даны отношения г и s, причем г ^ s, и эти отношения имеют одинаковое число строк, то г > s. (Ь) Если даны отношения г и s, причем г > s, и для каждой строки tr £ г найдется такая строка ts ζ s, что tr > ts, то г > s. 12.2. Найдите пополнение отношения г минимальным числом строк г(А В С D) 1 1 1 ± 1 2 ± 3 3 1 4 4 ± 1 1 5 5 J_ 6 1 7 7 1 1 12.3*. Каково наименьшее число строк в любом пополнении отношения г с η столбцами и k строками? 12.4. Покажите, что г У- s и s >- г влечет за собой г — s. 12.5. Найдите отношения г и s, такие, что г >- s, и существует пополнение s, которое не является пополнением г. 12.6. Пусть г и s— отношения над схемой R. Покажите, что если каждое пополнение г есть пополнение s, то г >- s.
12.6. Упражнений 423 12.7. Пусть /— формула исчисления строк с единственной свободной переменной х, в которой встречается единственное отношение г. Дайте метод оценки выражения {х (R) \ f (χ)), когда г является частичным отношением. Допускает ли ваш метод, чтобы значение этого выражения само было частичным отношением? Можете попробовать, чтобы значение включало «действительную» и «возможную» компоненты. 12.8. Найдите такую формулу исчисления строк с частичным отношением г, чтобы 1s (/) была ложь для всякого пополнения s отношения г, но Iq ([) = истина для некоторого расширения q отношения г. 12.9. Покажите, что если в определении допустимости из разд. 12.2 заменить «пополнение» на «расширение», то получится эквивалентное определение. 12.10. Найдите множество F-зависимостей и отношение г так, чтобы некоторое неопределенное значение принимало одинаковое определенное значение в любом допустимом пополнении г, но это значение нельзя было бы вывести с помощью правила заполнения для непомеченных неопределенностей. Подсказка: вспомните о невыделенных переменных в табло. 12.11. Определите, в каких случаях два частичных отношения с помеченными неопределенными значениями имеют одно и то же множество пополнений. 12.12. Дайте определение частичного расширения для отношений с помеченными неопределенными значениями. Необходимо найти синтаксическое условие, показывающее, когда из одного отношения, рассматриваемого как множество аксиом, логически следует другое. 12.13. Покажите, что если в определении частичного пополнения отношений с помеченными неопределенными значениями неопределенности заменять только определенными значениями, то получается определение, эквивалентное определению пополнения. 12.14. Пусть г ζ Ret f (R) и F — множество F-зависимостей над R. Покажите, что пополнения nchasep (r) не обязаны быть допустимыми. 12.15. Пусть г ζ Rel \ (R) и F — множество F-зависимостей над R. Пусть г* = nchasep (г), причем г* Φ HV и t — строка, в которой t (А) = _1_г·, А £ R. Покажите, что г* имеет допустимые пополнения относительно F, которые не совпадают на t (А). 12.16. Найдите корректное и полное множество аксиом вывода для Е-огра- ничений. 12.17. Пусть Ε — множество Ε-ограничений над реляционной схемой R. Для подмножества X множества R обозначим через X* максимальное множество атрибутов Υ, таких, что Χ ~ Υ следует из Е. (X* аналогично Х+ для F-зависимостей). Пусть F — множество F-зависимостей над R. При добавлении строки t в отношении г £ Rel f (R) может случиться, что, хотя t изначально удовлетворяла Е, заполнение неопределенностей с помощью F привело к тому, что t стала нарушать Е. Напротив, строка t могла нарушать вначале Е, но заполнение неопределенностей после добавления привело к тому, что t стала удовлетворять Я. Используя Х+, X* и DEF (t), определите, когда (a) t гарантированно удовлетворяет Ε после добавления в г\ (b) t будет возможно удовлетворять Ε после добавления; (c) t наверняка будет нарушать Ε после добавления. 12.18. Покажите-, что если q является минимальным расширением г, то q есть тесное расширение г. 12.19. Является ли минимальное расширение отношения г обязательно и пополнением г? Всегда ли пополнение есть минимальное расширение? 12.20. Какая из приведенных ниже функций возможных расширений имеет смысл: (a) POSS^r)^ {s\si>.r и |s| = |r|}; (b) P0SS2 (r) ={s\ s i > г и | s | < | r |}; (c) P0SSs (r) — {s | s l у- г и никакое собственное подотношение s не пополняет г};
424 Гл. 12. Неопределенные значений и семантика баз (d) POSS4 (г) = {s | s I > г и никакое отношение с меньшим числом строк^ чем s, не расширяет г}? 12.21. Покажите, что для любой замкнутой функции POSS семейство множеств {POSS (г) | г ζ Rel \ (R)} не замкнуто относительно пересечения. 12.22. Покажите, что семейство множеств {POSSq (ή \ г £ Rel | (R)} замкнуто относительно пересечения. 12.23. Докажите, что не существует точного обобщения соединения для любой замкнутой функции возможных расширений. 12.24. Покажите, что если γ' — адекватное и ограниченное обобщение γ для замкнутой функции возможных расширений, то γ' является естественной по отношению к γ. 12.25. Покажите, что для POSSq имеет место г з s тогда и только тогда, когда r^s\ и г Z) s тогда и только тогда, когда г > s. 12.26. Докажите, что для всякого отношения г ζ Ret f (R) и всякой нетривиальной J-зависимости * [R] над R существует такое расширение г, которое не удовлетворяет * [R]. 12.27. Покажите, что |><]0 ограничен для POSSq- Подсказка: если q = = г ><]0 s и существует такое q', что POSSq (q) ^ POSSo (q') 3 POSSq (ή ><| >< POSSo(s), то q' ^ q и, следовательно, q' ^q. Рассмотрите строку / в q , которая не расширяется ни одной строкой из q. 12.28. Дайте точное обобщение проекции для POSSq. 12.29. Покажите, что о~^=а и ^==в являются адекватными и ограниченными для POSSq. 12.30. Докажите, что POSSq^ и POSSme являются разумными функциями возможных расширений. 12.31. (а) Дайте адекватное и ограниченное обобщение соединения и проекции для POSSq^. (b) Покажите, что не существует адекватного и ограниченного обобщения соединения для POSSqe- 12.32. Существуют ли адекватные и ограниченные обобщения объединения, соединения и выборки для POSSq и POSSme? 12.33*. Дайте синтаксическое определение rjls для функций POSSqe* POSSc и POSSme- 12.34. Существуют ли адекватные и ограниченные обобщения пересечения, дополнения и выборки по неравенству для какой-либо из POSSq, POSSq^, POSSc и P0SSME? 12.35. Покажите, что если оператор γ имеет адекватное и ограниченное обобщение γ' для функции возможных расширений и γ' неточен, то точного обобщения γ не существует. 12.36. Дайте правило для удаления избыточной строки для POSSq^, POSSc и POSSme- 12.37. Докажите следствие леммы 12.2. 12.38. Докажите обращение леммы 12.3. 12.39. Покажите, что определение π^ адекватно и ограничено для POSSB. Является ли оно точным? 12.40. Дайте адекватное и ограниченное обобщение о^=£ оператора о^_£ для POSSB. Чем отличаются а^в (σ*βα (г)) и σ*^ (^eJ3) (r))? 12.41. Покажите, что \}в точен для POSSB. 12.42. Докажите утверждение в доказательстве леммы 12.5. 12.43. Какие из обобщенных операторов, определенных для POSSq и POSSB, являются естественными? Какие из обобщенных бинарных операторов являются ассоциативными и коммутативными?
12.6. Упражнения 425 12.44*. Пусть О — множество аспектов над множеством атрибутов U, и пусть U является аспектом в О. Покажите, что найдется множество Ε Е-ограни- чений, такое, что [DEF (/) | / удовлетворяет Е) = О. 12.45. Покажите, что продолжение W-функции на любые множества атрибутов, данное в разд. 12.5, удовлетворяет условию вложения и на аспектах совпадает с исходной функцией. Определение 12.20. Для множества аспектов О и множества атрибутов X, аспект Ψ £ О является минимальным аспектом для X, если f э X, и не существует такого аспекта Ζ в О, что W ZD Ζ ^ X. 12.46. Докажите, что значение W-функции, продолженной на множество атрибутов X, может быть получено из значений исходной функции на минимальных аспектах для X. 12.47. Покажите, что W-функция, определенная в разд. 12.5.4, удовлетворяет условию вложения, даже если соответствующая база данных ему не удовлетворяет. Определение 12.21. Для схемы R базы данных и множества атрибутов X схема R ζ R является максимальной схемой для X, если X ^ R, и не существует такой схемы S в R, что X ^ S Z3 R> 12.48. Используя W-функцию из разд. 12.5.4, в предположении, что данная база удовлетворяет условию вложения, покажите, что [X, d]R 0 совпадает с соединением всех отношений г (R), где R — максимальная схема для объекта Χ ζ О. 12.49. Всегда ли база данных d имеет представляющее отношение s, такое, что по крайней мере для одного из отношений г (R) в d имеет место nR (s) = г? 12.50. Докажите теорему 12.1. Придется сделать некоторые предположения, чтобы справиться со случаем, когда nchaseQ (PAD (d)) = HV. 12.51. Покажите, что W-функция [·]*ρ естественна в любой базе, удовлетворяющей условию вхождения. 12.52*. Каковы неявные аспекты для Ы*к> где R = {Rly R2, ... , Rp} ? Определите [W]*R Для неявных аспектов W в терминах соединений. 12.53. Пусть d — база со схемой R над U и F — множество F-зависимостей над U. Пусть, далее, t — строка в PAD (d) и t* — соответствующая строка в nchasep (PAD (d)). Докажите, что DEF (t)+ = DEF (f). 12.54. Покажите, что ограничения на чужой ключ не достаточно, чтобы из локальной выполнимости множества F-зависимостей в базе данных следовала бы глобальная выполнимость. 12.55. Покажите, что [· ]f является естественной для базы d, которая удовлетворяет МОЧК относительно F. 12.56*. Рассмотрите [-]f на базах над схемой R = {Rlt R2, ... , Rp}, которые удовлетворяют МОЧК относительно F. Определите неявные аспекты для [· ]f и для каждого аспекта W дайте определение [\V]p с помощью соединений. 12.57. Пусть R = {Rlt ... , Rp}, Flt F2, ... , Fp и F взяты из разд. 12.5.6. Пусть, далее, U = R1R2 ... ^р и X ^ U. В предположении, что R удовлетворяет условию вхождения, покажите, что конструкция основанного на F-зависимо- стях DDA-графа для Х-> Х+ уникальна относительно Flt F2, ... , Fp. Для любого атрибута А £ Х+ — X найдется такой единственный /, зависящий от А и X, что вершина для А может быть добавлена к DDA-графу лишь при помощи некоторой F-зависимости из Fj. 12.58. Докажите, что условие уникальности влечет за собой НФБК· 12.59. Докажите необходимость в теореме 12.3. Если R нарушает условие уникальности относительно F, постройте базу d, которая локально удовлетворяет /\ но не удовлетворяет F глобально Подсказка: в такой базе каждое отношение состоит ровно из одной строки, .
426 Гл. 12. Неопределенные значения и семантика баз 12.60*. Пусть R—схема базы и F—множество F-зависимостей, задаваемое ключами R. Для базы d над R и множества атрибутов X покажите, что [X, cI]f может быть вычислено с помощью объединения, проекции и расширенных соединений. 12.61*. Условие уникальности не допускает схем баз данных, в которых одна реляционная схема является подсхемой другой, за исключением случая, когда подсхема имеет единственный, тривиальный ключ. Предположим, что мы изменили определение условия уникальности так, что (Ri)Z.: может содержать ключ и другой атрибут из Rj, если Ri з Rj. Измените определение независимости так, чтобы локальное удовлетворение и условие вложения влекли бы за собой глобальное удовлетворение. Покажите, что теорема справедлива и при измененных определениях. 12.62. Пусть R — схема базы, чьи ключи определяют множество F-зависимостей F. Покажите, что [*]f является естественной, если R удовлетворяет условию уникальности.' Покажите, что [·]ρ остается естественной, даже если R нарушает условие уникальности и каждое отношение имеет нетривиальный ключ. 12.63. Покажите, что для любой схемы базы данных R W-функция M*R является строго естественной. 12.64. Пусть R — схема базы, ключи которой определяют множество F F-зависимостей. Найдите необходимое условие строгой естественности [·]/?. 12.65. Завершите доказательство теоремы 12.5. Пусть X — пересечение аспектов Ψ и Ζ, не являющееся аспектом. Покажите, что [X]R 0 можно изменить с помощью изменений отношений, чьи схемы входят в Z, но не в W. 12.7. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Неполная и неоднородная информация представляют проблему для любой модели базы данных. В отчете ANSI/X3/SPARC [1975] перечислено более десятка типов неопределенностей, хотя некоторые из них являются артефактами реализации систем управления базой данных. Кодд (Codd [1975]) предложил принцип замещения неопределенных значений для вычисления выражений с частичными отношениями. Грант (Grant [1977]) заметил, что нельзя определить индуктивно функцию интерпретации для замещения неопределенных значений. Василиу (Vassiliou [1979]) рассматривает алгоритмы вычисления выражений по принципу замещения неопределенностей. Уолкер (Walker [1979, 1980b]) первый предложил использовать зависимости для заполнения неопределенных значений, хотя его метод применим только для непомеченных неопределенностей. Помеченные неопределенности восходят к работам Maier [1980a], Vassiliou [1980a] и Honeyman [1980b, 1980c]. В статье Lien [1979] рассматривается взаимодействие неопределенных значений и F-зависимостей. Грант (Grant [1979]) и Липски (Lipski [1979b, 1981 ]) толкуют неопределенности как представление интервалов или множеств значений, а не как возможные значения. Ε-ограничения восходят к Мей еру (Maier 1980a]). В работе Goldstein [1981a] Ε-ограничения обобщаются на все типы значений, а в Rozen- shtein [1981] рассматриваются эффективные реализации частичных отношений. Функции возможностей позаимствованы из работ Biskup [1980a, 1981], так же как и POSSB и обобщенные операторы для POSSB. В работах Codd [1975], LaCroix, Pirotte [1976] и Zaniolo [1977] представлены обобщенные операторы соединения. Рейтер (Reiter [1978]) обсуждал постулат замкнутости мира в приложении к базам данных. В статье Honeyman, Ladner, Yannakakis [1980] показано, что проверка ПУО является в общем случае NP-полной задачей. Другая критика ПУО и ПУРС приводится в работах Kent [1979b], Bernstein, Goodman [1980b] и Atzeni, Parker [1981]. Аспекты коротко "упоминаются у Zaniolo [1977] и детально исследуются в Sciore [1980b]. Карлсон, Каплан (Carlson, Kaplan [1976]) и Осборн
12.7. Библиография и комментарии 427 fosborn [1979b]) обсуждают автоматическое связывание отношений в базе данных. W-функции восходят к работе Maier [1980a]. W-функция [*]R0 была разработана в серии статей Korth, Ullman [1980], Maier, Ullman [1980], Korth [1981] и Maier, Warren [1981b]. Представляющие отношения были развиты в работах Honeyman [1980b, 1980c], Graham [1981a] и Mendelzon [1981]. W- функция Ы*р введена в статье Yanhakakis [1981]. Ограничение МОЧК было предложено Сагивом [Sagiv [1981a]), Стайн (Stein [1981]) рассматривает эффективную проверку МОЧК- Условие уникальности и его эквивалентность независимости см. в Sagiv [1981b]. Доказательство теоремы 12.8 получено с помощью Е. Sciore. Были предложены многочисленные семантические расширения реляционной модели: Schmid, Swenson [1975], Codd [1979], Kent [1979a] и Housel, Waddle, Yao [1979]. Клиффорд и Уоррен (Clifford, Warren [1981 ]) рассматривают семантику времени в реляционных базах данных. Полезность итоговой информации в базах данных изучалась в работах Le Viet, Kambajashi, et al. [1979], Walker [1980a] и Bernstein, Blaustein, Clarke [1980]. ПУРС требует переименования связанных атрибутов. Авторы Bachman, Daya [1977], Smith, Smith [1977a, 1977b], Gewirtz [1979] и Sciore [1979, 1980a] работают с переименованием атрибутов или получением информации о связанных атрибутах, в особенности когда один атрибут представляет собой частную роль другого. Другие материалы по семантике баз данных читатель найдет в работах Sundgfen [1975], Chen [1976], Sowa [1976], в сборниках под редакцией Nijssen [1976, 1977], Brodie [1978] и Hammer, McLeod [1978, 1980]. Упражнение 12.44 взято из статей Goldstein [1980, 1981b]. Упражнение 12.53 навеяно работой Yannakakis [1981]. Ответы на части упр. 12.56 и 12.60 см. в Sagiv [1981a, 1981b].
Глава 13 Ациклические схемы баз данных Эта глава посвящена одному классу схем баз данных — а именно классу ациклических схем, обладающих рядом желательных свойств. Сначала мы перечислим эти свойства, потом сформулируем три синтаксических условия ацикличности схемы и для двух из них опишем проверяющие алгоритмы. Наконец, докажем, что все эти условия и свойства эквивалентны между собой. 13.1. НЕКОТОРЫЕ СВОЙСТВА СХЕМ БАЗ ДАННЫХ В этом разделе определены пять свойств, которыми могут обладать схемы баз данных. Эти свойства преимущественно «экстенсиональны» — они формулируются в виде условий, которые должны выполняться для всех баз данных с данной схемой. В следующем разделе обсуждаются «интенксиональные» свойства, т. е. те, которые определяются с помощью условий, налагаемых только на схему базы данных. 13.1.1. Существование программы полной редукции Вернемся к операции полусоединения, определенной в гл. 11. Рассмотрим реляционное выражение Ε = пх (ас (гг >< г2 >< ... гр))9 где С — некоторая булева комбинация сравнений. Такие выражения, представляющие композицию проекции, выбора и соединения, часто встречаются в качестве подвыражений при преобразованиях запросов, заданных на языках, основанных на реляционном исчислении, в выражения реляционной алгебры. Предположим, что нужно вычислить это выражение на распределенной
13.1. Некоторые свойства схем баз данных 429 базе данных, где отношения разбросаны по множеству пунктов обработки. Вполне может оказаться, что стоимость передачи данныхч между пунктами в такой системе значительно выше, чем стоимость их обработки в отдельно взятых пунктах. Поэтому забудем на время о стоимости локальной обработки и рассмотрим задачу о вычислении £, пытаясь минимизировать количество передаваемых данных. гх{А В С) г2(В С D) r3(C D Е) 7 8 7 8 9 9 8 4 4 5 8 8 4 5 6 6 6 6 2 11 11 4 5 8 8 4 5 4 6 6 6 11 11 11 12 7 7 9 9 9 9 9 6 7 6 7 6 7 6 9 8 7 8 9 11 9 П 7 1 2 5 3 5 3 3 4 Рис. 13.1. При самом непосредственном подходе к вычислению выражения Ε все отношения перемещаются в какой-нибудь один из пунктов обработки и все вычисление производится в этом пункте. Недостаток такого подхода в том, что для вычисления Ε может потребоваться лишь небольшая часть каждого из отношений. Некоторые кортежи и куски кортежей могут оказаться исключенными из процесса вычислений в результате выполнения проекций, выборов и соединений. Если воспользоваться методами алгебраической оптимизации, изложенными в гл. 11, и переместить часть проекций и выборов вниз по дереву ближе к отношениям-операндам, то непосредственный способ вычисления Ε можно улучшить. Результатом будет выражение Е' = пх (ас- (nYl (aCi (π)) >< πγ2 (<?с2 Ы) ><...>< nYp (aCj) (rp)))). Теперь для 1 < i < ρ вычислим выражения Si = π у. (ас. (г ή) каждое в своем собственном пункте; после этого остается вычислить выражение Е" = пх (ас (s\ >< s2 χ ... >< sp)), где некоторые из st предположительно меньше, чем соответствующие г χ. Пример 13.1. Рассмотрим базу данных d = \гъ г2, г3\ со схемой Ra = [ABC, BCD, CDE], изображенную на рис. 13.1
430 Гл. 13. Ациклические схемы баз данных (Ra будет использоваться в качестве примера на протяжении всей этой главы). Предположим, что нужно вычислить выражение Ε = 7l_4D (θΓ(£,<4) Λ (Αφϋ) Д (ΒψΒ) (rl >< r2 >< Г3)). После преобразования Ε к виду Е' = had (οαφώ (<Увф8 (г\) >< σΒφ8 (г2) >< nCD (ое<а (гз))))> можно вычислить Si = σΒφ* (η), s2 = σΒφ8 (г2), s3 = nCD (oe<a (г3)) локально и получить базу данных а! = \sl9 s2, s8), изображенную на рис. 13.2. Тогда наша задача сведется к вычислению Е" = had (<*a+d(s\ ><s2><Ss))- После того как отношения редуцированы, насколько это возможно, с помощью проекций и соединений, сохраняется еще возможность их дальнейшей редукции посредством полусоединений. Нам хотелось бы удалить из базы данных d = {sl9 s2, ... , sp\ все кортежи, которые не участвуют в соединении sx ><s2 >< ... ><sp. Напомним, что FR (s^, d), т. е. полная редукция Si относительно d — это множество всех кортежей из siy которые участвуют в t>< d. Любая последовательность SP присваиваний вида Si<-Si\XSj называется программой полусоединений. Если SP (sb d) = FR (sif d) для любой базы данных d (R) и любого отношения st ^ df то SP — программа полной редукции для схемы R. Если R обладает программой полной редукции, то можно полностью редуцировать отношения slf s2, ... , sp перед тем, как переслать их в общий пункт обработки для вычисления соединения. Однако для конкретной распределенной системы ответ на вопрос, выгодно или не выгодно использовать ту или иную программу полусоединения, зависит от состояний индивидуальных отношений. При вычислении г (R) i><s (S) в распределенной системе может оказаться, что дешевле переслать все отношение г целиком в пункт, где находится отношение s, чем сначала пересылать π^η5 (s) в-> пункт хранения г, а потом пересылать rxs обратно в пункт хранения s. Возможно, что для конкретной базы s2(B С D) s3(C D) 6 7 6 9 8 9 11 9 sM 7 8 7 9 8 В 4 4 5 4 5 С) 6 6 6 11 11 4 5 4 5 4 6 6 11 11 12 7 7 9 9 9 Рис. 13.2.
13.1. Некоторые свойства схем баз данных 431 Si(A В 7 4 8 4 7 5 9 4 8 5 Μ В С) 1 2 3 7 8 9 А) 6 6 6 И И г2(В_ 2 8 s2(B С 4 6 5 6 4 И 5 11 Рис. 13.3. С D) 3 4 9 10 Рис. 13.4. J>> 7 7 9 9 Ыс_ 3 9 *з(С_ 6 11 Jl) 5 . 11 _5> 7 9 г4(Д £) 4 И 10 5 данных одну программу полной редукции использовать выгодно, а другую — нет (см. упр. 13.1). Пример 13.2. Для схемы базы данных R = [ABC, BCD, CD] существуют программы полной редукции. Одна из них имеет вид S3 ч~ S3 £K S2*, S2<— S2 tK S3', Si <— Si t< S2. Результат применения этой программы полусоединения к отношениям из рис. 13.2 изображен на рис. 13.3. Пример 13.3. Рассмотрим схему базы данных Rc = {ABC, BCD, CE, DE\ (Rc тоже будет часто использоваться в этой главе в качестве примера). Для Rc программы полной редукции не существует. База данных со схемой Rc, изображенная на рис. 13.4, не является вполне редуцированной и тем не менее ее дальнейшая редукция с помощью пол у соединений невозможна. 13.1.2. Эквивалентность зависимости соединения множеству многозначных зависимостей С каждой схемой базы данных R связана единственная J-зависимость, а именно *[R]. Из каждой J-зависимости следует некоторое множество MV-зависимостей. Следующая лемма дает общий критерий выводимости одной J-зависимости из другой.
432 Гл. 13. Ациклические схемы баз данных Лемма 13.1. Если R и S—схемы баз данных над одним и тем же множеством атрибутов, то * [R ] |= * [S ] тогда и только тогда тогда R <: S *). Доказательство. Непосредственно следует из теоремы 8.1: R <: S тогда и только тогда, когда FIX (R) с FIX (S), а это в свою очередь выполняется тогда и только тогда, когда * [R ] |= Η * [S], так как FIX (R) = SAT (*[R]) и FIX (S) = S47(*[S]). Нас интересуют MV-зависимости, вытекающие из J-зависимости * [R ], т. е. все пары схем Sb S2, для которых * [R ] |= * [Sb S2]. Поэтому рассмотрим J-зависимости вида *[Sb S2], где Sx и S2— объединения некоторых схем из R = \Rlf R2i ..., /?ρ},' Ρ причем S± (J S2 = (J #i· Говоря точнее, мы предполагаем, что имеется функция /:{1,2, ..., р}-Н1,2}, такая, что Sf = U /?;, * = 1, 2. f </>-* Обозначим через MVD (R) множество всех нетривиальных MV- зависимостей (двукомпонентных J-зависимостей), которые могут быть определены таким образом. Пример 13.4. Для Ra = [ABC, BCD, CDE\ имеет место MVD (Ra) - \*[ABC, BCDE], *[ABCD, CDE]\. Для Rc = = \ABC, BCD, CE, DE\ справедливо MVD (Rc) = {* [ABC, BCDE], *[ABCD, CDE], *[ABCE, BCDE)}. Упражнение 13.4 показывает, что любая MV-зависимость, вытекающая из *[R], является прямым следствием некоторой MV-зависимости из MVD (R). Нас интересуют условия, при которых MVD (R) |= *[R] для некоторой схемы базы данных R. Выполняется MVD (Ra) |= *[Ra], в то время как MVD (Rc) # #*[RC] (см. упр. 13.6). Фактически наличие импликации MVD (R) |= * [R ] означает, что декомпозицию без потерь отношения г относительно R можно представить с помощью двух- компонентных декомпозиций. Другим следствием этой импликации является возможность построить эффективный алгоритм проверки выполнимости *[R]. 13.1.3. Единственность декомпозиции в 4НФ В этом разделе мы формализуем условие, состоящее в том, что некоторое множество Μ MV-зависимостей над схемой U определяет единственную декомпозицию U в 4НФ. г) Напомним, что R < S означает: каждая схема отношения из R содержится в некоторой схеме отношения из S,
13.1. Некоторые свойства схем баз данных 433 Определение 13.1. Пусть Λί—множество MV-зависимостей над схемой U. Пара схем отношений (R, S) называется декомпозицией U относительно Λί, если Λί (== * [R, S]. Декомпозиция (R, S) схемы U называется плотной, если не существует декомпозиции (R', S'), для которой R' П S' строго содержится в R (] S. Таким образом, декомпозиция (R, S) плотна, если перекрытие R и S минимально. В сущности нам интересно продолжать декомпозицию U до тех пор, пока эта схема не окажется в 4НФ. Можно определить применимость множества Μ к любой подсхеме U' схемы U, выделив те части зависимостей из Λί, которые применимы к πυ- (SAT (M)). Тем самым понятия «декомпозиции относительно Λί» и «плотной декомпозиции относительно Λί» приобретают смысл для произвольных подсхем схемы U. Определение 13.2. Пусть R ,— схема над U и Λί — множество MV-зависимостей над U. Схема R находится в плотной четвертой нормальной форме (плотной 4НФ) относительно Λί, если она находится в 4НФ относительно Λί и может быть получена посредством ряда плотных декомпозиций. Если при этом существует всего одна схема базы данных R над U, находящаяся в 4НФ относительно Λί, то скажем, что Μ однозначно определяет декомпозицию схемы U. Определение 13.3. Схема базы данных R над U называется уникальной декомпозицией, если некоторое множество Λί MV- зависимостей однозначно определяет декомпозицию U в R. Пример 13.5. Рассмотрим схему базы данных Ra = \АВС, BCD, CDE] из предыдущих примеров. Ra является уникальной декомпозицией множества атрибутов ABCDE. Действительно, пусть Μ = {ВС -^ Л, CD -» Ε} (что совпадает с MVD (Ra)). Мы можем начать либо с декомпозиции множества ABCDE в \АВС, BCDE}, либо с его декомпозиции в \ABCD, CDE], но на следующем шаге непременно придем к декомпозиции \АВС, BCD, CDE], находящейся в 4НФ относительно Λί. Схема Rc = {ABC, BCD, СЕ, DE] не является уникальной декомпозицией (см. упр. 13.11). 13.1.4. Попарная согласованность влечет за собой согласованность в целом Пусть R = {/?!, R2f ..., Rp\ —некоторая схема базы данных и d = \гъ г2, ··., гр\ — база данных над R. В предыдущих главах уже отмечалось, что проверка свойства полноты соединения для гг, г%, ..., гр относится к вычислительно трудным задачам.
434 Гл. 13. Ациклические схемы баз данных Скажем, что d согласована в целом (СЦ), если rl9 г2, ..., гр обладают свойством полноты соединения. База d называется попарно согласованной (ПС), если свойством полноты соединения обладает произвольная пара отношений rt и г7·. Сложность проверки свойства ПС полиномиально зависит от размера базы данных. СЦ с необходимостью влечет за собой ПС (см. упр. 13.12), но ПС не всегда достаточно для СЦ. Особый интерес представляют те схемы базы данных, для которых любая база данных со свойством ПС обладает также и свойством СЦ. Пример 13.6. ПС влечет СЦ для баз данных, схемой для которых служит наша старая знакомая Ra = [ABC, BCD, CDE}. Чтобы доказать это, рассмотрим произвольную базу данных d (Ra) = \гг (ABC), r2 (BCD), r3 (CDE)} со свойством ПС. Покажем, что всякий кортеж из г2 входит в гг><г2хг3. Пусть t2 — кортеж из г2. Поскольку г1ти г2 обладают свойством полноты соединения, то гг содержит кортеж tl9 соединимый с t2. Аналогично, г3 содержит кортеж t3, также соединимый с t2. Эти три кортежа соединимы, поскольку tx (С) = t2 (С) = t3 (С) и С — единственный атрибут, общий для tx и t3. Для баз данных над схемой Rc = \ABC, BCD, CE, DE] свойства ПС недостаточно для СЦ. На рис. 13.4 изображена база данных над Rc, обладающая свойством ПС, но не свойством СЦ. 13.1.5. Малые промежуточные соединения Рассмотрим задачу вычисления \><d для базы данных d = \гг (/?χ), /'г №)» ···> гр (Rp)\ наД схемой R с помощью ряда последовательных бинарных соединений. Даже в том случае, когда все отношения базы d полностью редуцированы, при неудачном выборе соединений может случиться, что размер промежуточных результатов окажется большим, нежели размер окончательного результата. Пример 13.7. Рассмотрим вычисление гг >< г2 >< г3 для базы данных над Ra = \ABC, BCD, CDE}, изображенной на рис. 13.5. Если мы начнем с вычисления гх ><г3, то получим промежуточный результат с 10 кортежами, в то время как окончательное соединение содержит всего 6 кортежей. Если мы начнем с вычисления Т\ >< /*2> то в промежуточном отношении-результате будет только 6 кортежей. Пример 13.8. Рассмотрим вычисление гх >< г2 >< г3 >< г4 для базы данных над Rc = \ABC, BCD, CE, DE}, изображенной на рис. 13.6. Любая последовательность попарных соединений дает по крайней мере один промежуточный результат, содержащий больше кортежей, чем их содержится в окончательном результате
13.1. Некоторые свойства схем баз данных 435 8 8 11 12 16 17 9 10 .13 14 15 15 г Μ В С) г2(В С D) r3(C D Е) 135 357 57 10 145 458 58 10 235 359 59 11 246 468 68 И Рис. 13.5. П(А В С) г2(В С D) r3(C E) r4(D E) - 1 2 3 2 3 8 3 9 12 4 2 4 8 4 10 12 5 2 5 11 5 14 12 6 2 5 12 6 15 12 7 2 6 16 7 15 2 7 17 Рис. 13.6. (см. упр. 13.14). Отметим, что рассматриваемая база данных является полностью редуцированной. Нас интересуют схемы баз данных, для которых отношения любой полностью редуцированной базы данных можно соединить посредством такой последовательности попарных соединений, что число кортежей в каждом из промежуточных результатов не превосходит их количества в окончательном результате. Более того, нам желательно иметь такую последовательность, которая годилась бы для всех баз данных над рассматриваемой схемой и для которой размер промежуточных результатов последовательно «возрастал». В действительности мы потребуем выполнения более сильного условия, а именно: всякий раз, когда выполняется соединение, участвующие в нем отношения должны быть вполне соединимы. ^ . Определение 13.4. Пусть R = \RU R2, ..., Rp] —схема базы данных. Планом соединения для R назовем бинарное дерево Ρ с корнем, метками листьев которого служат схемы отношений из R, причем каждая схема из R помечает хотя бы один лист Р. Пусть d = \rl9 г2, ..., гр\ — база данных над R. Конкретизация Ρ посредством d, обозначаемая Ρ (d), получается путем сопоставления листьям с меткой Ri9 1 < i < р9 соответствующих отношений rt. Каждой внутренней вершине из Ρ сопоставим по рекурсии соединение отношений, сопоставлен-
436 Гл. 13. Ациклические схемы баз данных 1 1 1 2 2 2 3 3 4 3 3 4 5 5 5 5 5 6 7 9 8 7 9 8 10 11 10 10 11 11 3 4 3 4 5 5 5 6 7 8 9 8 10 10 11 11 гМ В С D Е) rb(A BCD) rc{B С D Е) 13 5 7 13 5 9 14 5 8 2 3 5 7 2 3 5 9 2 4 6 8 Рис. 13.8. ных ее прямым потомкам. Отношение гх >< г2 >< ... >< гр будет, разумеется, при этом сопоставлено корню Р. Пример 13.9. На рис. 13.7 изображен план соединения для схемы базы данных Ra = [ABC, BCD, CDE\. На рис. 13.8 представлены отношения га, гъ и гС) сопоставляемые его внутренним вершинам а, Ь и с в Ρ (d), где d — база данных с рис. 13.5. Каждый план соединения соответствует некоторому представляющему это соединение выражению с полной скобочной структурой. Так, план, представленный на рис. 13.7, соответствует выражению (гх >< г2) >< (г2 >< г3). Определение 13.5. Если Ρ — план соединения для R и d — база данных над R, то конкретизация Ρ (d) называется монотонной, если для каждой внутренней вершины Ъ дерева Ρ сопоставленное этой вершине отношение является полным соединением отношений, сопоставленных ее прямым потомкам. План Ρ называется монотонным, если Ρ (d) монотонна для всякой базы данных d над R со свойством попарной согласованности.
13.2. Синтаксические условия на схемы баз данных 437 Ί г2 г3 гл Рис. 13.9. Пример 13.10. Вернувшись к примеру 13.9, находим, что Ρ (d) монотонна и, более того, Ρ тоже монотонен. Пример 13.11. План соединения Ρ для Rc = [ABC, BCD, СЕ, DE\, приведенный на рис. 13.9, не является монотонным. В частности, не является монотонной его конкретизация Ρ (d), где d — база данных, представленная на рис. 13.6. Определение 13.6. Схема базы данных R обладает свойством роста соединений, если для нее существует монотонный план соединения. · 13.2. СИНТАКСИЧЕСКИЕ УСЛОВИЯ НА СХЕМЫ БАЗ ДАННЫХ В этом разделе вводятся три синтаксических условия на схемы баз данных: ацикличность, существование дерева соединений и свойство квазистягиваемости пересечений. Следующий раздел посвящен описанию алгоритмов проверки двух из этих условий. Там же будет доказано, что синтаксические условия, определяемые в настоящем разделе, эквивалентны более экстенсиональным по своей природе свойствам, рассмотренным в разд. 13.1. 13.2.1. Ациклические гиперграфы Гиперграф аналогичен обычному неориентированному графу, за тем исключением, что его ребрами служат не двухэлементные, а произвольные множества вершин. Определение 13.7. Гиперграф Η представляет собой пару {Ж, <%), где «/Г — множество, элементы которого называются вершинами, а & состоит из непустых подмножества, называемых гиперребрами. В тех случаях, когда очевидно, что речь идет о гиперграфах, гиперребра иногда будут называться просто ребрами.
438 Гл. 13. Ациклические схемы баз данных Рис. 13.10. Гиперграф называется редуцированным, если среди его ребер нет двух таких, что одно из них является собственным подмножеством другого, и если всякая его вершина содержится в некотором ребре. Редукцией Я (обозначается RED (Я)) называется гиперграф, получаемый из Я удалением всех ребер, которые собственным образом содержатся в каком-нибудь другом ребре, и всех вершин, которые не принадлежат ни одному из ребер. Произвольная схема базы данных естественным образом представляется в виде гиперграфа. Если R — схема, базы данных над U, то R можно рассматривать как гиперграф (U, R). Вершинами этого гиперграфа служат атрибуты из U, а гиперребрами — схемы отношений из R. Говоря о гиперграфе, представляющем R, мы будем вместо (U, R) писать просто R. Утверждение о том, что схема базы данных R редуцирована, равносильно утверждению о том, что редуцирован гипер граф R: это означает, что в R не существует схемы отношения, собственным образом содержащейся в другой схеме отношения из R. Пример 13.12. При изображении гиперграфов на рисунках вершины представляются своими метками, а гиперребра — как замкнутые кривые вокруг соответствующих'узлов. На рис. 13.10 изображен гиперграф для Ra = [ABC, BCD, CDE\, а на рис. 13.11 —гиперграф для Rc = {ABC, BCD, CE, DE\. Определение 13.8. Пусть Я = (Л*Д) —гиперграф, а Л и В — его узлы. Путем из А в В (в гиперграфе Я) называется последовательность ребер Ех, Е2, ..., Ek, k ^> 1, такая, что А £ Еъ В £ Ek и Ει Π £*+ι Φ 0 Для 1 < i < k. Последовательность El9 E2, ..., Ek называется путем из Ег в Ek. Определение 13.9. Две вершины или два ребра гиперграфа Я = (Л9, (%) называются связанными, если между ними существует путь. Произвольное множество ребер гиперграфа называется
13.2. Синтаксические условия на схемы баз данных 439 Рис. 13.11. Рис. 13.12. связным, если любые два ребра из этого множества связаны между собой. Компонентой связности гиперграфа Я называется любое максимальное связанное подмножество его ребер. Пример 13.13. Рассмотрим гиперграф Я, изображенный на рис. 13.12. Ребра ABC, BCD, DE образуют путь из Л в £ и из ABC в DE, поэтому А и Е, так же как ABC и DE, связаны между собой. Компонентами связности гиперграфа Я являются \АВС, BCD, DE] и \IJ, JKL, 1КЦ. В основном будут рассматриваться гиперграфы, которые состоят из единственной связной компоненты. Большинство последующих конструкций и результатов обобщается на гиперграфы с несколькими компонентами связности. Определение 13.10. Пусть Я = (JT, &) и Я' = (Л",<Г) — гиперграфы. Гиперграф Я' называется подгиперграфом Я, если jf' = Jf и <r c= ar.
440 Гл. 13. Ациклические схемы баз данных Рис. 13.13. Рис. 13.14. Определение 13.11. Пусть Я = (Jf, <S) — гиперграф и Л s <=, Jf. Ж-индуцированным гиперграфом для Я (обозначается ИЛ называется гиперграф RED {{Μ, <$j()), где 9Ж=\Е П Je\E£S), Η Л не обязательно является подги пер графом Я, так как <$ л может содержать ребра,^отсутствующие в <S'. Пример 13.14. Рассмотрим гиперграф Я = (ABCDEIJK, {ABC, BD, CDE, DEI, IJK\), изображенный на рис. 13.13. Гиперграф Я' = (ABCDE, {ABC, BD, CDE\) есть подгипер- граф Я, являющийся в то же время ЛБСО£-индуцированным гиперграфом для Я. На рис. 13.14 изображен гиперграф HABCD = = (ABCD, {ABC, BD, CD\). Он не является подгиперграфом Я, поскольку CD не входит в число ребер Я. Теперь мы хотим перенести понятие «сильной связности» с обычных графов на гиперграфы. Напомним, что сильно связным называется граф, не имеющий точек сочленения.
13.2. Синтаксические условия на схемы баз данных 441 Определение 13.12. Пусть Я = (ИР, &) —гиперграф. Множество F ^ ИР называется множеством сочленения для Я, если F = Е1 (] Е2 для некоторой пары ребер Еъ Е2 £ <S и Я^*' имеет меньше компонент связности, чем Я, где ИР' = ИР —" F. Иными словами, найдется хотя бы одна пара связанных между собой вершин Я, которые после удаления из Я вершин, принадлежащих F, станут несвязанными. Определение 13.13. Пусть Я = (ИР, <%) —гиперграф, Ж ^ИР. Если ^-индуцированный гиперграф Н^ не имеет множества сочленения, то он называется блоком гиперграфа Я. Блок тривиален, если у него всего одно ребро. Редуцированный гиперграф, не имеющий блоков, называется ациклическим', в противном случае он называется циклическим. Произвольный гиперграф ацикличен или цикличен в точности тогда, когда таковой является его редукция. Пример 13.15. Пусть Я — гиперграф из примера 13.14. Множество DE образует множество сочленения для Я, так как DE = = CD Ε Π DEI и НАВсик имеет две компоненты связности, в то время как Я — одну. Гиперграф HABCDy изображенный на рис. 13.14, является блоком Я, так как у него нет множества сочленения. Поскольку гиперграф Я редуцирован, мы заключаем, что он циклический. Пример 13.16. Рассмотрим схему базы данных Ra = \АВСУ BCD, CDE\ как гиперграф; Ra ацикличен. Возьмем, например, гиперграф (Ra)ABM, изображенный на рис. 13.15. Он имеет множество сочленения, образованное вершинами В и D, и потому не является блоком. Теперь мы дадим несколько иное определение ацикличности, в котором рассматриваются только те индуцированные гиперграфы, которые являются подгиперграфами. Рис. 13.15.
442 Гл. 13. Ациклические схемы баз данных Рис. 13.16. Определение 13.14. Пусть Я = (Jf, &) — гиперграф и Я' = = (Jf\ &') — подгиперграф Я. Гиперграф Я' называется зам· кнутым относительно Я, если Я' = Я^ для некоторого Ж s ИР. Очевидно, что если такое Ж существует, то оно должно совпадать с Л9'. Эквивалентное определение: Я'— замкнутый подгиперграф Я, если для любого ребра Ε ζ <S существует ребро Ε' £ <Г, такое, что Ε' ΞΞ> И" Π Ε. Определение 13.15. Редуцированный гиперграф Я называется внутренне-ациклическим, если каждый его замкнутый связный подгиперграф, обладающий двумя или более ребрами, имеет множество сочленения; в противном случае Я называется внутренне-циклическим. Произвольный гиперграф называется внутренне-циклическим (или внутренне-ациклическим) в точности в тех случаях, когда таковой является его редукция. Пример 13.17. Пусть Я — гиперграф из примера 13.14. Подгиперграф Я' = (ABCD, {ABC, BD\) не замкнут относительно Я. Действительно, рассмотрим ребро CDE гиперграфа Я. Имеем: CD Ε Π ABCD = CD и ни одно ребро Я' не содержит CD. Подгиперграф Я" = (ABCDE, \АВСУ BD, CDE\)' замкнут относительно Я, так как Я" = HABCde- Ш" изображен на рис. 13.16.) Гиперграф Я" не имеет множества сочленения и поэтому гиперграф Я — внутренне-ациклический. Свойства ацикличности и внутренней ацикличности эквивалентны (см. упр. 13.22). Схема базы данных R называется ациклической, если ацикличен ассоциированный с ней гиперграф R. 13.2.2. Деревья соединений Определение 13.16. Пусть R = \RU R2i ..., Rp] —схема базы данных над U. Полным графом пересечений для R, обозначаемым через /R, называется полный неориентированный граф с верши-
13.2. Синтаксические условия на схемы баз данных 443 Рис. 13.18. нами #ь ..., Rpf ребра которого помечены подмножествами множества U, а именно меткой L (е) ребра е = (Rit Rj) служит Rt f] Π Rj. Граф пересечений для R —это любой подграф графа /R, полученный удалением из /R некоторых ребер (но не вершин). Изображая графы пересечений на рисунках, мы, как правило, опускаем те ребра е, для которых L (е) = 0. Определение 13.17. Пусть R = \Rlt R2f ..., Rp\ —схема базы данных над U, G — некоторый граф пересечений для R и Л £ U. Путь еъ e2f ..., ер в графе G, ведущий из вершины Rt в вершину Rjt называется А-путем, если Α £ L (ег), 1 <: ί < £. Если еъ e2t ..., ер представляет собой Л-путь, то Α £ Rt и Л ζ Я/. Фактически атрибут Л должен содержаться во всякой вершине, лежащей на некотором Л-пути. Пример 13.18. Рассмотрим схему базы данных R = \АВС, BDy CDE, DEI, UK] над ABCDEIJK, которая соответствует гиперграфу из примера 13.14. Граф пересечений /r изображен на рис. 13.17 (ребра с пустыми метками опущены). На рис. 13.18
444 Гл. 13. Ациклические схемы баз данных представлен граф G — один из возможных графов пересечения для R. В графе G имеется D-путь, ведущий из BD в CDE. β-пути, ведущего из ABC в BD, в графе G нет, хотя в /R такой путь имеется. Определение 13.18. Пусть R = \Rlf R2, ..., Rp\ —схема базы данных над U, G — некоторый граф пересечений для R. Граф G называется графом соединений, если для всякой пары узлов Rh Rj Рис. 13.19. и всякого атрибута Α ζ Rt fl Rj существует Л-путь из Rt в Rj. Если граф соединений — дерево, то он называется деревом соединений. Пример 13.19. Пусть R—схема базы данных из примера 13.18. Тогда /R — граф соединений для R (полный граф пересечений всегда является графом соединений). Граф пересечений на рис. 13.18 не является графом соединений для R, так как в нем нет β-пути из ABC в BD. Дерева соединений для R не существует. Действительно, в любом графе G, являющемся графом соединений для R, должен существовать β-путь из ABC в BD, а поэтому G должен содержать ребро (ABC, BD). Аналогично, G должен содержать ребро (ABC, CDE), поскольку в этом графе должен существовать С-путь из вершины ABC в вершину CDE. Вершины BD и CDE должны быть связаны некоторым D-путем. Но D-путь не может проходить через вершину ABC, поэтому G содержит цикл. Нас интересуют те схемы баз данных, для которых дерево соединений существует. Позднее мы увидим, что дерево соединений можно использовать для построения монотонных планов соединения. Пример 13.20. Схема базы данных Ra = \ABC, BCD, CDE] обладает деревом соединений, которое изображено на рис. 13.19.
* 13.3. Эквивалентность условий 445 13.2.3. Свойство квазистягиваемости пересечений Определение 13.19. Пусть R = |#ь R2, ..., Rp\ —схема базы данных. Будем говорить, что R обладает свойством квазистяги- ваемости пересечений, если существует такая перестановка Sb S2, ..., Sp схем Rl9 R2, ..., Rp, что для каждого i, 1 < ι <: /?, существует / < i, для которого (s^,... su) ns^ s,. Иными словами, пересечение Sf с объединением всех предыдущих схем целиком содержится в одном из них. Пример 13.21. Схема базы данных R = {ABC, CDE, BCEI] обладает свойством квазистягиваемости пересечений, как это явствует из следующего упорядочения составляющих ее схем отношений: BCEI, ABC, CDE. 13.3. ЭКВИВАЛЕНТНОСТЬ УСЛОВИЙ Как было отмечено в начале этой главы и как подсказывают сквозные примеры Ra и Rc, все определенные в разд. 13.1 и 13.2 свойства и условия описывают один и тот же класс схем баз данных. Прежде чем доказывать эту эквивалентность, рассмотрим алгоритмы, решающие, является ли некоторая схема базы данных R ациклической и обладает ли она деревом соединений. 13.3.1. Редуктивный алгоритм Грэхема Следующий алгоритм редукции гиперграфов был предложен Грэхемом, хотя Ю и Осой-Оглы независимо от него нашли по существу эквивалентный алгоритм, работающий с другой структурой данных. Алгоритм редукции Грэхема состоит в последовательном выполнении шагов, на каждом из которых к гиперграфу применяется одно из двух правил редукции, — до тех пор, пока не окажется, что ни одно из них применить больше нельзя. Пусть Я = (Jf, &) — некоторый гиперграф. Упомянутые правила редукции таковы: УР (удаление ребра). Если ребро Ε собственным образом содержится в некотором другом ребре, то Ε удаляется из &'. УВ (удаление вершины). Если А —вершина из Jf, принадлежащая не более чем одному ребру из <§Г, то А удаляется из Л и, следовательно, из того ребра, в которое она входит. Пример 13.22. На рис. 13.20 показаны последовательные шаги при применении редуктивного алгоритма Грэхема к гиперграфу, ассоциированному с Ra = \ABC, BCD, CDE]. Помеченные стрелки изображают применение соответствующих правил редукции.
446 Гл. 13. Ациклические схемы баз данных Рис. 13.21. Пример 13.23. На рис. 13.21 показаны шаги при применении алгоритма редукции kRc = \АВС, BCD, СЕ, DE\. Говорят, что редуктивный алгоритм Грэхема для гиперграфа Η завершается успешно, если в результате его применения к Я получается пустой гиперграф (как это было для Ra в примере 13.22).
13.3. Эквивалентность условий 447 13.3.2. Отыскание деревьев соединений В этом разделе предполагается, что читатель знаком с алгоритмами отыскания остовного дерева наименьшего веса для неориентированного графа со взвешенными ребрами. В действительности будет отыскиваться остовное дерево наибольшего веса, но поскольку все остовные деревья данного графа имеют одно и то же множество вершин, то нужный алгоритм может быть получен из алгоритма нахождения остовного дерева наименьшего веса с помощью перемены знака у весов ребер на противоположный. В следующих определениях предполагается, что R = \Rlt #2> ···> RP\ —схема базы данных над U и G— некоторый граф пересечений для R. Определение 13.20. Назовем классом атрибута Л £ U множество \Rt\ Α £ RiiiRi £ R} и обозначим его через CLASS (A). Весом атрибута А назовем число WT (А) = | CLASS (A) \ — 1. Вес схемы R, обозначаемый WT (R), по определению равен величине Σ WT(A). Определение 13.21. Вес А в G, обозначаемый WT (Л, G),— это число ребер в G, метки которых содержат А в качестве элемента. Весом G называется величина WT(G) = Σ WT (Л, G). Ας. υ Определение 13.22. Весом WT (е) ребра е графа G называется число | L (е) |. Непосредственно видно, что WT (G) можно также вычислять по формуле Σ WT{e). e(lG Пример 13.24. Рассмотрим граф соединений G для схемы базы данных R = \ABCt BDy CDE, DEI, ПК], изображенный на рис. 13.22. Для схемы R имеем WT (Л) - 0, WT (E) = 1, WT(B) = 1, WT(I) = 1, WT(C) = 1, WT(J) = 0, WT (D) = 2, WT (К) = О
448 Гл. 13. Ациклические схемы баз данных ABC CDE BD Рис. 13.22. и поэтому WT (R) = 6. Для графа G: WT(A, G) = 0, WT(E9 G) = 1, WT(By G) = 1, WT(C9 G) = 1, WT(D, G) = 2, и, таким образом, Ώ?Γ (G) = WT(/, G) - 1, WT (J, G) = 0, WT (K, G) = 0 Теорема 13.1. £с/ш деелш базы данных R = {#i, #2> ···> #р} обладает некоторым деревом соединений G, /по любое остовное дерево наибольшего веса для графа /r (относительно весов, приписанных его ребрам) является деревом соединений. Более того, G является остовным деревом наибольшего веса для /r и WT (G) = - WT(R). Доказательство. Сначала покажем, что WT (Л) равняется WT (A, G) для любого атрибута А. Действительно, в G имеется WT (А) + 1 вершин, содержащих Л, и поэтому требуется не менее WT (А) ребер, чтобы построить Л-пути между каждой парой этих вершин. Следовательно, WT (Л, G) ^ WT (Л). Любое ребро е, для которого Л £ L (е), соединяет некоторые вершины из CLASS (Л). Если число ребер графа G, которые содержат Л в своих метках, превышает WT (Л), то найдется составленный из этих ребер цикл, проходящий через некоторое множество вершин из CLASS (Л). Следовательно, WT (A, G) < WT (Л), так что WT(A, G) = WT (А). Отсюда следует, что WT (G) = = WT(R).
i 3.3. Эквивалентность условий 44§ По определению, G — остовное дерево для /R. Предположим, что существует другое остовное дерево G' для /R, вес которого больше, чем вес G. Тогда найдется атрибут Л, для которого WT (Л, G) < WT (Л, G'). Согласно рассуждениям в предыдущем абзаце, G' должен содержать цикл, проходящий через некоторые вершины из CLASS (Л), что противоречит выбору G'. Поэтому G является остовным деревом наибольшего веса. Пусть, наконец, G' — любое остовное дерево наибольшего веса для /r. Согласно предыдущим рассуждениям, WT (А) = = WT (A, G) = WT (Л, G') для любого атрибута Л. Поскольку G' — дерево и WT (Л) ребер G' содержат Л в своих метках, то любые два элемента из CLASS (Л) должны быть соединены некоторым Л-путем. Следовательно, G'—дерево соединения. Теорема 13.1 доставляет достаточно эффективный способ проверки существования дерева соединений для произвольной схемы базы данных R. Найдем /R (необходимо учитывать лишь ребра с непустыми метками), а потом найдем для него остовное дерево G наибольшего веса. Если G—дерево соединений, то, очевидно, схема R обладает деревом соединений. Если G — не дерево соединений, то таких деревьев для R нет. Пример 13.25. Дерево G, изображенное на рис. 13.18, — остовное дерево наибольшего веса для графа /R, где R = \АВС, BDt CDEy DEI, UK]. Дерево G не является деревом соединений и поэтому, как уже отмечалось выше, дерева соединений для R не существует. Пример 13.26. На рис. 13.19 изображено остовное дерево G наибольшего веса для графа /R , где Ra = \АВСУ BCD, CDE}. Как уже отмечалось, G — дерево соединений для Ra. 13.3.3. Теорема эквивалентности для ациклических схем Теорема 13.2· Пусть R —связная схема базы данных. Следую- щие условия эквивалентны: l.|R ациклична; 2. редуктивный алгоритм Грэхема для R завершается успешно; 3. R обладает деревом соединений; 4. для R существует программа полной редукции; 5. для R свойство ПС влечет за собой свойство СЦ; 6. R обладает свойством квазистягиваемости пересечений; 7. R обладает свойством роста соединений; 8. RED (R) является уникальной декомпозицией; 9. остовное дерево наибольшего веса для графа IR является деревом соединений; 10. MVD (R)f= *[RL
450 Гл. 13. Ациклические схемы баз данных Лемма13 8 V\ Лемма 13 7X7 6 S 7 Теорема \мма137Х7 6 // Лемма 13 Пемма 1310 11ример 13 36 Ψ \ХЛемма13.9 Лемма 13 2 Лемма 13 6 Леммы 13.11, 13 12 Рис. 13.23. Доказательство сводится к ряду лемм. Эквивалентность условий 3 и 9 установлена в теореме 13.1. Схема доказательства эквивалентности остальных условий такова: 1=^2=^3=^4=^5=^1, 3 ==> 6 =ф- 7 ==> 5, 8^=^1, 3 ==> 10. Доказательство того, что из условия 10 вытекает любое из условий 1—9, оставлено читателю в качестве упр. 13.36. Связи между леммами и вышеуказанными импликациями представлены на рис. 13.23. Лемма 13.2. Если R = \Rly R2> ..., Rp\ —ациклическая схема базы данных, то редуктивный алгоритм Грэхема для R завершается успешно. Доказательство леммы 13.2 сводится к Доказательству четырех предложений. Из них первые два показывают, что алгоритм редукции не создает и не разрушает блоков. Остальные два показывают, что к ациклическому гиперграфу всегда применимо одно из двух правил удаления. Предложение 13.1. блоки. Редуктивный алгоритм Грэхема сохраняет Доказательство. Пусть Я = (./Г, <S) — гиперграф и Н^ — блок для некоторого Ж ^Jf. Предположим, что Я' получен из Я посредством единственного применения правила УР (удаление ребра). Тогда Η л должен совпадать с Я^, поскольку при построении индуцированного гиперграфа выполняется редукция.
13.3. Эквивалентность условий 451 Если Ε = F — удаленное ребро, toE{\M^F{\M, так что Ε не вносит вклада в Η л- Предположим теперь, что гиперграф Я' получен применением правила УВ (удаление вершины) к вершине А. Если А Ф Ж и Η л — блок, то то же самое справедливо и для Н^. Если Α £ Μ и Η л — блок, то нам надо показать, что Н'л—А тоже блок. Для этого заметим, что если F — Ег f\ E2 — множество сочленения для Н'л__д> то оно служит также множеством сочленения для Hj[. Действительно, одно из ребер Е1 или Е2 может приобрести в Η л дополнительную вершину Л, но не оба одновременно, так как А входит не более чем в одно из ребер Я. Отсюда следует, что F представляется в виде пересечения некоторых ребер гиперграфа Нл- Если удаление F нарушает связность Н'л—А> то это же справедливо и относительно Нл> поскольку А не может влиять на связность. Отсюда выводим, что если у Я нет множества сочленения, то его нет и у Я^. Итак, при применении любого из правил УР или УВ блоки сохраняются, а поэтому их сохраняет и алгоритм редукции. Предложение 13.2. Редуктивный алгоритм Грэхема не порождает новых блоков. Доказательство. Пусть Я = («/Ρ, <%) — гиперграф. Как замечено в предыдущем доказательстве, если Я' получается из Я по правилу УР, то Η л = Н'л для любого Ж <^Jf. Следовательно, правило УР не может порождать блоки. Пусть теперь Я' получается из Я удалением вершины А по правилу УВ. Предположим, что Η л обладает множеством сочленения, в то время как Н'л—а представляет собой блок. Но Нл—А = — Н'л—А> так что У Η есть блок, с которого мы могли бы начать 1)и Поскольку правила УР и УВ не порождают новых блоков, их не порождает и алгоритм редукции. Пусть F — множество сочленения для гиперграфа Я = (JF, &)\ будем говорить, что F расщепляет Я на подгиперграфы Яь Я2, ... ..., Hk, если каждый Яг· представляет собой одну из компонент связности гипер графа Hjy__p, ребра которой пополнены до ребер гиперграфа Я (подмножествами которых они являются) добавлением вершин из F. Заметим, что у подгипер графов Яь Я2, ..., Hh нет общих ребер. *) То есть блок Η * *, естественно переходящий в Н'# * при данном применении правила УВ. — Прим. перев.
452 Гл. 13. Ациклические схемы баз данных Пример 13.27. Множество ВС является множеством сочленения для Я = (ABCDEIJ, {ABC, BCD, BEI, CEJ\) и расщепляет Я на #! = (ABC, {ABC}), tf2 = (BCD, {BCD]), tf3 = (BCEIJ, {BEI, CEJ\). Предложение 13.3. Пусть H=(Jf, &)—связный ациклический гиперграф1), причем| с? | ^> 2. Тогда Η обладает сочленяющим множеством F, расщепляющим его на такие подгиперграфы Нъ Я2, ..., Ηр, что каждый из Hi содержит некоторое ребро Et, для которого F ^ Et. Отсюда следует, что все подгиперграфы Нъ #2, ..., И ρ замкнуты в Н2). Доказательство. Предположим, что предложение ложно, и выберем связный ациклический гиперграф Я с наименьшим числом вершин, для которого оно ложно. Пусть F = Ех Π Ε2 — некоторое сочленяющее множество для Н, не содержащее других сочленяющих множеств для Я, и F расщепляет Я на подгиперграфы #ь #2, ..., Hk. Без ущерба для общности можно считать, что у подгиперграфа Ях = (Jf1, &Ί) нет ребер, содержащих F. Построим подгиперграф Я' = (Лх [) Еъ &х \] \Е^\) гиперграфа Я. Пересечение любого ребра, не входящего в Я', с множеством Jf1 U Ег должно содержаться в Еъ поэтому Я' замкнут в Я. Отсюда следует, что Я' является (Jfx U ^-индуцированным гиперграфом для Я. Поскольку Я ацикличен, а Я' — вершинно-индуцирован, то Я' тоже ацикличен (см. упр. 13.27). У Я' меньше вершин, чем у Я3), следовательно, найдется сочленяющее множество F' = Ег Π ^4> расщепляющее Я' на подгиперграфы Н[, Н'2, ... ..., Н'т, каждый из которых обладает ребром, содержащим F'. Утверждается, что F' — сочленяющее множество для всего Я. Пусть ребро Е\ принадлежит подгипер графу Н[. Если бы какое- нибудь ребро Е, не входящее в Я', касалось одного из подгипер- графов Я£, Яз, ..., Н'т вне Е\, то F не могло бы отщеплять Я14). *) Для справедливости предложения 13.3 необходимо еще предположить, что Η редуцирован. — Прим. перев. 2) Пусть Hi = (Jfit &i). По определению Hlt ..., Hk имеем Jft f) Jfj = F при i Φ /. Отсюда выводим, что если Ε ψ Л%·, то Ε f) ^i ^ F ^ Ei £ <^b поэтому Hi замкнут (см. определение 13.14). В доказательствах этой главы много пробелов такого рода. Самые существенные из них отмечены в примечаниях; восполнение других оставляется читателю. — Прим. перев. 3) Следует еще показать связность Н' (впрочем, легко устанавливаемую). — Прим. перев. 4) Пусть Н\ = (№\, &Ί). Для любого Ε" ζ 8'2 (J · · · U &'т имеем Ε (~) Π Ε' <ξ F ^ Fx (см. примечание 2 выше). Точно так же Е' [) Ег^ F, по определению Н[, Н'2, ...,Н'т. Поэтому Ε Γ\ Ε' ^ F'. Следовательно, F' «отщепляет» подгиперграфы Щ, ..., Н'т и служит для Η сочленяющим множеством. — Прим. перев.
13.3. Эквивалентность условий 453 Утверждается далее, что F* расщепляет Я на Н'[, Щ, ..., Н'т, где Н\ представляет собой Н[, к которому добавлены все вершины и ребра из Я2, Я3, ..., Hk. Таким образом, Я[ суть Н[ плюс вся часть Я, внешняя относительно Нг. Конечно, F' отщепляет от Я подгиперграфы Я£, Щ, ..., Н'т1). Может ли F' расщепить остальную часть Я на два или более подгиперграфа? Заметим, что каждый из подгипер графов Я2, Я3, ..., Hk соприкасается с Н[, поскольку каждый из них соприкасается с принадлежащим Н[ ребром Ег. Сравним Fr с F. Если F' з F, то Е3 и £4 оба содержали бы F и в Ях нашлось бы ребро, содержащее F. Поэтому мы должны иметь F' (] Ег cz F (строгое включение!). Но удаление F' Π Ει нарушает связность части Я, внешней относительно Яь a F' {) Ег = Е3 {) Ег или £4 Π £ι» что противоречит минимальности сочленяющего множества F2). Мы показали, что если F не удовлетворяет требованиям нашего предложения, то им удовлетворяет Fr, так как каждый из подгипер графов Ни #2, ···> Н'т, обладает ребром, содержащим F'. Определение 13.23. Ребро Ε гиперграфа Я называется выступающим ребром или выступом, если Ε содержит хотя бы одну вершину, не содержащуюся ни в каком другом ребре. Вершину с таким свойством назовем терминальной вершиной. Пример 13.28. У гиперграфа Нг = (ABCDE, {ABC, BCD, CD Ε}) два выступающих ребра: ABC и CDE. Терминальными являются вершины А и Е. Гиперграф Я2 = (ABCDE, \АВС, BCD, CDE, ADE\) не имеет выступов. Предложение 13.4. Любой редуцированный ациклический ги- перграф Я, число ребер которого превышает единицу, имеет по крайней мере два выступа. Доказательство. Предложение очевидным образом истинно для любого редуцированного ациклического гиперграфа Я = = (Jf,<S), для которого \$\ = 2. Предположим, что оно справедливо для | & | = k — 1, и рассмотрим случай | & \ = k. Пусть F — сочленяющее множество для Я со свойствами, гарантированными предложением 13.3. Пусть F расщепляет Я на Нх, Я2, ..., Hk. Каждый из подгипер графов Ht замкнут в Я, т. е. является вер- *) См. примечание 4 на с. 452. — Прим. перге. 2) Эти рассуждения нуждаются в уточнении. Пусть #$ = (Л°г-, &\), и пусть среди компонент, на которые F' расщепляет Я, есть такая компонента Я" = = (Jf\ <Г'), что Гд^и··· U #k- Если Е* — ребро из Н[% то Ε' Π #" s Ε Ег (ή F· Отсюда следует, что Ег f\ F' — множество сочленения для Я; поэтому множества Ег Г) Е3 и Ех П £4» содержащие Ех Г) F'* тоже сочленяющие. Если, скажем, Е3 Φ Elt то Е3 ζ &х а Ег^ <%х (по предположению о Нх). Поэтому Ех Г) Е3 s F, и так-как F минимально, то Ех Г) Е3 ~ F и Е3 э F в противоречие с выбором Нг. — Прим. перев.
454 Гл. 13. Ациклические схемы баз данных шинно-индуцированным, а потому ацикличен. Поскольку ребра Ht являются одновременно ребрами Я, то Ht редуцирован. Рассмотрим Н1. Если у Н1 больше одного ребра, то по индуктивному предположению он имеет два выступа. Поскольку некоторое ребро гиперграфа Ях, скажем El9 содержит F, то самое большее один из выступов #! может обладать тем свойством, что все содержащиеся в нем терминальные вершины принадлежат F. Второй выступ не может пересекать объединение подгиперграфов #2, #3, ..·, Hk вне F, так как тогда F не отщепляло бы Нг. Таким образом, этот выступ есть выступ для Я (а не только для Нг). Если у Н1 всего одно ребро, то оно является выступом в Я. Поскольку те же рассуждения справедливы для Яа, в Я найдутся два выступающих ребра. Доказательство леммы 13.2. Согласно предложению 13.2, , редуктивный алгоритм Грэхема сохраняет ацикличность. Если в процессе редукции ациклического гиперграфа Я, выполняемой с помощью этого алгоритма, на каком-либо шаге окажется, что промежуточный гиперграф нередуцирован, то к нему можно применить правило УР. Если же этот промежуточный гиперграф редуцирован, то либо мы уже достигли гиперграфа с единственным ребром, либо выполняется предложение 13.4, и мы можем использовать правило УВ для удаления некоторой терминальной вершины. Поскольку при применении правил редукции в алгоритме Грэхема общее количество ребер >и вершин уменьшается, то этот алгоритм постепенно редуцирует Я до пустого гиперграфа. С другой стороны, алгоритм редукции не может завершиться успешно в случае циклического гиперграфа Я. Действительно, такой гиперграф должен иметь по крайней мере три ребра. Если бы редукция Я завершалась успешно, то одним из ее промежуточных результатов оказался бы гиперграф, обладающий в точности двумя ребрами и тем самым ациклический. Существование такого промежуточного результата противоречит предложению 13.1. Лемма 13.3. Если редуктивный алгоритм Грэхема завершается успешно для гиперграфа, ассоциированного с некой связной схемой базы данных R, то для R существует дерево соединений. Доказательство. Пусть R = \Rl9 ..., Rp]. Заметим, что на всех шагах редукции R по алгоритму Грэхема связность сохраняется. Дерево соединений G для R строится следующим образом. Обозначим через REMj (Rt) то, что осталось от Rt перед /-м шагом редукции. Если на /-м шаге REMj (Rt) содержится в REMj (Rh) и поэтому удаляется по правилу УР, то добавим к G ребро (Rif Rk) с меткой Ri Π Rh- Очевидно, что полученный в результате граф G является графом пересечений. Граф G не содержит циклов. Действительно, каждая вершина Rt графа G связана не более чем с одной верши-
13.3. Эквивалентность условий 455 ной Rk, такой, что остаток Rk при:редукции удаляется позже, чем*остаток Rt. В то же время в любом цикле найдется вершина Rt, связанная по крайней мере с двумя такими вершинами, что соответствующие им остатки ребер гиперграфа при редукции удаляются позже, чем это происходит с остатком Rt. То, что G— дерево, следует теперь из сделанного выше замечания относительно сохранения связности. Является ли G графом соединений? Предположим, что нет. Перенумеруем схемы отношений в R так, чтобы нашелся атрибут Л ζ J?! Π i?2> для которого в G не существует Л-пути из Rx в R2. Будем также считать, что R± и R2 выбраны таким образом, чтобы расстояние между ними в дереве G было наименьшим. Наконец, предположим, что при редукции остаток Rx удаляется прежде остатка R2. На некотором шаге /должно выполняться REMj (Rx) s s REMj (Rk)y где к2Ф Rk1)· По предположению множество REMj (R2) непусто в момент, когда удаляется REMj (Rx). Поэтому Α £ REMj (RJ Π REMj (R2), так как до тех пор пока остатки R± и R2 оба непусты, в их пересечении не может быть терминальных вершин2). Следовательно, Α ζ REMj(Rk). Выберем некоторую вершину в G в качестве корня и ориентируем G так, чтобы остаток любой вершины-потомка удалялся при редукции раньше, чем остаток ее родительской вершины. При такой ориентации Rk является предком R±. Вершина R2 не может лежать в поддереве дерева G, подчиненном вершине R1. Поэтому путь, ведущий из Rx в /?2, должен проходить через Rk. Значит, путь из Rk в R2 короче пути из Rx в R2. Поскольку А £ R2 Π Rk> из предположения о минимальности расстояния между R± и R2 следует, что в G существует Л-путь из Rk в R2. Но метка ребра (Rly Rk) содержит Л, откуда заключаем о существовании Л-пути из R± в R2 и приходим к противоречию. Итак, G обязано быть графом, а потому и деревом соединений для R. Лемма 13.4. Пусть R — связная схема базы данных. Если для R существует дерево соединений, то для R имеется программа полной редукции. Прежде чем приступить к доказательству леммы 13.4, введем ряд необходимых для него понятий и обозначений. Если R = {/?!, R2, ..., Rp\ —связная схема базыданных, a*G — некоторое дерево соединений для R, то через Gt обозначим G, рассматриваемое как ориентированное дерево с корнем Rit 1 <: < i < р. Пусть d = {гг (#i), r2 (R2), ..., rp (Rp)} — база данных *) Иначе ребро (Rlt R2) входило бы в G и доставляло Л-путь из R1 в R2. — Прим. перев. 2) Точнее, если REMj (RJ Φ 0 и REMj (R2) Φ 0, то REMj (RJ Г) Π REMj (R2) = /?i П Яа- — Прим. перев.
456 Гл. 13. Ациклические схемы баз данных Рис. 13.24. над R. Рассмотрим применительно к d некоторую программу полусоединения SP = s/x, s/2, ..., sjki и пусть / — целое число, заключенное в интервале от 1 до k. Обозначим через SPj начальный отрезок sjl9 s/2, ..., sjj программы SP, в свою очередь представляющий собой программу полусоединения. В частности, SP0 — программа полусоединения с нулевым числом шагов. Пусть теперь Rt ζ R. Назовем / точкой завершения программы SP для Ri относительно Gti если выполнены следующие условия: 1. Для любого непосредственного потомка R вершины Ri графа Gi программа SPj содержит шаг вида гг ч- гг |Х г, где г и г% — отношения над R и Rx соответственно. 2. Не существует такого /' < /, для которого выполняется условие 1. Таким образом, точка завершения для Ri — это тот шаг в SP, которым заканчивается вычисление полусоединения отношения, ассоциированного с Rh с отношениями, которые ассоциированы с непосредственными потомками Rt. Если / — точка завершения программы SP для Rt относительно Gt (в предположении, что такая точка существует), то мы пишем CPt (Ri) = /. Если в программе SP нет точки завершения для Ri относительно Git будем считать, что CPt (Ri) неопределено. Наконец, если Rt — лист дерева Git то положим CPt (Rt) — 0. Пример 13.29. Пусть R = {RXi R2i R3i R4i Rb\ — схема базы данных, для которой #! = ABC Rd = CDE R2 = BCD R^ = DI *ъ
13.3. Эквивалентность условий 457 Рис. 13.25. На рис. 13.24 изображено дерево соединений G для R, ориентированное так же, как G2. Пусть г1э г2, г3, г4 и гъ — отношения со схемами Rly R2, R3, R^ и R5 соответственно. Для программы полусоединения SP вида 1. >з«- r3\KrAi 2. г3ч- /-3ΙΧ/-6, 3. г2 ч- г2 К гь 4. г2 ч- г2 IX г3 имеем СР2 (R3) = 2 и СР2 (#а) = 4. Если мы рассмотрим SP относительно дерева G3, изображенного на рис. 13.25, то найдем, что СРд (R3) неопределено, так как в программе SP отсутствует шаг вида г3 ч- r3IXr2. Программа полусоединения SP называется полной программой полусоединения для R относительно Git если выполнены следующие условия: 1. Для каждого Ri £ R значение CPt (Rt) определено. 2. Если R — непосредственный потомок Rt в Gi9 то CPt (R) < < CPi (Ri). Эти условия означают, что по завершении шага CPi (Ri) программы SP полусоединение отношения, ассоциированного с Ri, со всеми отношениями, которые ассоциированы с непосредственными потомками Rh будет полностью вычислено; для каждого из этих отношений в свою очередь к этому моменту будет полностью вычислено его полусоединение со всеми отношениями, соответствующими его непосредственным потомкам, и т. д.
458 Гл. 13. Ациклические схемы баз данных Пример 13.30. Пусть R и SP такие же, как и в примере 13.29. Программа SP является полной программой полусоединения для R относительно G2, но не относительно Gl9 G3 или G4. Для каждого дерева Gt существует по крайней мере одна полная относительно него программа полусоединения для R. Ее можно построить, например, так: совершаем обход дерева Gt в обратном направлении (от листьев к корню) и при посещении' очередной вершины добавляем к нашей программе шаг, на котором вычисляется полусоединение отношения, ассоциированного с этой вершиной, и отношения, ассоциированного с ее непосредственным предком. Для каждого ί, 1 < ι < /?, обозначим через SP (i) наикратчайшую программу полусоединения для R, полную относительно Gf. Пример 13.31. Пусть R и SP такие же, как и в примере 13.29. Если мы совершим обход дерева G2 в обратном направлении, то получим полную относительно G2 программу полусоединения для R, а именно программу SP (2) вида 1. г2ч- r2K.rl9 2. г3ч- /зКг4, 3. г3 ч- г3 К гБ, 4. г2ч- г2К/з. Программа SP (2) — наикратчайшая. Наконец, введем ряд понятий и обозначений, относящихся к ориентированным деревьям Glf G2, ..., Gp. Для Rt ζ R обозначим ч§рез TREEt (Ri) множество схем, входящих в поддерево дерева Gif подчиненное Ri. Заметим, что TREEt (Ri) = Rf. Определим расширение схемы Ri в Gb EXt (Ri), следующим образом: EXi(Rl) = U \Rj\Rj € TREEtiRi)]. Иначе говоря, EXt (Ri) —это схема Rif объединенная со всеми своими потомками в Gt. Предложение 13.5. Пусть R = \Rlf R2f ..., Rp\ — связная схема базы данных и G — дерево соединений для R. Пусть d — \гг (RJ, г2 (/?г)> ···> rp (Rp)\ — некоторая база данных над R. Если SP — полная программа полусоединения для R относительно Gif то SP (гь d) = FR (rh d). Доказательство. Мы докажем чуть более сильное утверждение. А именно, для Ri £ R пусть аг — подбаза базы данных d, полученная ограничением d на схемы из TREEt (Ri), и пусть q = = CPt (R{). Мы покажем, что SPq (ru d) e FR (ru di). По-дру- гому это можно выразить так: по достижении точки завершения
13.3. Эквивалентность условий 459 для Ri в программе SP отношение гх оказывается полностью редуцированным относительно отношений со схемами из TREEi (Rx). Более того, для каждого кортежа tx £ SPq (rXi d) найдется кортеж щ\><\а}, такой, что щ (Ri) = tx. Заметим, что схемой для щ служит EXt (Ri). Если Ri является листом, то доказываемое нами включение выполняется, поскольку в этом случае гх не участвовало еще ни в каких полусоединениях и потому полностью редуцировано относительно самого себя. Таким образом, SP0 (rl9 d) = FR (ru {η}). Кроме того, в этом случаех^ = rl9 так что для любого кортежа tx из ri в xdx найдется такой кортеж щ (= tx), что щ (Ri) = tt. Пусть теперь Rx — внутренняя вершина Gt и CPt (Ri) = q. Для удобства обозначений будем считать, что непосредственными потомками Ri в Gt служат Rl9 R2, ..., Rm. Используем индукцию и предположим, что наше утверждение справедливо для каждой из схем (вершин) Rl9 R2f ..., Rm. Заметим, чго из полноты SP относительно Gt следует неравенство CPt (Rj) < q для 1 < / < m. Поэтому на некотором шаге программы SPq отношение г7- окажется полностью редуцированным относительно dj. Более того, на этом шаге для каждого кортежа tj ζ rj найдется такой кортеж uj G IX dj9 что Uj (Rj) = tj. Могут ли эти свойства измениться в результате полусоединений, которые будут выполнены после шага CPt (Rj)? Нет, не могут. Действительно, беспокоиться стоит лишь о полусоединениях, затрагивающих отношения из dj. Но те из этих полусоединений, в результате которых происходит удаление некоторых кортежей из г7-, на рассматриваемые свойства никак не влияют. В любом же полусоединении, при котором некоторые кортежи удаляются из какого-нибудь другого отношения базы данных dj9 могут участвовать только отношения из dj9 и оно не может повлечь удаления кортежей из xdj. (Почему?) Пусть теперь tx — кортеж из SPq (rh d). Мы должны найти в!><1Йгтакой кортеж щ9 для которого щ (Ri) = tL. Поскольку q — точка завершения для Rl9 в результате программы SPg отношение ri будет полусоединено со всеми отношениями rl9 r2, ..., гте. Поэтому каждое из отношений г/, 1 < / < т9 должно содержать некоторый кортеж tj9 который соединяется с tx. (Так же как и выше, этого обстоятельства не в состоянии изменить полусоединения, выполняемые после шага гх ч- гх IX />) В свою очередь для каждого кортежа tj в xdj найдется кортеж uj со свойством Uj (Rj) = tj. Мы утверждаем, что в качестве щ можно взять tx >< иг χ и2 χ ... χ ит. Для этого нам надо показать соединимость кортежей tl9 ulf u2f ..., ит. Чтобы показать соединимость tx и uj9 1 < / < т9 мы докажем включения Rt f] EXt (Rj) ^ Rj. (Заметим, что
460 Гл. 13. Ациклические схемы баз данных EXt (Rj) — схема кортежа Uj.) Действительно, если Α ζ EXt (Rj), то Α £ R для некоторой схемы R £ TREE- (Rj). Если, кроме этого, Α ζ Rh то в Gt существует Л-путь из R в Rt. Этот путь обязан проходить через Rj и поэтому Α ζ Rj. Аналогичные рассуждения показывают, что для 1 < /Ί <: /2 < ш имеют место включения Ri э EXt (Rit) fl £^г (#/2)> следовательно, w/t и &/а перекрываются только внутри Rh Поскольку оба кортежа щх и Uj2 согласуются с tt на Rh они согласуются между собой. Из попарной согласованности кортежей tu и±, и2, ..., ит следует, что они соединимы (см. упр. 13.3). Если щ — результат их соединения, то, очевидно, щ (Ri) = t{. Отсюда заключаем, что SPQ (?u d) s FR (ru dt). В частности, мы получили, что SP (rt, d) = SP (rif dt) s s FR (rh d). Поскольку включение SP (rt, d) ^ FR (rt, d) выполняется всегда, имеем SP (rif d) = FR (ri9 d), и доказательство закончено. Доказательство леммы 13.4. Пусть G — дерево соединений для R = {/?!, R2l ..., Rp}, a SP (l) — кратчайшая из программ полусоединения для R, полных относительно Gt. Рассмотрим программу полусоединения SP (1), полученную из SP (1) обращением порядка шагов на противоположный и заменой каждого шага rt ч- η >< г,- на гj ч- rjXri. Читателю предлагается показать, что программа полусоединения SP для R, составленная из последовательно расположенных программ SP (1) и SP (1) (в таком порядке), является полной относительно любого Gtf 1 < / <: ρ (см. упр. 13.28). Отсюда по предложению 13.5 следует, что SP (ги d) = FR (ru d) для любого 1 < / <: ρ; и поэтому SP — программа полной редукции. Заметим, что SP содержит 2р—2 шагов и что меньшим числом шагов обойтись нельзя (см. упр. 13.29). Лемма 13.5. Пусть R — связная схема базы данных. Если R обладает программой полной редукции SP, то для R свойство ПС влечет за собой свойство СЦ. Доказательство. Предположим противное. Пусть d — база данных над R, обладающая свойством ПС, но не свойством СЦ. Тогда любая программа полусоединения SP для R оставляет d без изменения, а потому SP не может служить программой полной редукции для R. Для доказательства следующей леммы нам потребуется ряд новых понятий относительно гиперграфов. Пусть Я = (JC, <%) — связный гиперграф. Ребро F ζ $ называется разделяющим, если & — \F\ можно разбить на два непустых множества <$х и <%2 так, что для любых Ег £ &х и Е2 £ <$г выполнено включение Ег Π Е2 ^ F. Удаление из Я вершин, входящих в такое ребро F, нарушает связность Я. Кроме того, если Elf E2l ..., Ek — путь
13.3. Эквивалентность условий 461 в Я из Ег в Ekf где Ег ζ ($х и Ek ζ ёГ2, то найдется i, 1 < i < k, для которого £Ί Π Ei+i ^ ^· Поэтому, для того чтобы ребро F не было разделяющим, необходимо, чтобы любую пару ребер из <£ — \F\ можно было соединить некоторым путем, обходящим F стороной: пересечение любых двух соседних ребер этого пути должно содержать вершины, которые не входят в F. Если F — разделяющее ребро гиперграфа Я, а <%х и <%2 — ассоциированные с ним множества ребер, то гиперграфы, определенные множествами ребер &г [} \F\ и <§f2 U \F}> замкнуты относительно Я. Более того, если Я — циклический гиперграф, то хотя бы один из этих гиперграфов тоже будет циклическим (см. упр. 13.30). Лемма 13.6. Пусть R—связная схема базы данных. Если из свойства ПС для R следует свойство СЦ, то R является ациклической схемой. Доказательство. Мы докажем эквивалентное утверждение: если схема R является циклической, то существует база данных d над R, которая обладает свойством ПС, но не обладает свойством СЦ. Предположим, что это не так и что R = \Rlf R2, ..., Rp\ — наименьший из контрпримеров к нашему утверждению. Последнее означает, что R циклична, и тем не менее каждая база данных d над R, обладающая свойством ПС, одновременно обладает и свойством СЦ. Кроме того, число ρ отношений и число атрибутов в R — наименьшие из возможных (в первом случае минимум берется по всем контрпримерам, во втором — по всем контрпримерам с данным значением р). Покажем, что редукция по Грэхему не изменяет R. Действительно, если бы в результате редукции мы получили схему базы данных R', отличную от R, то R' была бы меньше R либо по числу атрибутов, либо по числу схем отношений, а поэтому для R' наше утверждение было бы справедливым. Таким образом, нашлась бы база данных d' над R', обладающая свойством ПС, но не обладающая свойством СЦ. В упр. 13.31, базу данных d! можно было бы расширить до некоторой базы данных d над R, для которой свойство СЦ тоже не имело бы места *). Рассмотрим схему R как гиперграф. Поскольку к нему редукция неприменима, то в R нет ни ребер, содержащих терминальные вершины, ни ребер, содержащихся в каком-нибудь другом ребре. Докажем, что R не может содержать разделяющего ребра. Предположим, что Rt —разделяющее ребро для R, и будем считать для удобства обозначений, что \Rlf R2i ..., Ri_±\ и {Ri+1, Ri+2i... ..., Rp\—те два множества ребер, которые разделяются ребром Rt. Оба множества Rx = {Rlf R2, ..., Rt\ и R2 = \Ri, Ri+li Ri+2> ···> Rp\ определяют замкнутые подгиперграфы R, по край- г) Но которая обладала бы при этом свойством ПС. — Прим. перев.
462 Гл. 13. Ациклические схемы баз данных ней мере один из которых — циклический. Пусть для определенности циклическим является подгиперграф Rx. Так как схем отношений в Rx меньше, чем в R, то существует база данных dx над Rx со свойством ПС, для которой свойство СЦ не имеет места. Добавив к базе данных dx некоторые отношения над Ri+1, Ri+2i ... ..., Rpf можно расширить ее до базы данных d над R, которая тоже обладает свойством ПС (см. упр. 13.32). Свойство СЦ для базы данных d не выполняется. (Почему?) Мы пришли к противоречию с определением схемы R, следовательно, в гиперграфе R нет разделяющих ребер. Теперь мы готовы построить такую базу данных над R, которая обладает свойством ПС, но не обладает свойством СЦ. Пусть Аъ Л2, ..., Ап — атрибуты, входящие в Rl9 а Лп+1, Лп+2, ..., ..., Aq — остальные атрибуты R. Построим отношениег{А1Аг... Aq) с η кортежами, которые определены следующим образом: h (Aj) ( 1, если i = /;] О, если ιφ j и / <: п\ [ i, если η < j < q. Отношение г изображено на рис. 13.27. Положим τι = яд. (г) для 1 <: i <: р. Докажем, что г2>« >< г3\>< ... >< гр = г. Заметим, что, поскольку ребро Rx не является разделяющим, любые две схемы из {#2, R3, ..., Rp\ соединены некоторым путем, не проходящим через Rt. Отсюда следует, что любой кортеж / ζ г2 >< г3 >< ... >< гр на всех атрибутах Ап+ъ ···» Ад принимает одно и то же значение. Предположим, что это общее значение равно i. Мы покажем, что t = tt. Рассмотрим произвольную схему Rj, 2 < / <: ρ, которая содержит хотя бы один атрибут из числа Аъ Л2, ..., Ап. Поскольку Rx S Rj, то Rj содержит также по крайней мере один атрибут из числа Ап+1, Ап+2> ···» Aqi скажем Лг. Если Uj — кортеж отношения г7-, внесший вклад в t, то Uj (Αι) = i. Отсюда следует, что Uj = trj (Rj). Поэтому всюду, где он определен, кортеж t совпадает с кортежем ίζ·. г(Л, tx 1 t2 0 А2 . 0 . 1 . ..А,- . .. 0 . .. 0 . ·· Ап .. 0 .. 0 Α„+ι А„+2 ■ 1 1 2 2 . . ..Ая .. 1 .. 2 U 0 0 ... 1 ... О ι ι ... ί tn 0 0- ... О ... 1 η η ...η Рис. 13.26.
13.3. Эквивалентность условий 463 Но так как в Rx отсутствуют терминальные атрибуты, то t определен на всех атрибутах Аъ ..., Aq. Тем самым доказано, что г2ггигд><...мгр. Обратное включение прямо вытекает из свойств отображений типа «проекция-соединение», следовательно, г = г2хг3 >< ... >< гр. Поскольку все отношения rl9 г2, ..., гр являются проекциями одного и того же отношения, то они обладают как свойством ПС, так и свойством СЦ. Положим sx = rx (J \Ф> 0, ..., 0)}. Таким образом, sx — это гх плюс кортеж, состоящий из одних нулей. Утверждается, что совокупность отношений sx, r2, ..., гр обладает свойством ПС. Действительно, для каждого Rjf 2 <: / < ρ, имеем nsiPisj ^) ^ Usinsj ^» так как Sx (] Sj Φ Sj. Каждая из указанных проекций содержит кортеж, составленный из одних нулей, а также любой кортеж, в котором на одном из мест стоит 1, а на всех остальных — 0. Итак, Sj согласовано с каждым из отношений г2, г3, ..., гр, про которые нам уже известно, что они согласованы между собой. База данных d = |sx, r2f r3, ..., гр\ определена над R и обладает свойством ПС. Однако d не может обладать свойством СЦ, так как г2 >« г3 >« ... >< гр = г, а отношения sx и г не являются вполне соединимыми. Поэтому R не может служить контрпримером к утверждению, сформулированному в начале доказательства, и лемма доказана. Лемма 13.7. Пусть R — связная схема базы данных. Если для R существует дерево соединений, то R обладает свойством квазистягиваемости пересечений. Доказательство. Пусть R = \Rl9 R2, ..., Rp\ и G — дерево соединений для R. Предположим, что схемы Rlf R2, ..., Rp пронумерованы в порядке, согласованном с ориентацией дерева Gx. Отсюда следует, что если Rj — порядок Rk в Gx, то / < k. Рассмотрим произвольную схему Riy 2 < i < p. Одна из схем Rx, #2> ···> Ri-i является непосредственным предком Rt в Gx. Пусть это будет Rj. Заметим, что среди Rl9 R2> ..., /?ζ·-ι нет потомков Rit Возьмем какой-нибудь атрибут А из (i?xi?2 ··· Ri-i) Π Rt- Должен найтись некоторый Л-путь, ведущий от Rt к одной из схем Rly ..., /?j_i, и этот Л-путь обязательно пройдет через Rj. Следовательно, Rj 3 (RXR2 ... Ri-г) Π Riy и поэтому R обладает свойством квазистягиваемости пересечений. Лемма 13.8. Пусть R—связная схема базы данных. Если R обладает свойством квазистягиваемости пересечений, то R обладает свойством роста соединений.
464 Гл. 13. Ациклические схемы баз данных Доказательство. Пусть Rlt R2, ..., Rp— такое упорядочение схем из R, что для^каждого ί, 2 <i < ρ, имеет место включение (/?ХЯ2 ... Ri-i) Π Ri^RjAJix некоторого /, 1 <j<i. Пусть d = = {'ι (#i), r2 (#2), ···» >У(#рМ —база данных над R со свойством ПС. Рассмотрим план соединения JP, отвечающий следующей расстановке скобок в выражении, представляющем соединение rl9 г2 ..., гр: (... ((гх >< га) ><Г3) ... >«Гр). Покажем по индукции, что имеют место равенства: ля. (γι >« г2 >« ... >« гг) = г/, 1 < / <: i, которые означают, что гх, г2, ..., г* согласованы в целом. Базис индукции получается непосредственно. Так как гх и г2 согласованы, то π^1 (г\ >< г2) = η и π^2 (г\ >< г2) = г2. Допустим, что доказываемые утверждения истинны для i — 1. Рассмотрим rt. Пусть Rj — такая схема, что / < i и Rj =э (R1R2 ... Rt.x) П Rt = S. Поскольку Jtfl. (r\ >< г2>< ... >< Гс—ι) = γ;·, отсюда следует, что π5 (Γχ><ΐΓ2 >< ... ><Γί_ι) = π5 (г,). Так как rf согласовано с г,·, то г^ полностью соединяется с я5 (г,·) и, следовательно, с гх >< >< г2 >< ... ><j гг-_х. Отсюда и из того, что отношения гх, г2, ..., rf_x соединяются полностью, следует, что то же самое справедливо относительно гх, г2, ..., г^. Поэтому получаем Л>Яг (П >< ^2 >< ... >< >"z) — ri и, более общим образом, n>R · (>*t >< г2 ... >< rf) = гу для 1 <: / <: t. Поскольку соединения гх >< г2 >< ... >< гг для 2 < / < ρ являются в точности теми соединениями, которые сопоставлены внутренним вершинам плана соединения JP, усматриваем, что план JP монотонен. Таким образом, R обладает свойством роста соединений. Лемма 13.9. Пусть R — связная схема базы данных. Если R обладает свойством роста соединений, то для баз данных над схемой R свойство ПС влечет за собой свойство СЦ. Доказательство. Пусть JP — монотонный план соединения для R и d — база данных над R, обладающая свойством ПС. Тогда план JP указывает, как соединить все отношения из d таким образом, чтобы не потерять попутно ни одного кортежа. Поэтому d обладает свойством СЦ.
13.3. Эквивалентность условий 465 Лемма 13.10. Пусть R—связная схема базы данных. Если для R существует дерево соединений, то MVD (R) |= * [R]. Доказательство. Пусть R = \Rlt R2> ..., Rp\ и G — дерево соединений для R. Напомним, что Gx— это граф G, рассматриваемый как ориентированное дерево с корнем Rx. Выберем любую схему Rif 2 < i <. ρ, и пусть Rj — ее прямой предок в Gx. Положим St = ЕХг (Ri). Таким образом, St —это объединение всех схем, принадлежащих поддереву с корнем Rt. Обозначим через Sj объединение остальных схем из R. Утверждается, что Si П S, = Ri П Rj. Включение St Π Sj Э Ri Π Rj непосредственно следует из включений Si э Ri и Sj ^ Rj. Чтобы доказать обратное включение, заметим, что для любого Α ζ St fl Sj существует Л-путь, проходящий через Rt и Rj9 и поэтому А £ Rt f] Rj. Таким образом, мы получаем искомое равенство. Из замечаний, последовавших за леммой 13.1, мы знаем, что *[R][=* [Sit Sj]. В терминах MV-зависимостей * [Sf, Sj] означает то же, что Ri Π Rj —^ Si \ Sj. Используем Gx в качестве плана при прогонке табло Tr, чтобы получить строку, состоящую только из выделенных переменных. Покажем по индукции, что в процессе вычисления chaseMVD (R) (Tr) для каждого Rif 1 < i < ρ, можно построить строку, содержащую выделенные переменные в точности в тех позициях, которые соответствуют ЕХг (Ri). Так как ΕΧλ (RJ = RtR2 ... Rp, то тем самым лемма будет доказана. Если Ri — лист Glt то ЕХг (Rt) = Rt и строка, содержащая выделенные переменные в точности в позициях из Rti имеется уже в TR. Если Rt — внутренняя вершина Gl9 то пусть Ql9 Q2l ... ···> Qp —ее непосредственные потомки. Предположим, что при прогонке относительно MVD (R) мы получили из Tr табло Tr, для каждого /, 1 < / < k, содержащее строку Wj с выделенными переменными в позициях из EX1(Qj). Пусть V — строка с выделенными переменными в позициях из Rit Согласно рассуждениям в начале доказательства, имеем R} f] Qj —^ ЕХг (Qj) для каждого Qj. Применяя MV-зависимость Rt f] Qj ~^ ЕХг (Qj) к строке υ и строкам Wj для 1 < / <: k, мы получим из ν строку, которая содержит выделенные переменные в точности в позициях, соответствующих множеству Rt \J ЕХг (QJ U ЕХг (Q2) U··· ... U EXX (Qh), которое совпадает с ЕХХ (Ri). Заметим, что выделенные переменные, добавляемые к строке υ при применении MV-зависимости Rt fl Qy—» ΕΧλ (Qj), не могут быть удалены в результате применения MV-зависимостей вида Rt fl Qi —» "* EXi (Qi), ! Φ U так как Rt => ЕХг (Qj) fl ЕХг (Qi). В дальнейшем потребуются некоторые сведения о плотных декомпозициях схемы U относительно множества MV-зависи- мостей вида MVD (R), где R — некоторая схема б#зы данных
466 Гл. 13. Ациклические схемы баз данных над U. Если (Sx, S2) — плотная декомпозиция U относительно MVD (R), то MVD (R) не может содержать MV-зависимости вида * iS{, S2], для которой S{ Π $2— собственное подмножество множества Sx Π S2. Поскольку MVD (R) |= * [Sx, S2], то зависимость * [Sx, S2] должна содержаться в MVD (R). Поэтому R можно разбить на такие части Rx и R2, что U Rx = Sx и U R2 = = S2. Для доказательства очередной леммы нам потребуется Предложение 13.6. Пусть R — редуцированная связная ациклическая схема базы данных над U. Предположим, что (Sx, S2) — плотная докомпозиция U относительно MVD (R). Тогда множество X = Sx Π S2 является множеством сочленения для R. Доказательство. Пусть R разбита на части Rx и R2 так, что U Rx = Sx и U R2 = 52. Удаление атрибутов, принадлежащих множеству X, наверняка нарушит связность R, поэтому X может не оказаться множеством сочленения по единственной причине — если оно не совпадает ни с одним из пересечений ребер схемы R (рассматриваемой как гиперграф). Допустим, что в Rx нет ребер, содержащих X. Будем считать, что любые два ребра из Rx связаны путем, не проходящим через X. Если это не так, выделим какое-нибудь ребро R в Rx и переместим в R2 все ребра из Rx, которые не связаны с R посредством пути, не проходящего через X. В силу минимальности пересечения Sx П 52 свойство (U Ri) П (U Кг) = Я сохранится при этом перемещении. Мы придем к противоречию, показав, что алгоритм Грэхема для R не может завершиться успешно. В частности, мы покажем, что принадлежащие множеству X вершины никогда не будут удалены. Первоначально каждая вершина Α ζ Χ содержится как в некотором ребре из Rx, так и в некотором ребре из R2, а потому не является терминальной. Мы покажем, что при редукции это свойство сохраняется. Сначала рассмотрим Rx. Пусть Yl9 Y2f ..., Ут — максимальные пересечения ребер из Rx с множеством X. Говоря точнее, это означает, что для каждого ί, 1 <: i < m, в Rx найдется такое ребро Ri, что Ri {] X = Υί9 и нет ни одного ребра Rjf для которого Ri Π X содержалось бы в Rj (] X собственным образом. Для каждого Yi9 1 <: i < m, существует Yj9 j Φ i9 и такие ребра Rt и Rj в R, что Ri э Υi9 Rj э Yt и Rt связано с Rj путем, не проходящим через X. Пусть это будет путь Rt = Sl9 S2, ..., Sk = — Rj. Удаление вершин при редукции не меняет его свойств, поскольку в пересечениях соседних ребер нет терминальных вершин и ни одна из вершин в Yt и Yj не является терминальной. Если некоторое ребро Sh 1 < / < k, удаляется при редукции в силу того, что оно содержится в другом ребре Q, то Q должно принадлежать Rx, так как Si содержит вершины, не входящие
13.3. Эквивалентность условий 467 в X. Если Q не лежит на нашем пути, то заменим в нем St на Q. Все свойства пути при этом сохранятся. Если же Q принадлежит пути, то удалим из него часть, ведущую от St к Q. Заметим, что в силу максимальности множеств Yt и Yj9 ребро Q не может одновременно содержать Sx (=Ri) и Sk (=#j). Поэтому и в этом случае все свойства нашего пути сохраняются. Итак, на любом шаге алгоритма редукции множество Yt содержится в некотором ребре Rt ^ Rl9 а любая вершина из X — в одном из множеств Yi9 1 < i < т. Рассмотрим теперь максимальные пересечения Zl9 Ζ2, ..., Ζη ребер из R2 с множеством X. Если для некоторого Zit 1 < i < η, найдутся Zjf j Φ i9 и ребра Rt ^ Zt и Rj з Zj9 связанные в R2 путем, не проходящим через X, то те же рассуждения, что и выше, показывают, что на любом шаге редукции множество Zt будет содержаться в некотором ребре из R2. Если такого пути нет, рассмотрим в R2 любое ребро Rt з Zt. Если бы Rt содержало вершины, не входящие в X, то с помощью \Ri\ и R\ {Ri} можно было бы получить декомпозицию схемы U «более плотную», чем декомпозиция (Sl9 S2). Следовательно, Rt ^ X и поэтому Ri = Zt. Так как схема R редуцирована, то Ri не может содержаться ни в каком другом ребре из R. Кроме того, каждая вершина из Ri принадлежит некоторому ребру из Rlf так что Rt не может быть редуцировано посредством удаления вершин. В любом случае на каждом шаге редукции в R2 найдется некоторое ребро Ri, содержащее Ζζ·. Поскольку в этом процессе каждая вершина из X принадлежит одному из множеств Υί9 1 < i < m, и одному из множеств Zj9 1 < / < η, то на R редукция закончится неудачей, и искомое противоречие получено. Поэтому как в Rlf так и в R2 должны найтись ребра, содержащие X, так что X является множеством сочленения. Лемма 13.11. Пусть R—редуцированная связная ациклическая схема базы данных. Тогда R является уникальной декомпозицией в 4НФ Доказательство. Пусть R = \Rl9 R2f ..., Rp\ и U = RiR2 ... ... Rp. Покажем, что R является уникальной декомпозицией U относительно MVD (R). Достаточно рассмотреть случай ρ ^ 2. Поскольку R обладает множеством сочленения, то в MVD (R) обязательно найдутся MV-зависимости, которые можно использовать для декомпозиции U. Из рассмотрений, предшествовавших предложению 13.6, вытекает, что если (Sl9 S2) — плотная декомпозиция U относительно MVD (R), то R можно разбить на такие части Rx и R2, что U Ri = Sx и |J R2 = S2. В силу предложения 13.6 в каждой из этих частей найдется по ребру, содержащему
468 Гл. 13. Ациклические схемы баз данных Sx Π S2 как подмножество. Таким образом, Цг и R2 замкнуты относительно R. Обозначим через Mi множество MV-зависимостей на Si9 1 < < / < 2, индуцированных зависимостями из MVD (R). Утверждается, что Mi эквивалентно MVD (Rj). Из этого утверждения вытекает справедливость доказываемой леммы. Действительно, поскольку Ri и R2 замкнуты относительно R, то они обе редуцированы, связаны и ацикличны. При этом каждая схема R ζ R лежит либо в Sly либо в S2. Если, рассуждая по индукции, допустим, что Rx является уникальной декомпозицией S± относительно MVD (Ri), a R2 — уникальной декомпозицией 52 относительно MVD (R2), то истинность нашего утверждения позволит заключить, что R — уникальная декомпозиция U относительно MVD (R). Рассмотрим Si и Rx. Мы докажем наше утверждение, сравнив процесс прогонки произвольных табло над Sx относительно MVD (Ri) с процессом прогонки табло над U относительно MVD (R). Если Τ — некоторое табло над Sl9 то расширением Τ на U назовем табло Τυ над U, строки которого получены из строк табло Τ путем заполнения позиций, соответствующих U—Sl9 новыми невыделенными переменными. Если w — строка из Т9 то соответствующую ей строку из Ти обозначим через wv. Предположим, что мы проверяем, не является ли некоторая MV-зависимость следствием J-зависимости *[Ri]. Пусть Τ — табло, ассоциированное с этой J-зависимостью. Все изменения, которые претерпит табло Τ под действием *[RX], можно воспроизвести в табло Ти с помощью * [R ] таким образом, чтобы проекция Ти на Sx совпадала с Т. Пусть Чг = \R1} R2, ..., Rq\ и R2 = = {Rg+ъ Rq+2, ···> Rp\- Предположим, что строка w получена в результате применения J-правила для *[RJ к строкам wl9 w2, ..., wq из Т. Для удобства обозначений будем считать, что Rq является ребром Rb содержащим Si (] S2. Можно применить *[R] к строкам w\ , w^, ..., Wg9 Wg9 ..., α;", чтобы получить строку υυ, такую, что νυ (SJ = v. Поэтому, если нам удастся построить в Τ строку, содержащую одни выделенные переменные, то в Τυ найдется строка, содержащая выделенные переменные в позициях из S±. Следовательно, любая MV-зависимость на Sl9 являющаяся следствием J-зависимости *[RX], представляет собой вложенную MV-зависимость над U, являющуюся следствием J-зависимости *[R]. Следовательно, эта MV-зависимость принадлежит Мг и поэтому MVD (Rx) ^ Мх. Чтобы доказать обратное включение, воспользуемся одним свойством алгоритма прогонки, которое заключается в том, что если прогонка некоторого табло выполняется относительно единственной J-зависимости, то любая полученная в результате прогонки строка может быть построена непосредственно из строк
13.3. Эквивалентность условий 469 этого табло (см. упр. 13.33). Предположим, что мы подвергаем прогонке табло Τ над U, чтобы показать, что некоторая MV-за- висимость, вложенная в Slt является следствием J-зависимости *[R]. В результате прогонки нам надо получить строку до, которая во всех позициях из Sx содержит выделенные переменные. По вышеупомянутому свойству прогонки такую строку можно построить за один шаг из исходных строк табло Т. Отсюда следует, что если Т' — ограничение Τ на Slf то с помощью однократного применения J-правила для *[Rx] мы можем построить в 7" строку, состоящую из одних только выделенных переменных. Поэтому /Wi s MVD (Rx), так что Мг = MVD (RJ. Аналогично, получаем М2 = MVD (R2), и наше утверждение, а тем самым и лемма доказаны. Для доказательства последней в этой главе леммы нам потребуются еще одно предложение и несколько определений. Предложение 13.7. Пусть Μ—множество MV-зависимостей над U, и пусть R s S ^ U. Если из Μ логически вытекает некоторая нетривиальная ММ-зависимость X -» Υ .вложенная в R, то из Μ логически вытекает также некоторая нетривиальная NN-зависимость вида X —» Ζ, вложенная в S. Доказательство оставляется читателю в качестве упр. 13.34. Следующая лемма утверждает, что если R является уникальной декомпозицией, то R ациклична. Для представления плотных 4НФ-декомпозиций будем использовать деревья. Определение 13.24. Пусть Μ — некоторое множество MV-за- висимостей над U. Деревом декомпозиции для U над Μ называется всякое корневое бинарное дерево G, обладающее следующими свойствами: 1. Метками вершин дерева G служат подмножества U. 2. Меткой корня служит U. 3. Если вершина с меткой R имеет прямых потомков с метками Яг и R2f то (/?!, R2) является плотной 4НФ-декомпозицией R относительно М. 4. Метка любого листа дерева G находится в 4НФ относительно М. Очевидно, что если G — дерево декомпозиции для U над М9 то метки листьев G образуют плотную декомпозицию U в 4НФ относительно М. Для произвольной внутренней вершины υ дерева G мы обозначим через ΙΝΤ (υ) пересечение всех схем, являющихся ее прямыми потомками в G. Пример 13.31. Пусть U = ABCDE и Μ = {А-*>В, D-» -» Е\. На рис. 13.28 изображено некоторое дерево декомпозиции G для U над Μ. Для дерева G : ΙΝΤ (щ) = А и INT (v3) = D.
470 Гл. 13. Ациклические схемы баз данных νΛ A BCDE „3 ACDE vA ACD υ5 DE Рис. 13.27. Из предложения 13.7 следует, что если вершина ν является предком вершины w в дереве декомпозиции G, то INT (w) не может быть собственным подмножеством в ΙΝΤ (υ), так как в противном случае декомпозиция, ассоциированная в у, не была бы плотной. Кроме того, метки вершин, лежащих на любом пути, ведущем от корня к некоторому листу, должны образовывать невозрастающую последовательность. Иначе говоря, если υ — предок w, то метка υ содержит метку w. Если χ и у — вершины G с метками R и S, причем ни одна из этих вершин не является предком другой, то R 3? S. Действительно, пусть ζ — общий предок для χ и у. Тогда множество INT (Z) должно содержать R П S. Если R э 5, то мы имели бы R f) S = S. Но S э INT (г), и тем же самым декомпозиция, ассоциированная с вершиной г, оказалась бы тривиальной. Отсюда следует, что одна и та же схема не может служить меткой двух разных листьев дерева G. Лемма 13.12. Пусть R —связная схема базы данных. Если R представляет собой уникальную декомпозицию, то R ациклична. Доказательство. Мы покажем, что цикличная схема базы данных не может быть уникальной декомпозицией. Сначала рассмотрим случай, когда R состоит из единственного блока. Допустим, что R является уникальной декомпозицией U относительно некоторого множества Μ MV-зависимостей. Пусть G — соответствующее дерево декомпозиции для U над М. Рассмотрим некоторую внутреннюю вершину υ в G, лежащую на один уровень выше листьев. Пусть Υ — метка левого потомка вершины υ, Ζ — метка ее правого потомка, и ΙΝΤ (υ) = Υ f\ Ζ = X. Поскольку Χ и Υ служат метками листьев G, каждое из этих множеств совпадает с некоторой схемой из R. По предложению 13.7 среди MV-зависимостей над U, логически вытекающих из М,
13.4. Упражнения 471 найдется такая нетривиальная MV-зависимость X' —» W, что X' = X. Можно считать, что среди других нетривиальных MV- зависимостей, вытекающих из М, нет MV-зависимости, левая часть которой содержалась бы в X'. Построим другое дерево декомпозиции С для U над Λί, используя на первом шаге процесса декомпозиции MV-зависимость X' -» W, а остальные декомпозиции в G' выбрав произвольно. Поскольку R является уникальной декомпозицией относительно М, то метки листьев G' те же самые, что и метки листьев G, а именно все схемы из R. Пусть Rx — множество меток листьев левого поддерева, подчиненного корню дерева С, a R2 — аналогичное множество, соответствующее правому поддереву. В силу замечаний, предшествовавших этой лемме, пересечение Rx и R2 пусто. Удаление множества X' разделяет Rx и R2. Поскольку Υ и Ζ принадлежат ΚπΥ[\Ζ = Χ^Χ', toR обладает множеством сочленения. (Заметим, что никакое ребро не может содержаться в X.) Окончание доказательства оставляется читателю в качестве упр. 13.35. Его основная идея заключается в том, чтобы показать, что в случае, когда схема R циклична и является уникальной декомпозицией, но тем не менее обладает множеством сочленения, можно найти меньший контрпример к утверждению леммы, используя разбиение R на части, определяемые этим множеством сочленения. 13.3.4. Заключительные замечания Мы рассмотрели несколько синтаксических и операционных критериев ацикличности схем баз данных. Ряд других критериев представлен в упражнениях. Интересен круг задач, связанных с вопросом о способах преобразования циклической схемы в ациклическую. Этого можно добиться, например, сливая схемы, добавляя в схемы отдельных отношений или выбрасывая из них атрибуты, разбивая схему базы данных на ациклические компоненты или присоединяя к ней новые схемы отношений. К сожалению, все эти способы модификации схем являются NP-полными в случае, когда ищется минимальная модификация. Другая область дальнейших исследований связана с вопросом о том, как использовать локальную ацикличность в тех схемах баз данных, которые в целом цикличны. Наконец, предстоит еще много работы, чтобы определить, каким образом и насколько зависимости между данными ослабляют эффект цикличности. 13.4. УПРАЖНЕНИЯ 13.1. Рассмотрим схему базы данных Ra = {ЛВС, ВСЕ, CDE}. Приведите пример такой базы данных d (Ra) = {гг (ЛВС), г2 (ВСЕ), r3 (CDE)} и таких двух программ полной редукции SPX и SP%, что предварительное применение
472 Гл. 13. Ациклические схемы баз данных к d программы SPi удешевляет стоимость вычисления гх >< г2 ><г3, а применение в тех же целях программы SP2 невыгодно. Считайте, что стоимость передачи любого атомарного значения (элемента какого-нибудь домена) равна 1, стоимость вычисления г% $ζ rj равна стоимости передачи проекции отношения гу на схему отношения г\ и что соединение должно быть вычислено в пункте, где хранится отношение гг. 13.2. Может ли отношение г измениться в результате присваивания вида г "*" г b< s* если схемы отношений г и s не пересекаются? 13.3. Покажите, что любую базу данных d, каждое отношение которой содержит по единственному кортежу, можно полностью редуцировать посредством полусоединений. (Иная формулировка: если d обладает свойством ПС, то она обладает и свойством СЦ.) 13.4. Пусть R = {jRi, R2, ..., Rp} — некоторая схема базы данных. Предположим, что *[R]|=*[Slf S2]. Покажите, что существует такая пара схем отношений S[, S'2 и такая функция /: {1, 2, ..., р}-*{1, 2}, что S'{= [J Rp ί-1, 2, f U)=i и *[S{, Sj]|=*[Slf S2]. 13.5*. Насколько велико может быть множество Μ VD (R), если R содержит ρ схем? 13.6. Проверьте, что для схем баз данных Ra и Rc из примера 13.4 MVD(Re)|=*[Rj, в то время как MVD (Rc) ^ *[RC]. 13.7.* Покажите, что если MVD (R) |=* [R], то существует эквивалентное MVD (R) множество MV-зависимостей М, число элементов которого не превосходит числа схем отношений в R. 13.8. Пусть R — схема базы данных над U. Какова временная сложность очевидного алгоритма проверки выполнения зависимости *[R] для некоторого отношения г (U). (Очевидный алгоритм состоит в вычислении mR(r).) Насколько быстро может быть проверена выполнимость *[R] в случае, когда MVD (R) |= |== * [R]? (Воспользуйтесь упр. 13.7.) 13.9. Найдите «неплотную» декомпозицию для Л BCD ΕΙ относительно множества MV-зависимостей \ВС _-» Е, CD —» /J. 13.10. Покажите, что если R является однозначной декомпозицией U, то декомпозиция U, определяемая множеством MV-зависимостей MVD (R), однозначна. - 13.11. Рассмотрим схему базы данных Rc = {ABC, BCD, СЕ, DE}, встречающуюся нам в примерах из этой главы. (a) Покажите, что Rc не является однозначной декомпозицией. (b) Постройте две разные схемы баз данных над ABCDE, каждая из которых находится в плотной 4НФ относительно MVD (Rc). 13.12. Докажите, что всякая база данных d, обладающая свойством СЦ, обладает также и свойством ПС. 13.13. Покажите, что для каждого η ^ 3 найдется такая база данных d, состоящая из η отношения, что любые η — 1 из этих отношений вполне соединимы, но d не обладает свойством СЦ. 13.14. Проверьте, что любой способ вычисления гг ><з г2 >< г3 χ г4 для базы данных из рис. 13.6, использующий попарные соединения, приводит по крайней мере к одному π омежуточному результату, не совпадающему с полным соединением отношений — его прямых потомков. 13.15*. Пусть R — схема базы данных с тем свойством, что для каждого плана соединения Ρ д^я R существует база данных d (R), такая, что конкретизация Ρ (d) не является монотонной. Покажите, что существует такая база данных d, что Ρ (d) не является монотонной ни для какого плана соединения для Ц.
13.4. Упражнения 4?3 13.16. Пусть Ρ — план соединения, изображенный на рис. 13.9, ad— база данных из рис. 13.6. Проверьте, что конкретизация Ρ (d) не является монотонной. 13.17. Покажите, что для схемы базы данных Rc = {ЛВС, BCD, CE, DE} не существует монотонного плана соединения. 13.18. Может ли схема базы данных обладать таким планом соединения Р, любая конкретизация Ρ (d) которого не монотонна (исключая случай базы данных, состоящей из пустых отношений)? 13.19. Перечислите все редуцированные гиперграфы с пятью вершинами (с точностью до изоморфизма). 3 13.20. Пусть Η — циклический гиперграф, не являющийся редуцированным, и Н' — его редукция. Покажите, что возможен случай, когда Я^для некоторого Ж является блоком, а Н'„ — нет. Может ли Η вообще не иметь блоков? 13.21. Для каждой из следующих схем баз данных установите, является ли она ациклической или циклической: (a) {ABC, CDE, AIE, АСЕ}; (b) {ABC, BCD, ACD, ABD}\ (c) {АВ, BD, CD, CE, DE}. 13.22. Докажите, что гиперграф является ациклическим в том и только том случае, когда он внутренне-ацикличен. 13.23. Найдите деревья соединений для ациклических схем баз данных из упр. 13.21. 13.24. Покажите, что ациклические схемы баз данных из упр. 13.21 обладают свойством квазистягиваемости пересечений. 13.25. Покажите, что гиперграф, ассоциированный с некоторой схемой базы данных R, состоит из единственной связной компоненты тогда и только тогда, когда любой граф соединения для R связан. 13.26. Найдите дерево соединений для каждой ациклической схемы базы данных из упр. 13.21. 13.27. Покажите, что если Η = (Л>, <§Г) — ациклический гиперграф, то таким же является и гиперграф Η „ для любого Ж s Л\ 13.28. Пусть R = {Ri, R2, ..., Rp) — связная схема базы данных с деревом соединения G. Пусть SP (1) — полная программа полусоединения для R относительно Gx. Покажите, что SP = SP (1); SP (1) представляет собой полную программу полусоединения для любого Gj, 1 <; / ^ р. Здесь SP (1) обозначает программу полусоединения, полученную из SP (1) изменением порядка шагов на противоположный и заменой каждого шага г^ ■<- г% £>< г7· на шаг О*-*- О'СК г*. 13.29*. Пусть R — схема базы данных. Покажите, что если R обладает программой полной редукции SP, то SP должна содержать по крайней мере 2-| R | — 2 шагов. 13.30. Пусть Η = (Λί°, 8) — циклический гиперграф. Пусть F £ 8 — разделяющее ребро в Η и &ι% &ч — соответствующие ему разбиения множества & — {F}. Покажите, что хотя бы один из гиперграфов, определенных множествами ребер &г U {F} и <^2 U {^}> — циклический. 13.31. Пусть R — связная схема базы данных, a R' — результат применения к R алгоритма редукции Грэхема. Покажите, что если над R' существует база данных со свойством ПС, не обладающая свойством СЦ, то то же самое справедливо и для R. 13.32. Пусть R = {Ri, R2, ..., Rp} — связная схема базы данных. Предположим, что Ri — разделяющее ребро для R относительно {Ri, R2, .·., Ri-i) и {Ri+i> Ri+2> ···» Rpi- Пусть d! — база данных над {Rlt R2, ..., Ri} со свойством ПС. Покажите, что d' можно расширить до базы данных над R, по- прежнему обладающей свойством ПС, добавив к ней отношения над /?$+1,
474 Гл. 13. Ациклические схемы баз Данные 13.33. Рассмотрим процесс прогонки некоторого табло Τ относительно единственной J-зависимости вида *[Rlt R2, ..., Rp]. Пусть w—одна из полученных в результате прогонки строк. Покажите, что для любой схемы Rf, 1 ^ i ίζ /?, в Τ найдется исходная строка υ, такая, что w (Rfi = ν (Ri). 13.34. Докажите предложение 13.7. 13.35. Доведите до конца доказательство леммы 13.12. 13.36. Для какого-нибудь из условий 1—9 теоремы 13.2 покажите, что оно следует из условия 10. Определение 13.25. Пусть Я = (Л?\<§) — гиперграф, и пусть Ρ = Elt Е2, ... ..., Ет — некоторый путь в Я. Положим Ft = Et П Ei+1, 1 < ί < m. Путь Р называется бесхордовым, если никакое ребро Ε из <§Г не содержит ни одного из множеств Ff (j Fj \J F^, где 1 ^ i < / < k < т. Иными словами, в 8 нет ребер, которые содержали бы три пересечения соседних ребер этого пути. Путь Ρ называется циклом, если Ег = Ет. 13.37. Пусть Я — гиперграф. Докажите, что Я является ациклическим, если и только если в нем нет бесхордовых циклов, состоящих из трех или более ребер (первое и последнее ребра учитываются лишь один раз). 13.38. Приведите пример ациклического гиперграфа, содержащего цикл. 13.39*. Пусть d — база данных над схемой R = {Rlt R2, ..., Rp}. Докажите, что, если для d существует программа полной редукции, в ней должно быть не менее 2р — 2 полусоединений. Определение 13.26. Пусть d — база данных над схемой R. Программа полусоединения SP называется программой максимальной редукции для dt если после применения SP к базе данных dt в каком бы состоянии последняя ни находилась, d не поддается дальнейшей редукции посредством полусоединений (хотя и не обязательно является вполне редуцированной). 13.40. Покажите, что если некоторая база данных d не имеет программы полной редукции, то она не имеет и программы максимальной редукции. 13.41. Назовем план соединения J Ρ последовательным, если правыми прямыми потоками для всех вершин JP служат листья. Покажите, что схема базы данных R обладает монотонным планом соединения тогда и только тогда, когда она обладает монотонным последовательным планом соединения. Определение 13.27. Пусть Я = (Л9, &) — гиперграф. Графом, ассоциированным с Я (обозначается Gfj), называется граф с множеством вершин Л\ содержащий ребро (Л, В) в точности тогда, когда вершины А и В вместе содержатся в некотором ребре гиперграфа Я. Определение 13.28. Пусть G — неориентированный граф. Клика в графе G — это такое подмножество его вершин, любые две вершины из которого соединены ребром. Граф G называется хордовым, если у каждого цикла в этом графе, проходящего по крайней мере через четыре вершины, имеется хорда — ребро графа G, соединяющее две несмежные вершины цикла. Определение 13.29. Пусть Я — гиперграф. Я называется конформным, если каждое множество Ж его вершин, образующее клику в графе G#, содержится в некотором гиперребре. Гиперграф Я называется хордовым, если он конформен, а граф 6и — хордовый. 13.42. Докажите, что гиперграф Я тогда и только тогда ацикличен, когда он хордовый. Напомним, что для произвольного множества MV-зависимостей Μ и произвольного множества атрибутов X через DEP (X) обозначается базис зависимостей для X.
13.5. Библиография и комментарии 475 Определение 13.30. Пусть Μ — множество MV-зависимостей. Любое множество X атрибутов, совпадающее с левой частью некоторой MV-зависимости из Μ будем называть ключом, ассоциированным с М. Два ассоциированных с Μ ключа X и Υ назовем бесконфликтными, если DEP (X) и DEP (Y) можно представить в виде DEP (X) = {Vlt V%%.... Vht Xlt ..., Xm% ZxYtY2 ...Yn) DEP (Y) = {Vlt V2i ..., Vhi 7X, ..., Yn, Z2X,X2 ... Xm} таким образом, что 1 Ζ Χ Ζ Υ 2. DEP (xfr\DEP (Υ) = {Vlt V* ..., Vh). 3. DEP (Χ Π Y)^{Vu V*> .... VU. Множество М называется бесконфликтным, если бесконфликтны любые два ассоциированных с ним ключа. 13.43. Докажите, что схема базы данных R является ацикличной тогда и только тогда, когда зависимость соединения *[R] эквивалентна некоторому бесконфликтному множеству MV-зависимостей. 13.44. Пусть R — схема базы данных. Напомним, что Ы*к — это W-фупк- ция, определяемая проекциями *[К]-слабоуниверсальных отношений. Найдите алгоритм вычисления [Х]*р, имеющий полиномиальную временную сложность относительно размера базы данных. 13.45. Пусть R — циклическая схема базы данных. (a) Покажите, что R всегда можно преобразовать в ациклическую схему базы данных, добавив к ней всего одну схему отношения. (Не стоит думать слишком усердно!) (b) Найдите алгоритм полиномиальной относительно размера R сложности, определяющий размер самой маленькой схемы отношения, присоединение которой превращает R в ациклическую схему базы данных. 13.5. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Понятие ациклической схемы базы данных впервые возникло в работах, посвященных операции полусоединения и сравнительному изучению свойств попарной согласованности и согласованности в целом. Первое определение полусоединения дали Холл, Хичкок и Тодд (Hall, Hitchcock, Todd [1975]), назвавшие эту операцию «обобщенным пересечением». Примерно в те же годы употреблялся и термин «полусоединение», но операция, которую он обозначал, не имеет ничего общего с той, которую называем полусоединением мы. Полусоединения широко используются в алгоритмах распределенной обработки запросов для системы управления распределенными базами данных SDD-1, созданной группой авторов, (Rothnie, Bernstein et al. [1981]). В работе Bernstein, Chiu [1981] впервые исследованы связи между деревьями соединений и программами полной редукции, хотя рассмотрен лишь случай полусоединений над единственным атрибутом. Бернштейн и Гудман (Bernstein, Goodman [1979a, 1979c]) распространили эту теорию на многоатрибутные полусоединения. Теорема 13.1 принадлежит им. С некоторыми алгоритмами нахождения остовного дерева наименьшей стоимости можно познакомиться по книге Ахо, Хопкрофта и Ульмана [1974]. Интерес к попарной согласованности и согласованности в целом возник в связи с вопросом о том, как определить, можно ли получить все отношения некоторой базы данных как проекции из одного отношения. В работе Honeyman, Ladner, Yonnakakis [1980] показано, что в общем случае эта задача NP-полна. Грэхем (Graham [1979]) определил обширный класс схем баз данных, для которых свойство ПС влечет за собой свойство СЦ, но его класс был Уже класса
476 Гл. 13. Ациклические схемы баз данных всех ациклических схем. Он предложил алгоритм редукции, который независимо от него был описан в работах Yu, Ozsoyoglu [1979, 1980], хотя там он выражен в терминах графов соединения. В статье Honeyman [1980b] обнаружена связь между эквивалентностью свойств ПС и СЦ и существованием программ полной редукции, однако доказательства небезупречны. Одним из первых исследователей, использовавшим для формулировки задач о схемах баз данных язык теории гиперграфов, был Намибар (Namibar [1979]). В серии работ Fagin, Mendelzon, Ullman [1980], Beeri, Fagin, Maier, Mendelzon et al. [1981] и Beeri, Fagin, Maier, Yannakakis [1981] было дано определение ациклических схем баз данных, а также установлен ряд критериев ацикличности. Бернштейн и Гудман (Bernstein, Goodman [1979b, 1980a]) распространили теорию полусоединений на случай условий, включающих неравенства. В работах Chili, Но [1980], Chiu, Bernstein, Но [1980] разработаны алгоритмы, которые по данному состоянию базы данных находят для него самую быструю программу полной редукции, — если хотя бы одна программа полной редукции для этого состояния существует. В отчетах Goodman, Shmueli [1980a, 1980b, 1981a, 1981] исследован ряд проблем относительно программ полной редукции и деревьев соединений, в том числе: построение программ редукции с помощью операций, отличных от полусоединения; неприменимость алгоритмов типа прогонки для выяснения вопроса о существовании программ полной редукции; обобщение понятий цикла и клики на случай гиперграфов; оценка сложности преобразования, превращающего циклические схемы в ациклические. Относительно методов элиминации цикличности см. также Chase [1981 ]. В работах Lien [1980]' и Sciore [1981] изучались бесконфликтные множества MV-зависимостей, которые можно использовать для характеризации ациклических схем баз данных. Оба автора отстаивают точку зрения, согласно которой множества MV-зависимостей, естественным образом возникающие на практике, являются бесконфликтными. В статье Yannakakis [1981] показано, что для ациклических схем баз данных некоторые задачи решаются более эффективными алгоритмами, чем для циклических схем. Исследование Kats*no [1981a] посвящено взаимодействию ацикличности с J- и MV-зависимостями. В работе Maier, Ullman [1981] показано, что ациклическими являются в точности те схемы, в которых связи между множествами атрибутов в некотором смысле уникальны. Вопрос о возможных приложениях ациклических схем баз данных рассмотрен в Atzeni, Parker [1981]. Упражнения 13.7, 13.22, 13.41, 13.42 и 13.43 заимствованы из работы Beeri, Fagin, Maier, Yannakakis [1981], упр. 13.13—из Goodman, Shmueli [1980a], а упр. 13.28 — из Bernstein , Chiu [1981]. Решение упр. 13.36 дано в работе Fagin, Mendelzon, Ullman [1980]. Импликация в направлении «только тогда» из упр. 13.37 предложена в Maier, Ullman [1981], а в направлении «тогда» замечена Кентом Лавером (Kent Laver). Упражнение 13.40 извлечено из работы Bernstein, Goodman [1973c]. Ответ на упр. 13.44 см. в Yannakakis [1981]. Упражнение 13.45 заимствовано из Goodman, Shmueli [1981].
Глава 14 Дополнительные вопросы В этой главе обсуждаются некоторые дополнительные вопросы, связанные с теорией зависимостей, ограниченностью реляционной алгебры как языка запросов и расширением реляционной модели посредством включения вычисляемых отношений. 14.1. ЛОГИКА И ЗАВИСИМОСТИ МЕЖДУ ДАННЫМИ В этом разделе обсуждается связь между теорией F- и MV-за- висимостей и одним фрагментом пропозициональной логики. Для этого определяется некий способ интерпретации F- и MV- зависимостей как формул пропозициональной логики. Для множества С зависимостей и зависимости с показывается, что с следует из С в смысле теории зависимостей тогда и только тогда, когда с следует из С в смысле пропозициональной логики. Сначала рассматривается случай, когда с и зависимости из С функциональны. Затем добавляются многозначные зависимости, при этом доказательства существенно усложняются. Соответствие между F-зависимостями и пропозициональными формулами устанавливается непосредственно. А именно, если X -> Υ есть F-зависимость, где X = Ах ... Ат, Υ = Вг ... Вп, то соответствующая логическая формула имеет вид (Α, Λ А2 Λ · · · Λ Am) =► (θι Λ Β2 Λ · · · Λ Βη), где Ai и Bt рассматриваются как пропозициональные переменные1). Для этой формулы будем употреблять также сокращенное обозначение X => Υ. Пустая конъюнкция считается истинной. Таким образом, когда X пусто, логической формулой, соответствующей зависимости X -> Υ, будет истина => Вх Д В2 /\ ... Λ вп. г) То есть переменные, принимающие два истинностных значения Τ (истина) и F (ложь). — Прим. ред.
478 Гл. 14. Дополнительные вопросы Следующий простой факт дает некоторое свидетельство в пользу того, что при описанном выше соответствии F-зависимостей и формул отношения следования для зависимостей и формул совпадают: все правила вывода для F-зависимостей переходят в корректные логические правила, если F-зависимости интерпретировать как пропозициональные формулы (см. упр. 14.1). Пример 14.1. Рассмотрим правило транзитивности для F-зависимостей: из X-+YuY-*Z следует X ->- Z. Соответствующее правило логического вывода имеет вид из Χ =>- Υ и Υ =>► Ζ следует Χ =φ- Ζ и представляет собой правило транзитивности из математической логики. Если выполняются зависимости А В -> С и C-+-DE, то можно заключить, что выполняется А В -+■ D Е. Аналогично, если А Л В =^ С и С =ф- D Д Е, то можно вывести А Д В =ф- =>D Д Е. 14.1.1. Мир двустрочных отношений В оставшейся части материала, связанного с зависимостями и логикой, широко используются отношения, содержащие в точности две строки. Под миром двустрочных отношений мы будем понимать теорию зависимостей ограниченную на такие отношения. Будет показано, что для F- и MV-зависимостей отношение следования в мире двустрочных отношений, такое же, как и в случае неограниченных (конечных) отношений. Такая эквивалентность не имеет места для J-зависимостей или вложенных MV-зависимостей. Пусть г — отношение со схемой R, содержащее в точности две строки (назовем их t± и t2). Оно может быть использовано для присваивания истинностных значений атрибутам из R, рассматриваемым как пропозициональные переменные. Определение 14.1. Пусть г — двустрочное отношение со схемой R. Присваивание ΨΓ истинностных значений, ассоциированное с г, определяется как функция из R в [истина, ложь], такая, что ( истина, если tx (A) = t2 (A), Ψγ (А) = J ложь^ если ^ ^ ф ^ ^ Пример 14.2. Пусть г (А В С D) — отношение, показанное на рис. 14.1. Для соответствующего присваивания ΨΓ имеем Ψ г (А) = истина, Ψ г (В) = ложь, ψΓ (С) = ложь, Ψг (D) = истина.
ί4.ί. Логика и зависимости между данными 47§ Лемма 14.1. Пусть X -> Υ есть F-зависимость над R и г — отношение над R с двумя строками tY и t2. Зависимость X -> Υ выполняется на г тогда и только тогда, когда формула X => Υ истинна при присваивании ΨΓ. r(A BCD) 12 4 6 r(A BCD) 12 5 6 s(A BCD) 1246 1356 1256 1356 1346 1356 Рис. 14.1. Рис. 14.2. Рис. 14.3. т Доказательство. Достаточность. Пусть X = Аг А2 ... А и Υ = Вг В2 ... Вп. Если формула Χ =>- Υ истинна при ΨΓ, то при ΨΓ ложна конъюнкция Аг Д А2 Д ... Д Ат или истинна конъюнкция Вг Д В2 Д ... Д Вп. В первом случае существует i, \ < i <. т, такое, что tx (At) Φ t2 (At). Поэтому зависимость X -> Υ выполняется на г. Во втором случае tx (Y) = t2 (Y) и зависимость X -> Υ опять выполняется на г. Необходимость. Доказательство оставляется читателю (см. упр. 14.3). Пример 14.3. Пусть г (А В С D) — отношение из предыдущего примера. Зависимость А -> D выполнена на г, и формула А => D истинна при ΨΓ. Зависимость А -> В не выполняется на г, и формула А => В ложна при ΨΓ. Лемма 14.2. Пусть г (R)— отношение, F — множество функциональных зависимостей над R и X -> Υ есть ^-зависимость над R. Если на г выполняется F, но не выполняется X -> F, то это верно и для некоторого двустрочного подотношения отношения г. Доказательство. Результат довольно очевиден, и доказательство оставляется читателю. Напомним только, что если F выполняется на г, то оно выполняется и на любом подотношении из г. Пример 14.4. На рис. 14.2 показано отношение г со схемой A BCD, которое удовлетворяет множеству зависимостей F = = \А В -> D, С -> D} и не удовлетворяет зависимости С->Б. На рис. 14.3 показано двустрочное подотношение s отношения г с теми же свойствами. Ниже при доказательстве теоремы 14.1 будет использовано специальное множество двустрочных отношений. А именно, пусть
480 Гл. 14. Дополнительные вопроСь! R — схема отношения и X <= R. Тогда через 2Х будем обозначать отношение над R, состоящее из двух строчек t± и t2, где tx состоит из одних единичек, a t2 (А) = 1, если Α ζ Ху и t2 (А) = О в противном случае. Здесь важно то, что 2Х — двустрочное отношение, строки которого совпадают в точности на X х). Пример 14.5. На рис. 14.4 показано отношение 2А в над схемой А В С D. 2АВ(А BCD) 1111 110 0 Рис. 14.4. 14.1.2. Эквивалентность импликаций для формул и функциональных зависимостей Теорема 14.1. Пусть F— множество функциональных зависимостей над схемой R и X -> Υ есть зависимость над R. Тогда следующие утверждения эквивалентны: 1. Из F следует Χ-+-Υ. 2. Из F следует X -*■ Υ в мире двустрочных отношений. 3. Из F следует Χ =>- Υ как логическая формула. Доказательство. Очевидно, 1 =^ 2. По лемме 14.2 имеет место 2 =^ 1. Вместо 2 =^ 3 мы докажем эквивалентное утверждение 13 =^ 12. Пусть Ψ — истинностное присваивание на /?, при котором все формулы из F истинны, a X => Υ ложна. Положим Ζ = \Α ζ R | Ψ (А) = истина]. Рассмотрим двустрочное отношение 2Ζ над R. Согласно лемме 14.1, все зависимости из F выполняются на 2Z, но это неверно для Доказательство для 3 =^ 2 аналогично. Допустим, что X -> Υ не следует из F в мире двустрочных отношений. Пусть г (R) — двустрочное отношение, на котором выполняются все зависимости из F, но не X -»■ Υ. Согласно лемме 14.1, при присваивании ΨΓ формулы из F истинны, a Χ =>Υ ложна. 14.1.3. Добавление многозначных зависимостей В этом разделе мы обобщим леммы 14.1, 14.2 и теорему 14.1, включив многозначные зависимости. На протяжении всего раздела предполагается, что левая и правая части MV-зависимостей г) Последнее замечание весьма существенно: важно лишь, чтобы в доменах имелись два различных элемента. — Прим. ред.
14.1. Логика и зависимости между данными 481 X —» Υ не пересекаются между собой. Соответствие между MV- зависимостями и формулами не такое прямое, как в случае F- зависимостей. Пусть R — схема отношений иХ, У, Ζ — разбиение R, где X = АгА2 ... Ат% Υ = Вг В2 ... ВП9 Ζ ^ СХС2 ... Ср. Тогда формула, соответствующая зависимости X —» У, имеет вид (Лх Λ ^ Λ · · · ААт) =*- ((βχ Λ β2 Λ · · · Λ 5η) ViCxACaA ··· ACP)). Когда m, n или р равны 0, то соответствующие конъюнкции считаются истинными. Для приведенной выше формулы будем пользоваться также сокращенным обозначением X =$* (Υ \J Z). Щ Пример 14.6. Зависимости В —» Л D над схемой А В С D Ε соответствует формула В =ф- ((А /\ D) \J (С /\ Е)). Введем одно определение, связывающее MV-зависимости с двустрочными отношениями. Пусть X —» Υ есть зависимость над схемой R и г (R) — двустрочное отношение, удовлетворяющее зависимости X —» Υ. Будем говорить, что X —» Υ активно выполняется в г, если строчки из г совпадают на X. Лемма 14.3. Пусть R — схема отношений и Χ, Υ, Ζ разбивают R. NN-зависимость X —»F активно выполняется в двустрочном отношении г = \tlt t2\ над R тогда и только тогда, когда выполнены следующие условия: 1. ίχ(Χ) = U(X) и ^ 2. tx (Υ) = U (У) или к № = U (Z)- Доказательство оставляется читателю (см. упр. 14.5). Следующая лемма обобщает лемму 14.1. Лемма 14.4. Пусть с есть F- или MV-зависимость над схемой R иг — двустрочное отношение над R. Зависимость с выполняется в г тогда и только тогда, когда с, рассматриваемая как логическая формула, истинна при истинностном присваивании ΨΓ. Доказательство. Пусть г = \tv fa}. Если зависимость с функциональна, то можно использовать лемму 14.1, поэтому пусть с — многозначная зависимость и имеет вид X —» Y. Положим Ζ = R — ΧΥΛ Достаточность. Пусть формула X => (Υ \J Z) истинна при ΨΓ. Возможны два случая. Если X ложна при ΨΓ, то ίχ (Χ) Φ t2 (X) и X —» Υ выполняется в г. Если X истинна при ΨΓ, то одна из дизъюнкций Υ, Ζ должна быть истинной при ΨΓ. Отсюда получаем для г, что *! (X) = t2 (X) и либо tx ( Υ) = t2 (Y) у либо tx (Ζ) — = t2 (Ζ). Поэтому по лемме 14.3 зависимость X —» Υ выполнена в г.
482 Гл. 14. Дополнительные вопрось! Необходимость. Пусть зависимость X —» Υ выполняется на г. Если t± (Χ) Φ t2 (X)у то X ложна при ΨΓ, и поэтому X =»- (Υ V 2) истинна. Если tx (X) = t2 (X), то Χ -» 7 активно выполняется в г. Поэтому по лемме 14.3 имеем ίχ (Υ) = t2 (Y) или tx (Ζ) = t2 (Ζ). Отсюда следует, что одна из конъюнкций Υ или Ζ истинна при ΨΓ. Поэтому X =^ {Y \J Z) истинна при Ψ,. Лемма 14.5. Пусть г = \tlt t2\ и s = \иъ и2\ — два двустрочных отношения над схемой R. Предположим, что для любого атрибута А из R, если tx (Л) = t2 (Л), то иг (А) = и2 (Л). Тогда если зависимость X —» Υ активно выполняется в г, то она активно выполняется и в s. Доказательство оставляется в качестве упр. 14.6. Следующая лемма обобщает лемму 14.2. Ее доказательство сложнее доказательства леммы 14.2, так как утверждение о том, что любое подотношение отношения, удовлетворяющего MV-за- висимости, также удовлетворяет этой зависимости, неверно Лемма 14.6. Пусть г — отношение со схемой R, С — множество F- и ММ-зависимостей над Rue — функциональная или многозначная зависимость над R. Тогда если в г выполнены все зависимости из С, но не выполнена с> то это верно также для некоторого двустрочного подотношения s отношения г. Доказательство. Случай 1 (с есть F-зависимость). Пусть с имеет вид X ->- А (почему допустимо считать, что правая часть с содержит единственный атрибут?). Согласно лемме 14.2, имеется по крайней мере одно двустрочное подотношение отношения г, не удовлетворяющее зависимости Х-»-Л. В качестве s выберем одно из таких подотношений, на котором выполняется не меньше MV-зависимостей из С, чем на любом другом, не удовлетворяющем зависимости X -> А. В S выполняются все функциональные зависимости из С. Пусть W —» Υ — произвольная MV-зависимость из С и Ζ = = R — WY. Обозначим строки из s через их и и2. Если иг (W) φ =h u2 {W)y то W -^ Y^ выполняется в s. Допустим, что их (W) = = и2 (W), но W —» Υ не выполняется активно в s. Рассмотрим W-, Y- и Z-компоненты строк иг и и2. Пусть иг = (w (W), у (Y), ζ (Ζ)> и и2 = (w (W), у' (Г), ζ' (Ζ)>, где у Φ у' и ζ Φ ζ'. Так как X ->- А не выполняется в s, то иг и и2 совпадают на X, но не на Л. Поэтому Л £ Υ или Α ζ Ζ. Пусть Л £ Υ. Рассмотрим отношение q (/?), состоящее из двух строк υχ = = (w, у у z) и υ2 = (w, у', ζ). Отношение q является подотноше- нием г, так как в г выполняется W —» У. В q не выполняется X -> Л (почему?), но активно выполняется W —» У. По лемме 14.5 в # активно выполняется любая MV-зависимость, которая
14.1. Логика и зависимости между данными 483 активно выполняется в s. Существование q противоречит выбору s$ так как в q выполняется больше MV-зависимостей из С, чем в s. Поэтому предположение, что W —» Υ не выполняется в s, некорректно. Следовательно, s — это требуемое двустрочное отношение. Случай 2 (с есть MV-зависимость). Пусть с имеет вид X —» Υ и Χ, Υ, Ζ — разбиение R. Мы знаем, что любое двустрочное подот- ношение отношения г будет удовлетворять всем F-зависимостям из С. Рассмотрим Х-, Υ- и Ζ-компоненты строк из R. Так как X —» Υ не выполняется в г, то существуют строки tx = {χ, у, ζ) и t2 = (х> у\ ζ'), такие, что либо (х, у', ζ), либо (х, у, г) отсутствует в г. В качестве s выберем такую пару {tv t2}, для которой число MV-зависимостей, которые активно выполняются в s, максимально. Предположим, что не все MV-зависимости из С выполняются в s. Пусть U —» У — зависимость из С, которая не выполняется в s, и W = R — UV. Рассмотрим ί/-, V- и ^-компоненты строк ^ и t2. Пусть tx = {u, υ, w), t2 = (и, υ', w'). Положим V* = \Αζν\Ό(Α)φΌ' (А)\, W* = {A£W\w(A)=£w' (A)\. Множества W* и У* непусты, иначе в s выполнялась бы зависимость U —» У. Так как С выполняется в г, то г должно содержать строки t3 = (и, υ', w), f4 = (и> v> w')· Рассмотрим два подотношения q1 = \tv t3], q2 = \t2, f4}. Так как ρ Φ υ' и w Φ Φ α/, το q1 и q2 —двустрочные отношения. Заметим, что tt и /8 отличаются только на У*, t2 и f4— только на W*9 a tlt t2 отличаются на У*№*. Покажем, что как в qlf так и в q2 активно выполняется больше MV-зависимостей из С, чем в s. Пары tly t3 и t2, ί4 совпадают на любом атрибуте, на котором совпадают t± и t2. Таким образом, согласно лемме 14.5, в qx и q2 активно выполняются все MV-зависимости, которые активно выполняются в s. Кроме того, в qx и q2 активно выполняется U —» У. Если хотя бы в одном из q± или q2 не выполнялась X —» У, то доказательство было бы закончено, так как тогда получили бы противоречие с выбором s. Допустим, что как в qlt так и в q2 выполняется X —» Y. При этом выполнимость должна быть активной, так как tlt t2, t3 и ί4 совпадают на X. Из того, что X —» Υ активно выполняется в qlf по лемме 14.3 получаем, что ti и t3 совпадают на Υ или Ζ. Если они совпадают на Υ, то У* s Ζ, так как ^ и t3 отличаются только на У*. Если tx и /3 совпадают на Z, то У* ^ У. Аналогичное рассуждение для q2 показывает, что W* ^ Ζ или №* ^ У. Если У*дК и И?* ^ У, то tx и /2 совпадают на всем множестве Z, из чего следует выполнимость X -» Υ в s. Поэтому
484 Гл. 14. Дополнительные вопросы такая комбинация включений невозможна. Аналогично, включения V* ^ Z, W* ^ Ζ также не могут одновременно иметь места. Оставшиеся возможные комбинации — это V* ^ У, W* ^ ^ Ζ или V* ^ Z, W* ^ У. По соображениям симметрии достаточно рассмотреть первую возможность. При этом имеем t3 = = (χ, у', ζ), /4 = (х, у, ζ'). По построению s одна из строк (χ, #', г) или (χ, ί/, г') должна отсутствовать в г. Получили противоречие с предположением, что ηλ и q2 оба удовлетворяют зависимости X —» Y. Следовательно, по крайней мере в одном из отношений qx и q2 не выполняется X —» Y, что противоречит выбору s. Таким образом, допущение, что в s выполняются не все MV-зависимости из С, было неверным, и s — требуемое двустрочное отношение. Теорема 14.2. Пусть С — множество функциональных и многозначных зависимостей над схемой Rue — функциональная или многозначная зависимость над R. Тогда следующие условия эквивалентны: 1. Из С следует с. 2. Из С следует с в мире двустрочных отношений. 3. Из С следует с при интерпретации зависимостей как логических формул. Доказательство аналогично доказательству теоремы 14.1. Леммы 14.4 и 14.6 выполняют роль лемм 14.1 и 14.2. Детали оставляются читателю (см. упр. 14.7). 14.1.4. Невозможность обобщения результатов Описанное выше соответствие между логикой и теорией зависимостей не может быть распространено на зависимости соединений или вложенные многозначные зависимости. Это ограничение покажется не столь удивительным *), если заметить, что для таких типов зависимостей импликация в мире двустрочных отношений отличается от импликации в мире всех (конечных) отношений (см. упр. 14.9). Мы покажем, что соответствие не распространяется на J-зависимости. Доказательство для EMV-зависи- мостей оставлено в качестве упр. 14.10. Допустим, что использованное выше соответствие можно распространить на J-зависимости. Рассмотрим J-зависимость * [А В, ВС, АС]. Пусть / — формула, соответствующая этой зависимости. Так как *1Л В, В С, А С] следует из А —» В, то f *) Скорее, удивительно было бы обратное, учитывая слабость выразительных возможностей пропозициональной логики. Более полное рассмотрение связей между теорией зависимостей и логикой требует привлечения логики предикатов (см. упр. 14.20). — Прим. перев.
14.2. Другие зависимости между данными 485 должна следовать из А =>- (В \J С). Рассуждая аналогичным образом, / должна вытекать из В =>- (А V С). Пусть Ψ — некоторое присваивание истинностных значений переменным А, В, С. Если Ψ (А) = ложь, то А =>- (В V С) истинна и, значит, / тоже истинна. Если Ψ (А) = истина, то В =>{А \J С) истинна и, значит, / тоже истинна. Таким образом, / должна быть тавтологией, так как она истинна при всех Ψ. Однако * [А В, В С, А С] не всегда имеет место. Противоречие получилось в результате предположения, что для * [А В, ВС, А С] имеется логическая формула, согласованная с логической интерпретацией, предложенной для MV-зависимостей. 14.2. ДРУГИЕ ЗАВИСИМОСТИ МЕЖДУ ДАННЫМИ Зачем нам нужны другие типы зависимостей? Недостаточно ли F-, MV- и J-зависимостей и их вложенных вариантов? Имеются некоторые свидетельства в пользу того, что эти зависимости не образуют естественного класса, им чего-то недостает. Класс множеств отношений, определимых с помощью F-, MV- и J-зависимостей, не замкнут относительно проекций. В разд. 9.3 мы видели, что существуют множества F функциональных зависимостей над схемой R, такие, что пх (SAT (F)) не может быть описан как SAT (F') для множества F' функциональных зависимостей над X. Такое замечание было сделано также для MV-зависимостей. Оно применимо также к J-зависимостям (см. упр. 14.11). Другая проблема состоит к том, что не существует полной аксиоматизации для вложенных MV-зависимостей и неизвестна полная аксиоматизация для J-зависимостей. Для вложенных MV-зависимостей невозможность полной аксиоматизации доказана, и имеются некоторые свидетельства в пользу аналогичного утверждения для J-зависимостей (см. библиографию и комментарии в конце главы). Можно использовать метод прогонки для проверки выводимости J-зависимостей, однако более быстрые алгоритмы для F- и MV-зависимостей основаны на правилах вывода, а не на методе прогонки. Кроме того, прогонка — слишком громоздкое средство для порождения всех зависимостей данного типа, которые вытекают из данного множества зависимостей. При изучении более обширных классов зависимостей можно надеяться, что будет найден класс, который содержит все F- и J-зависимости и свободен от указанных выше проблем х). Таб- *) Однако при этом могут появиться новые, даже более сложные проблемы (см. ниже). Более серьезным основанием к введению новых типов зависимостей является то, что они дают средства для моделирования в базах данных более сложных предметных областей. — Прим. перев.
486 Гл. 14. Дополнительные вопросы личные зависимости и обобщенные функциональные зависимости представляют собой примеры таких более общих зависимостей. Табличные зависимости обобщают J-зависимости, а обобщенные функциональные зависимости (как вы уже догадались) обобщают F-зависимости. Введение этих зависимостей решает первую из упомянутых проблем. Множества отношений, определяемых этими зависимостями, как мы увидим, замкнуты относительно проекций. Однако решению проблемы аксиоматизации эти обобщенные зависимости не очень помогают: хотя и имеется полная аксиоматизация для табличных зависимостей, но только для «бесконечной импликации», т. е. эта аксиоматизация полна для вывода импликаций, когда допускаются бесконечные отношения. Однако будет показано, что она неполна для конечных отношений. Ниже также показывается, что существует бесконечное множество неэквивалентных табличных зависимостей над схемами достаточно большого размера, поэтому, вообще говоря, невозможен конечный пересчет всех табличных зависимостей, которые вытекают из данного множества табличных зависимостей. Метод прогонки с небольшими модификациями можно распространить на табличные зависимости, однако табло, получаемое в результате прогонки над табличными зависимостями, может оказаться бесконечным. Хотя у нас и есть гарантия того, что «выигрывающая строка» будет порождена после конечного числа шагов (если импликация имеет место), однако прогонка не может служить основой для алгоритма проверки выводимости табличных зависимостей. Можно себе представить разрешающую процедуру, при которой одновременно проводится прогонка в попытке доказать импликацию и ищутся контрпримеры к импликации. Однако этот план также может провалиться, если окажется, что конечного контрпримера не существует, хотя есть бесконечный. Маловероятно, чтобы какая-нибудь модификация этого подхода могла решить задачу, так как доказана неразрешимость проблемы выводимости для слабого обобщения табличных зависимостей 1). При некоторых ограничениях проблема выводимости для табличных зависимостей разрешима. Одно из таких ограничений — выводимость из одноэлементного множества табличных зависимостей. Другой случай — это когда табличные зависимости не являются вложенными. В обоих случаях процесс прогонки всегда заканчивается. Во втором случае прогонка заканчивается даже тогда, когда добавлены обобщенные функциональные зависимости. *) Эта проблема для табличных зависимостей также неразрешима (см. бн- бд юграфию в конце главы). -=■ Прим. перев.
14.2. Другие зависимости между данными 487 т(А wl a W2 а w3a νν4α' w a Рис. В b Ь' ъ· ъ ь . 14.5. С с' с' с с с 14.2.1. Табличные зависимости Табличная зависимость — по существу утверждение о том, что отношение является инвариантным относительно некоторого табличного отображения. При написании табличные зависимости напоминают табло с добавленной снизу специальной строкой, т. е. похожи на перевернутый табличный запрос. Специальная строка называется строкой-заключением, остальные строки — строками-допущениями. Отношение г удовлетворяет табличной г(Л В С) t{ 1 3 5 t2 l 4 5 t3 1 4 6 t4 2 3 6 Рис. 14.6. зависимости, если любая оценка р, отображающая строки-допущения в кортежи из г, отображает строку-заключение также в кортеж из г. Точное определение несколько сложнее этого неформального разъяснения, так как нужно указать, как обращаться с теми переменными из строки-заключения, которые не встречаются в строках-допущениях. Пример 14.7. На рис. 14.5 показана табличная зависимость τ над схемой ABC. Строки wx, w2f w3, w^ — строки-допущения, a w — строка-заключение. Отношение г из рис. 14.6 не удовлетворяет зависимости τ, так как функция р, отображающая w% в ti, I < i < 4, не переводит w ни в какую строку из г. Добавление строки (1 3 6) к г дает отношение, на котором τ выполняется, однако проверка этого факта довольно громоздка. Теперь приведем формальные определения табличной зависимости и ее выполнимости. Хотя табличная зависимость не то же самое, что табло, они достаточно похожи друг на друга, поэтому такие понятия, связанные с табло, как оценка и отображение вложения, применимы к множеству строк-допущений в табличных зависимостях. В приводимом ниже определении, когда речь идет о строках над схемой R, имеются в виду кортежи абстрактных символов или переменных, как и в табло. Однако переменные не разделяются на выделенные и невыделенные, как это было раньше1). г) Фактически переменные из w соответствуют выделенным переменным из табло. — Прим. перев.
488 Гл. 14. Дополнительные вопросы" Определение 14.2. Табличная (Т-) зависимость над схемой отношений R представляется парой τ = (7\ w), где Τ = {wlf ... ..., wk\ — множество строк над R, называемых строками-допущениями, a w — строка над R, называемая строкой-заключением. Отношение г (R) удовлетворяет Т-зависимости τ, если любая оценка р, для которой ρ (Τ) ^ г, может быть расширена до оценки р\ для которой р' (w) ζ г. Т-зависимость τ называется тривиальной, если она выполняется на любом отношении над R. Т-зависимости изображаются так, как показано на рис. 14.5. Строка-заключение помещается внизу и отделяется от допущений чертой. Для обозначения переменных обычно используются .строчные буквы (возможно), с верхними или нижними индексами), соответствующие именам атрибутов, причем в заключении стоят только неиндексированные буквы. Хотя Т-зависимости выглядят очень похожими на перевернутые табличные запросы, имеются два различия: 1. Переменные из заключения не обязаны встречаться в строках-допущениях. 2. Одни и те же переменные могут встречаться в различных столбцах. В связи с п. 1 назовем Т-зависимость τ полной, если любая переменная из заключения встречается и в некоторой строке- допущении. Пусть wlt w2, ..., wk — допущения из τ и w — заключение из τ. Т-зависимость τ будем называть S-частичной, если S = \А ζ R | w(А) встречается в одной из wl9 w2, . . ., wk\. Разумеется, если S = R, то τ — полная. Если S Φ R, то будем говорить, что τ строго частична. Если τ S-частична, то ее строка- заключение определяет значения кортежей только на атрибутах из S, не накладывая никаких ограничений на значения других атрибутов г). Пример 14.8. Т-зависимость τ над схемой А В С из рис. 14.7 является А β-частичной. В связи с п. 2 назовем Т-зависимость типизированной, если каждая переменная встречается в точности в одном столбце. Если некоторая переменная встречается в нескольких столбцах, то такая Т-зависимость называется нетипизированной. Зависимости из рис. 14.5 и 14.7 типизированы. В дальнейшем, говоря о Т-зависимостях, мы будем иметь в виду типизированные зависимости, если явно не сказано противное. х) Понятие частичности обобщает понятие вложенности зависимостей. — Прим. перев.
14.2. Другие зависимости между данными 489 Пример 14.9. На рис. 14.8 показана нетипизированная Т-за- висимость. При предположении dom (A) = dom (В) она утверждает, что бинарное отношение является транзитивно замкнутым. Любая зависимость соединения, полная или вложенная, пред- ставима как Т-зависимость (см. упр. 14.15). т(А В С) а' Ъ' а' Ъ а Ъ' а Ъ Рис. 14.7. с' с" с" С т(А_ а Ъ а Рис. _Ё> Ь с с 14.8. т(Л а а а В ь ь ь Рис С с с' с . 14.9 D d' d d ε: e' e e Пример 14.10. MV-зависимость А В -» С над схемой А В CD Ε эквивалентна зависимости τ из рис. 14.9. Зависимость τ утверждает, что если отношение содержит два кортежа tx и /2, которые совпадают на А В, то оно должно содержать также кортеж f3, такой, что t3 (А В С) = *, (А В С) и t3 (А В D Е) = = t2 (А В D Е). Это в точности означает, что отношение удовлетворяет зависимости А В --» С. Не любая Т-зависимость эквивалентна J-зависимости или вложенной J-зависимости. Сначала заметим, что по определению имеется бесконечное число различных Т-зависимостей над любой схемой отношений, а число J-зависимостей над ней конечно. Однако бесконечно много Т-зависимостей могут оказаться эквивалентными, что, например, верно для схем с одним атрибутом. Но уже для схем с не менее чем тремя атрибутами ниже будет показано, что существует бесконечно много неэквивалентных Т-зависимостей над ними. Следовательно, некоторые из этих Т-зависимостей неэквивалентны никаким J-зависимостям. Для схем с двумя атрибутами имеются только три неэквивалентные Т-зависимости (см. упр. 14.19). Следующий пример показывает, что одна из этих зависимостей неэквивалентна никакой J-зависимости. Пример 14.11. Рассмотрим Т-зависимость τ над схемой А В из рис. 14.10. Эта зависимость нетривиальна, так как легко построить отношение, на котором она не выполняется (можно взять отношение, состоящее в точности из строк-допущений зависимости τ). Единственная нетривиальная J-зависимость над схемой А В имеет вид *[Л, В]. Однако τ и *[Л, В] неэквивалентны. Отношение г из рис. 14.11 удовлетворяет зависимости τ, μο не
490 Гл. 14. Дополнительные вопросы зависимости *[Л, В]: можно убедиться в выполнении τ в г, заметив, что любая оценка из τ в г отображает wlt w2 и w3 в один и тот же кортеж из г и поэтому отображает w в тот же кортеж. т(А В С D) г(А В ) Wj Vt;2 w3 w Рис. a b' a' b' a' b a b 14.10. a «1 <*2 «3 a bx b b2 b, b Рис. C\ Cl с сз с 14.12. dx d2 d3 d d r(A B) 1 3 2 4 Рис. 14.11. 14.2.2. Примеры и контрпримеры табличных зависимостей В этом разделе будет показано, что существует самая сильная Т-зависимость над любой схемой и самая слабая нетривиальная полная Т-зависимость. Также будет приведено отношение, на котором выполняется любая строго частичная Т-зависимость, но нарушается любая полная Т-зависимость; таким образом, ни из какого множества строго частичных Т-зависимостей не может следовать никакая нетривиальная полная Т-зависимость. Теорема 14.3. Для любой схемы отношений R имеется самая сильная Ύ-зависимость τ над R. Это означает, что любое отношение г (/?), удовлетворяющее зависимости τ, удовлетворяет любой другой Ύ-зависимости над R. . Доказательство. Смысл зависимости τ состоит в том, что отношение представляет собой декартово произведение по столбцам. Пример такой зависимости для схемы А В С D показан на рис. 14.12. Отношение, представляющее собой декартово произведение, удовлетворяет любой Т-зависимости (см. упр. 14.21). Самой слабой нетривиальной Т-зависимости в общем случае не существует (см. упр. 14.22Ь), однако для любой схемы не менее чем с двумя атрибутами существует самая слабая нетривиальная полная Т-зависимость. Заметим, что над схемой с одним атрибутом существуют только тривиальные Т-зависимости. Теорема 14.4. Для любой схемы отношений R с не менее чем двумя атрибутами существует самая слабая нетривиальная полная Ύ-зависимость τ над R. Это означает, что если τ' — другая нетривиальная полная Ί-зависимость над R, то любое отношение г (R), удовлетворяющее τ', удовлетворяет также τ.
14.2. Другие зависимости меЖду Данйымй 491 Доказательство. Пусть R = Αλ А2 ... Ап, η 5> 2. Для любого i Т-зависимость τ имеет дге переменные аь Ъь встречающиеся в Лгстолбце. Пусть τ = (Τ, w), где Τ содержит все возможные строки из щ, Ъи исключая строку, состоящую из одних α-переменных, которая выбирается в качестве строки-заключения т. На рис. 14.13 показана зависимость τ для схемы R = АЛ А2 А3. т(А\ А2 Л3) Ъх Ъх Ьх Ьх «1 «1 αχ b2 b2 а2 вг Ъг Ъг аг Рис. 14.13. Пусть τ' = (7", w') —другая нетривиальная полная Т-зависимость над R. Строка-заключение w' не может встретиться в 7" (см. упр. 14.23). Для того чтобы доказать, что τ' сильнее, чем τ, построим вложение ψ зависимости τ' в τ. Это означает, что ψ отображает переменные из τ в переменные из τ так, что \|) (7') ^ 7 и ψ (w') = w. Тогда для любого отношения г (R) и оценки ρ на 7, такой, что ρ (7) е г, получаем, что р' (7") s г, где ρ' = ρ ο ψ. Если г удовлетворяет τ', то г содержит р' (w'), которое равно ρ (w), поэтому г удовлетворяет τ. При описании ψ для упрощения обозначений будем считать, что переменные из τ' переименованы так, что w = w'. Пусть ψ отображает переменную ^ в αί( а все остальные переменные столбца At из τ' отображаются в bt. Ясно, что ψ (w') = w. Для строки-допущения υ из 7' отображение ψ (ν) окажется строкой из α-переменных и b-переменных, содержащей по крайней мере одну δ-переменную. Поэтому ψ (υ) £ 7 и ψ (V) ^ 7, что завершает доказательство. Теорема 14.5. Пусть R — схема отношений и С — множество строго частичных Ί-зависимостей над R. Тогда никакая нетривиальная полная Ύ-зависимость над R не может следовать из С. Доказательство. Пусть R = Аг А2 ... Ап. Рассмотрим отношение г (/?), содержащее все кортежи с элементами 0 и 1, исключая кортеж из сплошных 1. На рис. 14.14 показано отношение г
492 Гл. 14. Дополнительные вопросы для R = Аг А2 А3. Так как проекция г на любое собственное подмножество схемы R представляет собой декартово произведение, то г удовлетворяет любой строго частичной Т-зависимости. Однако на г нарушается самая слабая нетривиальная полная Т-зависимость, построенная при доказательстве теоремы 14.3: оценка р, отображающая at в 1 и bt в 0, 1 < / <: п, отображает эту зависимость в г, но не может быть расширена на строку, состоящую только из α-переменных. Отсюда следует, что на г г(Ах Л2 А3) 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 Рис. 14.14. нарушается любая нетривиальная полная Т-зависимость над R, и поэтому г служит контрпримером к любой возможности следования нетривиальной полной Т-^зависимости из С. 14.2.3. Графическое представление табличных зависимостей Проверка того, что удовлетворяет ли отношение/-Т-зависимости τ, довольно трудоемка, так как при этом приходится рассматривать все оценки, которые переводят строки-допущения в кортежи из г. В этом разделе будет описано графическое представление отно: шений и Т-зависимостей, при котором поиск таких оценок становится несколько проще и по крайней мере для малых примеров может быть проведен вручную. Кроме того, при графическом представлении исчезают некоторые несущественные детали, что в большинстве случаев приводит к более ясному способу выражения Т-зависимостей. Какие фактические значения и переменные отражены в отношениях и Т-зависимостях, не имеет значения при проверке того, удовлетворяет ли отношение Т-зависимости. Важны лишь равенства между значениями и между переменными. Мы будем пользоваться неориентированными графами для представления отношений и Т-зависимостей: при этом, как и следовало ожидать, вершины будут соответствовать кортежам и строкам, а помеченные ребра между вершинами будут указывать атрибуты, на которых кортежи или строки совпадают.
14.2. Другие зависимости между данными 493 Определение 14.3. Пусть г — отношение со схемой R = = Αλ А2 ... Ап. Граф Gr отношения г — это неориентированный граф с помеченными ребрами, строящийся следующим образом. Вершины Gr — это кортежи отношения г. Два кортежа tl и t2 из г соединяются ребром в точности тогда, когда имеются атрибуты, на которых tl и t2 совпадают, и это ребро помечается множеством всех таких атрибутов. Рис. 14.15. Рис. 14.16. Пример 14.12. Пусть г — отношение, представленное на рис. 14.6. На рис. 14.15 показан граф Gr. При изображении графов отношений петли, т. е. ребра, ведущие из Еершин в себя, опускаются (такие ребра имеются при каждой вершине). Иногда не изображаются ребра, наличие которых можно вывести по транзитивности. Таким образом, Gr может быть изображен и так, как на рис. 14.16. Граф Gx для Т-зависимости τ определяется аналогично, единственное отличие состоит в том, что вершина строки-заключения помечается знаком *. Пример 14.13. Граф Gx для Т-зависимости τ из рис. 14.5 показан на рис. 14.17. Здесь также опущены петли и некоторые ребра, неявно определяемые по транзитивности. Так как порядок кортежей в отношениях или строк-допущений в Т-зависимостях не важен, то иногда вершины графов отношений или Т-зависимостей будут помечаться произвольным образом, кроме пометки * при вершине строки-заключения Т-зависимостей. Фактически все пометки, кроме *, можно удалить. Имеется также обратный переход от графов к Т-зависимостям. При этом если схема R фиксирована, то получим Т-зависимость, единственную с точностью до переименования переменных.
494 Гл. 14. Дополнительные вопросы Пример 14.14. Граф G, представленный на рис. 14.18, соответствует Т-зависимости τ из рис. 14.19, если в качестве схемы выбрать ABC. Определим теперь аналог понятия оценки в терминах помеченных графов. Рис. 14.17. Рис 14.18. т(А В С) а Ь' с' а' Ь' с а' Ь с a b с Рис. 14.19. Определение 14.4. Пусть Gx = (Nlf Ег) и G2 = (N2, Е2) — два неориентированных графа, ребра которых помечены подмножествами некоторого множества L. Отображение А: Ыг -*■ N2 называется гомоморфизмом графа G± в граф G2, сохраняющим пометки (пс-гомоморфизмом), если для любого ребра е = (υ, w) из G± выполнено включение L± s L2, где L± — пометка при е, L2 — пометка при ребре (h (υ), h (w)) из G2. Пример 14.15. Пусть Gr и Gx — графы, изображенные соответственно на рис. 14.16 и 14.17. Функция hlf определяемая с помощью равенств hi (α>ι) = ίι, К (w2) = t2, hx (w3) = /2, hi (wA) = tl9 Λι (*) = ti,
14.2. Другие зависимости между данными 495 является пс-гомоморфизмом из Gx в 0Г (напомним, что при всех вершинах из Ог имеются петли, хотя на рисунке они опущены). Отображение /ι2, для которого к h2 К к к (щ) (щ) (щ) (щ) (*) = = = = = *1. *3> и, *2> ь, не является пс-гомоморфизмом из 0τ в 0Г, так как, например, ребро (wl9 ш4) в 0τ имеет пометку В, а (А2 (м^), h2 (w2)) = (tl9 t2) имеет пометку А С. Выполнимость Т-зависимости на отношении можно выразить в терминах пс-гомоморфизмов между их графами. В следующей теореме 0τ — {*} означает граф зависимости GT после удаления вершины * и всех связанных с ней ребер. Теорема 14.6. Пусть Gr — граф отношения г со схемой R, 0τ — граф Ί-зависимости τ над R. Зависимость τ выполняется в г тогда и только тогда, когда любой пс-гомоморфизм h из 0τ — — {*} в Gr может быть расширен до пс-гомоморфизма всего графа Gx в 0Г. Доказательство оставляется читателю (см. упр. 14.27). Пример 14.16. Пусть Gr и 0τ — графы, изображенные соответственно на рис. 14.16 и 14.17 (те же, что в предыдущем примере). Отображение А, для которого h (w±) = tl9 h (w2) = t2, h {w3) = t3, h (o;4) = i4, является пс-гомоморфизмом из GT — {*} в Gr. Любое расширение отображения h на весь граф GT не является пс-гомоморфизмом. Например, пусть h (*) = /4. Такое расширение не является пс-гомоморфизмом, так как (ш4, *) имеет пометку Л β, а ребро (h (w±)f h (*)) = (f3, i4) из Gr — только Л. Сейчас мы воспользуемся представлением Т-зависимостей при помощи графов для доказательства того, что существует бесконечное число неэквивалентных полных Т-зависимостей над схемой с тремя атрибутами. Для этого понадобится следующая демма, которая также доказывается с использованием графов.
496 Гл. 14. Дополнительные вопросы Рис. 14.20. Лемма 14.7. Пусть χ есть Ί-зависимость над схемой R, w' — строка над R, такая, что если w' содержит некоторую переменную из строки-заключения зависимости х, то эта переменная содержится и в некоторой строке-допущении. Тогда, если τ — зависимость, полученная из τ добавлением т' к строкам-допущениям, то %' следует из х. Доказательство. Согласно выбору w', граф GXr может быть получен из GT добавлением вершины т1 и некоторых ребер, причем нет ребер, соединяющих w ц * г). Рассмотрим произвольное отношение г (R). Любой пс-гомоморфизм W из Οτ- —{*} в Gr может быть ограничен до пс-гомоморфизма h из GT— {*} в Gr. Если τ выполняется на г, то h можно расширить до всего GT. Тогда, если учесть вид графа GT-, ясно, что W может быть расширен на весь граф GT'. Поэтому, если τ выполняется на г, то это верно и для τ . Теорема 14.7 (последовательность убывающей силы). Существует бесконечная последовательность χλ, τ2, ... полных Ί-зависимостей, таких, что из τ ι следует τί+1 для i ^> 1, но никакие пары зависимостей из последовательности неэквивалентны. Доказательство. Рассмотрим бесконечный граф G (рис. 14.20). Пусть Gi, i < 1, обозначает его подграф с вершинами {*, 1, 2, ... ..., / + 1} и %t — зависимость, соответствующая графу Gt. В силу леммы 14.7 из xt следует τί+1 для / ^> 1. Следовательно, для завершения доказательства, нужно только доказать, что никакие две зависимости χλ и τί+ι неэквивалентны. Для этого достаточно указать отношение г, на котором нарушается xt, но выполняется xi+1. *) Используя соглашение о невключении выводимых по транзитивности ребер. — Прим. перев,
14.2. Другие зависимости между данными 497 В качестве г выберем отношение, состоящее из строк-допущений зависимости τέ. Заметим, что граф Gr для г — это в точности подграф графа G с вершинами {1, 2, ...,/+ 1}. Легко видеть, что xt нарушается на Gr\ отображение А, для которого h (j) = /, 1 <: <:/</+ 1, является пс-гомоморфизмом из Gt — {*} в 0Г, но он не может быть расширен на *. Теперь докажем, что τί+1 выполняется на г. Пусть h — произвольный пс-гомоморфизм из Gi+1— {*} в 0Г. Докажем, что h можно расширить на весь Gi+1. Так как число вершин у графа Gi+1 — {*} больше на одну, чем у 0Г, то h должен перевести две вершины из Gi+1 — {*} в одну из Gr. Пусть склеиваемые вершины имеют номера т и п, т нечетно, a h четно. Вершина т совпадает по Л со всеми вершинами, имеющими нечетные номера, а п совпадает по Л с вершинами, имеющими четные номера. Так как h (т) = h (n), то h (j) и h (k) должны совпадать по Л для всех / и k из Gi+1—{*}. В частности, h (1) и h (2) совпадают по Л, поэтому h можно расширить до всего Gi+1, положив h (*) = = /ι(2). Теперь докажем, что не может быть верным предположение о том, что никакая вершина с нечетным номером не склеивается ни с одной вершиной с четным номером. Пусть h (1) = /. Рассмотрим случай нечетного /. Так как h (2) должен совпадать с h (1) по β и по предположению h (1) Φ h (2), то h (2) должен быть равен / + 1. Так как h (2) и h (3) должны совпадать по С и h (2) Φ Фк (3), то h (3) должен равняться / + 2. Продолжая подобным образом, получаем h (k) = j + k — 1 для 1 <: k <c j + 2. Однако тогда мы получим h (i + 2) = j + i + 1 ^ ί + 2, чего не может быть, так как / + 2 не входит в Gr. Когда / четно, аналогичные рассуждения показывают, что h (k) = j — k + 1, и снова получаем противоречие, так как получаем, что h (i + 2) равно / — / — 1, а это меньше 1, так как / не больше / + 1. Таким образом, h всегда можно расширить до всего графа Gi+l. Следовательно, τί+ί выполняется на г, что завершает доказательство неэквивалентности тг и τί+ι. 14.2.4. Проверка логической выводимости табличных зависимостей В этом разделе будут кратко рассмотрены проблемы, возникающие при проверке выводимости табличных зависимостей. Первая сложность состоит в том, что некоторые импликации, имеющие место для конечных отношений, не выполняются при бесконечных отношениях. Более того, существование полной системы вывода для импликаций Т-зависимостей, рассматриваемых над коцеч-
498 Гл. 14. Дополнительные вопросы ными отношениями, сомнительно1), хотя такая система существует при наличии бесконечных отношений. В следующей теореме доказывается, что отношения следования на конечных и произвольных отношениях не совпадают. Под произвольными отношениями мы понимаем отношения, которые могут быть как конечными, так и бесконечными. Рис. 14.21. Рис. 14.22. Рис. 14.23. Рис. 14.24. Теорема 14.8. Существуют множество С Τ-зависимостей и Ύ-зависимость τ, такие, что любое конечное отношение, удовлетворяющее зависимостям из С, удовлетворяет и зависимости τ, однако существует бесконечное отношение, на котором выполняется С, но нарушается τ. Доказательство теоремы довольно длинное. Здесь приводится только его схема, а детали оставляются читателю (см. упр. 14.29). Пусть С = \τΐ9 τ2, τ3, τ4|, где τζ· соответствует графу Gb 1 <£ ^ ί <: 4 (рис. 14.21 —14.24). За зависимостями из С скрывается некоторая система. А именно, графу Gr любого отношения г сопоставляется некоторый ориентированный граф Dr, который содержит ребро t± ->- t3 в точности тогда, когда Gr имеет подграф х) См. комментарии в конце главы. — Прим. перед.
14.2. Другие зависимости меЖДу данными 49& вида, изображенного на рис. 14.25. Зависимости х± и τ2 совместно означают, что если граф Dr содержит ребро и ->- υ, то он содержит также ребро υ -> w для некоторого т. То есть любая вершина из Dr, имеющая входящее в нее ребро, имеет и выходящее из нее ребро. (Ребро без входных ребер называется истоком.) Зависимость τ3 фактически утверждает транзитивную замкнутость графа Dr. Зависимость τ4 вступает в игру, когда Dr содержит петлю, т. е. ребро вида а -> а. Зависимость τ соответствует графу, представленному на рис. 14.26. За доказательством скрывается механизм, основанный на следующем свойстве графов: любой конечный ориентированный транзитивно замкнутый граф без истоков содержит петлю. Это Рис. 14.25. Рис. 14.26. свойство неверно для некоторых бесконечных графов. Доказательство того, что τ следует из С на конечных отношениях, фактически копирует доказательство этого свойства из теории графов. Во-первых, существование пс-гомоморфизма из G—{*} в Gf приводит к существованию некоторого ребра в Dr. Далее, из существования ребра в Dr следует существование в нем цикла, достижимого из данного ребра (в противном случае некоторая вершина была бы истоком, т. е. для г нарушилась бы одна из зависимостей τ3 или τ2). Как только получен цикл, транзитивность (применение τ3) гарантирует наличие петли, что означает применимость зависимости τ4. Кортеж, наличие которого в г требуется по τ4, — это тот же кортеж, который требуется зависимостью τ. Бесконечное отношение, на котором выполняется С, но нарушается τ, имеет вид r=\(i i j 0>V 11 <i</lU{<0 l i i)\i^l). Проверка отдельных случаев показывает, что на г выполняются все зависимости из С. Однако пс-гомоморфизм h из G в Gr, для которого h (1) = (0 1 1 1>, А (3) = <0 2 2 2), h (2) = <1 1 2 0), h (4) = <2 2 3 0), не может быть расширен на *, так как в противном случае было бы h (*) (А) = h (*) (D) = 0, но такого кортежа нет в г.
500 Гл. 14. Дополнительные вопросы Имеется частный случай, когда множества Т-зависимостей, вытекающих из множества С Т-зависимостей при рассмотрении конечных и бесконечных отношений, совпадают. Это верно, когда все зависимости из С S-частичны с одним и тем же S (см. упр. 14.30). В частности, импликации для конечного и произвольного случаев совпадают, когда Т-зависимости являются полными. т'(Л В С) a' b с' а Ъ' с' а Ы с a b с а Ъ" с Рис. 14.27. Рис. 14.28. Имеется полная аксиоматическая система для Т-зависимостей над произвольными отношениями. Эта система корректна для конечных отношений, но, согласно предыдущей теореме, неполна. Одна из аксиом, называемая пополнением, соответствует утверждению леммы 14.7. Приведем здесь еще одну аксиому, оставляя остальную часть системы и доказательство ее полноты в качестве упр. 14.31 и 14.32. Ослабление. Пусть τ = (Τ, w) есть Т-зависимость и w' получена из w заменой некоторых переменных из w переменными, не встречающимися в Т. Тогда зависимость τ' = (Τ, w ) следует из τ. Покажем, что ослабление корректно. Пусть τ выполняется на отношении г. Если ρ — оценка, для которой ρ (Τ) ^ г, то ρ (w) ζ г. Оценку ρ можно расширить так, что ρ (wf) = ρ (w), поскольку на переменных из w\ которые не встречаются в w, значение ρ никак не ограничено. Поэтому ρ (α/) ζ г и τ' выполняется на г. Пример 14.17. Зависимость τ (рис. 14.27) влечет за собой зависимость τ (рис. 14.28) по правилу ослабления. Теперь обратимся к обобщению прогонки на Т-зависимости. При этом нужно использовать Т-зависимость τχ = (7\, w±) для прогонки строк-допущений зависимости τ2 = (Γ2, w2) с целью выяснить, может ли быть порождена строка w2. Для этого будет использоваться Ί-правило, определение которого для полных зависимостей очень просто. т(А В С) а Ъ' с' а' Ь' с а' Ъ с
14.2. Другие зависимости между данными 501 Т-правило. Пусть даны полная Т-зависимость τ = (7\, w) над схемой R и табло Γ2 над R. Если имеется оценка ρ на 7\, такая, что ρ (Tj) g Tj и ρ (w) не входит в Т2, то добавить Ρ И к 7V Г(Л 5 С) т(Л Д С) а Ь' С а' Ъ С а' Ъ' с а Рис. (Л 1 3 2 2 2 Рис. 6 С . 14.29. 5 С) 2 3 2 2 3 2 3 1 2 2 14.31. 01 «3 <*2 Я2 аг Рис. Г(Л &2 С3 />2 С2 £з с2 ^3 Ci *2 С2 14.30. 5 С) 1 2 3 3 2 2 2 3 2 2 3 1 2 2 2 3 3 2 Рис. 14.32. Пример 14.18. Пусть зависимость τχ представлена на рис. 14.29, а табло Τ — на рис. 14.30. Для упрощения обозначений Τ будем представлять только индексами переменных, имея в виду при этом, что одно и то же число в разных столбцах обозначает разные переменные. Упрощенный вариант Τ показан на рис. 14.31. Используя оценку ρ из тг в 7\ для которой ρ ((а V с')) = <3 2 2), ρ {{а' Ъ с')) = (2 3 2), ρ ((а' V с)) = (2 2 2), можно применить Т-правило для τλ κ 7\ добавив строку ρ ((α b с)) = (3 3 2). Получившееся при этом табло V показано на рис. 14.32. Некоторая сложность возникает при расширении Т-правила на строго частичные Т-зависимости: нужно породить новые переменные в столбцах, где строка-заключение содержит переменную, не входящую ни в одну из строк-допущений. Т-правило на частичные Т-зависимости расширяется следующим образом.
502 Гл. 14. Дополнительные вопросы Ί-правило (пересмотренное). Пусть даны S-частичная Т-зави- симость τ = (7\, w) над схемой R и табло Т2 над R. Если существует оценка ρ на 7\, такая, что ρ (7Ί) 92 Т2, и Т2 не содержит строки, совпадающей с ρ (w) на S, то добавить к Т2 строку w\ которая совпадает с ρ (w) на S, а для Α ζ R — S w' (A) — это новая переменная. r2(A__B__CJ т3(Л В С ) Ъ с' а а' а - Рис Ъ' Ъ' Ъ . 14.33 с' с с а а' Ъ' с а Ъ с Рис. 14.34. Пример 14.19. Пусть т2 — частичная зависимость, изображенная на рис. 14.33. Используя оценку ρ из τ2 в табло Τ из рис. 14.31, для которой ρ «α V с')) = <1 2 3), ρ «α' V с)) = <3 2 2), применим Т-правило для τ2 к 7\ при этом к Τ добавится строка <1 4 2). Так как выбор новых переменных при применении пересмотренного правила произволен, то прогонка частичных Т-зависимостей не дает однозначного результата. В этом направлении можно было бы кое-что предпринять, но вопрос не столь серьезен, так как на самом деле нас интересуют комбинации исходных переменных, которые могут возникнуть в процессе прогонки. Более серьезно то обстоятельство, что одна последовательность применения правил может привести к бесконечной последовательности табло, в которой не возникают никакие новые комбинации исходных переменных х), но такие комбинации могли бы быть получены при применении Т-правил в другом порядке. Пример 14.20. Пусть τ2 и τ3 — зависимости, представленные соответственно на рис. 14.33 и 14.34. Начнем прогонку с табло Τ (рис. 14.35) (здесь также использованы только индексы переменных). Сначала можно применить Т-правило для τ3, получая строку (3 1 2). К полученному табло можно применить Т-правило для τ2, получая строку (3 4 1). Таким образом, можно продолжать неограниченно долго, как показано на рис. 14.36, и никогда *) Дело, конечно, не в том, что не появляются новые комбинации, а в том, что не появляется требуемая комбинация. — Прим. перев.
14.2. Другие зависимости между данными 503 не получить строку, совпадающую с (2 1) на β С, хотя такая строка могла бы быть получена из Τ в любое время. Таким образом, нам нужно некоторое управление процессом прогонки, чтобы гарантировать порождение всевозможных комбинаций исходных переменных. Можно было бы наложить ограничение, что Т-правило применяется только тогда, когда оно порождает новую комбинацию исходных переменных. Хотя это Т(А В С) 1 1 1 1 2 2 Рис. 14.35. Г(А В 1 1 1 2 3 1 3 4 5 4 5 6 7 6 Рис. _£> 1 2 2 · 1 · 2 · 1 · 2 · 14.36. ••т3 .. J2 ■■ 7-3 . . т2 ·· т3 Т'(А_ 1 3 2 2 2 3 3 3 2 Рис В С) 2 3 2 2 3 2 3 1 2 2 3 2 3 1 2 1 2 1 14.37. ограничение гарантирует остановку процесса прогонки, оно может привести к невозможности порождения некоторых комбинаций (см. упр. 14.33). Вместо этого можно заметить, что если достаточно долго применять Т-правило для одной и той же Т-зависимости, то новые строки перестанут появляться. Это наблюдение приводит к более исчерпывающему правилу прогонки Т-зависи- мостей. Т+-правило. Пусть даны Т-зависимость τ и табло Τ над схемой R. Применять Т-правило для тк Г, пока оно применимо. Пример 14.21. Пусть зависимость τ1 представлена на рис. 14.29, а табло Τ—на рис. 14.31. Тогда использование Т+-правила для τχ к Τ дает табло 7" из рис. 14.37. Для того чтобы во время прогонки над множеством Т-зависи- мостей гарантировать получение каждой зависимостью «своего шанса», используется Определение 14.5. Пусть даны множество С = \τΐ9 τ2, ..., xk\ Т-зависимостей и табло Τ над схемой R. Прогонка τ над С означает порождение (возможно, бесконечной) последовательности табло Т0 (= Т), 7\, Т2, ..., где Tt получено из Τ^± применением Т+-правила для всех τ ξ С. Порождение Tt из Т^г называется
504 Гл. 14. Дополнительные вопросы этапом прогонки. Последовательность конечна, если Т^г = Tt для некоторого i 5>1. Порядок, в котором зависимости из С применяются на одном этапе прогонки, несуществен с точки зрения, какие комбинации исходных переменных в конце концов появятся (см. упр. 14.34). Г] (Л В С) 1 3 2 2 2 3 3 3 2 1 1 2 3 Рис. 2 2 3 3 2 3 3 2 2 4 5 6 7 3 2 2 1 2 2 1 1 1 2 1 3 3 . 14.38. Если все зависимости из С S-частичны с одним и тем же S, то прогонка заканчивается после конечного числа этапов, так как новых переменных в S-столбцах не появится. В частности, прогонка с полными Т-зависимостями всегда заканчивается, и конечное табло единственно (см. упр. 14.35). Пример 14.22. Пусть С = {т1э τ2}, где τχ приведена на рис. 14.29, т2 — на рис. 14.31. Табло 7\ из рис. 14.38 представляет результат применения первого этапа прогонки табло Τ из рис. 14.31 над С. Проверка с помощью прогонки того, следует ли Т-зависимость из данного множества Т-зависимостей, аналогична проверке для J-зависимостей. Определение 14.6. Пусть Т0, 7\, Г2, ... — последовательность табло, порождаемая прогонкой табло Т0 над некоторым множеством Т-зависимостей. Пределом этой последовательности называется табло г^Гоипипи... Заметим, что Г* может быть бесконечным.
14.2. Другие зависимости между данными 508 Теорема 14.9. Пусть даны множество С Ί-зависимостей и S-частичная Ύ-зависимость τ = (Г, w) над схемой R. Пусть Г* — предел последовательности Т0 (= Т), 7\, Т2, ..., порожденной при прогонке Τ над С. Зависимость τ следует из С над произвольными отношениями тогда и только тогда, когда Т* содержит строку w*, такую, что w* (S) = w (S). т(Л В С) *ι Ь2 с3 а3 Ь2 с2 *ι Ь3 с2 а2 Ь3 сх а2 Ь2 с? *] Ьх сх Рис. 14.39. Доказательство (схематичное). Рассмотрим сначала достаточность. Предположим, что ш* впервые появляется на k-м этапе прогонки. Другими словами, w* входит в Tk, но не в Tk_v Пусть г — отношение из SAT (С) и ρ — оценка, для которой ρ (Τ) ^ г. Прослеживая ход прогонки до появления Tk, можно показать, что г должно содержать кортеж f*, такой, что ρ (w*) (S) = t* (S). Отсюда следует, что ρ (w) (S) = t* (S) и τ выполняется в г. Заметим, что достаточность утверждения теоремы имеет место и для конечных отношений. Относительно необходимости утверждения сначала доказывается, что Т*, рассматриваемое как отношение, удовлетворяет зависимостям из С. Если Т* не содержит строки w*, совпадающей с w на S, то Г* доставляет контрпример к импликации τ из С. Таким образом, если τ следует из С, то строка w* должна существовать. Пример 14.23. Пусть τ есть А С-частичная Т-зависимость (рис. 14.39). Заметим, что строки-допущения из τ составляют табло из рис. 14.30. Пусть С — множество зависимостей из предыдущего примера. Тогда видно, что τ следует из С. Действительно, в том примере показано, что при прогонке строк-допущений зависимости τ появляется строка, равная (аг сг) на А С. 14.2.5. Обобщенные функциональные зависимости В разд. 9.3 кратко обсуждалась структура проекций отношений из SAT (F) для множеств функциональных зависимостей. Проектируя SAT ({А -+Е, В -+Е, СЕ -+D}) на схему А В CD,
506 Гл. 14. Дополнительные вопросы мы получили следующую «курьезную» зависимость, которой должно удовлетворять любое спроектированное отношение: если *i, t2, t3 — кортежи из г (А В CD), такие, что к (А) = U (А), U (В) = к (В), к (С) = к (Q, то к (D) = к (D). Это ограничение представляет пример обобщенной функциональной зависимости, которая может быть записана в обозначе- 7(Л BCD) w, ax h2 c{ ί/, νν2 α2 b\ C\ cli W3 ci\ b\ cι d$ άχ = d% Рис. 14.40. ниях, похожих на Т-зависимости, так, как показано на рис. 14.40. Строки выше черты также называются строками-допущениями, а равенство под чертой называется заключением. Отношение г удовлетворяет этой обобщенной функциональной зависимости, если для любой оценки р, отображающей строки-допущения в г, имеет место равенство ρ (аг) = ρ (d2). Теперь будет дано формальное определение. Определение 14.7. Обобщенной функциональной зависимостью, или GF-зависимостью над схемой отношений R> называется пара у = (Т, а— Ь), где Τ— множество строк над /?, называемых строками-допущениями, а а и b — это две переменные из строк, входящих в Т. Равенство а = b называется заключением. Отношение г (R) удовлетворяет зависимости γ, если для любой оценки ρ над R, такой, что ρ (Τ) s г, имеет место равенство ρ (а) = ρ (b). Зависимость γ называется тривиальной, если она выполнена на любом отношении над R; у называется типизированной, если никакая переменная не входит более чем в один столбец, причем а и b взяты из одного и того же столбца из Т. В дальнейшем предполагается, что все GF-зависимости типизированы. На рис. 14.40 показано, как будут представляться GF-зависимости. Не всякая F-зависимость эквивалентна GF-зависимости, однако это связано всего лишь с тем, что в GF-зависи- мостях говорится о равенстве только на одном столбце. Любая
14.2. Другие зависимости между данными 507 F-зависимость с одним атрибутом справа представима в виде GF-зависимости, поэтому любая F-зависимость эквивалентна некоторому множеству GF-зависимостей. Пример 14.24. На рис. 14.41 показана GF-зависимость, эквивалентная F-зависимости А В -> С над схемой А В С D. Можно привести полную систему аксиом для GF-зависимостей, однако мы не станем этого делать, так как эти аксиомы т{Х A Y) у(А В С D) a b с а Ь с' с = с' Рис. 14.41. d d' WjXi W2Xl w3x2 a\ У\ «2 Уг «2 Уг w x2 αλ v3 Рис. 14.42. фактически моделируют процесс прогонки. Полные аксиоматизации существуют также, когда рассматриваются GF- и Т-зависи- мости вместе. Однако это верно только для импликаций над произвольными отношениями, если допускаются частичные Т-зави- симости. Приведем одну из аксиом для вывода Т-зависимостей из F-зависимостей. Аксиома GT1. Пусть X -> А есть нетривиальная F-зависимость над схемой R и Υ = R — (X А). Из этой зависимости вытекает Т-зависимость τ, показанная на рис. 14.42. Заметим, что при записи τ использованы некоторые сокращения. Например, χλ и х2 обозначают последовательности переменных над X, отличающихся на каждом столбце. Пример 14.25. На рис. 14.43 показана Т-зависимость, которая вытекает из зависимости А В -> С над схемой А В CD. Чтобы понять, почему в GT1 Т-зависимость τ следует из X -> ->■ Л, рассмотрим GF-зависимость γ (рис. 14=44), которая эквивалентна зависимости X -> А. Пусть г — произвольное отношение над R и ρ отображает w1 — w3 в г. Если γ выполняется на г, то ρ (аг) — ρ (α2), так как первые две строки γ и первые две строки τ совпадают. Поэтому ρ (w) входит в г, так как из сказанного выше следует равенство ρ (w) = ρ (w3). Аксиому GT1 можно обобщить на GF-зависимости (см. упр. 14.39). Выведенную Т-зависимость можно использовать вместо F-зависимости при выведении Т-зависимостей из множества С, состоящего из F- и Т-зависимостей, так как если С полу-
508 Гл. 14. Дополнительные вопросы чается из С заменой каждой F-зависимости α на Т-зависимость, определяемую по α правилом GT1, то из С и С' следует одно и то же множество Т-зависимостей (см. упр. 14.40). Обобщение прогонки на GF-зависимости довольно просто. Q-правило. Пусть даны GF-зависимость γ = (7\, а = Ь) над схемой R и табло Т2 над R. Отождествить ρ (а) и ρ (b) в Т2 для произвольной оценки р, такой, что ρ (7\) ^ Т2 и ρ (α) Φ ρ (b). τ(Α BCD) αχ bx cx d{ У(*_А—Ю ax bx c2 d2 wi*i at y^ a2 b2 c2 d3 w2Xi a2 y2 a2 b2 cx d3 ax — a2 Рис. 14.43. Рис. 14.44. Процесс прогонки табло Τ со множеством С GF-3aBHCHMOQTefl состоит в применении G-правила для GF-зависимостей из С, пока в Τ есть переменные, которые можно отождествлять. Этот процесс всегда останавливается, faK как в Τ не появляется новых строк или переменных. Можно показать, что получаемый результат единствен, если выбрать подходящий механизм переименования переменных при их отождествлении (например, переменную с большим индексом всегда заменять переменной с меньшим индексом). Используя это замечание, результат прогонки табло Τ над множеством С GF-зависимостей можно обозначить через chasec (T). Пример 14.26. Пусть С = {у19 γ2|, где уг и γ2 показаны на рисунках 14.45 и 14.46, а табло Τ — на рис. 14.47. Здесь снова для простоты приводятся только индексы переменных, так что, например, «2» в разных столбцах обозначает разные переменные. Применим сначала к Τ G-правило с γ1β Имеется оценка рх, переводящая строки-допущения из уг в Τ следующим образом: Ρι ("ι) = о>я, Pi ("2) = Щ> Pi ("з) = wb. Поэтому можно отождествить рг (сг) и рх (с3), т. е. 2 и 3 в столбце С. Результирующее табло V показано на рис. 14.48 (используется
14.2. Другие зависимости между данными 509 7iQ4 В С) у2(А_В_С) Т(А_ Wj 1 w2 2 w3 3 w4 3 ws 2 Рис. Ji 3 1 1 2 2 "2 «1 "3^2 С Рис. JD 1 2 2 2 3 14.47. b2 bi bx 1 = ' 14.45. c2 c3 сз г; (л W] 1 w2 2 w3 3 iv 4 3 ws 2 Рис. β 3 1 1 2 2 С) 1 2 2 2 2 14.48. v2 V3 a2 «3 «1 Рис. *1 *2 = fl C2 Cl «з . 14.46. Г*(А W] 1 ιν2 2 w5 2 Рис. в с 3 1 1 2 2 2 14.49. правило замены больших индексов меньшими). Применим к 7" G-правило с γ2, используя оценку р2, для которой р2 Ю = Щ, Р2 (^а) = w*> Р2 fas) = ^4· Тогда можно отождествить 2 и 3 в столбце А, получая табло T*t изображенное на рис. 14.49. После этого никакие переменные отождествить с помощью G-правила невозможно, поэтому chasec (Τ) = 7*. Приведем теперь теорему, которая показывает, как проверять логическую выводимость GF-зависимостей. В утверждении этой теоремы слова об отождествлении двух переменных при прогонке означают, что либо одна из них была переименована в другую, либо они обе были переименованы в одну и ту же третью переменную. Теорема 14.10. Пусть даны множество С GF-зависимостей над схемой R и QlV-зависимость у = (7\ а = Ь) над R. Зависимость у следует из С, тогда и только тогда, когда а и b отождествляются при вычислении табло chasec (T). Здесь импликация означает импликацию над конечными отношениями, которая для GF-зависимостей совпадает с импликацией над произвольными отношениями (см. упр. 14.41).
510 Гл. 14. Дополнительные вопросы Доказательство похоже на прежние доказательства, поэтому детали будут опущены. Если γ не следует из С, то chasec (T) дает соответствующий контрпример. Если а и Ь отождествляются при прогонке, то, прослеживая шаги вычисления, можно показать, что для любой оценки р, переводящей Τ в отношение г из SAT (С), должно выполняться равенство ρ (α) = ρ (b). y(A В С) W, О, w2 а2 w3 аз w4 a3 ws а2 Й2 Рис. bi с, Ъ\ с2 Ь\ е2 Ъ2 с2 Ь2 с3 : = «J . 14.50. Пример 14.27. Зависимость γ (рис. 14.50) следует из множества \уъ у2\ GF-зависимостей из предыдущего примера, как показывает прогонка, проведенная в этом примере. При совместном использовании G- и Т-правил нужно соблюдать некоторую осторожность при отождествлении переменных. Т-правило может порождать новые переменные, а G-правило — изменить исходную переменную на некоторую новую переменную. Такие изменения затрудняют определение условий проверки истинности импликаций и определение табло, к которому сходится прогонка. Во избежание этого мы поддерживаем некоторый порядок на переменных из табло. Первыми при таком порядке идут исходные переменные, а новые переменные, появляющиеся во время прогонки, всегда добавляются к концу. При отождествлении переменных более поздняя переменная всегда заменяется на более раннюю. Если прогоняемое табло состоит из строк-допущений некоторой Т-зависимости, то при таком порядке в самом начале будут переменные из строки-заключения этой зависимости. Тогда легко можно проверить, породилась ли строка-заключение во время прогонки, не заботясь о возможных изменениях переменных в этой строке. Определение 14.8. Пусть даны множество С Т- и GF-зависимостей над схемой R и табло Τ над R. Прогонкой Τ над С называется процесс порождения (возможно, бесконечной) последовательности табло Т0 (= Т), 7\, Т2, ..., где Tt получается из Т^г последовательным применением Т+-правила для всех Т-зависи- мостей из С и G-правила для GF-зависимостей из С, насколько
14.2. Другие зависимости между данными 811 это возможно. Последовательность обрывается, если 7\· окажется равным 7Υ_! для некоторого i ^ 1. Заметим, что прогонка всегда конечна, если все Т-зависимости из С S-частичны с одним и тем же S: Т+-правило может породить только конечное число кортежей с новыми комбинациями переменных в S-столбцах. Предел последовательности прогонки не может быть определен в этом случае так просто, как для случая одних Т-зависимостей, так как строки могут изменяться при переходе от одного этапа к другому. Поэтому будут выделяться те строки, которые не изменяются после определенного этапа. Определение 14.9. Пусть Т0, Тъ Т2, ... — последовательность табло, порожденная при прогонке табло Τ над множеством С Т-и GF-зависимостей. Строка w из Tt называется стабильной относительно этой последовательности, если w сохраняется во всех Tj, j ^ i. Пусть STABLE (Tt) обозначает множество всех стабильных строк из Tt. Тогда предел последовательности Т0у Тъ Т2, ... определяется как табло Т* = STABLE (T0) U STABLE (7\) U STABLE (Т2) . .. (Т* может быть бесконечным). Важным свойством Т* является то, что оно, рассматриваемое как отношение, удовлетворяет зависимостям из С. Заметим, что, если на каком-то множестве строк wlf w2, ..., wk из Т* нарушается GF-зависимость из С, то по крайней мере одна из этих строк нестабильна, так как она содержит неудовлетворенный элемент, который будет изменен G-правилом. В следующей теореме суммируется то, что может дать прогонка для импликации Т- и GF-зависимостей над произвольными отношениями. Теорема 14.11. Пусть даны множество С Т- и GF-зависимостей над схемой R и табло Τ над R. Пусть Т* — предел последовательности Т0 (= Т), Тъ Τ*, ..., порожденной при прогонке Τ над С. 1. S-частичная Ί-зависимость (Т, w) следует из С тогда и только тогда, когда Т* содержит такую строку w*, что w* (S) = w (S). 2. GF^-зависимость (Т, а = Ь) следует из С тогда и только тогда, когда а и Ь отождествляются при порождении Т*. Доказательство оставляется читателю (см. упр. 14.43). Из теоремы следует, что из Т-зависимостей самих по себе могут вытекать только тривиальные GF-зависимости. Заметим также, что алгоритмы проверки F- и J-зависимостей из разд. 8.6.3 и 8.6.4 сводятся к частным случаям теоремы 14.11.
Sl2 Гл. 14. Дополнительные вопросы у(А В С) т(А В a' b а' Ь' a b с с с Рис. 14.51. Τ'(А В 1 1 1 2 2 1 2 2 3 2 4 1 С) 2 3 3 1 2 1 Рис. 14.54. τ Μ Рис. В 1 2 1 2 2 1 а а rr а а Рис С) 2 3 3 1 2 1 14.55. 6' с b с b с = а" . 14.52. τ'(/4 «1 «1 «2 α2 «1 Рис В ъх Ъг Ь\ Ь2 Ьх _£) «•2 с3 Cl С\ С\ 14.56. Т{А В С) 1 1 2 1 2 3 2 1 3 2 2 1 Рис. 14.53. У'(А В С) а, 6', с2 αϊ ^2 сз «2 Ьх С3 а2 Ъг сх а, = а2 Рис. 14.57. Пример 14.28. Пусть С = {τ, γ}, где τ и γ приведены на рис. 14.51 и 14.52, а табло Т0 — на рис. 14.53. Здесь снова для простоты использованы только индексы. Рассмотрим прогонку Т0 над С. Применение к Т0 Т+-правила для τ приводит к табло Τ (рис. 14.54). Трехкратное применение к V G-правила для γ дает табло 7\ (рис. 14.55). Никакие дальнейшие применения Т+- или G-правила невозможны, поэтому 7\ представляет собой предел прогонки (см. упр. 14.44). Используя это и теорему 14.11, можно заключить, что Т-зависимость % (рис. 14.56) и GF-зави- симость γ' (рис. 14.57) следуют из С. 14.2.6. Замкнутость классов выполнимости относительно проекции Вспомним обозначение SATR (С), введенное в гл. 8, для класса всех отношений над схемой /?, удовлетворяющих множеству ограничений С. Вспомним также, что реляционные операторы расширяются на множества отношений покомпонентно. Таким образом, если Ρ — множество отношений над схемой R и X s г R, то *х(Р) = {**(г)\гер\> В гл. 9 кратко обсуждалась задача, можно ли представить π^ (SATR (С)) как SATX (С) для С и С, содержащих зависимости данных типов. Ответ был «нет», если С и С состоят из F- и MV-зависимостей.
14.2 Другие зависимости между данными 513 В этом разделе будет показано, что если С состоит из Т- и GF-зависимостей, то всегда существует множество С, которое состоит из зависимостей такого же типа и пх (SATR (С)) = — SATX (С). Однако при этом нужно считать, что SAT (С) включает все (конечные или бесконечные) отношения, удовлетворяющие С. Если же С содержит только полные Т-зависимости, то это утверждение верно и тогда, когда SAT (С) интерпретируется как состоящее только из конечных отношений. Тх(А В С ) а Ь' с' а' Ъ с' а' Ъ' с a be Рис. 14.59. Для множества С Т- и GF-зависимостей над схемой R и множества X ^ R через пх (С) обозначим множество всех Т- и GF-зависимостей над схемой X, которые выполняются на всех отношениях из пх (SATR (С)). Ясно, что пх (SATR (С)) ^ ^ SATX (nX" (С)). Поэтому, если существует множество С, такое, что пх (SATR (С)) = SATX (С'), то С эквивалентно πχ (С) х). Оказывается, что тсх (С) может быть бесконечным и не иметь никакого конечного эквивалентного множества Τη GF-зависимостей (см. упр. 14.45), поэтому никакой алгоритм в общем случае не может вычислить пх (С). В приводимых ниже леммах, однако, указываются некоторые зависимости из тсх (С). Для табло Τ над схемой R и множества X ^ R пусть Τ (Χ) обозначает табло над схемой X, получаемое ограничением строк из Τ на X 2). Определение 14.10. Пусть дана Т-зависимость τ = (Τ, w) над R. Если Χ — подмножество из R, такое, что никакие две строки из Τ не совпадают на столбцах из R — X, то ограничением τ (X) зависимости τ на X называется Т-зависимость τ' = (Τ (Χ), w (X)) над схемой X. Пример 14.29. Пусть τ — зависимость над схемой А В CD (рис. 14.58). На рис. 14.59 показана зависимость τ' = τ (А В С). *) Это следует из того, что С Ξ πχ (С), и поэтому SAT χ (лх (С)) cz Ξ SAT χ (С). — Прим. перев. 2) То есть фактически Τ (Χ) = π,χ (Τ). — Прим. перев. т(А В CD) а' Ъ с' d' а Ь' с' d а Ь' с d" abed Рис. 14.58.
514 Гл. 14. Дополнительные вопросы Лемма 14.8. Если χ есть Ί-зависимость над схемой R, такая, что χ (X) определена; иг — отношение из SAT (τ), то ях (г) входит в SAT (х (X)). Доказательство оставляется читателю (см. упр. 14.47). Определение 14.11. Пусть γ = (Τ, α = b) есть GF-зависи- мость над схемой R. Если X — подмножество схемы R, такое, что никакие две строки из Τ не совпадают на столбцах из R — X и, кроме того, а и Ь — переменные из одного столбца из X, то ограничением у (X) зависимости у на X называется GF-зависи- мость γ' = (Τ (X), а = b). Лемма 14.9. Пусть даны GF-зависимость у над R, такая, что у (X) определена, иг — отношение из SAT (γ), тогда отношение пх (R) входит в SAT (у (X)). Доказательство. Пусть γ = (Τ, α = b) и ρ — оценка, отображающая Τ (X) в пх (г). Так как никакие две строки из Τ не совпадают вне X, то ρ можно расширить до оценки р' из Τ в г. Более того, это можно сделать так, что для любой строки w из Τ (и поэтому для любой строки w (X) из Τ (Χ)) будет выполнено равенство ρ (w (Χ)) = ρ' (w) (X). Так как γ выполняется на г, то р' (а) = ρ' (ft). Так как а и b взяты из Τ (X), то ρ (а) = ρ (b). Поэтому γ (X) выполняется на пх (г). Теорема 14.12. Пусть С — множество Т- и (^-зависимостей над схемой R и X g= R. Тогда nx(SATR(C)) = SATx(nx(C)). Доказательство. Как было отмечено выше, правая часть равенства содержит левую. Рассмотрим обратное включение. Пусть s—отношение из SATX (πχ (С)). Построим отношение г из SATR (С), такое, что пх (г) = s. Пусть s' (R) получено расширением всех кортежей из s на R путем добавления новых различных значений в столбцах атрибутов из R — X. Пусть г — предел прогонки s' над С. При обобщении прогонки на отношения у нас появляется возможность отождествления значений. Однако, как мы ниже докажем, на столбцах атрибутов из X не делается никаких отождествлений. Так как г получено прогонкой относительно С, то г ζ SAΤ (С). Докажем, что кх (г) = s. Пусть t — любой кортеж из s и f — его расширенный вариант из s'. Предположим, что на некотором этапе прогонки некоторое значение из Х-столбца кортежа t' изменено при применении G-правила. Если интерпретировать s' как табло, то увидим, что из С вытекает некоторая GF-зависимость γ, такая, что s' совпадает с множеством ее строк-допущений, а ее заключение отождествляет в s' два значения из столбца для атрибута из X. Так как
14.3. Некоторые границы реляционной алгебры 515 в s' все значения на столбцах атрибутов из R — X различны, то лемма 14.9 показывает, что γ (Χ) £ πχ (С). Однако строки- допущения зависимости γ (X) — это в точности строки из s, а ее заключение отождествляет значения из s. Следовательно, в s нарушается пх (С), что приводит к противоречию. Отсюда заключаем, что во время прогонки значения t' в столбцах с атрибутами из X не меняются. Поэтому если f — кортеж из г, соответствующий кортежу t\ то f (X) = f (Χ) = t. Поэтому s s nx (r). Теперь пусть f — любой кортеж из г. Интерпретируя s' снова как табло, получаем, что из С вытекает Т-зависимость τ с множеством s' строк-допущений и строкой-заключением t". Согласно лемме 14.8, π^ (С) содержит Т-зависимость τ (Χ) с множеством s строк-допущений и заключением f (X). Так как τ (Χ) выполняется на s, то f (X) £ s. Поэтому s з кх (г), и, следовательно, s = ях (г). Если С, кроме GF-зависимостей, содержит только полные Т-зависимости, то теорема 14.12 остается верной при интерпретации SAT (С) как состоящего из всех конечных отношений, удовлетворяющих зависимостям из С. Действительно, возвращаясь к доказательству, замечаем, что отношение г, построенное при прогонке s' над С, будет конечным, если С удовлетворяет указанному выше ограничению. В частности, вариант теоремы, связанный с конечными отношениями, верен для множеств, состоящих из F- и J-зависимостей (однако тсх (С) может при этом содержать зависимости, не являющиеся функциональными или зависимостями соединения). 14.3. НЕКОТОРЫЕ ГРАНИЦЫ РЕЛЯЦИОННОЙ АЛГЕБРЫ До сих пор мы использовали реляционную алгебру как образец полной системы запросов. В этом разделе мы увидим, что это определение полноты может быть оспорено, так как имеются некоторые естественные операторы над отношениями, которые не могут быть выражены в реляционной алгебре. Точнее говоря, будет показано, что не существует алгебраического выражения £, которое описывало бы транзитивное замыкание отношения с двумя атрибутами. Определение 14.12. Пусть г — отношение со схемой из двух атрибутов (назовем их Αλ и Л2), причем dom (AJ = dom (Л2). Транзитивным замыканием отношения г (обозначение: г+) называется наименьшее отношение над Аг Л2, такое, что г <= г+ и г+ удовлетворяет нетипизированной Т-зависимости τ Mi A2) а Ь Ь с а о
516 Гл. 14. Дополнительные вопросы Заметим, что это определение симметрично относительно А1 и А2. Пример 14.30. На рис. 14.61 показано отношение г+ для отношения г из рис. 14.60. В следующей теореме используется некоторое обобщение выражений исчисления доменов с более широким множеством атомов, чем обычно. А именно, пусть г — отношение над схемой А1 А2 и dom (Αλ) = dom (А2). Атом г1 (а Ь) используется для г(А В) 2 1 2 2 2 1 ! 2 3 1 Рис. 14.60. Рис. 14.61. обозначения того, что Ь можно достичь в г из а за i шагов. Более точно, высказывание г1(аЬ), t^2, истинно, если существуют значения αΐ9 а2, ···> я*> такие, что кортежи {ααλ), (ага2), (α2α3),... ···> (я*-1 (ai Ь) входят в г. Формула/-1^ Ь) эквивалентна г (а Ь), иг0 (а Ь) означает, что а = Ь и а появляется в г. Иными словами, г° — это равенство на значениях из г. Наконец, если i < 0, то г1 (а Ь) эквивалентно г~~*(Ь а). Заметим, что из г1 (а Ь) и г/ (b с) следует г'+/(ас). Пример 14.31. Для отношения г из рис. 14.60 высказывания г° (1 1), г1 (2 1), г2 (1 1) и г2 (1 3) истинны, а высказывания г° (4 4), г1 (1 1), г2 (1 2) ложны. Теорема 14.13. Пусть Αλ и А2 — два атрибута с одинаковыми доменами. Не существует такого выражения Ε (г) реляционной алгебры, где г—символ отношений над А1А2, что Ε (г) = г+ для всех отношений г над АХА2 г). Доказательство. Предположим, что домены атрибутов совпадают с натуральным рядом, причем допускаются сравнения элементов только на равенство или неравенство. Сравнения относительно порядка элементов при выборах не допускаются, хотя в доказательстве порядок на числах будет использован для удобства рассуждений. *) Эта теорема фактически представляет собой вариант известного из логики результата о том, что отношение порядка на натуральном ряде неопределимо через отношение следования. — Прим. перев. Ю 2 1 3 1 3
14.3. Некоторые границы реляционной алгебры 517 Нам нужно доказать существование отношения г, для которого Ε (г) Φ г+. Оказывается, что можно ограничиться рассмотрением отношений вида {(1 2), (2 3), ..., (р — 1 р)} для ρ > 1. Эти отношения обозначим через [р]. Начнем с доказательства следующего утверждения: для любого выражения Ε (ή и достаточно большого ρ существует обобщенное выражение] ер = {Ь1(в1) МД.) ··· bm(Bm)\f(bl9 ь2,..., ьт)}9 такое, что Ε ([/?]) = Ер ([/?]). Считается, что значения переменных bt из Ер пробегают множество {1, 2, ..., р\. Формула f в Ер строится из атомарных формул вида г1 {αλ α2), где at — константа или переменная bj, с помощью связок V' Л и Τ Литералом называется атомарная формула или ее отрицание. Конъюнкт — это конъюнкция литералов. Всюду ниже в доказательстве символы b и d будут обозначать переменные, с — константы, а символ а — константы или переменные (все эти символы могут иметь индексы). Важное свойство Ер состоит в том, что форма / зависит от Е, но не от /?, которое будет появляться в f как константа, однако число литералов и конъюнктов в f не зависит от р. Доказательство существования Ер проводится индукцией по числу операторов в Е. При этом, согласно теореме 3.1, можно считать, что Ε содержит только символ отношения г, одноэлементные константные отношения и операторы выбора по одному условию сравнения, естественного соединения, объединения, разности, переименований и проекций. Можно также считать, что при любом проектировании удаляется один атрибут. Базис индукции. Если Ε не содержит операторов, то оно имеет вид либо г, либо (с : В) для некоторой константы. В первом случае Ер = \Ьг (А,) Ь% (Л2) | ή (b, bt)}. Во втором случае Ер = \Ьг (А,) | г0 (Ьг с)} в предположении, что ρ достаточно велико для того, чтобы [р] содержало с (т. е. ρ ^> с). Шаг индукции. Разберем вид выражения Ε по случаям. Во всех случаях будем считать, что Е' и Е" — подвыражения, для которых имеются обобщенные выражения Е'Р=\ЪХ{ВХ) Ь2(В2) ... Ьт{Вт)\Гфи Ь2, ..., 6т)Ь ЕГР = \dx (DO d2 (D2) ... dn (Dn) |Г (du d2, ..., 4)}· 1. Выбор. Ε = а с {Е'). Тогда Ер имеет вид \ьх(вг) ь2(в2) ...ьт(вт)ι/'фъ ьа> ...,длsh
518 Гл. 14. Дополнительные вопросы где g — формула вида r° (bt bj), "|r° (bt bj), r° (bt с) или ~\r° (bt c) в зависимости от того, имеет ли услоЕие выбора С вид Bt = Bj, Bt Φ Bj, Bt = с или Bt Φ с. 2. Соединение. Ε = Ε' \><Ε". Предположим для простоты обозначений, что В и В2, ..., Bk из Ер и D\, D2, ..., Dk из Ep соответственно совпадают. Тогда Εν имеет вид \ЬХ (Вх) Ь2 (В2) ... Ьт (Вт) dk+x (Dk+1) ... dn (Dn) \ f (bx, b2, ..., bm) Λ /" (&i, b2, ..., bh9 dk+x, ..., dn)). 3. Объединение. Ε = Ε' [) Ε". Для того чтобы Ε было допустимым выражением, Е"р должно иметь вид \ЬХ(ВХ) Ь2(В2) ... ЬШ{ВШ)\Г(ЬЪ Ь„ ..., Ьт)\. Тогда Ер имеет вид ΙΜ*ι) Ь2(52) ... Ьт(Вт)\Г(Ьъ Ь2, ..., Ьт)УГ(Ьъ Ь2, ..., &т)Ь 4. Разность. Ε = Ε' — £". Для Е"р должно выполняться условие из случая 3. Ер имеет вид {bx(Bx) b2(52)...bm(5m)|r(bi, Ь2, ..., ΜΛΐ№> Ь„ ..., W}. 5. Переименование. Ε = $b.+-d {Ε'). Ερ имеет вид № (ЯО &2 (В2) ...bi(D)... Ьт (Вт) | Г (δι, *„..., ЫЬ 6. Проекция. Ε = пх (£'), где X = Вг В2 ... fim_i· Этот случай наиболее труден для рассмотрения. Предположим, что т > 1 и f (&!, &2, ..., &т) имеет вид h (bl9 b2, . . ., 6m) V /2 (61, 62. · · ->bm) V · · · V fq (bi, b2, ..., Ьт), где любой из ft является конъюнктом (говорят при этом, что f находится в дизъюнктивной нормальной форме, или ДНФ). Элементарная теорема из логики утверждает, что f всегда можно привести к ДНФ, если она еще не имела такого вида. Ер можно было бы представить в виде \ьх(вх) ь2(в2) ... ьт_х{вт.х)\зЬт{вт)Гф1У ъъ ..., ьт)\, однако наличие квантора существования нас не устраивает. Это выражение эквивалентно выражению 1*1 (Вl) Ь2 (В2) . . . bm_x (Вт.,) | (ЗЬт (В„д h (Ь19 Ь2, ..., Ьм)) V (3bm(Bm)f2 (Ьг, Ь2, ..., Ьт)) V .·· V (ЗЬт (Вт) fq (Ьи Ь2, ..., Ьт))\9 поэтому достаточно рассмотреть случай, когда /' состоит из единственного конъюнкта.
14.3. Некоторые границы реляционной алгебры 519 До перехода к исключению квантора существования сделаем некоторые преобразования над /'. Во-первых, используя равенство г1 (а Ьт) = /—' (Ьта), добьемся того, чтобы переменная Ьт встречалась только на первых местах атомарных формул. Далее, удалим любой литерал вида г0 (Ьт Ьт) или у1 (bm bm), i Φ О, так как они всегда истинны в [р]. Заменим также литералы вида У0 (Ьт Ьт) или г1 (Ьт Ьт), i Φ О, на у0 (Ьг Ьг) (это можно сделать, так как они все ложны в [/?]). Остается рассмотреть две возможности. 6.1. /' не содержит литерала вида г1 (Ьта), т. е. любая атомарная формула, упоминающая bmt входит в f с отрицанием. Пусть f (Ьъ b2i ..., Ьт_г) — конъюнкция всех литералов из /', не упоминающих Ьт. Докажем, что если ρ достаточно велико, то для любых констант clt c2i ..., cm_v выбранных из множества {1, 2, ... ...,/?}. имеет место тождество 1\СЪ с2> · · ·ι Cm-l) Ξ 3^m/ (^l, C2y . . . , Cm-.it Ьт). Левая часть вытекает из правой части, так как все литералы, не содержащие переменной Ьт, должны выполняться на clt с2, ... .., Cm-i- Рассмотрим обратную импликацию. Если ρ достаточно велико, то всегда существует некоторая константа ст, такая, что любой литерал вида у1 (Ьтс) из f (съ с2, ···, ст_ъ Ьт) становится истинным, при подстановке в него ст вместо Ьт. Действительно, в любом таком литерале запрещено участие только одного значения для ст. Поэтому всегда возможен выбор значения ст с упомянутым свойством, так как число литералов в f фиксировано, а р может быть выбрано сколь угодно большим. Таким образом, если f (clt c2, ..., ст_^) истинна, то истинна также формула 3 bmf (clt c2i ..., ст_ъ Ьт), так как в качестве Ьт можно выбрать ст. Таким образом, в качестве Ер можно выбрать \bi(Bi) b2(B2) ... bm-i(Sm-i)l/(&i, b2i ..., Ьт,г)\. 6.2. Другая возможность — это когда f содержит некоторый литерал вида г1 (Ьт а). В этом случае для построения f мы удаляем из f литерал г1 (Ьт а) и производим некоторую замену остальных литералов, содержащих Ьт. При этом используется то, что знание относительного положения Ьт и а позволяет изменить любую ссылку на Ьт ссылкой на а. При этом литерал Η (bm a') заменяется на а*/—* (а а'). После этого можно сделать некоторые упрощения в полученной формуле. Например, любой литерал вида rk (с с) удаляется, если с + k = с', или заменяется на у0 (Ьх Ьг), если с + k Φ с'. Аналогично, любой литерал вида rk (а Ь) заменяется на У0 (Ьг Ьг), если \ k \ ^ р. Для завершения построения f нам нужно еще добавить некоторое множество литералов, если а в удаленной формуле
520 Гл. 14. Дополнительные вопросы г* Фт °) фактически имела вид bki 1 < k <: т — 1. При этом если i > 0, то нужно добавить литералы ~\г1 (1 bk), 0 < / < i (так как переменная Ьк удалена от Ьт на i шагов, то Ьк не может быть удалена от 1 на менее чем i шагов). Если i < 0, то добавляются литералы у1 (bk /?), 1 <: / <: —i. Доказательство того, что f(bly Ь2У ..., Ьт^) ξ з bmf' (bl9 b2f ..., bm)9 оставляется в качестве упр. 14.48. Таким образом, Ер снова, как в предыдущем случае, можно взять в виде \Ьг (Вг) Ь2 (В2) ... bm^ (B^) \f(bl9 6а, ... , Ь^}. Доказательство существования Ер для Ε закончено. Предположим теперь, что утверждение теоремы неверно, т. е. существует выражение Е, такое, что Ε (г) = г+. Тогда по доказанному утверждению для достаточно больших ρ существует выражение такое, что Ер ([/?]) = [/?]+. Получим из этого противоречие. Можно предполагать, что f находится в ДНФ. При этом важно, что общий вид формулы f не зависит от выбора ρ (если только ρ достаточно велико для того, чтобы f можно было корректно построить). В частности, число конъюнктов в f не зависит от р. Единственное место, где ρ участвует в построении f (не считая случаев, когда она встречается в Ε как константа), это когда литералы ~\ г1 (Ьт р) добавляются в случае 6.2. Следовательно, ЕР', ρ ^ р, можно получить из Ер заменой литералов *] г1 (Ьм р) на 1 г1 (Ьт р'). Другое полезное свойство f состоит в том, что она не содержит атомарных формул вида г1 (сг с2) или г/ (аг а2), где I /1 s* р. Рассмотрим случай, когда любой конъюнкт из f содержит некоторый "положительный литерал вида г1 {ах а2), где at — переменные blt b2 или константы, причем одна из них обязательно переменная. Число конъюнктов в f не зависит от р. Пусть оно равно k. Таким образом, нам нужно учесть k положительных литералов. Если ρ достаточно велико по сравнению с k, то для Ьх и Ь2 можно выбрать значения сг и с2, такие, что (сг с2) £ [ρ]+, но все рассматриваемые положительные литералы становятся ложными при подстановке в них съ с2 вместо blt b2. Например, если i — абсолютная величина наибольшего верхнего индекса при рассматриваемых литералах и с — наибольшая константа, встречающаяся в них, то можно взять сг = i + с + 1, с2 = 2i + + с + 2. При таком выборе сг и с2 f (съ с2) ложна, поэтому (сг с2) не входит в Ер (1р]). Однако {схс2) £ [ρ]+. Получили противоречие.
14.4. Вычисляемые отношения 521 Рассмотрим случай, когда некоторый конъюнкт содержит только литералы с отрицанием вида 1 г1 (αλ α2), где at такие, как в предыдущем случае. Так как этот конъюнкт имеет фиксированное число литералов, то если ρ достаточно велико, то можно выбрать значения сг и с2 для Ьг и ft2, такие, что (сг с2) не входит в [р ]+, но все атомы из конъюнкта ложны. Так как атомы ложны, то соответствующие литералы истинны и, следовательно, f (clt с2) истинна (как нужно выбрать сг и с2 ?). Поэтому (сг с2) £ Ερ ([/?]), т. е. получим противоречие. Мы показали, что в любом случае имеется некоторое /?, такое, что Ер ([/?]) Φ [р]+. Так как Ε и Ер эквивалентны, то Ε (г) не может определять транзитивного замыкания для всех отношений г (Ах А2). Имеются различные предложения по расширению реляционной алгебры с той целью, чтобы можно было выражать большее множество операций над отношениями. Эти цредложения сводятся в общем к добавлению некоторых конструкций языков программирования или операторов неподвижной точки. Язык запросов QBE, обсуждаемый в следующей главе, включает конструкции, построенные специально для работы с транзитивными замыканиями отношений (для отношений, замыкания которых антисимметричны). 14.4. ВЫЧИСЛЯЕМЫЕ ОТНОШЕНИЯ 14.4.1. Пример Рассмотрим отношение расписание (РЕЙС ПУНКТ-ОТПРАВЛЕНИЯ ПУНКТ-НАЗНАЧЕНИЯ ВРЕМЯ-ВЫЛЕТА ВРЕМЯ- ПРИЛЕТА), содержащее информацию о рейсах нашей вымышленной авиакомпании. Предположим, нам нужно породить отношение продолжительность (РЕЙС ВРЕМЯ-ПОЛЕТА), определяющее продолжительность каждого рейса. Один из подходов к этому состоит в следующем: с помощью некоторой команды языка управления базой данных выбираются строки из отношения расписание, производятся вычисления над ними с помощью некоторого языка программирования общего назначения и результаты вычислений заносятся в отношение продолжительность с помощью другой команды управления базой. Таким образом, вызовы системы управления базой данных вставляются в программы некоторого стандартного языка программирования *). Если в расписании указаны местные времена, то программа для вычисления продолжительности рейсов должна знать, в каких временных зонах (часовых поясах) находятся обслуживаемые города. *) Или же, напротив, язык управления базой расширен за счет вызовов процедур языка программирования. — Прим. перев.
522 Гл. 14. Дополнительные вопросы Эта программа была бы более простой, если бы в базе данных каждый город был связан со своей временной зоной. Для этого можно хранить отношение зона-города (ГОРОД ЗОНА), сопоставляющее городам их временные зоны. Тогда можно определить два виртуальных отношения зона-вылета и зона-прилета переименованием атрибутов ГОРОД и ЗОНА отношения зона-города соответственно в атрибуты ПУНКТ-ОТПРАВЛЕНИЯ, ЗОНА- ВЫЛЕТА и атрибуты ПУНКТ-НАЗНАЧЕНИЯ, ЗОНА-ПРИЛЕТА. Используя эти отношения, можно определить третье виртуальное отношение времена-и-зоны = ярейс ввл звл впр зпр (расписание х- зона-вылета >< зона-прилета) г). Тогда программа вычисления продолжительности райсов может быть написана в терминах обращений к отношению времена-и- зоны без выяснения временной зоны городов. Предположим, что мы хотим описать продолжительность как виртуальное отношение, т. е. определить его через отношения базы с помощью операций реляционной алгебры таким образом, что его состояние всегда было согласовано с состоянием отношения расписание. При этом нужно проводить вычисления продолжительности рейсов, оставаясь полностью внутри базы данных. Для этого можно было бы использовать ^отношение зональные-интервалы (ВВЛ ЗВЛ ВПР ЗПР ВПЛ), которое определяет продолжительность интервалов времени для всех возможных комбинаций начал и концов интервалов, задаваемых парами (местное время, зона). При наличии этого отношения продолжительность можно было бы определить как ft рейс впл {времена-и-зоны хзональные-интервалы 2). Хотя такой подход и можно представить себе, однако отношение зональные-интервалы окажется слишком большим, если включить в него всевозможные комбинации зон и моментов времени. Если бы такой подход был принят, то нам все равно скорее всего пришлось бы использовать какую-либо программу для вычисления всех строк отношения зональные-интервалы. Более приятная возможность — включать в зональные-интер- валы только строки, нужные для корректного вычисления продолжительности рейсов. Однако нельзя знать заранее, какие строки г) Здесь и ниже используются сокращения ВВЛ, ЗВЛ, ВПР, ЗПР и ВПЛ вместо названий атрибутов ВРЕМЯ-ВЫЛЕТА, ЗОНА-ВЫЛЕТА, ВРЕМЯ- ПРИЛЕТА, ЗОНА-ПРИЛЕТА и ВРЕМЯ-ПОЛЕТА. — Прим. перев. 2) Здесь существенно то, что добавляемое к базе данных отношение зональ- ные-интереалы постоянно во времени; если снять это условие на добавляемые отношения, то любое отношение тривиальным образом может быть сделано виртуальным относительно расширенной базы. — Прим. перев.
14.4. Вычисляемые отношения 523 этого отношения понадобятся, поэтому желательно вычислять нужные строки по мере необходимости. Это соответствует неявному включению вызовов программы в команды языка управления базой. При этом, вместо того чтобы отношение зональные- интервалы явно запоминать в базе данных, запоминается программа, вычисляющая ВРЕМЯ-ПОЛЕТА по значениям атрибутов ПУНКТ-ОТПРАВЛЕНИЯ, ЗОНА-ВЫЛЕТА, ПУНКТ- НАЗНАЧЕНИЯ, ЗОНА-ПРИЛЕТА. Это позволяет порождать строки отношения продолжительность по мере поступления запросов. Отношение, чье значение представляет собой функцию, называется вычисляемым отношением *). Для различения вычисляемых отношений от отношений с запоминаемым значением последние называются табличными отношениями. Вычисляемое отношение зональные-интервалы не может быть использовано в некоторых выражениях, например в выражении вылеты-из-зон = = яввл пвл ((?впр=1.1о, впл=2.2о (зональные-интервалы)). Программа, ассоциированная с отношением зональные-интервалы, не работает в нужном направлении для вычисления отношения вы- леты-из-зон. Для отношения зональные-интервалы можно построить программы, позволяющие порождать строки по значениям других атрибутов. Для порождения отношения вылеты-из-зон нужна процедура, порождающая значения атрибутов ВВЛ, ЗВЛ, ВПР по значениям атрибутов ВПР, ВПЛ. Хотя такую программу можно себе представить, вряд ли целесообразно иметь дело с программой, порождающей значения атрибутов ВВЛ, ЗВЛ, ВПЛ по значениям атрибутов ВПР, ЗПР. И вообще, хотя некоторое вычисляемое отношение может быть восстановлено по значениям разных множеств атрибутов, маловероятно, чтобы это можно было сделать для любого множества атрибутов. Если построить программу для вычисления значения атрибута ВПР по значениям атрибутов ВВЛ, ЗВЛ, ЗПР, ВПЛ, то можно вычислить выражение япнзпотвпр (сгввл=8.15, впл=2.4о (зональные-интервалы >< ъ>< зона-вылета >< зона-прилета) 2), х) Точнее говоря, вычисляемым называется отношение с единственным возможным состоянием, значение которого совпадает с графиком функции, вычисляемой с помощью некоторой программы. Ниже упоминается и несколько более общее понятие вычисляемого отношения. — Прим. перев. 2) Здесь используются дополнительные сокращения ПНЗ ПОТ вместо атрибутов ПУНКТ-НАЗНАЧЕНИЯ, ПУНКТ-ОТПРАВЛЕНИЯ. — Прим. перев.
524 Гл. 14. Дополнительные вопросы получая времена прибытия в различные города рейсов, вылетающих в 8.15 и имеющих продолжительность 2 часа 40 мин. Может быть, не вполне очевидно, что это выражение может быть вычислено по программному заданию отношения зональные-интервалы, но ниже будет показано, что это возможно. Программы, ассоциируемые с вычисляемыми отношениями, не обязательно вырабатывают значения для всех возможных значений входных атрибутов. Для отношения зональные-интервалы, например, существуют функции, выдающие значения любого атрибута по значениям остальных атрибутов, если допустимое значение существует. Однако такое значение может не существовать. Например, если атрибуты ВВЛ, ЗВЛ, ВПР, ВП имеют значения (9.20 Тихоокеанская' 1.20 2.40), то нельзя подобрать значения атрибута ЗПР, чтобы построить допустимую строку. Иногда выражение, содержащее вычисляемые отношения, не может быть вычислено, так как отсутствуют необходимые вычисляющие программы. В некоторых из этих случаев, однако, можно проверять, входит ли данная строка в отношение, определяемое выражением. Предположим, например, что имеются только программы, вычисляющие по значениям четырех атрибутов значение пятого атрибута. Рассмотрим снова приведенное выше выражение вылеты-из-зон. Хотя при наличии только указанных программ это выражение не может быть вычислено, однако для конкретных строк, например для строки (10.5£) Восточная), можно проверить, входит ли она в вылеты-из-зон. Это можно сделать, так как эта проверка соответствует вычислению выражения (ОЧВВЛ^Ю.БО, ЗВЛ=Восточная (^ВВЛ ЗВЛ (СГВПР=1.10, ВПЛ=2.20 (ЗОНаЛЬ- ные- интервалы))), которое может быть вычислено по имеющемуся представлению отношения зональные-интервалы. В следующем разделе будет рассмотрена проблема, можно ли по алгебраическому выражению некоторого ограниченного вида, содержащему вычисляемые отношения, ^выяснить, можно ли его эффективно вычислить, проверить на вхождение конкретных строк, или же ни то, ни другое неверно. 14.4.2. Проверка выражений, содержащих вычисляемые отношения Нас здесь не будет особенно заботить, каков точный механизм спецификации программ, которые вырабатывают значения вычисляемых отношений. В основном мы будем интересоваться тем, какие множества атрибутов можно использовать для определения значений других атрибутов.
14.4. Вычисляемые отношения 525 При исследовании теории вычисляемых отношений, полезно воображать, что любое вычисляемое отношение г (R) имеет табличное представление, хотя оно может быть бесконечным. Это представление будем обозначать просто как г. Если X и Υ — подмножества из R, то будем говорить, что г удовлетворяет вычислительной зависимости (кратко, С-зависимости) X = : Υ, если дана программа, вычисляющая по Х-значению χ значение выражения ηγ (σχ=χ (г)). Хотя это и не очень существенно для дальнейшего, кое-что может проясниться, если заметить, что из С-зависимости X = : Υ следует F-зависимость Χ -+■ Υκ τ. е. существует функция для вычисления У-значений по данным Х-значениям, поэтому яу (σχ=χ (ή) содержит не более одной строки. Определяющим множеством для г называется левая часть любой С-зависимости над г. Пример 14.32. Если для отношения зональные-интервалы из предыдущего раздела даны программы, вычисляющие значения каждого атрибута по значениям остальных атрибутов, то это отношение удовлетворяет С-зависимостям ВВЛ ЗВЛ ВПР ЗПР = : ВПЛ, ВВЛ ЗВЛ ВПР ВПЛ = : ЗПР, ВВЛ ЗВЛ ЗПР ВПЛ = : ВПР, ВВЛ ВПР ЗПР ВПЛ = : ЗВЛ, ЗВЛ ВПР ЗПР ВПЛ = : ВВЛ. В соответствии с замечаниями из предыдущего раздела, можно было бы ввести также С-зависимость ВПР ВПЛ = : ВВЛ ЗВЛ ЗПР, однако маловероятно использование процедуры, соответствующей С-зависимости ВПР ЗПР = : ВВЛ ЗВЛ ВПЛ. Определим теперь термины перечислимое и разрешимое г) по отношению к алгебраическим выражениям, содержащим вычисляемые отношения. При этом ограничимся выражениями, содержащими константные отношения с единственной строкой, проекцию, выбор по равенству и естественное соединение. Напомним, что при этом получается класс ограниченных алгебраических выражений, для которых существуют эквивалентные размеченные табличные запросы. Фактически определения перечислимости и разрешимости будут даны для размеченных табличных запросов. г) Заметим, что понятие перечислимости и разрешимости используются здесь в отличном от обычного их употребления в теории алгоритмов смысле; в частности, из разрешимости запроса не следует его перечислимость. — Прим. перев.
526 Гл. 14. Дополнительные вопросы Вход: Размеченный табличный запрос Q и массив CDEP множеств вычисляемых зависимостей для каждого отношения из COMPUTED. Выход: истина, если все символы из Q окажутся помеченными, ложь в противном случае. MARK (Q, CDEP) begin 1. Инициализация. Пометить все константные символы из Q; for любая строка w из Q do if tag(w) £ TABULAR then пометить любой символ из w\ 2. Вычисление. 2.1. Распространение меток. while изменения возможны do for любая помеченная переменная а из Q do пометить все "копии а из Q, включая копии из резюме; 2.2. Применение С-зависимостей. for любая строка w из Q do if tag(w) ζ COMPUTED then begin for любая С-зависимость Χ = : Υ из CDEP (tag (w)) do if все символы из Х-столбцов w помечены, then пометить все символы из Г-столбцов w\ end; 3. Выдача результатов. if все символы из резюме помечены and в любой строке, размеченной вычисляемым отношением, помечены все ее парные переменные и некоторое определяющее множество, then return (истина) else return (ложь) end. Рис. 14.62. Напомним обозначения, связанные с размеченными табличными запросами. Для запроса Q, базы данных d и оценки ρ на Q выражение ρ (Q) ^ d, означает, что ρ отображает любую строку w из Q в строку отношения d, имеющую схему tag (w). Тогда Q(d)= \p(w0)\p(Q)s=d\, где w0 — резюме запроса Q. Так как мы считаем, что любое вычисляемое отношение имеет некоторое значение, если даже оно не может быть эффективно вычислено, то Q (d) имеет смысл и в том случае, когда d содержит вычисляемые отношения. Требуемые определения вводятся с помощью алгоритма MARK из рис. 14.62. MARK последовательно помечает символы табличного запроса, успешно завершая свою работу, если оказываются помеченными все символы резюме и все парные символы и некоторое определяющее множество для всех строк, размеченных именами вычисляемых отношений. Алгоритм MARK имеет две глобальные переменные TABULAR и COMPUTED, значениями которых являются множества табличных и вычисляемых отношений из базы данных.
14.4. Вычисляемые отношения 527 Qi (ПОТ ПНЗ ВВЛ ЗВЛ ВПР ЗПР ВПЛ) ах а2 аъ fli 20.14 Ьг Ьг аъ Ь2 2.41 (зональные-интервалы) (зона-вылета) Ь2 (зона-прилета) Рис. 14.63. Q1 (ПОТ ПНЗ ВВЛ ЗВЛ ВПР ЗПР ВПЛ) Ql a2 «5 fliX а2Х 20.14Х h ьхх аь Ъ2 2.41 ь2х Рис. 14.64. (зональные-интервалы) (зона-вылета) (зона-прилета) Q1 (ПОТ ПНЗ ВВЛ ЗПЛ ВПР ЗПР ВПЛ) fliX а2Х (Ц 20.14Х ЬгХ аъ Ь2Х 2.41 (зональные-интервалы) агХ Ьгх (зона-вылета) а2Х Ь2Х (зона-прилета) Рис. 14.65. Q1 (ПОТ ПНЗ ВВЛ ЗВЛ ВПР ЗПР ВПЛ) fliX а2х аъ 20.14Х ЬХХ аъх Ь2Х 2.41 X (зональные-интервалы) агХ ЬгХ (зона-вылета) а2х Ь2х (зона-прилета) Рис. 14.66. Пример 14.33. Рассмотрим размеченный табличный запрос (рис. 14.63), который соответствует одному из выражений предыдущего раздела. Предположим, что первые пять вычисляемых зависимостей из предыдущего примера выполняются на отношении зональные-интервалы, а отношения зона-вылета и зона-прилета табличны. На рис. 14.64 показано значение Qx после шага инициализации из алгоритма MARK (для пометок используется символ X). На рис. 14.65 показано значение Q1 после распространения меток. Применение С-зависимости ВВЛ ЗВЛ ЗПР ВПЛ = = : ВПР дает пометку символа аъ в первой строке, как показано на рис. 14.66. И наконец, при втором прохождении цикла вычисления пометка символа аь распространяется в резюме и MARK выдает результат истина.
528 Гл. 14. Дополнительные вопросы Q2 (ВВЛ ЗВЛ ВПР ЗПР ВПЛ) аг а2 1.10 Ь± 2.20 (зональные-интервалы) Рис. 14.67. Пример 14.34. Размеченный табличный запрос Q2 (рис. 14.67) также соответствует одному из выражений предыдущего раздела. Предположим снова, что отношение зональные-интервалы удовлетворяет первым пяти С-зависимостям из примера 14.32. Если применим к Q2 алгоритм MARK, то две константы из первой строки оказываются помеченными, а других пометок не появляется. Поэтому MARK выдает результат ложь. - Определение 14.13. Размеченный табличный запрос Q называется перечислимым относительно множества CDEP С-зави- симостей, если MARK (Q, CDEP) = истина. Пример 14.35. Запрос Q1 из примера 14.33 является перечислимым, а запрос Q2 из примера 14.34 таким не является. Наши определения были введены в обратном по сравнению с обычным способом порядке. Обычно сначала определяется некоторое свойство, и после этого строится алгоритм для его проверки. Здесь мы сначала привели алгоритм и определили свойство перечислимости с его помощью. Теперь покажем, что понятие перечислимости достаточно корректно определено, а именно по любому перечислимому запросу Q и базе данных d фактически можно вычислить Q (d). Убедиться в том, что Q (d), вообще говоря, не может быть вычислено, если Q не перечислимо, оставляется читателю в качестве упр. 14.51. Для упрощения рассуждений мы считаем, что из любой С-зависимости X = : Υ следует соответствующая F-зависимость X ~+ Υ. Поэтому для любого отношения г, удовлетворяющего зависимости X = : У, можно предположить существование функции fx у, выдающей некоторое F-значение по любому Х-значению или специальный символ κ (от слова kill — убить), который указывает, что г не содержит строки с данным Х-значением. Доказательство может быть обобщено на случай, когда допускается несколько F-значений для одного и того же Х-значения (см. упр. 14.53) *). Для вычисления Q (к) нам нужно найти все оценки ρ над Q, такие, что ρ (Q) ^ d. Пусть Qtab и Qcom обозначают множества строк из Q, размеченных соответственно табличными и вычисляемыми отношениями. Первое ограничение на выбор оценки ρ *) Здесь речь идет о несколько более общем понятии вычисляемых отношений, чем было определено выше. — Прим. перев.
14.4. Вычисляемые отношения 529 связано с ее значениями на строках из Qiah. Легко можно перечислить все оценки ρ над Qiab, такие, что ρ (w) £ tag (w) для всех строк w из Qtab, т. е. ρ (Qtab) — ^· Предположим, что дана такая оценка ρ над Qtat>> и попытаемся обобщить ее на весь запрос Q. Так как ρ (с) должно равняться с для всех констант с, то ρ очевидным образом расширяется на все константы. Таким образом, ρ оказывается определенной на всех символах, помеченных на шаге инициализации при работе алгоритма MARK над Q. Идея последующего рассуждения состоит в том, чтобы показать, что ρ можно расширить на все символы, помеченные во время вычисления. Во-первых, для любого символа а, который помечается на шаге распространения меток, оценка ρ (а) уже определена. Далее, если в строке w помечаются символы из У-столбцов, используя зависимость X = : У, то символы Х-столбцов уже должны быть помечены. Поэтому нам известно значение ρ (w (X)). Тогда, используя функцию fx у, соответствующую данной зависимости, мы получаем некоторое У-значение у = fY x (p (w (X)))- Если у = κ, то оценка ρ не может быть расширена так, чтобы было ρ (w) £ tag (w). Кроме того, р нельзя расширить нужным образом, если ρ уже определена на w (Л), где Α ζ У и ρ (w (А)) Ф у (А). В любом другом случае ρ можно расширить на w (У), полагая ρ (w (У)) = у. Продолжая таким образом, мы либо дойдем до момента, когда выяснится, что оценка ρ не может быть расширена, либо она будет расширена на все символы, помеченные алгоритмом MARK. При этом может оказаться, что ρ не определена на некоторых символах некоторой строки w из Qcom· Пусть tag (w) = г (R). Хотя ρ и не определена на всей строке w, она определена на некотором определяющем множестве X отношения г, так как MARK успешно завершает свою работу на Q. Таким образом, если оценка ρ определена в точности на w (Z), где Ζ ^ R, то можно определить, имеется ли в г строка t, такая, что ρ (w (Z)) = t (Z). Так как переменные из w (R — Ζ) не помечены, они не являются парными, иначе Q не было бы перечислимым. Тогда теоретически ρ можно было бы расширить на всю w, полагая ρ (w) = t. Фактически определение значения t на атрибутах из R — Ζ может оказаться невозможным, однако достаточно знать, что подходящие значения существуют. Так как резюме w0 запроса Q оказывается помеченным, то ρ (w0) определена и входит в Q (d). Таким образом, показано, что любая оценка р, построенная приведенным выше способом, может быть расширена на весь запрос Q так, что ρ (Q) ^ d. Если нам дана оценка р, такая, что ρ (Q) ^ d,' то нетрудно видеть, что, ограничивая ρ на Qtab и расширяя ее вышеприведенным способом, мы придем к оценке, которая совпадает с ρ на всех помеченных символах из Q и, еле-
530 Гл. 14. Дополнительные вопросы Q2 (ВВЛ ЗВЛ ВПР ЗПР ВПЛ) fliX a2X а-уХ а2Х 1.10Х bx 2.20χ (зональные-интервалы) Рис. 14.68. довательно, имеет то же значение на символах из резюме запроса. Следовательно, мы можем найти все строки из Q (d). Теперь перейдем к определению разрешимости. Пусть MAR К'— алгоритм, отличающийся от алгоритма MARK только тем, что на шаге инициализации помечаются также все символы из заключения запроса Q. Определение 14.14. Размеченный табличный запрос Q называется разрешимым относительно множества CDEP С-зависимо- стей, если MARK' (Q, CDEP) = истина. Пример 14.36. Возвратимся к примеру 14.34. Пусть Q2 — размеченный табличный запрос из рис. 14.67. Запуская MARK' на Q2, на шаге инициализации пометим все символы из заключения и константы, как показано на рис. 14.68. Распространение меток на αΎ и а2 и применение С-зависимостей ВВЛ ЗВЛ ВПР ВПЛ = : ЗПР приводят к пометкам у всех символов из Q2. Поэтому MARK' выдает истина на Q2, и Q2 является разрешимым. Покажем теперь, что для разрешимого запроса Q и строки / можно эффективно решить, входит ли t в Q (d). Пусть R — схема отношения Q (d) и t — строка над R. Проверка вхождения t в Q (d) то же самое, что проверка того, содержит ли σ^=/ (Q (d)) какие-либо строки. Пусть w0 — резюме Q. Можно построить запрос Q' для σ^/ (Q (d)), заменив любую переменную щ из Лгстолбца строки w0 константой ί (Αϊ). Если w {At) — уже константа, не равная t(Ai), то можно закончить проверку, так как t φ Q (d). Запрос Q' отличается от Q только тем, что переменные из резюме заменены константами, поэтому MARK успешно завершает работу на Q' в точности тогда, когда MARK' успешно завершает работу на Q. Поэтому, если запрос Q разрешим, то Q' перечислим, и, следовательно, можно провести проверку вхождения ί в Q (d), вычислив Q' (d). Определения перечислимости и разрешимости неявно предполагают бесконечность доменов. Если домен конечен, то перечисление всех его значений можно включить как часть в алгоритм вычисления. Например, если даны вычисляемое отношение г (А В) и С-зависимость А = : В, причем домен dom (А) конечен, то значение г можно было бы определить с помощью перечисления
14.5. Упражнения 531 dom (А). В упр. 14.55 показано, как включить информацию о конечных доменах в определения перечислимости и разрешимости запросов. 14.5. УПРАЖНЕНИЯ 14.1. Покажите, что все правила вывода для F-зависимостей переходят в корректные логические правила вывода, если F-зависимости интерпретируются как пропозициональные формулы. 14.2*. Выберите любое полное множество правил вывода для F-зависимостей. Покажите, что эти правила при их интерпретации как правил вывода пропозициональной логики дают полное множество правил вывода для фрагмента пропозициональной логики, содержащей только формулы вида X =>- У. 14.3. Завершите доказательство леммы 14.1. 14.4. m Покажите, что все правила вывода для одних MV-зависимостей и для F-зависимостей совместно с MV-зависимостями переходят в корректные логические правила, когда F- и MV-зависимости интерпретируются как пропозициональные формулы. 14.5. Докажите лемму 14.3. 14.6. Докажите лемму 14 5. 14.7. Докажите теорему 14.2. 14.8. Пусть F — множество F-зависимостей, правые части которых содержат по одному атрибуту. Пусть MF = {X Л-» | X ->■ Α £ F} содержит зависимости из Ft превращенные в MV-зависимости. Используйте теорему 14.2 для доказательства следующей теоремы Бири (Beeri). Теорема 14.14. Пусть F и Μ — соответственно множества F- и ММ-зависимостей. Тогда ММ-зависимость X —» Υ следует из F (J Μ тогда и только тогда, когда она следует из Μ ρ (J M. Одним из следствий этой теоремы является то, что любая процедура проверки выводимости одних MV-зависимостей из других MV-зависимостей легко может быть перестроена в процедуру проверки выводимости MV-зависимостей из F- и MV-зависимостей. 14.9. Покажите, что для J- и вложенных MV-зависимостей выводимость в мире двустрочных отношений не совпадает с выводимостью над произвольными (конечными) отношениями. 14.10*. Покажите, что указанное сопоставление пропозициональных формул F- и MV-зависимостям нельзя расширить на вложенные MV- зависимости так, чтобы сохранилась эквивалентность отношения следования. 14.11. Пусть J — множество J-зависимостей над схемой R и X ^ R. Покажите, что пх (SAT (J)) не всегда может быть представлено как SAT (7'), где J' — множество J-зависимостей над X. 14.12. Приведите минимальное отношение, содержащее приведенное ниже отношение г и удовлетворяющее Т-зависимости τ из рис. 14.5. г (А В С) 1 3 5 1 3 6 1 3 7 2 3 5 2 4 5 1 4 6
532 Гл. 14. Дополнительные вопросы 14.13. Приведите минимальное отношение, содержащее указанное выше отношение г и удовлетворяющее Т-зависимости τ из рис. 14.7. 14.14. Покажите, что Т-зависимость τ из рис. 14.5 не эквивалентна никакой J-зависимости. 14.15. Докажите, что любая J-зависимость, полная или вложенная, эквивалентна некоторой Т-зависимости. Определение 14.15. (Типизированная) Т-зависимость называется простой если любой ее столбец содержит не более одной повторяющейся переменной. 14.16. (а) Докажите, что любая простая полная Т-зависимость эквивалентна некоторой J-зависимости. у-^' (Ь) Приведите пример простой Т-зависимости, которая неэквивалентна никакой полной или вложенной J-зависимости. 14.17.* Покажите, что любое множество полных Т-зависимостей над одной и той же схемой эквивалентно одной Т-зависимости. 14.18.* Приведите пример множества частичных Т-зависимостей с одной и той же схемой, которое неэквивалентно никакой одной Т-завйсимости. 14.19.* Докажите, что существуют только три различных Т-зависимости над схемой с двумя атрибутами (тривиальная зависимость, зависимость, задающая декартово произведение, и Т-зависимость из рис. 14.10). 14.20. Покажите, что любая Т-зависимость может быть представлена как формула логики предикатов с одним предикатным символом (для отношения). Заметим, что если зависимость является полной, то соответствующая формула г) не содержит кванторов существования. 14.21. Докажите, что любое отношение, представляющее собой декартово произведение по столбцам, удовлетворяет любой Т-зависимости над своей схемой. 14.22. (а) Рассмотрим множество всех 5-частичных Т-зависимостей над схемой R, где S ^ R и S имеет не менее двух атрибутов. Покажите, что в этом множестве имеются самая сильная и самая слабая нетривиальная Т-зависимости. (Ь) Докажите, что не существует самой слабой нетривиальной Т-зависимости над любой схемой с не менее чем тремя атрибутами. 14.23. Докажите, что полная Т-зависимость является тривиальной тогда и только тогда, когда ее заключение встречается как одна из строк-допущений. 14.24. Охарактеризуйте те Т-зависимости, которые эквивалентны J-зависи- мостям, в терминах графов Т-зависимостей. 14.25. Приведите два различных графа для Т-зависимости из рис. 14.13. 14.26. Верно ли, что любая Т-зависимость, чей граф можно нарисовать в виде треугольника, эквивалентна некоторой вложенной MV-зависимости? 14.27. Докажите теорему 14.6. 14.28.* Приведите цепочку постепенно усиливающихся Т-зависимостей, используя идеи теоремы 14.7. Указание: рассмотрите графы G;, получаемые из подграфов Gi графа G из рис. 14.20 отождествлением вершин 1 и i-\- 1. 14.29.* Завершите доказательство теоремы 14.8. 14.30. Пусть С — множество ^-частичных'Т-зависимостей над схемой R и τ— произвольная Т-зависимость над R. Покажите, что если существует бесконечное отношение, на котором выполняется С, но нарушается τ, то существует конечное множество с тем же свойством. 14.31. Покажите, что следующие правила вывода для Т-зависимостей являются корректными; τ = (7\ w) обозначает некоторую Т-зависимость. (a) Переименование. Если τ' получено из τ взаимно однозначным переименованием символов, то из τ следует τ'. (b) Отождествление переменных. Если τ' получено из τ заменой всех вхождений некоторой переменной из Τ на переменную из того же столбца табло 7\ г) В пренексной форме. — Прим. перев.
14.5. Упражнения 533 то из τ следует τ'. (Заметим, что эта аксиома не позволяет отождествлять переменную, которая появляется только в w, с переменной из Т.) (с) Транзитивность. Пусть τχ = (Ть w{) и τ2 = (Т2, w2), где Τι э Т2 U {^г}· Тогда из %г и τ2 следует τ3 = (Тх — {ш2}, Wi). (d) Рефлексивность. Т-зависимость ({до}, до), где до — произвольная строка, является аксиомой. 14.32.* Докажите, что правила расширения (лемма 14.7), ослабления (разд. 14.3.4), переименования, отождествления переменных, транзитивности и аксиома рефлексивности (из предыдущего упражнения) образуют полную аксиоматическую систему для вывода импликаций Т-зависимостей над любыми отношениями. 14.33.* Покажите, что если Т-правило ограничено так, что порождаются только строки, содержащие новые комбинации исходных переменных из табло, то некоторые комбинации, которые могли бы быть получены без такого ограничения, могут быть не получены. Иными словами, приведите пример табло и Т-зависимостей, в применении к которым Т-правило не может породить новых комбинаций исходных переменных за один шаг, однако такая комбинация появится позже. 14.34. Пусть С — множество Т-зависимостей над схемой R и Τ — табло над R. Покажите, что при прогонке Τ относительно С всегда появляются одни и те же комбинации исходных переменных независимо от порядка, в котором используются зависимости из С. 14.35. Пусть С — множество полных Т-зависимостей над схемой R и Τ — табло над R. Покажите, что прогонка Τ относительно С всегда приводит к одному результирующему табло. 14.36. Покажите, что по отдельности ни одна из Т-зависимостей множества С из примера 14.23 не влечет за собой зависимости τ. 14.37. Какое из приводимых ниже отношений удовлетворяет обобщенной F-зависимости γ из рис. 14.40. гг (А В С D) 13 5 7 14 6 8 2 3 6 7 г2(А В С D) 12 3 5 12 4 6 г3(А В С D) 12 4 5 13 4 6 14.38. Получите синтаксическую характеризацию тривиальных обобщенных F-зависимостей. 14.39. Используя идею GT1, найдите правило вывода нетривиальной Т-за- висимости из нетривиальной обобщенной F-зависимости. 14.40. Покажите, что правило GT1 можно использовать для замены F-зависимостей на Т-зависимости при рассмотрении выводимости Т-зависимостей из множеств F-зависимостей и обобщенных F-зависимостей. 14.41. Докажите, что отношения следования обобщенных F-зависимостей для конечных и произвольных отношений совпадают.
534 Гл. 14. Дополнительные вопросы 14.42. Заметим, что удаление строки wx из обобщенной F-зависимости у из рис. 14.50 приводит к эквивалентной зависимости. Сформулируйте и докажите некоторый общий результат о лишних строках в Т-зависимостях и обобщенных F-зависимостях. 14.43. Набросайте схему доказательства теоремы 14.11. Укажите, почему наш метод переименования переменных при применении G-правила является адекватным. 14.44. Покажите, что если при прогонке Т-зависимостей, и обобщенных F- зависимостей порождается конечная последовательность табло, то последнее табло из последовательности является ее пределом. 14.45.* Пусть С — конечное множество Т-зависимостей и обобщенных F- зависимостей. Покажите, что ηχ (С) может иметь бесконечно много зависимостей и не быть эквивалентным никакому конечному множеству зависимостей. Верно ли это, если С содержит только F- и J-зависимости? 14.46. (а) Докажите, что если С содержит только F-зависимости, то существует множество обобщенных F-зависимостей, которое эквивалентно множеству лх (С). (Ь) Докажите, что если С содержит только J-зависимости, то существует множество Т-зависимостей, которое эквивалентно множеству ηχ (С). 14.47. Докажите лемму 14.8. 14.48. Для случая 6.2 из доказательства теоремы 14.13 покажите, что f(blt Ь2, .... &m-l) Ξ Э W (&1> Κ ···. Ы· 14.49. (а) Пусть зональные-интервалы и вылеты-из-зон — отношения, определенные в разд. 14.4.1, и перекрытие (РЕЙС1 РЕЙС2) — отношение, содержащее все пары перекрывающихся рейсов. Приведите алгебраическое выражение, определяющее отношение, содержащее общую продолжительность и время перекрытия для всех пар перекрывающихся рейсов. (Ь) Каким С-зависимостям должно удовлетворять отношение зональные- интервалы, для того чтобы можно было вычислить значение выражения из (а)? 14.50. Пусть гг (А В С) и r2 (CD) —"табличные отношения. Пусть sx (ВD Ε) — вычисляемое отношение с С-зависимостями В = : D Ε и D Ε = : В и s2 (С Ε Ι) — вычисляемое отношение с С-зависимостью С Ε = : I. Следующие ограниченные алгебраические выражения переведите в эквивалентные размеченные табличные запросы и выясните, какие из этих запросов являются перечислимыми: (a) гх X slt (b) r2 >< slf (c) я>в с fa >< «ι). (d) лв ε (r2 X Sx), (e) σ£β/ (r2 >< Sj), (f) /Ί >< Sx >< s2, (g) ПАСЕ(Г1>< r2><Si), (h) Sx >< s2, (i) лв j (Sl >< s2), (J) яд / (Si X s2). 14.51. Покажите, что, вообще говоря, нет эффективного метода для вычисления ответа на запрос, если запрос не является перечислимым. Предполагайте, что все домены бесконечны. 14.52.* Сохраняется ли перечислимость при переходе к эквивалентному табличному запросу? 14.53. Приведите метод вычисления ответа на перечислимый запрос без предположения, что С-зависимость X = : Υ влечет за собой F-зависимость Х-+- Υ. 14.54. Какие из табличных запросов из примера 14.50являются разрешимыми? 14.55. Покажите, как информация о конечности доменов может быть внесена в теорию вычисляемых отношений с помощью одноатрибутных табличных отношений г (А) для всех атрибутов А с конечными доменами. Все состояния г совпадают с dom (A).
14.6. Библиография и комментарии 535 14.6. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Связь между F-зависимостями и пропозициональными формулами была впервые указана в работе Delobel, Casey [1973] и в полном объеме рассмотрена в Fagin [1977b]. В статье Sagiv [1980] показана связь между MV-зависимостями и формулами. Материал этой главы о связи между F- и MV-зависимостями и пропозициональными формулами, в частности результаты о двустрочных отношениях и доказа!ельство леммы 14.6, взяты из работы Sagiv, Derobel, Parker, Fagin [1981]. Указание на связь между MV-зависимостями и пропозициональными формулами содержится также в Namibar [1979]. Табличные зависимости были введены в сообщении Sadri, Ullman [1980a], хотя они рассматривали только типизированный случай. Там была дана полная аксиоматизация для Т-зависимостей и было показано, как обобщить на них прогонку. В работе Sadri, Ullman [1980b] показано, как вести прогонку при добавлении F-зависимостей к Т-зависимостям. Материал о примерах и контрпримерах для Т-зависимостей, представлении с помощью графов, соотношении импликации над конечными и бесконечными отношениями взят из Fagin, Maier, Ullman- Yannakakis [1981]. Обобщенные F-зависимости введены Садри (Sadri [1980a, 1980b, 1980с]), который построил правила вывода для Т- и обобщенных F-зависимостей, обобщил метод прогонки на них, показал замкнутость классов выполнимости относительно проекции и определил некоторую нормальную форму относительно Т-и обобщенных F-зависимостей. Было введено много классов зависимостей в попытке преодолеть возникшие проблемы для ранее определенных классов или с целью получения более выразительного языка описания ограничений целостности. В работах Nicolas [1978a, 1978b] введены взаимные зависимости, представляющие собой вид J-зависимостей, и показано, что F-, MV- и взаимные зависимости могут быть выражены в логике первого порядка. Обобщение взаимных зависимостей см. в Mendelzon, Maier [1979], а в Tanaka, Kambayashi, Yajima [1979b] — исследование некоторых свойств EMV-зависимостей. В работе Parker, Parsaye-Ghomi [1980] и Sagiv, Walecka [1979] доказано, что не существует конечной полной аксиоматизации вложенных MV-зависимостей самих по себе. Оба доказательства основаны на том, что для любого k существует правило вывода некой EMV-зависимости и τ из k EMV-зависимостей, однако любая EMV-зависимость, выводимая из k — 1 этих зависимостей, может быть выведена из единственной из них и она отлична от τ. Это правило вывода не может быть получено из любого множества правил, имеющих не более k— 1 допущений. В последней работе определен некоторый класс зависимостей, собственным образом включающий класс EMV- зависимостей и имеющий полную аксиоматизацию. Эти зависимости имеют вид Пытаясь аксиоматизировать J-зависимости, Sciore [1982] слегка обобщил этот класс зависимостей и получил полную аксиоматизацию для обобщенного класса. Он высказал предположение, что для J-зависимостей конечная аксиоматизация невозможна. Зависимости из этой работы — это фактически Т-зависимости с ограничением, что каждый столбец может содержать не более двух повторяющихся переменных. Некоторые авторы независимо подошли к зависимостям, похожим на Τη GF-зависимости. В работе Fagin [1980a] хорновские дизъюнкты использованы для определения класса вложенных импликационных зависимостей (EI-зависи- мостей), который эквивалентен классу нетипизированных Т- и GF-зависимостей. Там показано среди других результатов, что любое множество С EI-зависимостей имеет отношение Армстронга, т. е. отношение, которое удовлетворяет в точности зависимостям из С. В этой работе показана также замкнутость классов выполнимости EI-зависимостей относительно проекции. В статье Yannakakis, Papadimit-
536 Гл. 14. Дополнительные вопросы riou [1980] предложен класс алгебраических зависимостей, имеющих вид теоретико-множественного включения одних алгебраических выражений, составленных из проекций и эквисоединений, в другие выражения. В этой статье показано, что алгебраические зависимости эквивалентны EI-зависимостям. В работе Grant, Jacobs [1980] определен некоторый класс зависимостей, эквивалентных «полным» EI-зависимостям, т. е. нетипизированным полным Т- и GF-зависимостям, а в Paredaens, Janssens [1981] определены обобщенные зависимости, которые эквивалентны Т- и GF-зависимостям. , В статьях Beeri, Vardi [1980a, 1980b, 1980c] рассматриваются зависимости, порождающие строки, и зависимости, порождающие равенство, эквивалентные соответственно нетипизированным Т- й GF-зависимостям. Получен ряд результатов о разрешимости и оценках сложности, например неразрешимость конечной и бесконечной импликаций для EI-зависимостей и разрешимость для 5-частичных Т-зависимостей. Там же доказана неэквивалентность конечной и бесконечной импликаций для нетипизированных зависимостей. В работе Chandra, Lewis, Makowsky [1981] показана неразрешимость бесконечной импликации для типизированных EI-зависимостей и нетипизированных Т-зависимостей. Там же доказано, что импликация для «полных» EI-зависимостей разрешима, но является полной для экспоненциального времени. Имеются объявления некоторых авторов о неразрешимости импликации типизированных Т-зависимостей *), однако для EMV-зависимостей это пока неизвестно. В работе Hull [1981 ] исследуются свойства EI-зависимостей и доказывается, что классы выполнимости EI-зависимостёй замкнуты относительно соединений. Были также предложены некоторые типы зависимостей, отличающиеся по стилю от Т- и GF-зависимостей. Ограничения, использующие мощности множеств значений атрибутов, см. в Lipski, Marek [1979], ограничения, учитывающие упорядоченность доменов, — в Ginsburg, Hull [1981]. В работе Casanova [1981] предложены зависимости с тем же названием, что и в Sagiv, Walecka [1979], но отличающиеся от них. Фактически это ограничения, связывающие проекции двух различных отношений. Доказательство того, что транзитивное отношение невыразимо в реляционной алгебре, взято из работы Aho, Ullman [1979]. Там же содержатся некоторые предложения по расширению алгебры. Другие понятия полноты языка запросов см. в Banchilon [1978], Paredaens [1978], Chandra [1981 ] и Chandra, Harel [1980a, 1980b]. Описание языка QBE (Query-by-Example), (Zloof [1976]) содержит некоторые конструкции для работы с транзитивным замыканием. Раздел по вычисляемым отношениям взят из работы Maier, Warren [1981a]. Язык запросов ISBL, описанный в Hall, Hitchcock, Todd [1975] и Todd [1975, 1976], допускает некоторые виды вычисляемых отношений. Упражнения 14.2, 14.8 и 14.10 взяты из статьи Sagiv, Delobel, Parker, Fagin [1981]. Исходное доказательство теоремы 14.14 см. в Beeri [1980]. Упражнения 14.17, 14.18, 14.19, 14.28 и 14.29 взяты из работы Fagin, Maier, Ullman, Yanna- kakis [1981]. Ответы на упражнения 14.32 и 14.33 см. в Sadri, Ullman [1980a]. Упражнение 14.39 взято из работы Beeri, Vardi [1980а], упр. 14.45— из Hull [1981], а упр. 14.46 — из Sadri [1980a]. *) В работе Gurevich Y., Lewis H. The inferenee problem for template dependencies (Inf. and Contr., 1982, 55, 69—79) доказано, что проблема выводимости для типизированных Т-зависимостей неразрешима над конечными отношениями.— Прим. перев.
Глава 15 Реляционные языки запросов Эта глава содержит краткий обзор нескольких языков запросов, применяемых в различных системах реляционных баз данных. Мы не приводим полного описания этих языков. Наша цель иная — для каждого из них дать общее представление о его главных особенностях и о том, что именно — реляционная алгебра, исчисление или техника табло — положено в его основу, а также отметить, в чем он уклоняется от реляционной модели в том виде, как она определена в этой книге. Будет рассмотрено пять языков: ISBL — язык системы PR TV; QUEL—язык системы INGRES; SQL — язык системы System R; QBE, используемый как язык интерфейса высокого уровня в ряде систем управления базами данных; и, наконец, PIQUE — язык экспериментальной системы PITS. Язык ISBL основан на реляционной алгебре, QUEL и SQL — на исчислении кортежей, a QBE представляет собой язык, основанный на исчислении доменов, но с синтаксисом, напоминающим синтаксис табличных запросов. Язык PIQUE похож на исчисление кортежей, но обеспечивает интерфейс со схемой универсального отношения с помощью W- функций. По таким соображениям практического характера, как удобство использования, реляционные языки запросов не вполне согласуются с реляционной моделью данных. Каждый из них обладает дополнительными по отношению к этой модели возможностями, а некоторые содержат ограничения, в ней отсутствующие. Почти все реляционные системы позволяют определять виртуальные отношения. В языках, основанных на реляционном исчислении, допускаются только безопасные выражения. Безопасность обычно обеспечивается либо отсутствием явных кванторов, либо ограничением областей изменения переменных элементами некоторых отношений. В языках запросов часто разрешается производить
538 Гл. 15. Реляционные языки запросов детали (ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ НАЗВАНИЕ-ЧАСТИ) 211 2114 2116 21163 21164 318 206 2061 2066 2068 использование (ЧАСТЬ- 211 211 2114 2114 2116 2116 21164 21164 наличие (ЧАСТЬ-№ 0 211 211 2116 2116 21164 0 • 206 206 206 ■№ ТИП 707 727 707 727 707 727 707 727 АДРЕС кресло чехол привязной ремень пряжка ремня крепление ремня маленький болтик верхняя панель кнопка вызова выключатель освещения вентилятор ЧИСЛО) 86 134 86 134 244 296 488 592 КОЛИЧЕСТВО) 211 211 211 2114 2114 2116 2116 21164 Нью-Йорк Бостон Чикаго Нью-Йорк Чикаго Бостон Чикаго Атланта Рис. 15.1. 106 28 77 6 28 341 29 36 391 над значениями данных несложные арифметические и строковые вычисления, а иногда — оперировать множествами этих значений с помощью агрегирующих функций (число элементов множества, среднее арифметическое, максимум) и сравнивать эти множества между собой. Как было упомянуто в предыдущей главе, в языке QBE имеются операции для работы с транзитивными замыканиями. Теоретически порядок атрибутов и кортежей отношения несуществен, однако языки запросов содержат средства для управления упорядоченностью атрибутов и сортировки кортежей при выводе отношений на печать или экран дисплея. Кроме команд вывода, языки запросов обычно в той или иной форме содержат оператор присваивания, служащий для запоминания про-
15.1. ISBL 539 межуточных результатов. В некоторых языках имеются также средства для явного управления удалением дубликатов кортежей после проекции, поэтому фактически поддерживаемый ими тип данных — это тип мультимножеств кортежей. Возможность подавлять и возобновлять удаление дубликатов полезна в связи с агрегирующими . операциями. В некоторых реляционных языках запросов имеются специальные конструкции или предусмотрен альтернативный синтаксис для использования этих языков в качестве подъязыков обычных языков программирования. Все рассматриваемые языки запросов имеют не меньшую выразительную силу, чем реляционная алгебра. Однако в ряде случаев эта выразительность может быть достигнута только благодаря использованию последовательностей операторов присваивания, а не отдельно взятых выражений языка. Иногда, для того чтобы выполнить некоторые алгебраические операции, приходится пользоваться командами манипулирования данными. Наше изложение особенностей представленных языков не претендует на полноту. Помимо средств для выражения запросов, некоторые из языков имеют также средства манипулирования данными; мы рассмотрим только их «запросную» часть. Главная роль при этом будет отведена примерам, чтобы не тратить времени на формальное описание синтаксиса или семантики. Чтобы исследуемые языки было проще сравнивать, во всех примерах этой главы используется база данных, изображенная на рис. 15.1, та же, что и в большинстве примеров гл. 10. 15.1. ISBL Язык ISBL (Information System Base Language) основан на реляционной алгебре и служит языком запросов системы PRTV (Peter- lee Relational Test Vehicle) — экспериментальной интерактивной системы баз данных, разработанной в английском отделении фирмы IBM (IBM's United Kingdom Scientific Centre). Выражения ISBL строятся с помощью шести операций, соответствующих операциям реляционной алгебры или их обобщениям. Объединение, пересечение и соединение обозначаются соответственно, как +, . , * и выполняются так же, как в алгебре. Вместо разности используется более общая операция, называемая «антисоединение» и по-прежнему обозначаемая через —. Для отношений г и s, схемы которых не обязаны совпадать, выполняется г — s = r — (rXs), где знак «—» в левой части равенства обозначает операцию ISBL, а в правой — обычную операцию реляционной алгебры. Таким образом, г — sb ISBL состоит из всех кортежей отношения г, которые не соединимы ни с одним из кортежей отношения s.
540 Гл. 15. Реляционные языки запросов Выбор σ0 (ή в ISBL обозначается через г : С, причем условие выбора С построено из имен атрибутов и констант с помощью операций сравнения {=, Ф, >, ^=, <, <}, скобок и логических связок & (и) | (или) и Τ (отрицание). Проекция и переименование атрибутов объединены в одну операцию. Проекция пАВС(г) в ISBL обозначается через г % А, В, С. Для того чтобы во время проекции изменить имя атрибута Аг на имя Л2, справа от % вместо A-l надо написать Аг -*- А2. Если необходимо выполнить одно только переименование (без проекции), то справа от % следует перечислить имена всех атрибутов отношения. Для сокращения записи можно использовать многоточие: оно обозначает все атрибуты, не поименованные явно. Таким образом, если нужно просто переименовать атрибут В отношения г, можно написать г % В—>£),... . Выражения в ISBL вычисляются слева направо; порядок вычисления можно изменить, используя скобки. Результат вычисления любого выражения ISBL может быть либо напечатан с помощью ключевого слова list, либо присвоен некоторому отношению с помощью оператора присваивания =. Ради краткости, большинство примеров в этой главе содержит только формулировку запроса на русском языке х) и соответствующий оператор языка запросов 2); иногда приводится и результат выполнения запроса. Пример 15.1. Каковы названия деталей узла 2116 3)? list детали : ДЕТАЛЬ = 2116 % НАЗВАНИЕ (НАЗВАНИЕ-ЧАСТИ) пряжка ремня крепление ремня Пример 15.2. Каков запас привязных ремней в Бостоне ? list детали * наличие : НАЗВАНИЕ = «привязной ремень» & АДРЕС = «Бостон» % КОЛ (КОЛИЧЕСТВО) 341 х) В оригинале, естественно, на английском. — Прим. перге. 2) В текстах операторов запросов будут использоваться следующие сокращения для имен атрибутов отношений из рис. 15.1: ЧАСТЬ (вместо ЧАСТЬ-№) ДЕТАЛЬ (ДЕТАЛЬ-ЧАСТИ-№) НАЗВАНИЕ (НАЗВАНИЕ-ЧАСТИ), КОЛ (КОЛИЧЕСТВО). — Прим. перге. 3) Для оживления стиля при переводе слова part будут использоваться синонимы «часть», «деталь», «запчасть», «узел» и т. д. — Прим. перее.
15.1. ISBL 541 Пример 15.3. Каких запчастей нет ни в Бостоне, ни в Чикаго? list детали — (наличие : АДРЕС = «Бостон» | АДРЕС = «Чикаго») % ЧАСТЬ (ЧАСТЬ-№) 21163 21164 318 206 2061 2066 2068 Пример 15.4. Каковы детали деталей привязного ремня? list детали % ЧАСТЬ —> ПОДДЕТАЛЬ, ДЕТАЛЬ —> ЧАСТЬ * детали : НАЗВАНИЕ = «привязной ремень» % ПОДДЕТ АЛЬ (ПОДДЕТАЛЬ) 21163 21164 Пример 15.5. Какие запчасти для Боинга-707 есть в Атланте? list использование : ТИП = «707» % ЧАСТЬ. {наличие : АДРЕС = «Атланта» % ЧАСТЬ) (ЧАСТЬ-№) 21164 Этот же запрос можно выполнить, образуя промежуточные отношения с помощью оператора присваивания. г\ = использование : ТИП = «707» % ЧАСТЬ г2 = наличие : АДРЕС = «Атланта» % ЧАСТЬ гЗ = г\ · г2 list гЗ В языке ISBL можно поддерживать виртуальные отношения, используя такую особенность этого языка, как отложенные вычисления: вычисление некоторого выражения в ISBL можно отложить до тех пор, пока не возникнет действительной потребности в его результате. Имена отношений, входящие в такое выражение, снабжаются префиксом N!. При вычислении выражения в качестве значений этих отношений будут использованы их текущие значения на момент вычислений.
542 Гл. 15. Реляционные языки запросов Пример 15.6. Допустим, что нужно определить виртуальное отношение, содержащее сведения о номерах, коэффициенте применяемости и количестве имеющихся в наличии запасных узлов для Боинга-707. Если выполнить присваивание запас!07 = N! использование * N! наличие : ТИП = «707» % ЧАСТЬ, ЧИСЛО, АДРЕС, КОЛ то всякий раз, когда мы напишем list запас707 или имя запас707 встретится при вычислении некоторого выражения, будут использованы текущие на этот момент значения отношений наличие и использование. Если же убрать оба префикса N!, то значение запас707 будет зависеть только от состояния отношений Наличие и использование в "момент, когда было определено отношение запас707. В ISBL нет никаких операций для вычислений над значениями данных. Однако для проведения таких вычислений можно использовать вычисляемые отношения, состояния которых определяются с помощью функций или процедур некоторого универсального языка программирования. В ISBL предусмотрено два вида вычисляемых отношений. Вычисляемые отношения одного вида строятся с помощью булевозначных функций, распознающих кортежи, принадлежащие этим отношениям. Вычисляемые отношения другого вида определяются с помощью процедур, возвращающих кортежи определяемого отношения как значения своих выходных параметров (значениями входных параметров этих процедур также служат некоторые кортежи). Пример 15.7. Пусть адекватно (а, Ь) — булева функция, вырабатывающая значение истина тогда и только тогда, когда а ^ 0.56. Оператор ISBL list использование * наличие * адекватно (КОЛ, ЧИСЛО) % ЧАСТЬ, ТИП, АДРЕС перечисляет пункты, в которых одна из запчастей имеется в количестве, не меньшем, чем половина необходимого для экипировки самолета какого-либо типа: (ЧАСТЬ-№ ТИП АДРЕС) 211 211 211 211 2116 2116 21164 21164 707 727 707 727 707 727 707 727 Нью-Йорк Нью-Йорк Чикаго Чикаго Бостон Бостон Атланта Атланта
15.2. QUEL 543 Пример 15.8. Пусть потребность (α, ft, с) — процедура с входными параметрами а и 6, возвращающая значение с = max (.5b — — α, 0). Оператор list использование * наличие * потребность (КОЛ, ЧИСЛО \ ПОСТАВКА : ЗАКАЗ) : 7ЯЯ = «727» & ЗАКАЗ > 0 % ¥ЛС7Ь, АДРЕС, ЗАКАЗ определяет количество штук каждой запасной части, которые необходимо поставить в каждый из пунктов, чтобы довести ее наличный запас в этом пункте до половины количества запасных частей данного типа, необходимого для Боинга-727. (ЧАСТЬ-№ АДРЕС ЗАКАЗ) 211 Бостон 39 2114 Нью-Йорк 61 2114 Чикаго 39 2116 Чикаго 119 Вертикальная черта в списке параметров процедуры потребность отделяет входные параметры от выходных, а ПОСТАВКА : ЗАКАЗ указывает, что выходной параметр следует рассматривать как новый атрибут с именем ЗАКАЗ и доменом ПОСТАВКА. В ISBL имеется также возможность использовать целые отношения в качестве входных и выходных параметров процедур, которые могут модифицировать эти отношения, выполнять над ними агрегирующие вычисления или осуществлять их форматированный вывод. 15.2. QUEL QUEL (QUEry Language) — это язык манипулирования данными системы INGRES (INteractive Graphics and REtrieval System). INGRES — полная система управления реляционными базами данных, которая была создана в Университете шт. Калифорния и до сих пор модифицируется и расширяется. Кроме средств поиска данных, QUEL содержит операторы их модификации, регламентации доступа, поддержки ограничений целостности и определения внешних, или пользовательских, представлений. Ниже рассмотрены лишь те аспекты QUEL, которые относятся к поиску данных. Основой QUEL служит исчисление кортежей. Все переменные неявно связаны квантором существования, и область определения каждой из них ограничена одним из отношений. Объявление переменной и ее привязка к определенному отношению производятся ,с помощью оператора следующего вида: range of (переменная) is (имя отношения) Л-компонента переменной χ обозначается через χ - А.
544 Гл. 15. Реляционные языки запросов Пример 15.9. Во всех примерах этого раздела предполагается, что сделаны следующие объявления для областей значений переменных /?, /?1, и, i: range of ρ is детали range of /?1 is детали range of и is использование range of i is наличие При наличии таких объявлений ρ .ЧАСТЬ, и .ЧИСЛО и i .ЧАСТЬ могут служить примерами допустимых ссылок на компоненты переменных. Основной формой оператора запроса в QUEL является retrieve ((целевой список)) where (условие,) где условию соответствует формула исчисления кортежей. Целевой список представляет собой последовательность компонент переменных, напоминающую ту часть выражения в исчислении доменов, что расположена слева от вертикальной черты. Пример 15.10. Как называется деталь 2116? retrieve (ρ .НАЗВАНИЕ) where p .ЧАСТЬ = 2116 (НАЗВАНИЕ-ЧАСТИ) привязной ремень Пример 15.11. Запчасти каких наименований и в каком количестве имеются в Чикаго? retrieve (p .НАЗВАНИЕ, i .КОЛ) where ρ .ЧАСТЬ = i .ЧАСТЬ and i .АДРЕС = «Чикаго» (НАЗВАНИЕ-ЧАСТИ КОЛИЧЕСТВО) кресло 77 чехол 28 привязной ремень 29 В условиях можно использовать операции сравнения =, ! = х), >, > = , <= и <; сравнения могут комбинироваться с помощью логических связок and, or и not. Атрибутами результирующего отношения служат соответствующие компоненты из целевого списка. Атрибут результирующего отношения можно переименовать, указав в целевом списке: НОВОЕИМЯ — х .СТАРОЕИМЯ. Переименование необходимо, если некоторый атрибут дважды встречается в отношении-результате. L) != означает ф. — Прим. перге.
15.2. QUEL 545 Пример 15.12. Какие детали являются деталями одного и того же узла? retrieve (ДЕТАЛЫ = ρ .ЧАСТЬ, ДЕТАЛЬ2 = р\ .ЧАСТЬ) where ρ .ДЕТАЛЬ = р\ .ДЕТАЛЬ and ρ .ДЕТАЛЬ ! = 0 and ρ .ЧАСТЬ < р\ .ЧАСТЬ (ДЕТАЛЫ ДЕТАЛЬ2) 2114 2116 21163 21164 2061 2066 2061 2068 2066 2068 Условде ρ .ЧАСТЬ <р\ .ЧАСТЬ добавлено для того, чтобы исключить лишние пары деталей (пары, полученные перестановкой компонент, и пары, компоненты которых совпадают между собой). ggf Условие в запросе можно опускать. Для ссылки на все компоненты некоторой переменной сразу можно использовать ключевое слово all. Например, результатом выполнения запроса retrieve a .all будет все отношение использование. В большинстве контекстов, допустимых для компонент переменных, могут также употребляться арифметические выражения. Если такое выражение встречается в целевом списке, его необходимо поименовать. Пример 15.13. Какие пункты обеспечены какою-нибудь запчастью к самолетам какого-либо типа не менее чем наполовину? retrieve (а .ЧАСТЬ, а .ТИП, i .АДРЕС) where а .ЧАСТЬ = i .ЧАСТЬ and и .ЧИСЛО * 0.5 < = I .КОЛ Пример 15.14. Какая доля от общего числа кресел, необходимых для Боинга-707, имеется в каждом из пунктов? retrieve (i .АДРЕС, ДОЛЯ = (I -КОЛ/и .ЧИСЛО)) where ρ .ЧАСТЬ = и .ЧАСТЬ and p .НАЗВАНИЕ = «кресло» and и .ЧАСТЬ = i .ЧАСТЬ and а .ТИП = «707» (АДРЕС ДОЛЯ) Нью-Йорк 1.233 Бостон 0.326 Чикаго 0.894
546 Гл. 15. Реляционные языки запросов Результат запроса можно присвоить некоторому отношению, если после ключевого слова retrieve написать into (отношение). Пример 15.15. Оператор запроса retrieve into части?27 (и .all) where и .ТИП = «727» определяет отношение части727 с той же схемой, что и у отношения использование, но содержащее сведения только о Боинге-727. В QUEL есть агрегирующие операции count, min, max, avg и sum, которые можно использовать в выражениях. Пример 15.16. Сколько всего разновидностей запчастей существует? retrieve (КОЛЧАСТЕЙ = count (p-ЧАСТЬ)) (КОЛЧАСТЕЙ) 10 Пример 15.17. Какая запчасть и в каком пункте имеется в наибольшем (соответственно наименьшем) количестве? retrieve (ь.ЧАСТЬ, 1.АДРЕС) where i .КОЛ = max (i .КОЛ) or i. КОЛ = min (i .КОЛ) (ЧАСТЫМ? АДРЕС) 2114 Нью-Йорк 21164 Атланта Имеются варианты агрегирующих операций count, avg и sum (различаемые по букве и, добавленной в конец соответствующего ключевого слова), перед выполнением которых из аргумента удаляются дубликатные значения. Пример 15.18. Сколько пунктов имеют в наличии какие- нибудь запчасти? retrieve (КОЛАДР = countu (i .АДРЕС)) (КОЛАДР) 4 Если бы вместо countu в этом запросе была использована операция count, то ответ был бы равен 8. Компонента, к которой применяется агрегирующая операция, может быть снабжена уточняющим условием (квалифицирована). Однако такая квалификация является локальной и не влияет на остальную часть запроса.
15.2. QUEL 547 Пример 15.19. Сколько всего узлов с номером 211 имеется в наличии? retrieve {ИТОГО = sum (i .КОЛ where i .ЧАСТЬ = 211)) (ИТОГО) 211 Пример 15.20. Следующий запрос не дает ответа на вопрос, каков запас привязных ремней retrieve (КОЛРЕМНЕЙ = sum (i .КОЛ)) where ρ .ЧАСТЬ = i .ЧАСТЬ and ρ .НАЗВАНИЕ = «привязной ремень» Это происходит потому, что sum вычисляется независимо от остальной части запроса. В QUEL имеется возможность группировать агрегаты значений; чтобы ею воспользоваться, следует снабдить аргумент агрегирующей операции ключевым словом by. Компонента, за которой следует слово by, рассматривается не сама по себе, а в связи с остальной частью запроса. Пример 15.21. Каково общее количество имеющихся в наличии запчастей каждого наименования? retrieve (i .ЧАСТЬ, ВСЕГО = sum (i .КОЛЪу i .ЧАСТЬ)) (ЧАСТЬ-№ ВСЕГО) 211 211 2114 34 2116 370 21 164 36 391 Пример 15.22. Каков запас привязных ремней? retrieve (КОЛРЕМНЕЙ = sum (i .КОЛ by i .ЧАСТЬ)) where p. ЧАСТЬ = i .ЧАСТЬ and ρ .НАЗВАНИЕ = «привязной ремень» (КОЛРЕМНЕЙ) 370
548 Глг15. Реляционные языки запросов Пример 15.23. Где имеются излишки каких-нибудь запчастей и каков размер этих излишков? retrieve (и .ЧАСТЬ, i АДРЕС, ИЗЛИШЕК = (/ .КОЛ — max (и .ЧИСЛО by и .ЧАСТЬ)) where и .ЧАСТЬ = i .ЧАСТЬ and (I .КОЛ —max (и .ЧИСЛО by и .ЧАСТЬ)) >0 ЧАСТЬ АДРЕС ИЗЛИШЕК 2116 Бостон 45 21 164 Атланта 35 799 15.3 SQL SQL (Structured Query Language) — это язык манипулирования данными, используемый в System R — системе управления реляционными базами данных, разработанной в научно-исследовательской лаборатории фирмы IBM в Сан-Хосе (шт. Калифорния) и послужившей прототипом для коммерческого продукта IBM — системы управления базами данных SQL/DS. Хотя SQL является полным языком манипулирования данными, мы рассмотрим только ту его часть, которая относится к формулировке запросов, на поиск информации. Синтаксически SQL близок исчислению кортежей, хотя и не в такой степени, как QUEL. Предшественником SQL является язык SQUARE, в одних отношениях напоминающий реляционную алгебру, а в других — исчисление кортежей. Основной операцией SQUARE служит отображение, представляющее собой композицию выбора и проекции. В SQL отображение также является основной операцией и в простейшем случае представляется синтаксической конструкцией вида select (список атрибутов) from (отношение) where (условие) Щ Пример 15.24. Перечислить названия и номера деталей узла 211. select НАЗВАНИЕ, ЧАСТЬ from детали where ДЕТАЛЬ =211 (НАЗВАНИЕ-ЧАСТИ ЧАСТЬ-№) чехол 2114 привязной ремень 2116
15.3. SQL 549 Пример 15.25. Какие запчасти есть в Бостоне или Чикаго? select ЧАСТЬ from наличие where АДРЕС = «Бостон» or АДРЕС = «Чикаго» (ЧАСТЬ-№) 211 211 2114 2116 2116 Сравнения могут комбинироваться с помощью логических связок and, or и not. Из последнего примера видно, что в SOL не предусмотрено автоматического удаления дубликатов. Чтобы дубликаты были удалены, нужно после select написать ключевое слово unique. Пример 15.26. Чтобы избавиться от дубликатных значений в ответе на запрос из предыдущего примера, этот запрос можно сформулировать следующим образом: select unique ЧАСТЬ from наличие where АДРЕС = «Бостон» or АДРЕС = «Чикаго» Условия выбора в SQL могут включать проверки, выполняемые над множествами значений или множествами кортежей. Эти множества либо задаются явным перечислением своих элементов, либо представляют собой результат вложенного запроса (подзапроса). Можно проверить принадлежность элемента множеству, включение одного множества в другое, пустоту множества или сравнить некоторые значения с элементами множества. Пример 15.27. Какие запчасти есть в Бостоне или в Чикаго? select unique ЧАСТЬ from наличие where АДРЕС in («Бостон», «Чикаго») Пример 15.28. Запчасти каких наименований есть в Нью- Йорке? select ЧАСТЬ from детали where ЧАСТЬ in (select ЧАСТЬ from наличие where АДРЕС = «Нью-Йорк»)
550 Гл. 15. Реляционные языки запросов (НАЗВАНИЕ-ЧАСТИ-№) кресло чехол Пример 15.29· В каком пункте меньше всего запчастей с номером 211? select АДРЕС from наличие - where КОЛ < = all (select КОЛ from наличие where ЧАСТЬ = 211) (АДРЕС) Бостон Пример 15.30. В каких пунктах имеются в наличии все те запчасти, которые есть в Бостоне? select АДРЕС from наличие where set (ЧАСТЬ) contains (select ЧАСТЬ from наличие where АДРЕС = «Бостон») (АДРЕС) Бостон Чикаго В этом примере set (ЧАСТЬ) обозначает множество всех значений атрибута ЧАСТЬ при фиксированном значении атрибута АДРЕС. В подзапросе можно ссылаться на атрибуты отношений из объемлющего запроса. Если в подзапросе и в объемлющем запросе встречаются атрибуты с одинаковыми именами, то эти имена следует уточнить, указав в качестве префикса имена соответствующих отношений. Фактически имя отношения играет ту же роль, что и переменная в исчислении кортежей, область определения которой ограничена этим отношением. Пример 15.31. Какие "запчасти и в каких пунктах имеются в количестве, достаточном для Боинга-707? select ЧАСТЬ, АДРЕС from наличие where ЧАСТЬ in (select ЧАСТЬ from использование where ТИП = «707» and ЧИСЛО <= КОЛ)
15.3. SQL 551 Заметим, что имя КОЛ (КОЛИЧЕСТВО) во вложенном запросе относится к отношению наличие. (ЧАСТЬ-№ 211 2116 21 164 АДРЕС) Нью-Йорк Бостон Атланта По-другому этот вопрос можно сформулировать следующим образом: select ЧАСТЬ, АДРЕС from наличие where КОЛ >= any (select ЧИСЛО from использование where ТИП = «707» and наличие. ЧАСТЬ = использование. ЧАСТЬ) Если в запросе содержатся ссылки на два экземпляра одного и того же отношения, то их атрибуты невозможно различить, используя в качестве префикса имя этого отношения. В этом случае можно определить альтернативное уточняющее имя, указав его после имени отношения в предложении from. Пример 15.32. Какие [унктах? select unique ЧАСТЬ from наличие i where ЧАСТЬ in (select ЧАСТЬ from наличие where АДРЕС 1 = запчасти имеются = 1 АДРЕС) (ЧАСТЬ-№) 211 2114 2116 не менее чем в двух В предыдущих примерах операция соединения определялась с помощью ключевого слова т,{_Если ответ на запрос включает атрибуты более чем одного отношения, т^такой способ получения соединений не годится. В этом случае'^предложении from можно перечислить несколько отношений.
552 Гл. 15. Реляционные языки запросов Пример 15.33. Запчасти каких наименований и в каждом количестве есть в Нью-Йорке? select НАЗВАНИЕ, КОЛ from детали, наличие where детали. ЧАСТЬ = наличие. ЧАСТЬ and АДРЕС = «Нью-Йорк» (НАЗВАНИЕ-ЧАСТИ-№ КОЛИЧЕСТВО) кресло 106 , чехол 6 Пример 15.34. Какие запчасти являются деталями одного и того же узла? select pi .ЧАСТЬ, р2 .ЧАСТЬ from детали р\, детали р2 where p\ .ДЕТАЛЬ = р2 .ДЕТАЛЬ and р\ .ДЕТАЛЬ 1 = 0 and p\ .ЧАСТЬ < р2 .ЧАСТЬ (р! ,ЧАСТЬ-№ р2 .ЧАСТЬ-№) 2114 2116 21 163 21 164 2061 2066 2061 2068 2066 2068 В SQL разрешается комбинировать запросы с помощью теоретико-множественных операций union (объединение), intersect (пересечение) и minus (разность). После вычисления объединения из результата удаляются дубликаты. Пример 15.35. Каких деталей нет ни в одном из пунктов? select ЧАСТЬ from детали minus select ЧАСТЬ from наличие (ЧАСТЬ-№) 21 163 318 206 2061 2066 2068
15.3. SQL 553 Порядок столбцов в отношении-результате определяется порядком атрибутов в предложении select. Упорядоченностью кортежей в отношении-результате можно управлять с помощью предложения order by, содержащего список атрибутов этого отношения, после каждого из которых стоит либо ключевое слово asc (сортировка по возрастанию), либо ключевое слово desc (сортировка по убыванию). Другой особенностью SQL, которую иллюстрирует следующий пример, является использование символа * в качестве сокращения для списка всех атрибутов отношения. Пример 15.36. Следующий оператор запроса сортирует кортежи отношения наличие в порядке убывания значений атрибута КОЛИЧЕСТВО, а при совпадении этих значений — в порядке возрастания значений атрибута ЧАСТЬ-№: select * from наличие order by КОЛ desc, (ЧАСТЬ-№ 21 164 2116 211 211 2116 211 2114 2114 ЧАСТЬ asc АДРЕС Атланта Бостон Нью-Йорк Чикаго Чикаго Бостон Чикаго Нью-Йорк КОЛИЧЕСТВО) 36 391 341 106 77 29 28 28 6 В SQL разрешены арифметические выражения и имеются агрегирующие операции avg, min, max, sum и count. Пример 15.37. Какие пункты обеспечены какой-нибудь запчастью для самолетов какого-либо типа не менее чем наполовину? select использование .ЧАСТЬ, ТИП, АДРЕС from использование, наличие where использование .ЧАСТЬ = наличие .ЧАСТЬ and ЧИСЛО * 0.5 < = КОЛ
554 Гл.· 15. Реляционные языки запросов Пример 15.38. Каково количество кресел, имеющееся в наличии? select sum (КОЛ) from наличие where ЧАСТЬ in (select ЧАСТЬ from детали where НАЗВАНИЕ = «кресло») ( ) 211 Как видно из этого примера, в SQL столбцы отношения-результата, соответствующие агрегирующим значениям или выражениям из целевого списка, не именуются. Для ссылок на такой столбец (например, в предложении order by) используется его порядковый номер. Перед применением агрегирующей операции к множеству кортежей, полученному в результате некоторого запроса, эти кортежи можно разбить на группы с помощью предложения group by1). Некоторые из этих групп могут быть исключены из результата запроса с помощью предложения having. Пример 15.39. Сколько всего запчастей каждого наименования имеется в наличии? select ЧАСТЬ, sum (КОЛ) from наличие group by ЧАСТЬ Пример 15.40. Для каких запчастей их имеющееся количество превышает то, которое необходимо для экипировки Бо- инга-707, и какова при этом величина излишка? select использование .ЧАСТЬ, ЧИСЛО — sum (КОЛ) from использование, наличие where использование .ЧАСТЬ = наличие .ЧАСТЬ and ТИП — = «707» group by использование .ЧАСТЬ having ЧИСЛО — sum (КОЛ) > = 0 15.4. QBE QBE (Query-By-Example) — реляционный язык манипулирования данными, разработанный Злуфом (М. М. Zloof) из Уотсоновского исследовательского центра фирмы IBM. Некоторое подмножество г) Агрегирующая операция в этом случае применяется к каждой из этих групп по отдельности. — Прим. перев.
15.4. QBE 555 этого языка было реализовано и применяется в ряде программных систем этой фирмы. Мы рассмотрим только те аспекты QBE, которые относятся к формулировке запросов. В QBE также имеются операции обновления данных, механизмы поддержки регламентируемого доступа и ограничений целостности, а также средства объявления доменов и определения внешних представлений (внешних схем). QBE обладает двумерным синтаксисом. Запрос формулируется путем заполнения табличной формы, содержащей имена отношения и его атрибутов, например детали ЧАСТЬ-№ ДЕТАЛЬ- ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ 1 Эта форма заполняется строками из констант и переменных. Синтаксис и семантика заполненной табличной формы похожи на синтаксис и семантику табличного запроса. Табличные запросы в свою очередь легко описываются в терминах исчисления доменов. Строка запроса на языке QBE вида детали ЧАСТЬ-№ а ДЕТАЛЬ- ЧАСТИ-№ Ь НАЗВАНИЕ 1 ЧАСТИ с соответствует атомарной формуле детали {а Ь с) исчисления доменов. Все переменные в QBE неявно связаны квантором существования и изображаются с помощью подчеркнутых снизу символьных строк. С точки зрения интерпретации запроса выбор того или иного конкретного имени для переменной несуществен, хотя обычно в качестве имен переменных пользуются примерами значений из домена какого-нибудь атрибута. Неподчеркнутые строки представляют константы. Те переменные или константы, значения которых должны войти в результат запроса, снабжаются префиксом Р. (сокращение для print — печатать). Префикс Р. фактически используется для получения эквивалента понятия резюме табличного запроса без выписывания отдельной строки.
556 Гл. 15. Реляционные языки запросов Пример 15.41. В каких пунктах имеется запчасть 211? наличие ЧАСТЬ-№ 211 АДРЕС Р. Чикаго КОЛИЧЕСТВО 25 Результат: наличие АДРЕС Нью-Йорк Бостон Чикаго Заметим, что выбор имени Чикаго для переменной из этого запроса никак не влияет на полученные в результате данные. Если переменная упоминается в запросе только один раз, ее можно опустить. В QBE предполагается, что каждая незаполненная клетка табличной формы содержит переменную, отличную от всех других переменных запроса. Пример 15.42. Запрос из предыдущего примера можно записать следующим образом: наличие ЧАСТЬ-№ 211 АДРЕС Р. КОЛИЧЕСТВО Для выборки по условию, отличному от равенства, перед переменной или константой следует указать знак сравнения. Запись вида θα, где θ — знак сравнения, представляет подмножество \с | cQa\ домена, связанного с содержащим эту запись столбцом. Пример 15.43. Какие запчасти хотя бы в одном из пунктов имеются в количестве, превышающем 50 штук? наличие ЧАСТЬ-№ Р. АДРЕС КОЛИЧЕСТВО >= 50
15.4. QBE 557 Результат: наличие ЧАСТЬ -№ 211 2116 21164 Заметим, что в QBE дубликаты всегда исключаются из результата. Пример 15.44. Какие узлы применяются в самолетах какого- нибудь типа, кроме Боинга-707, в количестве, превышающем 100 штук? использование ЧАСТЬ-№ Р. ТИП 1= 727 ЧИСЛО >= 100 Результат: использование ЧАСТЬ-№ 2116 21164 Запрос может содержать не одну, а несколько строк. Пример 15.45. Какие запчасти есть и в Бостоне, и в Чикаго? Результат: наличие ЧАСТЬ-№ Р. 100 100 наличие АДРЕС Бостон Чикаго КОЛИЧЕСТВО ЧАСТЬ-№ 1 211 2116
558 Гл. 15. Реляционные языки запросов Если оператор печати использован в нескольких строках запроса, то его результат представляет собой объединение результатов, соответствующих отдельным строкам. Пример 15.46. Какие запчасти есть в Бостоне или в Чикаго? наличие ЧАСТЬ-№ Р. 100 Р. 101 АДРЕС Бостон Чикаго КОЛИЧЕСТВО Результат: наличие ЧАСТЬ-№ 211 2114 2116 Пример 15.47. Следующий запрос доставляет сведения об узле с номером 211. детали ЧАСТЬ-№ Р. 211 Р. ДЕТАЛЬ- ЧАСТИ-№ Р. Р. 211 НАЗВАНИЕ- ЧАСТИ Р. Р. Результат: детали ЧАСТЬ-№ 211 2114 2116 ДЕТАЛЬ- ЧАСТИ-№ 0 211 211 НАЗВАНИЕ- ЧАСТИ кресло чехол привязной ремень Оператор печати можно применять ко всей строке целиком. Для этого его следует поместить в левом краю строки.
15.4. QBE 559 Пример 15.48. Запрос из предыдущего примера можно записать следующим образом: детали Р. Р. ЧАСТЬ-№ 211 ДЕТАЛЬ- ЧАСТИ-№ 211 НАЗВАНИЕ- ЧАСТИ Условие выборки может включать требование, чтобы отношение, полученное в результате выполнения запроса, не содержало кортежей, совпадающих с некоторой строкой *). Оператор печати к компонентам этой строки (и ко всей этой строке целиком) применять нельзя. Заметим, что с помощью табличных запросов невозможно проверить отсутствие некоторого кортежа в отношении. Пример 15.49 2). В каких пунктах есть детали, которых нет в Бостоне, и что это за детали? наличие 1 ЧАСТЬ-№ Р. 100 100 АДРЕС Р. Чикаго Бостон КОЛИЧЕСТВО Результат: наличие ЧАСТЬ-№ 2114 2114 21164 АДРЕС Нью-Йорк Чикаго Атланта В QBE также можно сформулировать условия на подстроки символьных значений, используя конкатенацию констант и переменных. х) В оригинале неточность. По-видимому, речь идет о так называемых «строках с отрицанием», которые помечаются с помощью символа 1 в левом столбце табличной формы. — Прим. перев. 2) Пример 15.49 исправлен в соответствии с замечанием Ь(добавлен символ 1 в левый столбец табличной формы). — Прим. перев.
560 Гл. 15. Реляционные языки запросов Пример 15.50. Ответом на запрос детали ЧАСТЬ-Nb Р. ДЕТАЛЬ- ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ Р. пряжка- ремня будет перечень деталей, названия которых оканчиваются на «ремня»: детали ЧАСТЬ-№ 21163 21164 НАЗВАНИЕ- ЧАСТИ пряжка ремня крепление ремня Строки табличных запросов связываются с конкретными отношениями при помощи меток. В QBE для каждого отношения, участвующего в запросе, используется отдельная табличная форма. Пример 15.51. Запчасти каких наименований есть в Нью- Йорке? детали ЧАСТЬ-№ 100 ДЕТАЛЬ- ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ Р. болт наличие ЧАСТЬ-№ 100 АДРЕС Нью-Йорк КОЛИЧЕСТВО
15.4. QBE 561 Пример 15.52. Какие запчасти и в каких пунктах имеются в количестве, достаточном для Боинга-707? использование ЧАСТЬ-№ 100 ТИП 707 ЧИСЛО 50 наличие ЧАСТЬ-№ Р. 100 АДРЕС Р. Чикаго КОЛИЧЕСТВО >= 50 Если нужно скомбинировать значения из нескольких отношений или использовать переменные из одного и того же столбца исходного отношения в разных столбцах результата, а также при необходимости переименовать какой-нибудь столбец, для представления результата следует определить дополнительную табличную форму. Пример 15.53. Запчасти каких наименований и в каком количестве есть в Нью-Йорке? детали ЧАСТЬ-№ 100 ДЕТАЛЬ- ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ болт наличие Р. ЧАСТЬ-№ .100 АДРЕС Нью-Йорк КОЛИЧЕСТВО 50 зпчвньюйорке Р. НАЗВАНИЕ- ЧАСТИ болт КОЛИЧЕСТВО 50
562 Гл. 15. Реляционные языки запросов Результат: зпчвньюйорке НАЗВАНИЕ- ЧАСТИ кресло чехол КОЛИЧЕСТВО 106 1 6 Иногда невозможно (или неудобно) выразить все соотношения между переменными с помощью табличных форм. В QBE для формулировки таких добавочных соотношений можно использовать вспомогательные блоки условий. Пример 15.54. Какие части являются деталями одного и того же узла? детали ЧАСТЬ-№ 100 101 ДЕТАЛЬ- ЧАСТИ-№ 200 200 НАЗВАНИЕ- 1 ЧАСТИ уславия 2001= 0 100 < 101 подузлы Р. ДЕТ АЛЫ 100 ДЕТАЛБ2 101 Результат: подузлы ДЕТ АЛЫ 2114 21163 2061. 2061 2066 ДЕТАЛБ2 2116 21164 2066 2068 2068
15.4. QBE 563 Упорядоченностью кортежей результата можно управлять, снабжая нужные столбцы префиксами АО. (сортировка по возрастанию) или DO. (сортировка по убыванию). При сортировке по значениям нескольких столбцов после префиксов АО. и DO. в круглых скобках записываются натуральные числа, определяющие порядок старшинства столбцов. Пример 15.55. В результате выполнения следующего запроса кортежи отношения наличие будут перечислены в порядке убывания значений атрибута КОЛИЧЕСТВО, а при их совпадении — в порядке возрастания номеров деталей. наличие Р. ЧАСТЬ-№ АО (2). АДРЕС КОЛИЧЕСТВО DO (1). И в табличных формах, и в блоках условий можно употреблять арифметические выражения. Пример 15.56. Какие детали и в каких пунктах имеются в количестве, не меньшем, чем половина необходимого для самолетов какого-нибудь типа? использование ЧАСТЬ-№ 100 ТИП Боинг ЧИСЛО 25 наличие ЧАСТЬ-№ 100 АДРЕС Чикаго КОЛИЧЕСТВО > = 0.5* 25 естьполовина Р. ЧАСТЬ-№ 100 ТИП Боинг АДРЕС Чикаго
564 Гл. 15. Реляционные языки запросов Пример 15.57. Какая доля кресел, необходимых для Бонн· га-707, имеется в каждом из пунктов? детали ЧАСТЬ-№ 100 ДЕТАЛЬ- ЧАСТИ-№ НАЗВАНИЕ- ЧАСТИ кресло использование ЧАСТЬ-№ 100 ТИП 707 ЧИСЛО 25 наличие ЧАСТЬ-№ 100 АДРЕС Чикаго КОЛИЧЕСТВО 30 кресла Р. АДРЕС Чикаго доля 30/25 В QBE имеются агрегирующие операции С NT., SUM., AVG., МАХ. и MI Ν., которые можно применять к компонентам строк запроса. Компонента, к которой применяется агрегирующая операция, должна быть снабжена префиксом ALL., указывающим на то, что все значения этой компоненты должны быть собраны воедино и рассматриваться как одно множество. Пример 15.58. Сколько всего деталей с номерами 211 имеется в наличии? наличие ! ЧАСТЬ-№ 211 АДРЕС КОЛИЧЕСТВО P. SUM. ALL. 50
15.4. QBE 565 Результат: наличие КОЛИЧЕСТВО Sum 211 Слово Sum (или соответствующие слова в случае других агрегирующих функций) автоматически добавляется к названию столбца табличной формы и указывает на то, что в этом столбце содержатся агрегированные значения, а не значения, непосредственно извлеченные из базы данных. Для исключения дубликатов из множества значений, полученного с помощью ALL., используется операция UNQ. Пример 15.59. В скольких пунктах имеются в наличии хоть какие-нибудь запчасти? наличие ЧАСТЬ-№ АДРЕС P. CNT. UNQ. ALL КОЛИЧЕСТВО Группировка значений перед выполнением агрегирующих операций осуществляется с помощью операции G., примененной к столбцу, значения которого должны быть сгруппированы. Пример 15.60. Количество каких деталей хотя бы в одном из пунктов превышает то, которое используется в самолетах типа Боинг-727? использование ЧАСТЬ-№ 100 ТИП 727 ЧИСЛО 50 наличие ЧАСТЬ-№ P. G. 100 АДРЕС КОЛИЧЕСТВО MAX. ALL. 25
566 Гл. 15. Реляционные языки запросов УСЛОВИЯ MAX. ALL. 25> = 50 Результат: наличие ЧАСТЬ-№ 2116 21164 Пример 15.61. Каково общее количество деталей каждого наименования? наличие ЧАСТЬ-№ P. G. АДРЕС КОЛИЧЕСТВО P. SUM. ALL Пример 15.62. Для каждого вида деталей определить, в скольких пунктах имеются в наличии детали этого вида? наличие ЧАСТЬ-№ P. G. АДРЕС P. CNT. ALL КОЛИ Ч Е- 1 СТВО Результат: наличие ЧАСТЬ-№ 211 2114 2116 21164 АДРЕС 3 2 2 1 В заключение рассмотрим одну особенность QBE, которой не обладают другие реляционные языки запросов, а именно возможность доступа к транзитивному замыканию отношения.
15.4. QBE 567 (Однако заметим, что в существующих реализациях QBE этой возможности не предусмотрено.) Условием применимости средств доступа к транзитивному замыканию является существование такой пары атрибутов, что проекция отношения на эти два атрибута обладает структурой дерева. Примером такой пары атрибутов могут служить атрибуты ЧАСТЬ-№ и ДЕТАЛЬ-ЧАСТИ-№ отношения детали. Никакая деталь не может быть частью самой себя ни прямо, ни косвенно, через посредство других деталей, и О 211 206 ч / ν /ι\ 2114 2116 2061 2066 2068 / \ 21163 21164 318 Рис. 15.2. каждая деталь используется не более чем в одном узле самолетного оборудования. (В общем случае последнее ограничение вряд ли оправданно, но для текущего состояния отношения детали оно выполняется). Транзитивное замыкание проекции отношения детали на атрибуты ЧАСТЬ-№ и ДЕТАЛЬ-ЧАСТИ-№ имеет структуру, изображенную на рис. 15.2. Чтобы получить ответ на вопрос: «Какие детали используются в подузлах узла 211?», можно воспользоваться запросом следующего вида: детали ЧАСТЬ-№ 100 Р. 101 ДЕТАЛЬ-ЧАСТИ-№ 211 100 ! (В QBE необязательно перечислять в запросе все атрибуты отношения.) Однако описанные до сих пор выразительные средства QBE не позволяют получить ответ на вопрос вида: «Какие детали используются в подузлах какого-нибудь уровня узла 211?», за исключением случая, когда заранее известна верхняя граница глубины разузлования.
568 Гл. 15. Реляционные языки запросов В QBE можно непосредственно ссылаться на транзитивное замыкание некоторых отношений, снабжая те или иные компоненты строк запроса постфиксами вида (nL), где η либо положительная целая константа, либо переменная. Если η — константа, то значение этой константы определяет число уровней, на которое следует подняться или опуститься при поиске по дереву. Пример 15.63. Какие детали используются в подузлах узла 211? детали ЧАСТЬ-№> Р. 100 (2L) НАЗВАНИЕ-ЧАСТИ 211 Результат: детали ЧАСТЬ-№ 2114 (2L) 2116 (2L) Заметим, что информация об уровнях входит составной частью в ответ на запрос. Пример 15.64. Какие узлы содержат деталь 318 в качестве составляющей третьего уровня? детали ЧАСТЬ-№> 318 ДЕТАЛЬ-ЧАСТИ-№ Р. 200 (3L) детали ДЕТАЛЬ-ЧАСТИ-№ 211 (3L) Оператору уровня L может предшествовать переменная, и в этой случае глубина поиска вверх или вниз по дереву заранее не ограничивается.
15.4. QBE 569 Пример 15.65. Каков уровень вложенности детали 21164 как составляющей узла 211? детали ЧАСТЬ-№ 21164 (4L) ДЕТАЛЬ-ЧАСТИ-№ 211 Результат: детали ЧАСТЬ-№ 21164 (2L) Пример 15.66. Какие детали являются составляющими какого- нибудь уровня для узла 211? детали ЧАСТЬ-№ Р. 100 (4L) ДЕТАЛЬ-ЧАСТИ-№ 211 Результат: детали ЧАСТЬ-№> 2114 (1L) 2116 (1L) 21163 (2L) 21164 (2L) 318 (3L) Имеются две операции МАХ. и LAST., которыми можно пользоваться вместе с L для ссылок соответственно, на те элементы данных, которые расположены на самом нижнем уровне дерева, и на те, которые расположены в его листьях.
570 Гл. 15. Реляционные языки запросов Пример 15.67. Какие детали расположены на самом нижнем уровне дерева разузлования? детали ЧАСТЬ-№ Р. 100 (MAX. L) ДЕТАЛЬ-ЧАСТИ-№ 0 Результат: детали ЧАСТЬ-№ 318 (4L) Пример 15.68. Какие составляющие детали узла 211 (произвольного уровня) сами не имеют составляющих? детали ЧАСТЬ-№ P. lOO(LAST.L) ДЕТАЛЬ-ЧАСТИ-№ 211 Результат: детали ЧАСТЬ-№ 2114 (1L) 21163 (2L) 318 (3L) 15.5. PIQUE PIQUE (Pits QUEry Language) — экспериментальный язык информационного поиска для системы управления базами данных PITS (Pie-In-The-Sky) x), разрабатываемой в Университете шт. Нью-Йорк и Орегонском учебном центре. Синтаксис PIQUE напоминает синтаксис языка QUEL. Однако если в QUEL переменные явно связываются с отношениями, то в PIQUE они неявно 1) Что приблизительно соответствует русскому «чудес до небес» или «кисельные реки, молочные берега». — Прим. перев*
15.5. PIQUE 571 связаны с «окнами», что позволяет обойтись без операторов range и условий соединения. В языке QUEL ответ на вопрос: «В каких пунктах есть полный комплект кресел для Боинга-707?» дает запрос вида 1): range of ρ is детали range of и is использование range of i is наличие retrieve (i. АДРЕС) where ρ .ЧАСТЬ = и .ЧАСТЬ and ρ .ЧАСТЬ = i .ЧАСТЬ and и .ТИП = «707» and и .ЧИСЛО < = i.KOJI and p. НАЗВАНИЕ = «кресло» В PIQUE ответ на этот же вопрос можно получить так: retrieve АДРЕС where (ТИП = «707») * (ЧИСЛО <= КОЛ) * (НАЗВАНИЕ = «кресло») Семантика PIQUE определяется относительно некоторой W- функции. Делается только единственное предположение о том, что\У-функция удовлетворяет условию вхождения. В этом разделе, например, мы используем основанную на аспектах W-функцию [ ]R> 0, где R = [ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№, ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ, ЧАСТЬ-№ ТИП ЧИСЛО, ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО] и О состоит из всевозможных объединений схем из R, как показано на рис. 15.3. Как видно из этого множества, допустимы все двух-, трех- и четырехместные соединения. База данных над R будет включать отношения использование и наличие со схемами соответственно ЧАСТЬЮ ТИП ЧИСЛО и ЧАСТЬ-№ АДРЕС КОЛИЧЕСТВО. Схемам ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ и ЧАСТЬ-№ НАЗВАНИЕ-ЧАСТИ в нашей базе данных соответствуют отношения детали! = пчactь-м-деталь-части-}* {одеталь-части-мфо (детали)) и детали2 = пЧасть-№ название-части (детали) Отношения детали! и детали2 изображены на рис. 15.4. Расщепив отношение детали указанным выше образом, мы избавляемся от необходимости использовать специальное значение для атрибута ДЕТАЛЬ-ЧАСТИ-^ в случае, когда деталь не г) В оригинале формулировка этого и следующего запросов ошибочна (отсутствуют условия/? .НАЗВАНИЕ = «кресло» и НАЗВАНИЕ = «кресло» соответственно). — Прим. перев.
572 Гл. 15. Реляционные языки запросов 0= RU { ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ЧАСТЬ ДЕТАЛЬ НАЗВАНИЕ, ДЕТАЛЬ ТИП ЧИСЛО, НАЗВАНИЕ ТИП ЧИСЛО, ДЕТАЛЬ НАЗВАНИЕ ТИП ЧИСЛО, ДЕТАЛЬ АДРЕС КОЛ, НАЗВАНИЕ АДРЕС КОЛ, ДЕТАЛЬ НАЗВАНИЕ АДРЕС КОЛ, ТИП ЧИСЛО АДРЕС КОЛ, ДЕТАЛЬ ТИП ЧИСЛО АДРЕС КОЛ, НАЗВАНИЕ ТИП ЧИСЛО АДРЕС КОЛ, ДЕТАЛЬ НАЗВАНИЕ ТИП ЧИСЛО АДРЕС КОЛ} Рис. 15.3. (В этом рисунке использованы те же сокращения для имен атрибутов, которые используются при записи запросов. — Прим. перев.) детали! (ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-№ 2114 2116 21163 21164 318 2061 2066 2068 (ЧАСТЬ-№ 211 2114 2116 21163 21164 318 206 2061 2066 2068 Рис, 211 211 2116 2116 21164 206 206 206 НАЗВАНИЕ-ЧАСТИ) кресло чехол привязной ремень пряжка ремня крепление ремня маленький болтик верхняя панель кнопка вызова выключатель освещения вентилятор . 15.4. является составляющей никакого узла. Можно было бы выполнить такую же декомпозицию и в предыдущих примерах этой главы, но лишь ценой усложнения некоторых запросов. В языке же PIQUE она не приводит к увеличению сложности запросов. Для каждой переменной χ любого запроса, выраженного средствами языка PIQUE, определено ее ссылочное множество,
15.5. PIQUE 573 обозначаемое через men (χ), а именно множество всех атрибутов, участвующих в ссылках на эту переменную в данном запросе. При интерпретации запроса переменная χ связывается с множеством [men (я)]. Таким образом, если в ссылках на некоторую переменную χ встречаются атрибуты НАЗВАНИЕ-ЧАСТИ и АДРЕС, то χ связывается с отношением [НАЗВАНИЕ-ЧАСТИ АДРЕС], т. е. с отношением ^название-части ацрес (детали 2 >< наличие). В простейшем случае запрос на языке PIQUE включает в себя целевой список и последовательность условий, соединенных знаками «*» Пример 15.69. В каких пунктах есть запасные кресла? retrieve χ .АДРЕС where (χ .НАЗВАНИЕ = «кресло») (АДРЕС) Нью-Йорк Бостон Чикаго Пример 15.70. Какие запчасти и в каких пунктах имеются в количестве, достаточном для Боинга-707? retrieve χ .ЧАСТЬ, χ .АДРЕС where (χ .ТИП = «707») * (χ .КОЛ> = χ .ЧИСЛО) Переменная χ в этом запросе связана с отношением [ЧАСТЬ-№ АДРЕС ТИП КОЛИЧЕСТВО]. Пример 15.71· Какие детали являются составляющими одного и того же узла? retrieve χ .ЧАСТЬ— > ДЕТ АЛЫ, у .ЧАСТЬ — > ДЕТАЛЬ"! where (χ .ДЕТАЛЬ - у .ДЕТАЛЬ) * (х .ЧАСТЬ <у. ЧАСТЬ). В этом запросе переменные χ и у связаны с различными копиями отношения [ЧАСТЬ-№ ДЕТАЛЬ-ЧАСТИ-Щ. Символ —> используется для переименования атрибутов. (ДЕТАЛЬ! ДЕТАЛЬ2) 2114 2116 21 163 21 164 2061 2066 2061 2068 2066 2068
574 Гл. 15. Реляционные языки запросов Для упрощения записи запросов в PIQUE разрешается опускать имя переменной в уточненных (квалифицированных) именах атрибутов. Все атрибуты, которым не предшествует имя какой- нибудь переменной, считаются квалифицированными с помощью особой переменной типа «пробел». Пример 15.72. Запросы из последних трех примеров можно записать следующим образом: retrieve АДРЕС where {НАЗВАНИЕ = «кресло») retrieve ЧАСТЬ, АДРЕС where {ТИП = «707») *{КОЛ > = ЧИСЛО) retrieve ЧАСТЬ —> ДЕТ АЛЫ у у .ЧАСТЬ —> ДЕТ АЛЫ where {ДЕТАЛЬ = у .ДЕТАЛЬ) * {ЧАСТЬ <у .ЧАСТЬ) В последнем запросе все еще нужна одна явная переменная. Все рассмотренные выше условия выборки относятся к классу простых условий (последовательность сравнений, соединенных знаками «*»). Составные условия образуются из простых при помощи логических связок and, or и not. Семантика запросов, включающих составные условия, определяется следующими соотношениями эквивалентности: retrieve (список) where (усл,овие1) and (условие2) = (retrieve (список) where (условие 1)) Π (retrieve (список) where (условие2)) retrieve (список) where (условие2) or (условие2) ~ (retrieve (список) where (условие 1)) (J (retrieve (список) where (условие2)) retrieve (список) where not (условие) ξ (retrieve (список) — (retrieve (список) where (условие)) Пример 15.73. Какие запчасти есть и в Бостоне, и в Чикаго? retrieve ЧАСТЬ where {АДРЕС = «Бостон») (ЧАСТЬ-№) 211 2116 Пример 15.74. Каких запчастей нет в Бостоне? retrieve ЧАСТЬ where not {АДРЕС = «Бостон»)
15.5. PIQUE 575 (ЧАСТЬ-№) 2114 21 163 21 164 318 206 2061 2066 2068 Между операциями * и and имеется важное различие. При использовании * подразумевается, что условия применяются к одному и тому же «окну», в то время как при выполнении операции and условия применяются к двум разным «окнам» и вычисляется пересечение результатов выбора по каждому из этих условий (возможно, после проекции этих результатов на общие атрибуты). Связки and, or и not особенно удобны для сокращения записи запросов с двумя переменными при помощи всего одной переменной. Так, если бы запрос из примера 15.73 был выражен следующим образом: retrieve ЧАСТЬ where (АДРЕС = «Бостон») * (АДРЕС = «Чикаго») то его результатом было бы пустое отношение, поскольку не существует кортежа ί, для которого одновременно выполнены условия t (АДРЕС) = Бостон и t (АДРЕС) = Чикаго. Следует также отметить, что связкой and можно пользоваться в тех случаях, когда не существует аспекта, среди атрибутов которого имеются все атрибуты, упомянутые в запросе. Пример 15.75. В этом примере предполагается, что из множества О исключены все аспекты, среди атрибутов которых одновременно встречаются и ТИП, и АДРЕС. Тогда запрос retrieve ЧАСТЬ where (ТИП = «707») * (АДРЕС = «Бостон») будет отвергнут, а запрос retrieve ЧАСТЬ where (ТИП = «707») and (АДРЕС = «Бостон») будет выполнен.
576 Гл. 15. Реляционные языки запросов Другое важное различие — это различие между отрицанием некоторого сравнения и сравнением дополнительного типа, например между условиями вида not (АДРЕС = «Бостон») и (АДРЕС Φ «Бостон»), Пример 15.76. Запрос retrieve ЧАСТЬ where not (АДРЕС = «Бостон») из примера 15.74 доставляет сведения о тех запчастях, которых нет в Бостоне, в то время как запрос retrieve ЧАСТЬ where (АДРЕС φ «Бостон») доставляет сведения о тех запчастях, которые имеются в наличии где-нибудь, кроме Бостона. Ответом на этот второй запрос является отношение (ЧАСТЬ-№) 211 2114 2116 21164 Для того чтобы получить сведения о тех запчастях, которых нет в Бостоне, но которые есть в каком-нибудь другом пункте, мы пишем retrieve ЧАСТЬ where (АДРЕС = АДРЕС) and not (АДРЕС = «Бостон») (ЧАСТЬ-№) 2114 21164 Последний запрос из предыдущего примера включает условие вида (АДРЕС = АДРЕС). На первый взгляд оно кажется избыточным, поскольку всегда выполняется. Тем не менее оно влияет на результат запроса, так как изменяет множество ссылок на переменную этого запроса. Условие вида (АДРЕС = АДРЕС) может быть сокращенно записано в виде (АДРЕС) и называется именем-довеском. Имя-довесок служит для того, чтобы включить некоторый атрибут в контекст интерпретации запроса, не налагая при этом никаких дополнительных условий.
15.5. PIQUE 577 Пример 15.77. Какие детали бывают? retrieve ЧАСТЬ (ЧАСТЬ-№) 211 2114 2116 21163 21164 318 206 2061 2066 2068 Пример 15.78. Какие детали имеются в наличии в каком- нибудь из пунктов? retrieve ЧАСТЬ where (АДРЕС) (ЧАСТЬ-№) 211 2114, 2116 21164 Пример 15.79. Какие детали не являются составляющими никакого узла? retrieve ЧАСТЬ where not (ДЕТАЛЬ) (ЧАСТЬ-№) 211 206 В PIQUE можно ссылаться на подзапросы с помощью ключевого слова in, определяющего соединение значения кортежной переменной, которое задается «окном», и отношения — результата подзапроса. Таким образом, in обозначает теоретико-множественное отношение принадлежности некоторого кортежа (или его части) множеству кортежей, полученных в результате подзапроса. Переменные подзапроса локальны по отношению к нему и никак не связаны с одноименными переменными объемлющего запроса.
578 Гл. 15. Реляционные языки запросов Пример 15*80. В каких пунктах имеются в наличии детали из числа тех, которые есть в Бостоне? retrieve ЧАСТЬ, АДРЕС where (АДРЕС φ «Бостон») * (ЧАСТЬ in retrieve ЧАСТЬ where (АДРЕС = «Бостон»)) (ЧАСТЬ-№ АДРЕС) 211 Нью-Йорк 211 Чикаго 2116 Чикаго 15.6. БИБЛИОГРАФИЯ И КОММЕНТАРИИ Язык ISBL и система PRTV описаны Тоддом (Todd [1975, 1976]). Работа Stone- braker, VJonget al. [1976] посвящена языку QUEL и системе INGRES. О System R сообщается в работах Astrahan, Blasgen et al. [1976, 1980], Blasgen, Astrahan etal. [1981] и Chamberlin, Astrahan et al. [1981]. Статья Вoyce et al. [1975] содержит введение в язык SQUARE и изложение ранней версии языка SQL. Более подробное описание SQL можно найти в работах Astrahan, Chamberlin [1975] и Astrahan, Chamberlin et al. [1976]. Ранние версии языка SQL назывались SEQUEL и SEQUEL2. Язык QBE описан в серии статей Zloof [1976, 1977, 1981]. Язык PIQUE представлен в работе Maier, Rozenshtein et al. [1981]. PIQUE во многом опирается на аналогичный ему язык System U, разрабатываемый в настоящее время в Станфорде. Этот язык описан в Korth [1981] и Korth, Uriman [1980]. Работы Chamberlin [1976] и Kim [1979] имеют обзорный характер и посвящены системам управления реляционными базами данных. Пирот (Pirotte [1979]) классифицировал реляционные языки запросов по признаку положенных в их основу выразительных средств (реляционная алгебра, исчисление кортежей, исчисление доменов). Купер (Cooper [1980]) провел сравнительное исследование выразительной мощности различных реляционных языков.
ЛИТЕРАТУРА1) Aho, A.V., Beeri, C, and UHman, J.D. [1979]. The Theory of Joins in Relational Databases. ACM TODS 4:3, September 1979, 297-314. *Aho, A.V., Hopcroft, J.E, and Ullman, J.D. [1974]. The Design and Analysis of Computer Algorithms. Reading, MA: Addison-Wesley. Aho, A.V., Sagiv, Y., Szymanski, T.G., Ullman, J.D. [1979]. Inferring a Tree from Lowest Common Ancestors with an Application to the Optimization of Relational Expressions. SIAM J. on Computing 10:3, August 1981, 405-421. Aho, A.V., Sagiv, Y., and Ullman, J.D. [1979a]. Efficient Optimization of a Class of Relational Expressions. ACM TODS 4:4, December 1979, 435-454. Aho, A.V., Sagiv, Y., and Ullman, J.D. [1979b]. Equivalences Among Relational Expressions. SIAM J. on Computing 8:2, May 1979, 218-246. Aho, A.V., and Ullman, J.D. [1979]. Universality of Data Retrieval Languages. ACM Symp. on Principles of Prog. Lang. 1979, 110-120. ANS1/X3/SPARC [1975]. Study group on database management systems: interim report. FDT 7:2 (Bulletin of ACM SIGFIDET), February 1975. Armstrong, W.W. [1974]. Dependency Structures of Data Base Relationships. 1974 JFIPCong., Geneva, Switzerland, 580-583. Armstrong, W.W., and Delobel, С [1980]. Decompositions and Functional Dependencies in Relations. ACM TODS 5:4, December 1980, 404-430. Arora, A.K., and Carlson, C.R. [1978]. The Information Preserving Properties of Relational Databases Transformations. VLDB IV, West Berlin, Germany. ACM, IEEE. 352-359. Astrahan, M.M., Blasgen, M.W., Chamberlin, D.D., Gray, N.J., King, W.F., Lindsay, B.G., Lorie, R., Mehl, J.W., Price, T.G., Putzolu, F., Selinger, P.C., Schkolnick, M., Slutz, D.R., Traiger, I.L., Wade, B.W., Yost, R.A. A History and Evaluation of System R. IBM Report RJ2843, San Jose, CA, June 1980. Astrahan, M.M., Blasgen, M.W., Chamberlin, D.D., Eswaran, K.P., Gray, J.N., Griffiths, P.P., King, W.F., Lorie, R.A., McJones, P.R., Mehl, J.W., Putzolu, G.R., Traiger, I.L., Wade, B.W., Watson, V. System R: A Relational Approach to Database Management. ACM TODS 1:2, June 1976, 97-137. Astrahan, M.M., and Chamberlin, D.D. [1975]. Implementation of a Structured English Query Language. CACM 18:10, October 1975, 580-587. Atzeni, P., and Parker, D.S. [1981]. Properties of Acyclic Database Schemes: An Analysis. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. 2) Знаком * отмечены работы, имеющиеся на русском языке (см. список). — Прим. ред.
580 Литература Bachman, C.W., and Daya, Μ. [1977]. The Role Concept in Data Models. VLDBIIIf Tokyo, Japan. ACM, IEEE. 464-476. Batichilon, F. [1978]. On the Completeness of Query Languages for Relational Databases. Proc. Seventh Symp. on Math. Found, of Computing. New York: Springer-Verlag, 112-123. Beck, L.L. [1978]. On Minimal Sets of Operations for Relational Data Sublanguages. Computer Science Report 7802, Southern Methodist Univ., Dallas, TX, February 1978. Beeri* С [1980]. On the Membership Problem for Functional and Multivalued Dependencies in Relational Databases. ACM TODS 5:3, September 1980, 241-259. Been, С [1979]. On the Role of Data Dependencies in the Construction of Relational Database Schemas. Computer Science Report 43, Hebrew Univ., Jerusalem, Israel, January 1979. Beeri, C, and Bernstein, P.A. [1979]. Computational Problems Related to the Design of Normal Form Relational Schemas. ACM TODS 4:1, March 1979, 30-59. Beeri, C, Bernstein, P.A., and Goodman, N. [1978]. A Sophisticated Introduction to Database Normalization Theory. VLDB IV, West Berlin, Germany. ACM, IEEE. 113-124. Beeri, C, Dowd, M., Fagin, R., Statman, R. [1980]. On the Structure of Armstrong Relations for Functional Dependencies. IBM Report RJ2901, San Jose, CA, September 1980. Beeri, C, Fagin, R., and Howard, J.H. [1977]. A Complete Axiomatization for Functional and Multivalued Dependencies in Database Relations. ACM SIGMOD Conf. 1977, 47-61. Beeri, C, Fagin, R., Maier, D., Mendelzon, Α., Ullman, J., Yannakakis, M. [1981]. Properties of Acyclic Database Schemes. ACM Symp. on Theory of Computing 1981, 355-362. Beeri, C, Fagin, R. Maier, D., Yannakakis, M. [1981]. On the Desirability of Acyclic Database Schemes. IBM Report RJ3131, San Jose, CA, May 1981. Beeri, C, and Honeyman, P. [1981]. Preserving Functional Dependencies. SI AM J. on Computing 10:3, August 1981, 647-656. Beeri, C, Mendelzon, A.O., Sagiv, Y., Ullman, J.D. [1979]. Equivalence of Relational Database Schemes. SIAMJ. on Computing 10:2, May 1981, 352-370. Beeri, C, and Rissanen, J. [1980]. Faithful Representations of Relational Database Schemes. IBM Report RJ2722, San Jose, CA, January 1981. Beeri, C, and Vardi, M.Y. [1980a]. The Implication Problem for Data Dependencies. Computer Science Report, Hebrew Univ., Jerusalem, Israel, May 1980. Beeri} C, and Vardi, M.Y. [1981a]. A Note on Decompositions of Relational Databases. Unpublished manuscript (Hebrew Univ., Jerusalem, Israel), January 1981.
Литература 581 Been, С, and Vardi, M. [1980b]. On the Complexity of Testing Implications of Data Dependencies. Computer Science Report, Hebrew Univ., Jerusalem, Israel, December 1980. Beeri, C, and Vardi, M.Y. [1981b]. On the Properties of Join Dependencies. In Gallaire, Minker, and Nicolas [1981], New York: Plenum Publ. Co., 25-72. Beeri, C, and Vardi, M.Y. [1980c]. A Proof Procedure for Data Dependencies. Com- puter Science Report, Hebrew Univ., Jerusalem, Israel, December 1980. Bekessy, Α., and Demetrovics, J. [1979]. Contribution to the Theory of Database Relations. Discrete Mathematics 27, Amsterdam, Netherlands: North-Holland, 1-10. Bekessy, Α., Demetrovics, J., Hannak, L., Frankl, P., Katona, Gy. [1980]. On the Number of Maximal Dependencies in a Database Relation of Fixed Order. Discrete Mathematics 30, Amsterdam, Netherlands: North-Holland, 83-88. Bernstein, P.A. [1976a]. Comment on 'Segment Synthesis in Logical Database Design.' IBM J. of Research and Development 20:4, Armonk, NY, July 1976, 412. Bernstein, P.A. [1976b]. Synthesizing Third Normal Form Relations from Functional Dependencies. ACM TODS 1:4, December 1976, 277-298. Bernstein, P.A., Blaustein, B.T., and Clarke, E.M. [1980]. Fast Maintenance of Semantic Integrity Assertions Using Redundant Aggregate Data. VLDB VI, Montreal, Canada. ACM, IEEE. 126-136. Bernstein, P.Α., and Chiu, D.-M. [1981]. Using Semi-joins to Solve Relational Queries. J ACM 28:1, January 198-1, 25-40. Bernstein, P.Α., and Goodman, N. [1979a]. Full Reducers for Relational Queries Using Multi-attribute Semi-joins. IEEE Computer Network Symp. 1979. Bernstein, Ρ,Α., and Goodman, N. [1979b]. Inequality Semi-joins. Computer Corp. of America Report 79-28, Cambridge, MA, December 1979. Bernstein, P.Α., and Goodman, N. [1980a]. The Power of Inequality Semijoins. Aiken Computation Lab. Report 12-80, Harvard Univ., Cambridge, MA, August 1980. Bernstein, P.Α., and Goodman, N. [1979c]. The Theory of Semijoins. Computer Corp. of America Report 79-27, Cambridge, MA, November 1979. Bernstein, P.A., and Goodman, N. [1980b]. What Does Boyce-Codd Normal Form Do? VLDB VI, Montreal, Canada. ACM, IEEE. 245-259. Biskup, J. [1980a]. A Formal Approach to Null Values in Database Relations. In Gallaire, Minker, and Nicolas [1981], New York: Plenum Publ. Co., 299-342. Biskup, J. [1981]. A Foundation of Codd's Relational Maybe-operations. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981.
582 Литература Biskup, J. [1980b]. Inferences of Multivalued Dependencies in Fixed and Undetermined Universes. Theoretical Computer Science 10:1, Amsterdam, Netherlands: North-Holland, January 1981, 93-106. Biskup, J. [1978]. On the Complementation Rule for Multivalued Dependencies on Database Relations. Acta Informatica 10:3, New York: Springer-Verjag, 297-305. Biskup, J., Dayal, U., and Bernstein, P.A. [1979]. Synthesizing Independent Database Schemas. ACM SIGMOD Conf. 1979, 143-152. Blasgen, M.W. Astrahan, M.M., Chamberlin, D.D., Gray, N.J., King, W.F., Lindsay, B.G., Lorie, R.A., Mehl, J.W., Price, T.G., Putzolu, G.R., Schkolnick,M., Selinger, P.C., Slutz, D.R., Strong, H.R., Traiger, I.L., Wade, B.W., Yost, R.A. [1981]. System R: An Architectural Overview. IBM Systems J. 20:1, Ar- monk, NY, February 1981, 41-62. Blasgen, M., and Eswaren, M.K. [1977]. Storage and Access in Relational Database Systems. IBM Systems J. 16:4, Armonk, NY. December 1977, 363-377. Boyce, R.F. Chamberlin, D.D., King, W.F., Hammer, M.M. [1975]. Specifying Queries as Relational Expressions: The SQUARE Data Sublanguage. CACM 18:11, November 1975, 621-628. Brodie, M.L. [1978]. Specification and Verification of Database Semantic Integrity. Computer Systems Research Group Report 91, Univ. of Toronto, Canada* April 1978. Cardenas, A.F. [1979]. Data Base Management Systems. Boston, MA: Allyn and Bacon. Carlson, C.R., and Kaplan, R.S. [1976]. A Generalized Access Path Model and its Application to a Relational Database System. ACM SIGMOD Conf. 1976, 143-154. Casanova, M.A. [1981]. The Theory of Functional and Subset Dependencies over Relational Expressions. Dep. de Informatica Report 3/81, Pontificia Universi- dade Catolica, Rio de Janiero, Brazil, January 1981. Ceri, S., and Pelagatti, G. [1980]. Correctness of Execution Strategies of Read-only Transactions in Distributed Databases. Inst, di Elettrotecnica ed Elletronica Po- litecnico di Milano Report 80-16, Milan, Italy. Chamberlin, D.D. [1976]. Relational Database Management Systems. ACM Com- puting Surveys 8:1, March 1976, 43-66. Chamberlin, D.D., Astrahan, M.M., King, W.F., Lorie, R.A., Mehl, J.W., Price, T.G., Schkolnick, M., Selinger, P.G., Slutz, D.R., Wade, B.W., Yost, R.A. [1981]. Support for Repetitive Transactions and Ad-hoc Queries in System R. ACM TODS 6:1, March 1981, 70-94. Chamberlin, D.D., Astrahan, M.M., Eswaran, K.P., Griffiths, P.P., Lorie, R.A., Mehl, J.W., Reisner, P., Wade, B.W'. [1976]. SEQUEL 2: A Unified Approach
Литература 583 to Data Definition, Manipulation and Control. IBM J. of Research and Development 20:6, Armonk, NY, November 1976, 560-575. Chandra, A.K. [1981]. Programming Primitives for Database Languages. ACM Symp. on Principles of Prog. Lang., 1981, 50-62. Chandra, A.K., and Harel, D. [1980a]. Computable Queries for Relational Databases. /. of Computer and System Sciences 21:2, October 1980, 156-178. Chandra, A.K., and Harel, D. [1980b]. Structure and Complexity of Relational Queries. XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1981. Chandra, A.K., Lewis, H.R., and Makowsky, J.A. [1981]. Embedded Implicational Dependencies and Their Inference Problem. ACM Symp. on Theory of Computing 1981, 342-354. Chandra, A.K., and Merlin, P.M. [1976]. Optimal Implementation of Conjunctive Queries in Relational Databases. ACM Symp. on Theory of Computing 1976, 77-90. Chase, K. [1981]. Join Graphs and Acyclic Database Schemes. VLDB VII Cannes, France. ACM, IEEE. 95-100. Chen, P.P.-S. [1976]. The Entity-Relationship Model—Toward a Unified View of Data. ACM TODS 1:1, March 1976, 9-36. Childs, D.L. [1968]. Feasibility of a Set-Theoretic Data Structure A General Structure Based on a Reconstituted Definition of Relation. 1968 IFIP Cong., Geneva, Switzerland, 162-172. Chiu, D.-M., Bernstein, P.A., and Ho, Y.-C. [1981]. Optimizing Chain Queries in a Distributed Database System. Aiken Computation Lab. Report 01-81, Harvard Univ., Cambridge, MA, January 1981. Chiu, D.-M., and Ho., Y.-C. [1980]. A Methodology for Interpreting Tree Queries into Optimal Semijoin Expressions. ACM SIGMOD Conf. 1980, 169-178. Clifford, J., and Warren, D.S. [1981]. Formal Semantics for Time in Databases. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Codd, E.F. [1971a]. A Database Sublanguage Founded on the Relational Calculus. ACM SIGFIDET Workshop on Data Description, Access and Control, November 1971, 35-61. Codd, E.F. [1979]. Extending the Database Relational Model to Capture More Meaning. ACM TODS 4:4, December 1979, 397-434. Codd, E.F. [1972a]. Further Normalization of the Database Relational Model. In Rustin [1972]. Englewood Cliffs, NJ: Prentice-Hall, 33-64. Codd, E.F. [1971b]. Normalized Database Structure: A Brief Tutorial. ACM SIGFIDET Workshop on Data Description, Access and Control, November 1971, 1-17.
584 Литература Codd, E.F. [1974], Recent Investigations in Relational Database Systems. 1974IFIP Conf. 1017-1021. Codd, E.F. [1972b]. Relational Completeness of Database Sublanguages. In Rustin [1972], Englewood Cliffs, NJ: Prentice-Hall, 65-98. Codd, E.F. [1970]. A Relational Model of Data for Large Shared Data Banks. CACM 13:6, June 1970, 377-387. Codd, E.F. [1975]. Understanding Relations (Installment #7). FDT 7:3^4 (Bulletin of ACM SIGMOD), December 1975, 23-28. Connors, Т., and Vianu, V. [1981]. Tableaux Which Define Expression Mappings. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ.,' University Park, PA, June 1981. Cooper, E.C. [1980]. On the Expressive Power of Query Languages for Relational Databases. Aiken Computation Lab. Report 14-80, Harvard Univ., Cambridge, MA. *Date, C.J. [1981]. An Introduction to Data Base Systems. 3rd ed. Reading, MA: Addisoh-Wesley. Dayal, U., and Bernstein, P.A. [1978a]. The Fragmentation Problem: Lossless Decomposition of Relations in Files. Computer Corp. of America Report CCA-78-13, Cambridge, MA, November 1978. Dayal, U., and Bernstein, P.A. [1978b]. On the Updatability of Relational Views. VLDB IV, West Berlin, Germany. ACM, IEEE. 368-377. Delobel, С [1978]. Normalization and Hierarchical Dependencies in the Relational Data Model. ACM TODS 3:3, September 1978, 201-222. Based partly on work from Contributions Theoretiques a la Conception d'un Systeme d'Informations, doctoral diss., Univ. of Grenoble, Switzerland, 1973. Delobel, C, and Casey, R.G. [1973]. Decomposition of a Data Base and the Theory of Boolean Switching functions. IBM J. of Research and Development 17:5, Ar- monk, NY, September 1973, 374-386. Delobel, C, Casey, R.G., and Bernstein, P.A. [1977]. Comment on 'Decompositions of a Data Base and the Theory of Boolean Switching Functions/ IBM J. of Research and Development 21:5, Armonk, NY, September 1977, 484-485. Demetrovics, J. [1979]. On the Equivalence of Candidate Keys with Sperner Systems. Acta Cybernetica 4:3, Szeged, Hungary, 247-252. Demetrovics, J. [1978]. On the Number of Candidate Keys. Information Processing Letters 7:6, Amsterdam, Netherlands: North-Holland, October 1978, 226-269. Downey, P.J., Sethi, R., and Tarjan, R.E. [1980]. Variations on the Common Subexpression Problem. J ACM 27:4, October 1980, 758-771. Epstein, R., Stonebraker, M.R., and Wong, E. [1978]. Distributed Query Processing in a Relational Database System. ACM SIGMOD Conf. 1978, 169-180.
Литература 585 Fagin, R. [1977a]. The Decomposition Versus the Synthetic Approach to Relational Database Design. VLDB III, Tokyo, Japan. ACM, IEEE. 441-446. Fagin, R. [1977b]. Functional Dependencies in a Relational Database and Proportional Logic. IBM /. of Research and Development 21:6, Armonk, NY, November 1977, 534-544. Fagin, R. [1980a]. Horn Clauses and Database Dependencies. ACMSymp. on Theory of Computing 1980, 123-134. Fagin, R. [1977c]. Multivalued Dependencies and a New Normal Form for Relational Databases. ACM TODS 2:3, September 1977, 262-278. Fagin, R. [1980b]. A Normal Form for Relational Databases that is Based on Domains and Keys. ACM TODS 6:3, September 1981, 387-415. Fagin, R. [1979]. Normal Forms and Relational Database Operators. ACM SIG- MOD Conf 1979, 153-160. Fagin, R., Maier, D., Ullman, J.D., Yannakakis, M. [1981]. Tools for Template Dependencies. IBM Report RJ3030, San Jose, CA, May 1981. Fagin, R., Mendelzon, A.O., and Ullman, J.D. [1980]. A Simplified Universal Relation Assumption and its Properties. IBM Report RJ2900, San Jose, CAf November 1980. Fischer, P.C., Jou, J.H., and Tsou, D.-M. [1981]. Succinctness in Dependency Sys* terns. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Forsyth, J., and Fadous, R. [1975]. Finding Candidate Keys for Relational Databases. ACMSIGMOD Conf 1975, 203-210. Galil, Z. [1979]. An Almost Linear Time Algorithm for Computing a Dependency Basis in a Relational Database. IBM Report RJ2656, San Jose, CA, October 1979. Gallaire, H., and Minker, J. eds. [1979]. Logic arid Databases. New York: Plenum Publ. Co. Gallaire, H., Minker, J., and Nicolas J.-M. eds. [1980]. Advances in Data Base Theory, vol. 1. New York: Plenum Publ. Co. Garey, M.R., and Johnson, D.S. [1979]. Computers and Intractability: A Guide to the Theory of NP-Completeness. San Francisco, CA: Freeman. Gewirtz, W.L. [1979]. The Universal Relation Assumption and Decomposition Strategies for Schema Design. IEEE Computer Applications and Software Conf 1979 (COMPSAC '79), 136-140. Ginsburg, S., and Hull, R. [1980]. Characterization for Functional Dependency and Boyce-Codd Normal Form Databases. Unpublished manuscript, December 1980. Ginsburg, S., and Hull, R. [1981]. Ordered Attribute Domains in the Relational
586 Литература Model. ХР2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Ginsburg, S., and Zaiddan, S.M. [1981]. Properties of Functional Dependency Databases. Computer Science Report, Univ. of So. California, Los Angeles, CA, January 1981. Goldstein, B.S. [1981a]. Constraining Values in a Relational Database. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Goldstein, B.S. [1981b]. Constraints on Null Values in Relational Databases. VLDB VII, Cannes, France. ACM, IEEE. 101-111. Goldstein, B.S. [1980]. Formal Properties of Constraints on Null Values in Relational , Databases. Computer Science Report 80-013, SUNY at Stony Brook, NY, December 1980. Goodman, N., Bernstein, P.A., Wong, E., Reeve, C.L., Rothnie, J.B. [1979]. Query Processing in SDD-1: A System for Distributed Databases. Computer Corp. of America Report 79-06, Cambridge, MA, October 1979. Goodman, N., and Shmueli, O. [1980a]. Hierarchies of Database State Reductions. Aiken Computation Lab. Report 18-80, Harvard Univ., Cambridge, MA, November 1980. Goodman, N., and Shmueli, O. [1981]. Limitations of the Chase, Aiken Computation Lab. Report 02-81, Harvard Univ., Cambridge, MA, January 1981. Goodman, N., and Shmueli, O. [1980b]. Nonreducible Database States for Cyclic Queries. Aiken Computation Lab. Report 15-80, Harvard Univ., Cambridge, MA, July 1980. Goodman, N., and Shmueli, O. [1981b]. Syntactic Characterizations of Tree Database Schemas. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Gotlieb, L.R. [1975]. Computing Joins of Relations. ACM SIGMOD Conf. 1975, 55-63. Graham, M.H. [1981a]. Functions in Databases. Computer Systems Research Group Report, Univ. of Toronto, Canada, June 1981. Graham, M.H. [1981b]. Independence (Preliminary Results). XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA. June 1981. Graham, M.H. [1979]. On the Universal Relation. Computer Systems Research Group Report, Univ. of Toronto, Canada, December 1979. Graham, M.H. [1980]. A New Proof that the Chase is a Church-Rosser Replacement System. XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1980.
Литература 587 Grant, J. [1977]. Null Values in a Relational Database. Information Processing Letters 6:5, Amsterdam, Netherlands: North-Holland, October 1977, 156-157. Grant, J. [1979]. Partial Values in a Tabular Database Model. Information Processing Letters 9:2, Amsterdam, Netherlands: North-Holland, August 1979, 97-99. Grant, J., and Jacobs, B. [1980]. On Generalized Dependency Statements. Unpublished manuscript. Hagihara, K., Ito, M., Taniguchi, K., Kasami, T. [1979]. Decision. Problems for Multivalued Dependencies in Relational Databases. SIAMJ. on Computing 8:2, May 1979, 247-264. Hall, P.A.V. [1976]. Optimization of a Single Relational Expression in a Relational Database System. IBM J. of Research and Development 20:3, Armonk, NY, May 1976, 244-257. Hall, P., Hitchcock, P., and Todd, S. [1975]. An Algebra of Relations for Machine Computation. ACM Symp. on Principles of Prog. Lang. 1975, 225-232. Hammer, M., and McLeod, D. [1981]. Database Description with SDM: A Semantic Database Model. ACM TODS 6:3, September 1981, 351-386. Hammer, M., and McLeod, D. [1978]. The Semantic Data Model: A Modelling Mechanism for Database Applications. ACM SIGMOD Conf. 1978, 26-36. Heath, I.J. [1971]. Unacceptable File Operations in a Relational Data Base. ACM SIGFIDET Workshop on Data Description, Access and Control, November 1971, 19-33. Honeyman, P. [1980a]. Extension Joins. VLDB VI Montreal, Canada. ACM, IEEE. 239-244. Honeyman, P. [1980b]. Functional Dependencies and the Universal Instance Property in the Relational Model of Database Systems. Doctoral diss., Princeton Univ., Princeton, NJ, October 1980. Honeyman, P. [1980c]. Testing Satisfaction of Functional Dependencies. Unpublished manuscript, March 1980 (to appear in JACM). Honeyman, P., Ladner, R.E., and Yannakakis, M. [1980]. Testing the Universal Instance Assumption. Information Processing Letters 10:1, Amsterdam, Netherlands: North-Holland, February 1980, 14-19. Housel, B.C., Waddle, V., and Yao, S.B. [1979]. The Functional Dependency Model for Logical Database Design. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 194-208. Hull, R. [1981]. Implicational Dependency and Finite Specification. Computer Science Report, Univ. of So. California, Los Angeles, CA. Jacobs, B.E. [1980]. Applications of Database Logic to Automatic Program Conversion. Computer Science Report, Univ. of Maryland, College Park, MD, May 1980. Jacobs, B.E., [1980]. A Generalized Algebraic Data Manipulation Language and the
588 Литература Automatic Conversion of Its Programs. XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1980. Jacobs, B.E. [1979]. On Queries Definable in Database Structures. Computer Science Report 757, Univ. of Maryland, College Park, MD, April 1979. Jou, J.H. [1980]. Theory of Functional Relation Schemes in Relational Databases. Doctoral diss., Pennsylvania State Univ., University Park, PA, October 1980. Kambayashi, Y. [1979]. A New Synthetic Approach for Relational Database Design. AFIPS National Computer Con/., session 42. Also, Yajirna Lab. Report ER78-02, Kyoto Univ., Japan, November 1978. Kambayashi, Y. [1978]. An Efficient Algorithm for Processing Multirelation Queries in Relational Databases; Information Sciences Report 78-01, Kyoto Univ., Japan. Kanellakis, P.C. [1980]. On the Computational Complexity of Cardinality Constraints in Relational Databases. Lab. for Computer Science Report 160, MIT, Cambridge, MA, March 1980. Katsuno, H. [1981a]. On an Extended Conflict-Free Set of Functional Dependencies and Multivalued Dependencies. Unpublished manuscript, July 1981. Katsuno, H. [1981b]. On Two Different Meanings of Multivalued Dependencies in a Conceptual Schema. Trans, of the IECE of Japan E64:6, June 1981, 383-389. Kent, W. [1979a]. The Entity Join. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 232-238. Kent, W. [1973]. A Primer of Normal Forms (In a Relational Database). IBM Report 02.600, San Jose, CA, December 1973. Kent, W. [1979b]. Limitations of Record-Based Information Models. ACM TODS 4:1, March 1979, 107-131. Kim, W. [1980]. A New Way to Compute the Product and Join of Relations. ACM SIGMOD Conf. 1980, 178-187. Kim, W. [1981a]. On Optimizing a SQL-Like Nested Query. IBM Report RJ3063, San Jose, CA, February 1981. Kim. W. [1981b]. Query Optimation for Relational Database Systems. IBM Report RJ3081, San Jose, CA, March 1981. Kim, W. [1979]. Relational Database Systems. ACM Computing Surveys 11:3, September 1979, 185-212. Klug, A. [1980a]. Calculating Constraints on Relational Expressions. ACM TODS 5:3, September 1980, 260-290. Klug, A. [1980b]. Locking Expressions for Increased Database Concurrency. Computer Science Report 400, Univ. of Wisconsin, Madison, WI, October 1980. Klug, A. [1980c]. On Inequality Tableaux. Computer Science Report 403, Univ. of Wisconsin, Madison, WI, November 1980.
Литература 589 Klug, Α., and Price, R. [1980]. Determining View Dependencies Using Tableaux. Computer Science Report 386. Univ. of Wisconsin, Madison, WI. Korth, H. [1981]. System/U: Progress Report. XP2 Workshop on Relational'Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Korth, H.F., and Ullman, J.D. [1980]. System/U: A Database System Based on the Universal Relation Assumption. XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1980. LaCroix, M., and Pirotte, A. [1976]. Generalized Joins. ACM SIGMOD Record 8:3, September 1976, 14-15. LeDoux, C.H., and Parker, D.S. [1980]. A New Algorithm for Testing Boyce-Codd Normal Form. Unpublished manuscript. LeViet, C, Kambayashi, Y., Tanaka, K., Yajima, S. [1979]. Use of Abstracted Characteristics of Data in Relational Databases. IEEE Computer Software and Applications Conf. 1979 (COMPSAC 79), 409-414. Lewis, E.A., Sekino, L.C., and Ting, P.D. [1977]. A Canonical Representation for the Relational Schema and Logical Data Independence. IEEE Computer Software and Applications Conf. (COMPSAC 77), 276-280. Lien, Y.E. [1981]. Hierarchical Schemata for Relational Database Schemata. ACM TODS 6:1, March 1981, 48-69. Lien, Y.E. [1979]. Multivalued Dependencies With Null Values in Relational Databases. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 61-66. Lien, Y.E. [1980]. On the Equivalence of Database Models. Unpublished manuscript, June 1980. Ling, T.W., Tompa, F.W., and Kameda, T. [1981]. An Improved Third Normal Form for Relational Databases. ACM TODS 6:2, June 1981, 329-346. Lipski, W. [1981]. On Databases With Incomplete Information. JACM 28:1, January 1981, 41-47. Lipski, W. [1979bj. On Semantic Issues Connected With Incomplete Information Databases. ACM TODS 4:3, September 1979, 262-296. Lipski, W., and Marek, W. [1979]. information Systems: On Queries Involving Cardinalities. Information Systems 4:3., Eimsford, NY: Pergamon Press, Inc., 241-246. Liu, L., and Demers, A. [1978]. An Efficient Algorithm for Testing Lossless Joins in Relational Databases. Computer Science Report 78-351, Cornell Univ., Ithaca, NY. Lozinskii, E.L. [1980]. Construction of Relations in Relational Databases. ACM TODS 5:2, June 1980, 208-224. Lozinskii, E.L. [1978]. Performance Considerations in Relational Database Design, In Shneiderman [1978], New York: Academic Press, Inc., 272-294.
590 Литература Lucchesi, C.L., and Osborn, S.L. [1978]. Candidate Keys for Relations, /. of Computer and System Sciences 17:2, October 1978, 270-279. Maier, D. [1980a]. Discarding the Universal instance Assumption: Preliminary Results. XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1980. Maier, D. [1980b]. Minimum Covers in the Relational Database Model. JACM 27:4, October 1980, 664-674. Maier, D., Mendelzon, A.O., Sadri, F., Ullman, J.D. [1980]. Adequacy of Decompositions of Relational Databases. /. of Computer and System Sciences 21:3, December 1980, 368-379. Maier, D., Mendelzon, A.O., and Sagiv, Y. [1979]. Testing Implications of Data Dependencies. ACM TODS 4:4, December 1979, 455-469. Maier, D., Rozenshtein, D., Salveter, S., Stein, J., Warren, D. [1981]. Semantic Problems in an Association-Object Query Language. Unpublished manuscript, October 1981. Maier, D., Sagiv, Y., and Yannakakis, M. [1981]. On the Complexity of Testing Implications of Functional and Join Dependencies. JACM 28:4, October 1981, 680-695. Maier, D., and Ullman, J.D. [1981a]. Connections in Acyclic Hypergraphs. Computer Science Report 81-853, Stanford Univ., Stanford, CA, May 1981. Maier, D., and Ullman, J.D. [1981b]. Fragjsients of Relations: First Hack. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Maier, D., and Ullman, J.D. [1980] .Maximal Objects and the Semantics of Universal Relation Databases. Computer Science Report 80-016, SUNY at Stony Brook, NY, November 1980. Maier, D., and Warren, D.S. [1981a]. Incorporating Computed Relations in Relational Databases. ACM SIGMOD Conf 1981, 176-187. Maier, D., and Warren, D.S. [1981b]. Specifying Connections for a Universal Relation Scheme Database. Unpublished manuscript, October 1981. Mendelzon, A.O. [1981]. Database States and Their Tableaux. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Mendelzon, A.O. [1979]. On Axiomatizing Multivalued Dependencies in Relational Databases. JACM 26:1, January 1979, 37-44. Mendelzon, A.O., and Maier, D. [1979]. Generalized Mutual Dependencies and the Decomposition of Database Relations. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 75-82. Minker, J. [1975a]. Performing inferences over Relational Databases. ACM SIGMOD Conf. 1975, 79-91.
Литература 591 Minker, J. [1978]. Search Strategy and Selection Function for an Inferential Relational System. ACM TODS 3:1, March 1978, 1-31. Minker, J. [1975b]. Set Operations and Inferences over Relational Databases. Com* puter Science Report All, Univ. of Maryland, College Park, MD, December 1975. Namibar, K.K. [1979]. Some Analytic Tools for the Design of Relational Database Systems. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 417-428. Nicolas, J.-M. [1978a]. First Order Logic Formalization for Functional, Multivalued and Mutual Dependencies. ACM SIGMOD Conf. 1978, 40-46.' Nicolas, J.-M. [1978b]. Mutual Dependencies and Some Results on Undecomposable Relations. VLDB IV, West Berlin, Germany. ACM, IEEE. 360-367. Nijssen, G.M. ed. [1979]. Architecture and Models in Data Base Management Systems. Amsterdam, Netherlands: North-Hoi land. Nijssen, G.M. ed. [1976]. Modelling in Data Base Management Systems. Amsterdam, Netherlands: North-Holland. Osborn, S.L. [1977]. Normal Forms for Relational Databases. Doctoral diss., Univ· of Waterloo, Canada. Osborn, S.L. [1979a]. Testing for Existence of a Covering Boyce-Codd NormarFornu Information Processing Letters 8:1, Amsterdam, Netherlands: North-Holland· January 1979, 11-14. Osborn, S.L. [1979b].,Towards a Universal Relation Interface. VLDB V, Rio de Janeiro, Brazil. ACM, IEEE. 52-60. Palermo, F.P. [1974]. A Database Search Problem. In Tou [1974], New York: Plenum Publ. Co. 67-101. Paolini, P., and Pelagatti, G. [1977]. Formal Definitions of Mappings in a Data Base. ACM SIGMOD Conf. 1977, 40-46. Paredaens, J. [1977]. About Functional Dependencies in a Database Structure and Their Coverings. Philips MBLE Lab. Report 342, Brussels, Belgium, March 1977. Paredaens, J. [1980]. Horizontal and Vertical Decompositions, XP1 Workshop on Relational Database Theory, SUNY at Stony Brook, NY, June-July 1980. Paredaens, J. [1978]. On the Expressive Power of Relational Algebra. Information Processing Letters 7:2, Amsterdam, Netherlands: North-Holland, February 1978, 44-49. Paredaens, J., and De Bra, P. [1981]. On Horizontal Decompositions. XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Paredaens, J., and Janssens, D. [1981]. Decompositions of Relations: A Comprehensive Approach. In Gallaire, Minker, and Nicolas [1981], New York: Plenum Publ. Co., 73-100.
592 Литература Parker, D.S., and Parsaye-Ghomi, К. [1980]. Inferences Involving Embedded Multi- (^ valued Dependencies and Transitive Dependencies. ACM SIGMOD Conf. 1980, 52-57. Pecherer, R.M., [1975]. Efficient Evaluation of Expressions in a Relational Algebra. ACM Pacific Conf. 1975, 44-49. Pichat, E., and Delobel, C. [1979]. Designing Third Normal Form Relational Database Schema. Mathematiques Appliquees et Informatique Report 149, Univ. Scientifique et Medicale et Institut National Polytechnique de Grenoble, France, January 1979. Pirotte, A. [1979]. High Level Database Query Languages. In Gallaire and Minker [1979], New York: Plenum Publ. Co., 409-436. Reiter, R. [1978]. On Closed World Databases. In Gallaire and Minker [1979], New York: Plenum Publ. Co., 55-76. Rissanen, J. [1977]. Independent Components of Relations. ACM TODS 2:4, December 1977, 317-325. Rothnie, J.B., Bernstein, P.Α., Fox, S., Goodman, N., Hammer, M., Landers, T.A., Reeve, G., .Shipman, D.W., Wong, E. [1981]. Introduction to a System for Distributed Databases (SDD-1). ACM TODS 5:1, March 1981, 1-17. Rozenshtein, D. [1981]. Implementing Null Values in Relations. Unpublished manuscript, May 1981. Rustin, R. ed. [1972]. Data Base Systems. Courant Inst. Computer Science Symp. 6, Engiewood Cliffs, NJ: Prentice-Hall. Sadri, F. [1980a]. Characterization of Projections of Legal Instances: An Application of GFD's and TD's. Unpublished manuscript. Sadri, F. [1980b]. Data Dependencies in the Relational Model of Data: A Generalization. Doctoral diss., Princeton Univ., Princeton, NJ, October 1980. Sadri, F. [1980c]. A Normal Form with Respect to GFD's and TD's and New Conditions for Decomposition of Relational Databases. Unpublished manuscript. Sadri, F., and Ullman, J.D. [1980a]. A Complete Axiomatization for a Large Class of Dependencies in Relational Databases. A CM Symp. on Theory of Computing 1980, 117-122. Sadri, F., and Ullman, J.D. [1980b]. The Interaction Between Functional Dependencies and Template Dependencies. ACM SIGMOD Conf. 1980, 45-51. Sagiv, Y. [1980]. An Algorithm for Inferring Multivalued Dependencies With an Application to Propositional Logic. JACM 27:2, April 1980, 250-262. Sagiv, Y. [1981a]. Can We Use the Universal Instance Assumption Without Using Nulls? ACM SIGMOD Conf. 1981, 108-120. Sagiv, Υ [1981b]. A Characterization of Globally Consistent Databases and Their Correct Access Paths. Computer Science Report, Univ. of Illinois, Urbana, IL, July 1981.
Литература 593 Sagiv, Y., Delobel, C, Parker, D.S., Fagin, R. [1981]. An Equivalence Between Relational Database Dependencies and a Fragment of Prepositional Logic. JACM 28:3, July 1981, 435-453. •Sagiv, Y., and Walecka, S. [1979]. Subset Dependencies as an Alternative to Embedded M,ultivalued Dependencies. Computer Science Report 79-080, Univ. of Illinois, Urbana, IL, July 1979. Sagiv, Y., and Yannakakis, M. [1980]. Equivalence Among Relational Expressions With the Union and Difference Operators. JACM 27:4, October 1980, 633-655. Schenk, K.L., and Pinkert, J.R. [1977]. An Algorithm for Servicing Multirelational Queries. ACM SIGMOD Con/. 1977, 10-20. Schkolnick, M., and Sorenson, P. [1981]. The Effects of Denormalization on Database Performance. IBM Report RJ3082, San Jose, CA, March 1981. Schmid, H,A., and Swenson, J.R. [1975]. On the Semantics of the Relational Data Model. ACM SIGMOD Conf. 1975, 221-223. Sciore, E. [1982]. A Complete Axiomatization for Full Join Dependencies. To appear in JACM. Sciore, E. [1979]. Improving Semantic Specification in a Relational Database. ACM SIGMOD Conf. 1979, 170-178. Sciore, E. [1980a]. The Inclusion of Role-Playing in Relational Databases. Unpublished manuscript, March 1980. Sciore, E. [1981]. Real-World MVD's. ACM SIGMOD Conf. 1981, 121-132. Sciore, E. [1980b]. The Universal Instance and Database Design. Doctoral diss., Princeton Univ., Princeton, NJ, October 1980. Selinger, P.G., Astrahan, M.M., Chamberlin, D.D., Lorie, R.A., Price, T.C. [1979]. Access Path Selection in a Relational Database Management System. ACM SIGMOD Conf. 1979, 23-34. Sethi, R. [1974]. Testing for the Church-Rosser Property. JACM 21:4, October, 1974, 671-679. . Shneiderman, B. ed. [1978]. Databases: Improving Usability and Responsiveness. New York: Academic Press, Inc. Shopiro, J.E. [1979]. Theseus—A Programming Language for Relational Databases. ACM TODS 4:4, December 1979, 493-517. Smith, J.M., and Chang. P.Y.-T. [1975]. Optimizing the Performance of a Relational Database Interface. CACM 18:10, October 1975, 568-579. Smith, J.M., and Smith, D.C.P. [1977a]. Database Abstraction: Aggregation. CACM 20:6, June 1977, 405-413. Smith, J.M., and Smith, D.C.P. [1977b]. Database Abstraction: Aggregation and Generalization. ACM TODS 2:2, June 1977, 105-133. Sowa, J.F. [1976]. Conceptual Graphs for a Database Interface. IBM J. of Research and Development 20:4, Armonk, NY, July 1976, 336-357.
594 Литература Stein, J.H. [1981]. Enforcing the Modified Foreign Key Constraint. Unpublished manuscript, July 1981. Steiner, H.-G. [1981]. Functional Flow Graphs (Extended Abstract). XP2 Workshop on Relational Database Theory, Pennsylvania State Univ., University Park, PA, June 1981. Stockmeyer, L.H., and Wong, C.K. [1979]. On the Number of Comparisons to Find the Intersection of Two Relations. SIAM J. on Computing 8:3, August 1979, 388-404. Stonebraker, M. [1975]. Implementation of Integrity Constraints and Views by Query Modification. ACM SIGMOD Conf. 1975, 65-78. Stonebraker, В., and Rubenstein, P. [1976]. The INGRES Protection System. ACM National Conf. 1976, 80-84. Stonebraker, M., and Wong, E. [1974]. Access Control in a Relational Database Management System by Query Modification. A CM National Conf. 1974, 180-187. Stonebraker, M., Wong, E., Kreps, P., Held, G. [1976]. The Design and Implementation of INGRES. ACM TODS 1:3, September 1976, 189-222. Sundgren, B. [1975]. Theory of Databases. New York: Mason/Charter. Tanaka, K., and Kambayashi, Y. [1980]. Preservability of Data Dependencies for Update Operations in Relational Databases. Yajima Laboratory Report 80-02, Kyoto Univ., Japan, February 1980. Tanaka, K., Kambayashi, Y., and Yajima, S. [1979a]. On the Representability of Decompositional Schema Design with Multivalued Dependencies. Yajima Laboratory Report 79-01, Kyoto Univ., Japan, January 1979. Tanaka, K., Kambayashi, Y., and Yajima, S. [1979b]. Properties of Embedded Multivalued Dependencies in Relational Databases. J. IECE of Japan E62:8, August 1979, 536-543. Tanaka, Y., and Tsuda, T. [1977]. Decomposition and Composition of a Relational Data Base. VLDB III, Tokyo, Japan. ACM, IEEE. 454-461. Todd, S.J.P. [1976]. The Peterlee Relational Test Vehicle—A System Overview. IBM Systems J. 15:4, Armonk, NY, December 1976, 285-308. Todd, S. [1975]. PRTV, An Efficient Implementation for Large Relational Databases. VLDB I, Framingham, MA. ACM. 554-556. Tou, J.T. ed. [1974]. Information Systems COINS IV. New York: Plenum Publ. Co. * Tsichritzis, D.C., and Lochovsky, F.H. [1977]. Data Base Management Systems. New York: Academic Press, Inc. Tsou, D.-M. [1980]. Analysis of the Logical Design in Relational Databases. Doctoral diss., Pennsylvania State Univ., University Park, PA, October 1980.
Литература 595 Tsou, D.-M., and Fischer, P.С [1980]. Decomposition of a Relation Scheme into Boyce-Codd Normal Form. Computer Science Report 80-04, Vanderbilt Univ., Nashville, TN, July 1980. *Ullman, J.D. [1980]. Principles of Database Systems. Rockville, MD: Computer Science Press. Vardi, M.Y [1980a]. Axiomatization of Functional and Join Dependencies in the Relational Model. M. Sc. thesis, Weizman Institute, Rehovot, Israel, April 1980. Vardi, M.Y [1980b]. Inferring Multivalued Dependencies from Functional and Join Dependencies. Unpublished manuscript, March 1980. Vassiiiou, Υ [1980a]. Functional Dependencies and Incomplete Information. VLDB VI, Montreal, Canada. ACM, IEEE. 260-269. Vassiiiou, Υ [1979]. Null Values in Database Management—A Denotational Semantics Approach. ACM SIGMOD Con/. 1979, 162-169. Vassiiiou, Υ [1980b]. Testing Satisfaction of FDs on a Multi-Relation Database "Fast" XPI Workshop on Relational Database Theory, SUN Υ at Stony Brook, NY, June-July 1980. Walker, A. [1980a]. On Retrieval from a Small Version of a Large Database. VLDB VI, Montreal, Canada. ACM, IEEE. 47-54. Walker, A. [1980b]. Time and Space in a Lattice of Universal Relations with Blank Entries. XP1 Workshop on Relational Database Theory, SUN Υ at Stony Brook, NY, June-July 1980. Walker, A. [1979]. A Universal Table Relational Database Model with Blank Entries. Unpublished manuscript. Wang, СР., and Wedekind, H.H. [1975]. Segment Synthesis in Logical Database Design. IBM J. of Research and Development, Armonk, NY, January 1975, 71-77. Wiederhold, G. [1977]. Database Design. New York: McGraw-Hill. Wong, E., and Youssefi, K. [1976]. Decomposition—A Strategy for Query Processing. ACM TODS 1:3, September 1976, 223-241. Yannakakis, M. [1981]. Algorithms for Acyclic Database Schemes. VLDB VII, Cannes, France. ACM, IEEE. 82-94. Yannakakis, M., and Papadimitriou, C.H. [1980]. Algebraic Dependencies. IEEE Foundations of Computer Science Conf. 1980, 328-332. Yao, S.B. [1979]. Optimization of Query Evaluation Algorithms. ACM TODS 4:2, June 1979, 133-155. Yu, C.T., and Ozsoyoglu, M.Z. [1979]. An Algorithm for Tree-Query Membership of a Distributed Query. IEEE Computer Software and Applications Conf. 1979 (COMPSAC 79), 306-312. Yu, C.T., and Ozsoyoglu, M. [1980]. On Determining Tree-Query Membership of a
596 Литература Distributed Query. Computer Science Report 80-1, Univ. of Alberta, ЕЙГЛОй- ton, Canada, January 1980. Zahiolo, C. [1976]. Analysis and Design of Relational Schemata for Database Sys? tems. Doctoral diss., UCLA, Los Angeles, CA, July 1976. Zaniolo, С [1979]. Mixed Transitivity for Functional and Multivalued Dependencies in Database Relations. Information Processing Letters 8:1, Amsterdam, Netherlands: North-Holland, January 1979, 11-14. Zaniolo, С [1977]. Relational Views in a Database System: Support for Queries. IEEE Computer Software and Applications Conf 1977 (COMPSAC 77), 267-275. Zaniolo, C, and Melkanoff, M.A. [1982]. A Formal Approach to the Definition and the Design of Conceptual Schemata for Database Systems. To appear in ACM TODS. Zaniolo, C, and Melkanoff, M.A. [1981]. On the Design of Relational Database Schemata. ACM TODS 6:1, March 1981, 1-47. Zloof, M.M. [1977]. Query-by-Example: A Database Language. IBM Systems J. 16:4, Armonk, NY, December 1977, 324-343. Zloof, M.M. [1981]. Query-by-Example Language Specifications. Unpublished manuscript. Zloof, M.M. [1976]. Query-by-Example: Operations on the Transitive Closure. IBM Report RC5526, Yorktown Heights, NY, October 1976. Работы, опубликованные на русском языке Αχο Α., Χοπκροφτ Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979. —535 с. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. — М.: Мир, 1982.—336 с. Дейт К. Введение в системы баз данных. —М.:' Наука, 1980. —463 с. Ульман Дж. Основы системы баз данных. — М.: Финансы и статистика,^ 1983. — 334 с. Цикридзис Д., Лоховский Ф. Модели данных. — М.: Финансы и статистика, 1985. —344 с. Дополнительная литература Достаточно полный список монографий и оригинальных статей, посвященных теории баз данных и методологии их проектирования, приведен в книге* Цаленко М. Ш. Семантические и математические модели баз данных.—М.: ВИНИТИ. — 1985. — 207 с.
Литература 597 В последнее время вышли также следующие работы: Геловани В. Α., Безруков Д. И., Бритков В. Б., Голосов А. О., Цаленко М. Ш. Интерактивная разработка информационных систем. — Изв. АН СССР. Техническая кибернетика. — 1986. — Вып. 2. — с 48—70. Голосов А. О., Цаленко М. Ш. Семантическая трансформация реляционной базы данных. //Вопросы информационной технологии, вып. 2. — М.: ВНИИСИ. — 1986. — с. 79—86. Брудно В. Α., Скворцов Д. Б., Финн В. К·, Цаленко М. Ш. Базы данных с неполной информацией. //Семиотика и информатика, вып. 25. — М.: ВИНИТИ. — 1985. — с. 5—45. Канович М. И. Эффективные логические алгоритмы анализа и синтеза зависимостей. — ДАН СССР. — 1985. — с. 1301—1305. Тененбаум Л. А. Структуризация реляционного описания систем. —М.: Институт проблем управления. — Препринт. — 1985. — 52 с. Валиев М. К. О временных зависимостях в базах данных. //Изв. АН СССР. Техническая кибернетика. — 1985. —№ 1.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Алгебраическое выражение (algebraic expression) 43 как отображение (as mapping) 44 монотонное (monotonic) 279 ограниченное (restricted) 266 схема (scheme) 44 Алгоритм редукции Грэхема (Graham reduction algorithm) 445 успешно завершающийся (succeed) 446 — синтеза (synthesis) 118 — AVOID 127 — CLOSURE 72 — DERIVES 81 — EQUIV81 — LEFTRED 85 — LINCLOSURE 75 — MEMBER 74 — MINEQ 327 — MINIMIZE 95 — NONREDUN 83 — PCLOSURE 217 — REDUCE 86 — REDUNDANT 82 — REPUGNANT 101 — SATISFIES 51 — SYNTHESIZE 120 Алгоритма сложность по времени (time- complexity) 72 Аксиомы Армстронга (Armstrong's axioms) 57 — вывода (inference) 53—55 — независимые (independent) 57 — CI—C2 142 — Ml—M7 139—140 Аспект (object) 399 — минимальный (minimal) 425 — неявный (implicit) 403 Атомы (atoms) 235, 255 Атрибут (attribute) 10 — внешне зависимый (externally dependent) 123 — непервичный (nonprime) 109 — первичный (prime) 109 — транзитивно зависимый (transitively dependent) 111 — удаляемый (removable) 124 — устранимый (avoidable) 126 Атрибута вес (weight) 447 — класс (class) 447 Атрибутов переименование (renaming) 35—37 Вершина (node) 65, 437. См также Узел — начальная (initial) 65 Вершины связанные (connected) 438 Вес атрибута (weight of attribute) 447 — графа (graph) 447 — схемы (scheme) 447 — ребра (edge) 447 Включение (containment) 341 Включение (embody) 105 - Вхождение (occurence) 237 — глобальное (global) 237 — локальное (local) 237 — свободное (free) 237 — связанное (bound) 237 Выражение безопасное (safe expression) 252, 259, 537 Выражения значение (value) 230, 244 Выразительная сила (expressive power) 231 Гиперграф (hypergraph) 437 — ациклический (acyclic) 441 — замкнутый (closed) 442 — конформный (conformal) 474 — редуцированный (reduced) 438 внутренне-ациклический (closed- acyclic) 442 внутренне-циклический (closed- cyclic) 442 — хордовый (chordal) 474 — циклический (cyclic) 441 — М-индуцированный (M-induced) 440 Гиперграфа блок (block) 441 тривиальный (trivial) 441 Гиперребра (hyperedges) 437 — связные (connected) 439 Граф ассоциированный с Η (graph Gh for H) 474 — ориентированный ациклический (directed acyclic) 64
Предметный указатель 599 помеченный (labeled) 64 — отношения (relation) 493 — пересечений (intersection) 443 полный (complete) 442 — связей (connection) 307 — соединений (join) 444 — хордовый (chordal) 474 Графа гомоморфизм, сохраняющий пометки [пс-гомоморфизм] (label-preserving homomorfism) 494 Декомпозиции определение однозначное (М uniquely decomposes U) 433 Декомпозиция (decomposition) 433 — плотная (tight) 433 — уникальная (unique) 433 Дерево соединений (join tree) 444 Деревья вывода (derivation trees) 79 — выражений (expression) 295 Домен (domain) 10 — активный (active) 20 расширенный (extended) 249, 258 Доменов исчисление (domain calculus) 257 выражение (expression) 257 Домены θ-сравнимые (θ-comparable) 39 Зависимостей базис (dependency basis) 144, 188 Зависимости алгебраические (algebraic) 536 — взаимные (mutual) 535 — вложенные импликационные (embedded implicational) 535 — обобщенные (generalized) 536 — порождающие равенство (generating equality) 536 строки (tuple) 536 Зависимость многозначная [MV-зави- симость] (multivalued dependency) 50, 134, 138 приложимая (applied) 146 тривиальная (trivial) 145 — соединения [J-зависимость] (join) 50, 149 встроенная [EJ-зависимость] (embedded) 152 приложимая (applied) 151 тривиальная (trivial) 151 — табличная [Т-зависимость] (template) 488 простая (simple) 532 тривиальная (trivial) 488 — функциональная [F-зависимость ] (functional) 50, 51, 57 избыточная (redundant) 82 левая часть (left side) 51 — — навязанная (enforceable) 106 ненавязанная (unenforceable) 106 обобщенная [GF-зависимость] (generalized) 506 типизированная (typed) 506 тривиальная (trivial) 506 полная см. редуцированная слева правая часть (right side) 51 редуцированная (reduced) 84 слева (left-reduced) 80 справа (right-reduced) 84 составная [CF-зависимость ] (compound) 96, 97 левая часть (left side) 97 левые множества (left sets) 97 правая часть (right side) 97 редуцированная (reduced) 99 тривиальная (trivial) 58 Законы де Моргана (de Morgan's laws) 306 Замена (supersede) 322 Замыкание (closure) 57, 58, 186 — транзитивное (transitive) 515 Запрос (query) 229 — конъюнктивный минимальный (conjunctive, minimum) 344 Запросов оптимизация (optimisation) 290 — система (system) 229 не менее выразительная (as expressive as) 231 полная (complete) 231 — язык (language) 229 ISBL 539—543 PIQUE 570—578 QBE 554—570 QUEL 543—548 SQL 548—554 Значения неизвестные (unknown va· lues) 361 — неопределенные (nulls) 361, 362 помеченные (marked) 370 Интерпретация неограниченная (unlimited interpretation) 242, 257 — ограниченная (limited) 250, 258 Информация неоднородная (partial information) 361 Истинностных значений присваивание (truth assignment) 478 Исток (sink) 499 Итерация (iteration) 308 Кванторы (quantifiers) 237 Клика (clique) 474
600 Предметный указатель Ключ (key) 13, 14 — ассоциированный с Μ (of M) 475 — бесконфликтный (conflict-free) 475 — возможный см. неявный — выделенный (designated) 13 — неявный (implicit) 13 — первичный (primary) 13 — универсальный (universal) 125 Компонента связности (connected component) 439 Конкретизация (instantiation) 435 — монотонная (monotone) 436 Конъюнкт (clause) 517 Кортеж (tuple) 11 Кортежа Л-значение 11 — Х-значение 12 Кортежей исчисление (tuple calculus) 240 выражение (expression) 241 — подстановка (substitution) 310 Кортежи соединимые (joinable) 28 полностью (completely) 29 Листья (leaves) 295 Литерал (literal) 517 Мир двустрочных отношений (the world of two-tuple relations) 478 Множеств базис минимальный разъединенный (minimal disjoint set basis ofS) 143 Множества атрибутов эквивалентные (eguivalent) 87 — внешность (exterior) 58 — операторов ограничение (restricting the set of operators) 45 — эквивалентные (equivalent) CF-зависимостей (compound functional dependency) 97 Множество бесконфликтное (conflict- free) 475 — возможных состояний (instance) — знаков сравнения (comparators) 39 — используемое (used) 60, 65 — каноническое (canonical) 86 — кольцевое (annular) 98 неизбыточное (nonredundant) 99 минимальное (minimum) 99 — кортежей конечное (finite set of tuples) 195 — левое перемещаемое (left shiftable) 99 — минимальное (minimum) 88 — навязанное (enforceable) 106, 216 неявно (indirectly) 131 — неизбыточное (nonredundant) 82 — неподвижных точек (fixed points) 212 — оптимальное (optimal) 96 — полностью зависимое (fully dependent) 109 — представляющее (representation set) 190 — редуцированное (reduced) 99 слева (left-reduced) 84 справа (right-reduced) 84 — сочленения (articulation set) 441 — строк сопровождающее (companion set) 325 построение (construction) 328 — ссылок (mention set) 236, 572 — характеристическое (characteristic) 97 естественное (natural) 97 — частично зависимое (partially dependent) 109 Модифицированное ограничение на чужой ключ (modified foreign key constraint) 411 Накрытие (folding) 343 Нарушение сильное (hard violation) 371 — слабое (soft violation) 371 Неопределенности (nulls) 361 Нормальная форма Бойса—Кодда [НФБК] (Boyce—Codd normal form) 129 вторая [2НФ] (second) 110 дизъюнктивная [ДНФ] (disjunctive) 518 конъюнктивная [КНФ] (conjunctive) 306 первая [1НФ] (first) 106 третья [ЗНФ] (third) 111 четвертая [4НФ] (fourth) 146 плотная [плотная 4НФ] (tight) 433 LTK (LTKNF) 128 Ρ J (PJNF) 151 Обобщение соединения Заниоло (Za- niolo generalization of join) 383 — у естественное (faithful) 380 точное (precise) 380 Обработка первичная (instatiation) 308 Образ покомпонентный (componentwise image) 202 — Ρ определенный R (image of P under R) 200 R прямой (direct) 200 Ограничение зависимости (restriction) 216, 513, 514
Предметный указатель 601 — существования (existence constraint) 362, 376 Ограничений сохранение (constraint containment) 205 Окно (window) 402 Оператор адекватный (adequate operator) 380 — выбора (select) 22 расширение (extention) 40—41 — деления (divide) 33—34 — ограниченный (restricted) 381 — переименования (renaming) 36 — проекции' (project) 24 — расщепления (split) 46 — соединения (join) 27 — фактор (factor) 46—48 — эквисоединения (equijoin) 37—39 — θ-соединения (theta-join) 41—42 Операции булевы (Boolean operations) 20—22 — обновления (update) 14—17 Операция добавление (ADD) 15 — изменение (СН) 17 — удаление (DEL) 16 Определяемость прямая (direct determination) 89 Ослабление (weakening) 500 Отношение (relation) 11 — вычисляемое (computed) 523 — допустимое (permissible) 368 — разложимое без потерь (decomposed losslessly) 30 — слабоуниверсальное (weak instance) 407 — трансформационное (transformation) 175 — С-слабоуниверсальное (C-weak instance) 408 Отношений фрагменты (fragments) 351 Отношения базовые (base) 289 — виртуальные (virtual) 289 — дополнение (complement) 20 активное (active) 20 — допустимое пополнение (permissible completion) 368 — постоянные (constant) 34—35 — произвольные (arbitrary) 498 — равносильные (equally strong) 378 — разделенные (partitioned) 398 — схема (scheme) 10 — табличные (tabular) 523 Отображение включения (containment mapping) 166, 320 — проекции (project) 200 — «проекция-соединение» (project-join mapping) 156 — соединения (join mapping) 200 Отображения неподвижная точка (fixed-point) 156 Переменные выделенные (distinguished variables) 158 — невыделенные (nondistinguished) 158 Поглощение (subsumption) 164, 322 — редукция (reduced by subsumption) 164 Подгиперграф (subhypergraph) 439 Подмножество максимальное (maximal subset) 58 — сохраняющее (preserved set) 212 Подстановка (substitution) 256 — кортежей (substitute tuples) 241 Подтабло (subtableau) 323 Подчиненность (obey) 106 Покрытие (cover) 80, 97, 161, 322 — неизбыточное (nonredundant) 82 Полусоединение (semijoin) 347 Полусоединений последовательность (semijoin program) 349 Пополнение (augmentation) 500 Пополнение (completion) 188, 373 — частичное (augment) 372 Правило заполнения помеченных неопределенных значений (fill-in rule for marked nulls) 371 Предположение об универсальной реляционной схеме (universal relation scheme assumption) 397 универсальном отношении (universal instance assumption) 396 Представление (representation) 105 Представления единственность (unique representation) 203 Применимость (apply) 105 Принцип замены неопределенностей (null substitution principle) 365 Прогонка Τ по С (chase of T under С) 174 над С (chasing T with С) 503, 511 Прогонки этап (stage) 504 Программа максимальной редукции (maximal reducer) 474 — полусоединения полная (complete semijoin program) 457 Прообраз (preimage) 205 Пустышка (paleholder) 398 Путь (path) 438 — бесхордовый (chordless) 474 Разложение на независимые компоненты (decomposition into independent components) 203
602 Предметный указатель — сохраняющее информацию (information preserving) 204 Расширение минимальное (minimal ех- tention) 378 — по отношению к F (extension chase with respect to F) j*36 — тесное (close) 378 Ребро простое (simple edge) 315 Редукция (reduction) 438 — полная (full) 349, 350 Резюме (summary) 267 Реляционная алгебра (relational algebra) 43 с дополнением (with complement) 44 — база данных (database) 104, 407 Реляционное исчисление доменов (do- ' main sglational calculus) 229 кортежей (tuple) 229 Свойство квазистягиваемости пересече-' ний (running intersection property) 445 — роста соединений (increasing join) 437 — соединения без потерь (lossless join) 206 — S 210 Символ атрибута см. Атрибут — парный (matched symbol) 270 Символы 267 Система замещений (replacement system) 176 конечная (finite) 176 — обновления (update) 229 — Чёрча—Россера конечная (finite Church—Rosser) 176 Согласованность в целом (totally consistent) 434 — попарная (pairwise) 434 Соединение (join) 32, 39 — без потерь (lossless) 125 — расширения (extension) 33δ Соединения план (plan) 435 монотонный (monotone) 436 — результат (result) 28 — условие (condition) 207 Состояния возможные (instances) 129 Сохранение (preserving) 209 Строка определенная (definite tuple) 363 — парная (matched row) 270 — полная (total tuple) 363 — пополняющая (completion) 363 частично (augments) 363 — расширяющая (extension) 363 частично (subsumes) 363 — стабильная (stabilized row) 511 — частичная (partial tuple) 363^ Строка-допущение (hypothesis) 487, 506 Строка-заключение (conclusion) 487, 506 Строки возможные (maybe tuples) 398 — действительные (sure) 398 — согласованные (agree) 370 — сравнимые (compatible) 393 Суперключ (superkey) 14, 103 Схема максимальная (maximal) 425 — независимая (independent) 413 — отношения см. Отношения схема — реляционной базы данных (relational database) 104 ациклическая (acyclic) 442 естественная (intended) 225 полная (complete) 118 — фрагментации (fragmentation) 352 допустимая (valid) 352 Схемы расширение (extention) 458 — эквивалентные по данным (data- equivalent) 212 Табличная форма (skeleton) 555 Табло (tableau) 158 — включающее F-зависимость (embedded an FD) 223 множество F-зависимостей 223 — включение (containment) 319 — запроса присвоение значения (valuation of a tableau query) 268 размеченное (tagged) 278 — запросов (query) 267 простые (simple) 323 набор (set) 280 значение (value) 280 — минимальное (minimum) 322 — несократимый набор (nonredundant) 342 — ограниченного выражения (expression tableau query) 355 — оценка (valuation) 159 — порождающая последовательность (generating sequence) 174 — правила преобразования (transformation rules) 170 — предел последовательности (limit) 504, 5U — применимое (applied) 270 — совместимые (compatible) 280 — строки (rows) 158 заменяемые (superseded) 196 — схема (scheme) 158 — »квивалентные (equivalent) 161, 168, 319 — С-минимальные (C-minimum) 333
Предметный указатель 603 Тип переменной (type) 236 Точки зрения (views) 289 Удовлетворимость (satisfying) 105 Узлы см. Вершины — внутренние (interior) 295 Универсум (universum) 43 Условие вложения для окон (containment condition for windows) 402 — вхождения аспектов (containment condition on objects) 400 — естественности (faithfulness) 404 строгой (strong) 419 — исключения (elimination requirement) 352 — независимости компонент (independent component condition) 203 — соединения (join) 207 — сохранения информации (information preservation) 205 — уникальности (uniqueness) 413 Формулы исчисления доменов (domain calculus formulas) 264 — построенные из атомов (formulas from atoms) 236 — разрешенные (legal) 238 Функция возможных расширений (pos· sibility function) 362, 377 замкнутая (closed) 378 разумная (reasonable) 378 Характеризуемость полная (completely characterize) 105 Эквивалентность (equivalence) 161, 230f 319, 341 Элемент терминальный (irreducible object) 176 Ярлык (tag) 278
ОГЛАВЛЕНИЕ Предисловие редактора перевода 5 Предисловие 7 Глава 1. Отношения и схемы отношений 9 1.2. Суть проблемы 9 1.2. Формализация отношений 10 1.3. Ключи 13 1.4. Обновление отношений . . ^ 14 1.5. Упражнения 18 1.6. Библиография и комментарии 19 Глава 2. Реляционные операторы 20 2.1. Булевы операции 20 2.2. Оператор выбора 22 2.3. Оператор проекции 24 2.4. Оператор соединения 25 2.5. Свойства соединения 27 '2.6. Упражнения 31 2.7. Библиография и комментарии 32 Глава 3. Другие операции на отношениях 33 3.1. Оператор деления 33 3.2. Постоянные отношения . . . , 34 3.3. Переименование атрибутов 35 3.4. Оператор эквисоединения 37 3.5. Расширения для других сравнений на доменах 39 3.5.1. Расширение выбора 40 3.5.2. Оператор θ-соединения 41 3.6. Реляционная алгебра 42 3.6.1. Алгебраические выражения как отображения .... 44 3.6.2. Ограничение множества операторов 45 3.7. Оператор расщепления 46 3.8. Оператор фактор '. 46 3.9. Упражнения 48 3.10. Библиография и комментарии 49
Оглавление 605 Глава 4. Функциональные зависимости 50 4.1. Определение 50 4.2. Аксиомы вывода 53 4.3. Применение аксиом вывода 56 4.4. Полнота системы аксиом вывода 57 4.5. Выводы и направленные ациклические графы вывода . . . . 59 4.5.1. RAP-последовательности вывода 61 4.5.2. Ориентированные ациклические графы вывода . . . . 64 4.5.3. Еще о DDA-графах '.'..'. 69 4.6. Проверка принадлежности к F+ 71 4.7. Упражнения . . . 78 4.8. Библиография и комментарии 79 Глава 5. Покрытия функциональных зависимостей 80 5.1. Покрытия и эквивалентность 80 5.2. Неизбыточные покрытия 82 5.3. Посторонние атрибуты 83 5.4. Канонические покрытия 86 5.5. Структура неизбыточных покрытий 87 5.6. Минимальные покрытия 88 5.6.1. Явная определяемое^ 89 5.6.2. Вычисление минимальных покрытий 94 5.7. Оптимальные покрытия 96 5.8. Кольцевые покрытия и составные функциональные зависимости 96 5.9. Упражнения 100 5.10. Библиография и комментарии 102 Глава 6. Базы данных и нормальные формы 103 6.1. Базы данных и схемы баз данных 104 6.2. Нормальные формы для баз данных 106 6.2.1. Первая нормальная форма 106 6.2.2. Аномалии и избыточность данных 108 6.2.3. Вторая нормальная форма 109 6.2.4. Третья нормальная форма НО 6.3. Нормализация через декомпозицию 112 6.4. Недостатки нормализации посредством декомпозиции. ... 115 6.5. Нормализация посредством синтеза 117 6.5.1. Предварительные результаты для алгоритма синтеза 119 6.5.2. Построение алгоритма синтеза 119 6.5.3. Корректность и другие свойства алгоритма синтеза 121 6.5.4. Улучшения алгоритма синтеза 124 6.6. Устранимые атрибуты 126 6.7. Нормальная форма Бойса—Кодда (НФБК) 128 6.7.1. Проблемы НФБК 130 6.8. Упражнения 130 6.9. Библиография и комментарии 132 Глава 7. Многозначные зависимости, зависимости соединения и нормальные формы 133 7.1. Многозначные зависимости 134 7.2. Свойства многозначных зависимостей 136 7.3. Многозначные и функциональные зависимости 138 7.4. Аксиомы вывода для многозначных зависимостей 139 7.4.1. Одни многозначные зависимости 139 7.4.2. Функциональные и многозначные зависимости 142 7.4.3. Полнота системы аксиом и связанные с ними задачи 143
606 Оглавление 7.5. Четвертая нормальная форма 145 7.6. Четвертая нормальная форма и реализация зависимостей ... 147 7.7. Зависимости соединения 148 7.8. Нормальная форма вида «проекция-соединение» 150 7.9. Встроенные зависимости соединения 152 7.10. Упражнения 153 7.11. Библиография и комментарии 154 Глава 8. Отображения «проекция-соединение», табло и прогонка. 156 8.1. Отображения «проекция-соединение» 156 8.2. Табло 158 8.2.1. Табло как отображения 159 8.2.2. Представление Ρ J-отображения в виде табло ' 160 8.3. Эквивалентность табло и эквивалентность схем 161 8.4. Отображения вложения 165 8.5. Эквивалентность при наличии ограничений 168 8.5.1. F-правила 170 8.5.2. J-правила 171 8.6. Алгоритм прогонки (chase) 172 8.6.1. Свойство конечности Чёрча—Россера 175 8.6.2. Эквивалентность табло при ограничениях 181 8.6.3. Проверка выводимости зависимостей соединения .... 182 8.6.4. Проверка выводимости функциональных зависимостей 183 8.6.5. Вычисление базиса зависимостей - 186 8.7. Табло как шаблон 188 8.8. Сложность вычислений по методу прогонки 192 8.9. Упражнения 195 8.10. Библиография и комментарии 198 Глава 9. Теория представлений 199 9.1. Понятие адекватного представления 199 9.2. Эквивалентность по данным схем баз данных 211 9.3. Проверка на адекватность представления и на эквивалентность при наличии ограничений 214 9.3.1. Случай, когда Ρ определяется только функциональными зависимостями 215 9.3.2. Случай, когда Ρ определяется функциональными и многозначными зависимостями 219 9.3.3. Проверка эквивалентности по данным 222 9.4. Упражнения '. . . 226 9.5. Библиография и комментарии . . . 228 Глава 10. Системы запросов 229 10.1. Эквивалентность и полнота 230 10.2. Реляционное исчисление кортежей 232 10.2.1. Формулы исчисления кортежей 234 10.2.2. Типы; свободное и связанное вхождения 236 10.2.3. Выражения и исчисления кортежей: 240 10.3. Сведение реляционной алгебры с дополнением к реляционному исчислению кортежей 246 10.4. Ограниченная интерпретация формул исчисления кортежей 248 10.4.1. Сведение реляционной алгебры к исчислению кортежей при ограниченной интерпретации 251 10.4.2. «Безопасные» выражения исчисления кортежей . . . 251 10.5. Реляционное исчисление доменов 254 10.6. Сведение исчисления кортежей к исчислению доменов .... 259
Оглавление 607 10.7. Сведение исчисления доменов к реляционной алгебре 261 10.8. Табло запросов 265 10.8.1. Табло запросов для одного отношения 266 10.8.2. Табло запросов для ограниченных алгебраических выражений 272 10.8.3. Табло запросов, которые получаются из алгебраических выражений 276 10.8.4. Табло запросов к базам данных, состоящих из нескольких отношений 278 10.8.5. Наборы табло запросов 279 10.9. Конъюнктивные запросы 281 10.10. Упражнения 282 10.11. Библиография и комментарии 287 Глава И. Модификация запросов 288 11.1. Уровни информированности при модификации запросов . . . . 293 11.2. Упрощения и повторяющиеся подвыражения в алгебраических выражениях 295 11.3. Оптимизация алгебраических выражений 299 11.4. Декомпозиция запросов 305 11.4.1. Первичная обработка 308 11.4.2. Итерация 310 11.4.3. Алгоритм декомпозиции запроса 311 11.5. Оптимизация табло запросов 319 11.5.1. Эквивалентность табло запросов 319 11.5.2. Простые табло запросов 323 11.5.3. Эквивалентность при наличии ограничений 331 11.5.4. Обобщение на базы данных из нескольких отношений . . 334 11.5.5. Эквивалентность наборов табло запросов 341 11.6. Оптимизация конъюнктивных запросов 343 11.7. Модификация запросов в распределенных базах данных . . . 346 11.7.1. Полусоединение 347 11.7.2. Фрагменты отношений 351 11.8. Упражнения 353 11.9. Библиография и комментарии 358 Глава 12. Неопределенные значения, неоднородная информация и семантика баз данных 360 12.1. Неопределенные значения 362 12.2. Функциональные зависимости и неопределенные значения . . . 367 12.3. Ограничения на неопределенные значения 376 12.4. Реляционная алгебра и частичные отношения 377 12.4.1. Функции возможных расширений 377 12.4.2. Обобщение реляционных операторов 380 12.4.3. Примеры функций возможных расширений .... 384 12.5. Неоднородная информация и семантика баз данных 395 12.5.1. Предположения об универсальном отношении. . . . 396 12.5.2. Пустышки и отношения на подсхемах 398 12.5.3. Семантика баз данных и W-функции 400 12.5.4. W-функция, основанная на соединениях 404 12.5.5. Слабоуниверсальные отношения 406 12.5.6. Независимость 412 12.5.7. Другие условия на W-функции 417 12.6. Упражнения 422 12.7. Библиография и комментарии 426
608 Оглавление Глава 13. Ациклические схемы баз данных 428 13.1. Некоторые свойства схем баз данных 428 13.1.1. Существование программы полной редукции 428 13.1.2. Эквивалентность зависимости соединения множеству многозначных зависимостей 431 13.1.3. Единственность декомпозиции в 4НФ 432 13.1.4. Попарная согласованность влечет за собой согласованность в целом 433 13.1.5. Малые промежуточные соединения 434 13.2. Синтаксические условия на схемы баз данных 437 13.2.1. Ациклические гиперграфы 437 13.2.2. Деревья соединений 442 13.2.3. Свойство квазистягиваемости пересечений ·. 445 13.3. Эквивалентность условий 445 13.3.1. Редуктивный алгоритм Грэхема 445 13.3.2. Отыскание деревьев соединений 447 13.3.3. Теорема эквивалентности для ациклических схем. . 449 13.3.4. Заключительные замечания 471 13.4. Упражнения 471 13.5. Библиография и комментарии 475 Глава 14. Дополнительные вопросы 477 14.1. Логика и зависимости между данными 477 14.1.1. Мир двустрочных отношений 478 14.1.2. Эквивалентность импликаций для формул и функциональных зависимостей 480 14.1.3. Добавление многозначных зависимостей 480 14.1.4. Невозможность обобщения результатов 484 14.2. Другие зависимости между данными 485 14.2.1. Табличные зависимости 487 14.2.2. Примеры и контрпримеры табличных зависимостей 490 14.2.3. Графическое представление табличных зависимостей 492 14.2.4. Проверка логической выводимости табличных зависимостей 497 14.2.5. Обобщенные функциональные зависимости 505 14.2.6. Замкнутость классов выполнимости относительно проекции 512 14.3. Некоторые границы реляционной алгебры 14.4. Вычисляемые отношения 521 14.4.1. Пример 521 14.4.2. Проверка выражений, содержащих вычисляемые отношения I 524 14.5. Упражнения 531 14.6. Библиография и комментарии 535 Глава 15. Реляционные языки запросов 537 15.1. ISBL 539 15.2. QUEL 543 15.3. SQL 548 15.4. QBE 554 15.5. PIQUE 570 15.6. Библиография и комментарии 578 Литература 579 Предметный указатель 598
д. τ ι> ио χ ых e» тво In *