Введение в системы БД (542480), страница 55
Текст из файла (страница 55)
225 Глава 6. Реляционная алгебра Пояснение ° Для заданного поставщика выражение ( ( БР КЕИАНЕ Я№ АЯ Х ) ИНЕКЕ Х = Б№ ) ( Р№ ) дает множество номеров деталей, поставляемых этим поставщиком. ° Затем это множество номеров деталей сравнивается с множеством всех номеров деталей. Если эти два множества совпадают, то соответствующий кортеж поставщика заносится в результат. Этот запрос можно также сформулировать по-другому. Я 101И ( Я ( Я№ ) 01Ч10ЕВУ Р ( Р№ ) РЕК БР ( Я№, Р№ ] ) Однако вариант с реляционным сравнением кажется более простым для восприятия.
Тем не менее следует прояснить один важный вопрос: реляционные сравнения не являются условиями выборки (этот термин был определен в разделе 6.4.), а приведенный выше пример, включающий подобное сравнение, вообще не является настоящей операцией выборки! Это, скорее, сокращение для выражения, подобного следующему.
ИТТН ( ЕХТЕИ0 Я А00 ( ( БР КЕНАМЕ Б№ АЯ Х ) ИНЕКЕ Х = Я№ ) ( Р№ ) АБ А ) АБ Т1, ( ЕХТЕИВ Т1 А00 Р ( Р№ ) АБ В ) АЯ тг : Т2 ИНЕКЕ А = В Здесь А и  — атрибуты, принимающие в качестве значений отношения, а последнее выражение Т2 ИНЕКЕ А=В теперь является типичным условием выборки. Замечание. Из всего сказанного следует, что для поддержки реляционных сравнений требуется по меньшей мере поддержка атрибутов, принимающих в качестве значений отношения. На практике часто требуется определить, является ли данное отношение пустым (т.е. не содержащим ни одного кортежа). Поэтому имеет смысл ввести соответствующее сокращение. Определим соответствующий оператор, возвращающий логическое значение. 1Я ЕИРТУ ( <реляцноннов вираленле> ) Этот оператор возвращает значение истина, если вычисленное значение параметра <рвляцнонное внрвленне> оказывается пустым, и значение ложь в противном случае.
Не менее часто требуется проверить, присутствует ли данный кортеж Г в данном отношении г. Для этой цели подойдет слелуюшее реляционное сравнение. КЕВАТ10И ( Г ) < г Однако, с точки зрения пользователя, удобнее применять следующее сокращение (знакомое читателям, знающим язык ЯОЕ), которое, безусловно, покажется ему более дружественным. Г 1И г Здесь ключевое слово 1И заменяет оператор принадлежности множеству, обычно обозначаемый с им волом ц . Чисть 11. Реляционная модель 6.10.
Резюме Данная глава посвящена реляционной алгебре. В ее начале обсуждается важность реляционной замкнутости и допущения вложенности реляционных выражений; затем выясняется, что при серьезном подходе к понятию замкнутости необходимо иметь правила наследования типа отношения (разумеется, наша версия алгебры включает в себя эти правила).
Начальный вариант реляционной алгебры определяет восемь операторов: традиционный набор операторов обработки множеств (объединение, пересечение, вычитание и произведение, причем каждая из этих операций была некоторым образом модифицирована, поскольку реляционные операторы применимы не к произвольным множествам, а к отношениям специального вида) и набор специальнгах реляционных операторов (выборки, проекции, соединения и деления). К этому изначальному набору операторов мы добавили операторы НЕНВНЕ (переименование), ЯЕИ1Н01М (полусоединение), ЯЕН1Н1МНЯ (полувычитание), ЕХТЕМО (расширение) и ЯННМВЕ1ЕЕ (обобщение). Также были рассмотрены оператор ТСЬОЯЕ (транзитивное замыкание) и вкратце — операторы ОВООР (группированне) и ННОВОНР (разгруппирование). Некоторые из них требуют, чтобы два отношения были совместимы по типу (ранее такие отношения назывались "совместимыми для объединения" ).
Здесь же подчеркивалось, что ие все упомянутые выше операторы примитивны (одни из них можно определить посредством других). Далее было показано, как эти операторы можно комбинировать в выражения, используемые для различных целей: выполнения выборки, обновления и других операций. Также кратко обсуждалась идея преобразования записываемых выражений для их оптимизации (подробнее эта идея будет обсуждаться в главе ! 7). Дополнительно рассматривалась возможность пошагового подхода при построении сложных запросов с использованием предложения Н1ТН, позволяющего ввести новые имена для отдельных выражений. И наконец, обсуждалась идея реляционных сравнений, которые часто упрощают формулирование запросов (например, таких, которые в противном случае требовали бы использования оператора 01Ч10ЕВТ). Упражнения 6.1. Выше упоминалось, что операции объединения, пересечения, произведения и естественного соединения обладают свойством коммутативности и ассоциативности.
Проверьте справедливость этих утверждений. 6.2. В предложенном Коддом первоначальном наборе из восьми операций пять (объединение, вычитание, произведение, выборка и проекция) можно рассматривать как примитивные. Дайте определение операций естественного соединения, пересечения и (что значительно сложнее) деления в терминах этих примитивных операций.
6.3. Рассмотрим выражение Л 101М В. Если заголовки отношений Л и В не пересекаются (т.е, в заголовках нет общих атрибутов), то это выражение эквивалентно выражению В Т1НЕБ В. А какому выражению оно будет эквивалентно, если заголовки отношений будут одинаковы? 6.4. Покажите, что пять примитивных операторов, упомянутых в упр. 6.2, действительно примитивны, т.е. что никакой из них нельзя выразить через четыре остальных. 227 Глава 6. Реляционная алеебра 6.5. В обычной арифметике умножение и деление — взаимообратные операции. Являются ли взанмообратными операции Т1МЕЯ и 01010ЕВХ в реляционной алгебре? 6.6. Пусть дана обычная база данных поставщиков и деталей.
Чему в этом случае будет равно выражение Я 501Ы ЯР 101Н Р? (Предосглережение. Здесь есть ловушка!) 6.7. Пусть А — отношение степени и. Сколько существует различных проекций отношения А? 6.8. В обычной арифметике существует специальное число 1, обладающее для любого числа л следующим свойством. п'1=1"п=п Мы говорим, что число ! является тождественным элементом по отношению к операции умножения. Существует ли отношение, обладающее аналогичными единице свойствами, но в реляционной алгебре? Если существует, то какое? 6.9. В обычной арифметике существует специальное число 0, обладающее для любого числа л следующим свойством.
в*0=0"п=0 Существует ли отношение, обладающее аналогичными нулю свойствами, но в реляционной алгебре? Если существует, то какое? 6.10. Выясните, как ведут себя описанные в этой главе алгебраические операции в случае их применения к отношениям, представляющим собой ответы к двум предыдущим упражнениям. 6.11. В разделе 6.2 говорилось, что реляционное свойство замкнутости так же важно, как и арифметическое свойство замкнутости.
Однако в арифметике существует одна неприятная ситуация, в которой свойство замкнутости нарушается, а именно— деление на нуль. Существует ли аналогичная ситуация в реляционной алгебре? 6.12. Операции объединения, пересечения, произведения и соединения были определены как бинарные операции (т.е. действующие на двух операндах). Тем не менее в этой главе мы показали, как их можно расширить до и-арных для любого л>1. Таким образом, выражение А 0810Н В 08108 С можно однозначно назвать тройным объедине.
нием отношений А, В и С. А что можно сказать в случае, когда л=1 или п=0? Упражнения по составлению запросов В основу всех остальных упражнений положена база данных поставщиков, деталей и проектов (см. рис. 4.5 в главе 4 и ответ к упр. 5.4 в главе 5). В каждом упражнении вам предлагается по словесному описанию запроса составить соответствующее алгебраическое выражение. (В качестве интересной вариации можно предложить предварительно обратиться к ответам к некоторым упражнениям и попытаться составить по ним словесное описание задания соответствующих упражнений.) Для удобства ниже повторно приводится (в общих чертах) структура используемой базы данных. Я ( Я$, ЯНАМЕ, ЯТАТОЯ, С1ТХ ) РН1МАВХ КЕХ ( Я1 Р ( Р1, РНАМЕ, СОЬОВ, ИЕ10НТ, С1ТХ ) РНХМАНХ КЕХ ( Р1 ) 228 Часть П. Реляционная модель 6.23. 6.24.
6.25. 6.26. 6.27. Определить общее число проектов, детали лля которых поставляются поставщиком с номером '81'. 6.28. Определить общее количество деталей с номером 'Р1', поставляемых поставщиком с номером 'Я1'. 6.29. Для каждой детали, поставляемой для проекта, выбрать номер детали, номер проекта и соответствующее общее количество.
6.30. Выбрать номера деталей, поставляемых для некоторого проекта, со средним количеством, составляющим более 350 штук. 229 Глава б. Реляционная алгебра 6.13. 6.14. 6.15. 6.16. 6.17. 6.18. 6.19. 6.20. 6.21. 6.22. ( И, ЛКЕЕ, 6171 РК1ИЫУ КЕУ ( 31 ЯРЮ ( Я1, Р1, 31, ОТХ ) РК1ИЛКХ КЕГ ( Я1, Р0, 3$ ) ГОКЕ168 КЕУ ( Я$ ) КЕГЕКЕЫСЕЯ Я ГОКЕ16И КЕУ ( Р1 ) КЕГЕКЕКСЕЯ Р ГОКЕ16Е КЕУ ( Ю$ ) КЕГЕКЕКСЕЯ 3 Выбрать полную информацию обо всех проектах. Выбрать полную информацию обо всех проектах в Лондоне. Выбрать номера поставщиков деталей лля проекта с номером '31'. Выбрать все поставки, в которых количество деталей находится в диапазоне от 300 до 750 штук включительно.
Найти все существующие сочетания вида "цвет детали — город, из которого поставляются детали". Замечание. Здесь и в последующих упражнениях слово "все" используется в значении "все, представленные в настоящий момент в базе данных", а не "все возможные". Найти все такие тройки значений "номер поставщика — номер детали — номер проекта", для которых указанные поставщик, деталь и проект находятся в одном городе. Найти все такие тройки значений "номер поставщика — номер детали — номер проекта", для которых указанные поставщик, деталь и проект не находятся в одном городе. Найти все такие тройки значений "номер поставщика — номер детали — номер проекта", для которых никакие нз двух указанных поставщиков, деталей и проектов не находятся в одном городе.