Программирование >>  Реляционные базы данных 

1 ... 85 86 87 [ 88 ] 89 90 91 ... 125


264 Глава 5 Язык баз данных SQL

Применение новых значений: в вычислениях фиксированной точки

В примерах 5.57 и 5.58 при вычислении значения Q применялись старые, а нс новые значения Р. Результат вычисления зависел от порядка определений рекурсивных предикатов в предложении WITH. В примере 5.ь7 Ри Qсходились к одной из двух возможных фиксированных точек в зависи.мости от порядка оценки. В примере 5.5S они не сходились и фактически изменялись на каждом шаге вычислений.

5.10.6 Упражнения к разделу 5.10

Упрожнение 5.10.1. В примере 4.36 рассматривалось отношение

Seque!Of(movie, sequel)

дающее непосредственное продолжение фьпьма, и бьшо определено IDB-отношение FollowOn; его парами (х. у) бьши такие фильмы, у которьгч являлся продолжением л: или продолжением его продолжения и т.д.

a) Запиитте определение отношения FollowOn в форме рекурсии SQL3.

b) Запипдите рекурсивный запрос на SQD, возвращаюшй множество пар ix,y), в которых у являлся бы последователем фильма х, но не его непосредственным продолжением.

c) Запишиге рекурсивный запрос на SQL3, возвращающий множество пар {х,у), н которых у являлся бы последователем фильма х, но при этом не бьш ни его продолжением, ни продолжением его продолжения.

d) Запишите рекурсивный запрос на SQL3, возвращающий множество фушь-мов X, имеющих по крайней мере двух последователей. Оба они могут быть самостоятельными продолжениями х и необязательно, чтобь один был продолжением х, а другой продолжением продолжения.

!е) Запишите рекурсивный запрос на SQL3, возвращающий множество пар (х,у), в которых у - последователь фильма х, имеющий не более одного последователя.

Упрожнение 5.10.2. В упражнении 4.4.3 введено отнонюние

Rel(class.eclass. multi)

описывающее взаимосвязи классов ODL. Оно содержит кортеж (с, d, т), если класс с связан с классом d. Такая связь многозначна, если т = multi , и однозначна, если т =single . В упражнении 4.4.3 бьшо сказано, что отношение Rel можно определить с помощью графа, ухпами которого являются классы и в когором есть ребро, направленное от с к d и помеченное буквой т, если и только еслн (с, d. т) - кортеж Rel.

а) Запииште рекурсивный запрос на SQL3. порождающий такое множество пар (с, rf). чтобы в описанном выше графе был путь от класса с к классу d.

b) Запишите рекурсивный запрос на SQL3, порождающий такое множество пар {с, d), чтобы в описанном выше графе бьш путь от класса с к классу d, на котором каждое ребро помечено как single.



5.11 Итоги 265

*! с) Запишите рекурсивный запрос на SQL3, порождающий такое множество пар (с, d), чтобы в описанном выше графе бьш путь от класса с к классу rf, на котором по меньшей мере одно ребро помечено как multi.

d) Запишите рекурсивный запрос на SQL3, порождающий такое множество пар (с, d), чтобы в описанном выше графе был путь от класса с к классу d, но не было пути, на котором все ребра помечены как single.

!е) Запишите рекурсивный запрос на SQL3, порождающий такое множество пар (с, d). чтобы в описанном выше графе был путь от класса с к классу d, на котором ребра single чередуются с ребрами multi.

f) Запишите рекурсивный запрос на SQL3, порождающий такое множество пар (с, d), чтобы в описанном выше графе были пути от класса с к классу d и от класса d к классу с, на которых каждое ребро помечено как single.

! Цпрожиение 5.10.3. Допустим, мы изменили вычисление Readies на рис. 5.23, чтобы применить нелинейную рекурсию. А именно: строки (6) - (8) заменены строками

6) (SELECT FirsLfrm, Second.to

7) FROM Reaches AS First, Reaches AS Second

8) WHERE First.to = Second.frm)

в которых два экземпляра отношения Reaches, представленные переменными кортежей First и Second, объединяются для получения новых пар. Какую длину имеют новые пути, добавляемые к Reaches на /-м шаге вычисления фиксированной точки?

5.11 Итоги

♦ SQL - главный язык запросов систем реляционных БД. Его стандарт, оказывающий наиболее сильное влияние на коммерческие системы, называется SQL2. Предполагается, что в ближайшее время будет завершен его новый стандарт - SQL3.

♦ Запросы типа select from-where - наиболее распространенная форма SQL запросов, позволяющая получать произведение нескольких отношений (предложение FROM), применять к кортежам результата заданное условие (пункт WHERE) и создавать нужные компоненты (предложение SELECT).

+ Подзапросы. Запросы типа select-from-where можно применять в качестве подзапросов в предложении WHERE другого запроса. Для выражения буле-возначных условий лля отношений, являющихся результатом запроса, применяются операторы EXISTS, IN, ALL и ANY.

♦ Теоретико-множественные операции на отношениях. Объединение, пересечение и разность отношений или запросов, определяющих отношения, прово дится с помощью ключевых слов UNION. INTERSECT и EXCEPT.

+ Мультимноисественная модель отношений. Реальные отношения в SQL считаются мультимиожесгвами, а не множествами. Удаление дублирующихся кортежей проводится с помшдью ключевого слова DISTINCT, а ключевое слово ALL позволяет получить результат в виде мультимножества там, где мультимножества не приняты по умолчанию.



♦ Агрегаций. Значения столбцов отиошения можно объединять (агрегировать) с помощью ключевых слов SUM, AVG (среднее значение), MIN, МАХ или COUNT. Перед агрегациеН кортежи разбиваются на группы посредством ключевого слова GROUP BY. Определенные группы можно удалить с помошью предложения, начинаюилегося 1и1ючсвым словом HAVING.

+ Операции из.менсния. .SQL позволяет изменязъ кортежи отношения с ломов 1ью нредпоженин, начинающихся одним из ключевых слов: INSERT (добавить новые кортежн), DELETE (удалить кортежи) или UPDATE (изменить некоторые существующие кортежи).

♦ Определение данных. В SQL есть операторы для описания элеме1ГГОВ схемы БД. CREATE TABLE позволяет описать схему хранимых отношений (таблиц) путем определения агрибутов и их типов. CREATE DOMAIN используется для определения имени типа данных, которое затем можно применять в описаниях реляционных схем. Эти два оператора CREATE позволяют также задавать значения по умолчанию для атрибутов и областей.

♦ Изменении схем. Различные аспекты схемы БД можно изменять с помощью оператора ALTER. Эти изменения включают в себя удаление атрибутов из реляционных схем н изменение значения по умолчанию, связанного с атри-6yix)M или областью. Для полного удаления отношений, областей или фyгиx элементов схемы применяется оператор DROP.

♦ Индексы. Хотя это и не предусмотрено стандартом SQL, коммерческие системы SQL позволяют задавать на атрибутах индексы, ускоряющие вынолнение определенных запросов, или выполнять изменения, включающие в себя определение значения индексированного атрибута.

♦ Представления - определения, показывающие, как из таблиц, хранимых в БД. построить отношение (представление). К представлениям можно адресовать запросы, как к таблицам, и система SQL изменяет запрос к представлению так, что он действительно относится к таблицам, использованным дпя определения этого представления.

♦ Значение NULL - особое значение в SQL, появляющееся в компонентах кортежей, дпя которых недоступно никакое конкретное значение. Арифметика и логика NULL необычны. Сравнение с NULL любого значения, даже другого NULL, дает значение UNKNOWN, которое применяется в булевозначных выражениях как нечто среднее между TRUE и FALSE.

♦ Выражения соединения. В SQL есть операторы типа NATUF?AL JOIN, применимые к отношениям либо в качестве запросов, либо для определения отношений в пред/южетш FROM.

♦ Виаинее соединение. В SQL есть оператор OUTER JOIN, который соединяет отношения, но при этом вносит в результат висящие кортежи из одного или обоих этих отношений. В результирующем отношении висящие кортежи пополняются значениями NULL.

♦ Рекурсия в SQL3. По стандарту SQL3 предполагается рекурсивный способ определения временных ошошений и их использования в запросах. Согласно этому стандарту включенные в рекурсию отрицание и агрегация должны быть сп.1атфицировань[, т.е. рекурсивно определяемое отношение не должно определяться в терминах своих собственных отрицания или агрегации.



1 ... 85 86 87 [ 88 ] 89 90 91 ... 125

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