Введение в системы БД (542480), страница 54
Текст из файла (страница 54)
Если, с другой стороны, исходное отношение вр совсем не имеет кортежей, то нет и групп, а следовательно, нет и результирующих кортежей, т.е, результируюшее отношение также будет пустым. Однако приведенное ниже выражение, напротив, "будет работать" (т.е. будет возвращать корректное значение, а именно — нуль), даже если отношение вр пустое ~. ЯУИИАЕ12Е ЯР РЕЕ ЕЕЬАТЬОИ ( ТУРЬЕ ( ) ) АЯУ БУИ ( ОТУ ) йя УЕАНУТОТАЬ Точнее, зто выражение будет возврашать отношение с одним лишь атрибутом УЕАИУТОТАЬ и одним кортежем, в котором значение УЕАНУТОТАЬ будет равно нулю. Поэтому автор предлагает разрешить опускать предложение РЕЕ в выражении БУИИАЕ12Е, как это сделано в следуюшем примере. БУИИАЕ12Е ЯР йУУ БУИ ( ()ТХ ) Ая ЯЕАИОТОТАЬ Подразумевается, что пропуск предложения РЕЕ эквивалентен определению этого предложения в следующей форме.
РЕЯ ЕЕЬйТ1ОМ ( ТУРЬЕ ( ) ) Транзитивное замыкание Операция транзитианого замыкания упоминается здесь, в основном, лля полноты изложения. Ее детальное обсуждение выходит за рамки данной ~лавы. Тем не менее мы дадим здесь определение этой операции. Пусть А — произвольное бинарное отношение с атрибутами Х и У, принадлежашими олному типу Т. Тогда транзитивным замыканием отношения й (что записывается как ТОЬОЯЕ А) называется отношение А, заголовок которого такой же, как заголовок отношения й, а тело является суперинолсестеот отношения й. Супермножество отношения А определяется следующим образом.
Кортеж ( Х:х, У:у ) принадлежит отношению А тогла и только тогда, когда он принадлежит отношению А или когда сушествует последовательность значений г1, г2, ..., гп (принадлежашихтипу Т), такая, что все кортежи ( Х:х, У:г1 ), ( Х:г1, У:г2 ), ( Х:гп, У:у ) принадлежат отношению А. Иначе говоря, кортеж (х,у) принадлежит отношению А' только тогда, когда (нестрого говоря) в представляюшем отношение А графе есть линия, соединяюшая точку х с точкой у. Обратите внимание на то, что тело отношения А всегда содержится в теле отношения й как подмножество. Обсуждение этого вопроса будет продолжено в главе 23.
6 Выразсение ВЕЬАТ10И [ ТУРЬЕ [ ) ) в предложении РЕВ этого прииеро обозначает отношение (в дейстаительностн единственное и сеоеи роде отношение), которое не ииеет апэрибутое, но ииеет один корпэеж (а имении — У-кортеж]. Это отражение лтжно сокрашении называть ТАВ1Е УЕЕ[З.З], [5.5], [62]. гг1 Глава 6. Реляционная алгебра б.8. Группирование и разгруппирование Поскольку значениями атрибутов отношений могут быть другие отношения, было бы желательным наличие дополнительных реляционных операторов, называемых операторами группирования и разгруппирования [3.3).
Рассмотрим сначала пример операции группирования. БР 6ЕООР ( Р(, ОТУ ) йБ РО Результат выполнения этого выражения будет выглядеть так, как показано на рис. 6.12. Замечание. Этот рисунок наверняка будет очень полезен при разборе последующих пояснений, поскольку они, к сожалению (но неизбежно), несколько абстрактны. Рис. б.
12. Группирование отноигения ЯР по атрибуту БР Начнем с того, что исходное выражение БР 6КООР ( Р(), ЦТУ ) йБ РЦ можно прочесть как "сгруппировать отношение БР по атрибуту Б()'", поскольку атрибут Б( является единственным атрибутом отношения БР, не упомянутым в предложении 6ЕООР. В результате получится отношение, заголовок которого выглядит так. ( Б( Я(), РО КЕЕйТ1ОХ ( Р() Р(), ЯТУ ОТУ ) 222 Часть П. Реляционная лгодель Другими словами, он состоит из атрибута Рц, принимающего в качестве значений отношения (РЯ, в свою очередь, имеет атрибуты Р$ и ()ТХ), а также из всех остальных атрибутов отношения БР (в нашем случае "все остальные атрибуты" — это атрибут Б$). Тело этого отношения содержит ровно по одному кортежу для всех различных значений атрибута Я$ исходного отношения ЯР (и никаких других кортежей).
Каждый кортеж в теле содержит соответствующее значение атрибута Я$ (обозначим его через в), а также значение атрибута Р() (обозначим его через рп), полученное следующим образом. ° Каждый кортеж отношения ЯР концептуально заменяется кортежем (обозначим его через х), в котором компоненты Р$ и ЯТХ как бы "упакованы" в один компонент, принимающий в качестве значений кортежи (обозначим его через у). ° Компоненты у всех кортежей х, значение Я1 которых равно а, "группируются" в отношение рп, и таким образом получается результирующий кортеж, в котором значение Б$ равно в, а значение РЦ равно рг). Окончательный результат будет выглядеть так, как показано на рис.
6.12. ° Перейдем теперь к операции разгруппирования. Пусть ЯР() — это отношение, показанное на рис. 6.12. Тогда выражение ЯРО БНЯЯОБР Рб возвращает нас к отношению БР (как и следовало ожидать). Точнее, оно выдает в качестве результата отношение, заголовок которого выглядит так. ( Я$ Я$, Р(( Р$, ОТХ БТХ ) Иными словами, его заголовок состоит из атрибутов РР и 0ТХ (полученных из атрибута Рц), а также из всех остальных атрибутов отношения ЯРО (в нашем случае это только атрибут Я$).
Тело полученного отношения содержит ровно по одному кортежу для каждой комбинации кортежа отношения ЯР() с кортежем значения Р(), являющегося элементом кортежа БРО (других кортежей в нем нет). Каждый такой кортеж содержит соответствующее значение атрибута БР (обозначим его через а), а также значения атрибутов Р$ и ()ТХ (обозначим их через р и о), которые получены следующим образом. ° Каждый кортеж отношения БР0 мысленно заменяется множеством кортежей, которое содержит по одному кортежу (обозначим его через х) для каждого кортежа из значения Ро.
Каждый кортеж х содержит компонент Б$ (обозначим его через в), равный компоненту Я$ рассматриваемого кортежа ЯРО, а также компонент (обозначим его через у), равный некоторому кортежу из компонента Р0 рассматриваемого кортежа ЯРД. ° Компоненты у каждого такого кортежа х, значение ББ которых равно в, "разворачиваются" в отдельные компоненты Р$ и ()ТХ (обозначим их через р и о). В результате получается кортеж, значение компонента Б3 которого равно в, значение компонента Р$ равно р и значение компонента ()ТХ равно о. Таким образом, в результате разгруппирования получилось отношение БР.
° Глава б. Реляционная алгебра Операторы СКООР и ОНСКООР иначе называют средствами "вложения" и "извлечения" отношений. Однако мы предпочитаем использовать термины "группирование" и "разгруппирование", поскольку термины "вложение" и "извлечение" тесно связаны с )ЧГ -отношениями — концепцией, которую мы считаем противоречивой и которая здесь з не рассматривается. Для полноты в завершение этого раздела сделаем несколько замечаний относительно обратимости операций группирования и разгруппирования (эти замечания, возможно, булуг не совсем понятными при первом чтении). Итак, если определенным образом сгруппировать некоторое отношение г, то всегда будет существовать обратная операция разгруппирования, позволяющая вернуться к отношению г.
Однако если сначала разгруппировать некоторое отношение г, то обратная операция группировання, возвращающая нас к отношению г, будет существовать не всегда. Приведем один пример (он основан на примере из статьи (5.41). Предположим, что сначала выполняется разгруппирование отношения ТНО (рис. 6.13) с получением в качестве результата отношения ТНКЕЕ. Теперь, если сгруппировать отношение ТНКЕЕ по атрибуту А, в результате получится не отношение ТНО, а отношение ОЫЕ. Рис 6.!3.
Операции разгруппирования и группировония необязательно являются обра- тимыми Обратите внимание на то, что в отношении ОНЕ атрибут КЧХ (обязательно) функционально зависит от А, задавая тем самым потенциальный ключ (подробности приводятся в главах 8 и 9). Если теперь разгруппировать отношение ОНЕ, можно снова вернуться к отношению ТНКЕЕ. а отношение ТНКЕЕ, очевидно, может быть сгруппировано так, чтобы в результате получилось отношение ОНЕ.
Таким образом, для этой пары отношений операции группирования и разгруппирования действительно являются обратными. В общем случае решающим моментом в вопросе обратимости операции разгруппирования является функциональная зависимость. В действительности для отношения г с атрибутом КЧХ, принимающим в качестве значений отношения, операция разгруппирования (относительно атрибута КЧХ) обратима тогда и только тогда, когда выполнены два следующих условия. ° Ни один кортеж отношения г не принимает в качестве значения атрибута КЧХ пус- тое отношение. 224 Часть П. Реляционная модель ° Атрибут ВЧХ функционально зависит от комбинации всех остальных атрибутов отношения г.
Иначе говоря, у отношения г должен быть потенциальный ключ, не содержащий атрибут ВЧХ как компонентов. 6.9. Реляционные сравнения Реляционная алгебра в том виде, в котором она была изначально определена, не поддерживает прямого сравнения двух отношений (например, проверки их равенства или того, является ли одно из них подмножеством другого). Одно из следствий данного упущения состоит в том, что некоторые запросы выражаются весьма неуклюже (примером может служить упр.
6.48). Однако это упущение легко исправить. Сначала определим новый вид условия — реляционное сравнение — со следующим синтаксисом. <реляцяояное виражеяие> О <реляцвоннов вираженив> Здесь параметр <реляционное яиражение> — это в обоих случаях выражения реляционной алгебры, представляющие совместимые по типу отношения, а символ Π— это олин нз следующих операторов сравнения. Равно Не равно Подмножество Собственное подмножество Супермножество Собственное супермножество Замечание. Возможно, выбор обозначений операторов не совсем удачен, так как отрицание утверждения "й — собственное подмножество В" не является утверждением ?й — супермножество В" (т.е. условия "<" и ">" не противоположны).
Однако по техническим причинам в этой книге используются именно такие обозначения. Приведем примеры. 1. Я ( С1ТУ ) = Р ( С1ТУ ) Смысл выражения. Совпадает лн проекция отношения поставщиков Я по атрибуту С1ТУ с проекцией отношения деталей Р по атрибуту С1ТТ? 2. Я ( Я)) ) > ЯР ( Я() ) Смысл выражения (несколько перефразнровано). Есть ли поставщики, вообще не поставляющие деталей? Теперь можно разрешить использование этих новых видов условий в реляционных выражениях, как, например, показано ниже. Я ННЕВЕ ( ( ЯР ВЕВййЕ Я() йЯ Х ) ВНЕВЕ Х = Я)) ) ( Р)) ) = Р ( Р)) При вычислении этого выражения получаем отношение, содержащее кортежи лля поставщиков всех типов деталей.