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

1 ... 63 64 65 [ 66 ] 67 68 69 ... 348


6.10. Резюме

Данная глава посвящена реляционной алгебре. В ее начале обсуждается важность реляционной замкнутости и допущения вложенности реляционных выражений; затем выясняется, что при серьезном подходе к понятию замкнутости необходимо иметь правила наследования типа отношения (разумеется, наша версия алгебры включает в себя эти правила).

Начальный вариант реляционной алгебры определяет восемь операторов: традиционный набор операторов обработки множеств (объединение, пересечение, вычитание и произведение, причем каждая из этих операций была некоторым образом модифицирована, поскольку реляционные операторы применимы не к произвольным множествам, а к отношениям специального вида) и набор специальных реляционных операторов (выборки, проекции, соединения и деления). К этому изначальному набору операторов мы добавили операторы RENAME (переименование), SEMIJOIN (полусоединение), SEMIMINUS (полувычитание), EXTEND (расширение) и SUMMARIZE (обобщение). Также были рассмотрены оператор TCLOSE (транзитивное замыкание) и вкратце - операторы GROUP (группирование) и UNGROUP (разгруппирование). Некоторые из них требуют, чтобы два отношения были совместимы по типу (ранее такие отношения назывались совместимыми для объединения ). Здесь же подчеркивалось, что не все упомянутые выше операторы примитивны (одни из них можно определить посредством других). Далее было показано, как эти операторы можно комбинировать в выражения, используемые для различных целей: выполнения выборки, обновления и других операций. Также кратко обсуждалась идея преобразования записываемых выражений для их оптимизации (подробнее эта идея будет обсуждаться в главе 17). Дополнительно рассматривалась возможность пошагового подхода при построении сложных запросов с использованием предложения WITH, позволяющего ввести новые имена для отдельных выражений. И наконец, обсуждалась идея реляционных сравнений, которые часто упрощают формулирование запросов (например, таких, которые в противном случае требовали бы использования оператора DIVIDEBY).

Упражнения

6.1. Выше упоминалось, что операции объединения, пересечения, произведения и естественного соединения обладают свойством коммутативности и ассоциативности. Проверьте справедливость этих утверждений.

6.2. В предложенном Коддом первоначальном наборе из восьми операций пять (объединение, вычитание, произведение, выборка и проекция) можно рассматривать как примитивные. Дайте определение операций естественного соединения, пересечения и (что значительно сложнее) деления в терминах этих примитивных операций.

6.3. Рассмотрим выражение А JOIN В. Если заголовки отношений А и В не пересекаются (т.е. в заголовках нет общих атрибутов), то это выражение эквивалентно выражению А TIMES В. А какому выражению оно будет эквивалентно, если заголовки отношений будут одинаковы?

6.4. Покажите, что пять примитивных операторов, упомянутых в упр. 6.2, действительно примитивны, т.е. что никакой из них нельзя выразить через четыре остальных.



6.5. В обычной арифметике умножение и деление - взаимообратные операции. Являются ли взаимообратными операции TIMES и DIVIDEBY в реляционной алгебре?

6.6. Пусть дана обычная база данных поставщиков и деталей. Чему в этом случае будет равно выражение S JOIN SP JOIN Р? {Предостережение. Здесь есть ловушка!)

6.7. Пусть А - отношение степени п. Сколько существует различных проекций отношения А?

6.8. В обычной арифметике существует специальное число 1, обладающее для любого числа п следующим свойством.

n*l = l*n = n

Мы говорим, что число 1 является тождественным элементом по отношению к операции умножения. Существует ли отношение, обладающее аналогичными единице свойствами, но в реляционной алгебре? Если существует, то какое?

6.9. В обычной арифметике существует специальное число О, обладающее для любого числа п следующим свойством.

п*0 = 0*п = 0

Существует ли отношение, обладающее аналогичными нулю свойствами, но в реляционной алгебре? Если существует, то какое?

6.10. Выясните, как ведут себя описанные в этой главе алгебраические операции в случае их применения к отношениям, представляющим собой ответы к двум предыдущим упражнениям.

6.11. В разделе 6.2 говорилось, что реляционное свойство замкнутости так же важно, как и арифметическое свойство замкнутости. Однако в арифметике существует одна неприятная ситуация, в которой свойство замкнутости нарушается, а именно - деление на нуль. Существует ли аналогичная ситуация в реляционной алгебре?

6.12. Операции объединения, пересечения, произведения и соединения были определены как бинарные операции (т.е. действующие на двух операндах). Тем не менее в этой главе мы показали, как их можно расширить до п-арных для любого п>1. Таким образом, выражение А UNION В UNION С можно однозначно назвать тройным объединением отношений А, В и С. А что можно сказать в случае, когда п=1 или п=0 ?

Упражнения по составлению запросов

в основу всех остальных упражнений положена база данных поставщиков, деталей и проектов (см. рис. 4.5 в главе 4 и ответ к упр. 5.4 в главе 5). В каждом упражнении вам предлагается по словесному описанию запроса составить соответствующее алгебраическое выражение. (В качестве интересной вариации можно предложить предварительно обратиться к ответам к некоторым упражнениям и попытаться составить по ним словесное описание задания соответствующих упражнений.) Для удобства ниже повторно приводится (в общих чертах) структура используемой базы данных.

S {Si, SNAME, STATUS, CITY }

PRIMARY KEY { Si } P {Pi, PNAME, COLOR, WEIGHT, CITY }

PRIMARY KEY { Pi }



J { J#, JNAME, CITY }

PRIMARY KEY { J# }

SPJ { Si, Pi, Ji, QTY }

PRIMARY KEY { Si, Pi, Ji }

FOREIGN KEY { Si } REFERENCES S

FOREIGN KEY { Pi } REFERENCES P

FOREIGN KEY { Ji } REFERENCES J

6.13. Выбрать полыую информацию обо всех проектах.

6.14. Выбрать полную информацию обо всех проектах в Лондоне.

6.15. Выбрать номера поставщиков деталей для проекта с номером Л.

6.16. Выбрать все поставки, в которых количество деталей находится в диапазоне от 300 до 750 щтук включительно.

6.17. Найти все существующие сочетания вида цвет детали- город, из которого поставляются детали .

Замечание. Здесь и в последующих упражнениях слово все используется в значении все, представленные в настоящий момент в базе данных , а не все возможные .

6.18. Найти все такие тройки значений номер поставщика- номер детали - номер проекта , для которых указанные поставщик, деталь и проект находятся в одном городе.

6.19. Найти все такие тройки значений номер поставщика - номер детали - номер проекта , для которых указанные поставщик, деталь и проект не находятся в одном городе.

6.20. Найти все такие тройки значений номер поставщика- номер детали- номер проекта , для которых никакие из двух указанных поставщиков, деталей и проектов не находятся в одном городе.

6.21. Выбрать номера деталей, поставляемых поставщиком в Лондоне.

6.22. Выбрать номера деталей, поставляемых поставщиком в Лондоне для проекта в Лондоне.

6.23. Найти все пары названий городов, для которых поставщик из первого города поставляет детали для проекта во втором городе.

6.24. Выбрать номера деталей, поставляемых для всех проектов поставщиком из того же города, в котором находится проект.

6.25. Найти все номера проектов, детали для которых поставляются по крайней мере одним поставщиком не из того же города.

6.26. Выбрать все пары номеров деталей, в которых обе детали поставляются одним и тем же поставщиком.

6.27. Определить общее число проектов, детали для которых поставляются поставщиком с номером S1.

6.28. Определить общее количество деталей с номером Р1, поставляемых поставщиком с номером S1.

6.29. Для каждой детали, поставляемой для проекта, выбрать номер детали, номер проекта и соответствующее общее количество.

6.30. Выбрать номера деталей, поставляемых для некоторого проекта, со средним количеством, составляющим более 350 щтук.



1 ... 63 64 65 [ 66 ] 67 68 69 ... 348

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