|
Программирование >> Хронологические базы данных
Оператор выборки является единственной операцией, которая позволяет сравнивать значения атрибутов с определенными литералами (т.е. со значениями, которые не являются частью какого-либо отношения). Следовательно, операция выборки также примитивна. 6.5. Короткий ответ- нет. Оригинальный оператор Кодда DIVIDEBY удовлетворяет следующему условию. ( А TIMES В ) DIVIDEBY В = А Однако необходимо принять к сведению следующее. Оператор деления Кодда был бинарным, а наш оператор DIVIDEBY является триадическим; следовательно, он не может удовлетворять подобному свойству. В любом случае, даже если, используя оператор Кодда, разделить А на В, а затем найти декартово произведение результата и отношения В, может получиться отношение, совпадающее с А, хотя, вероятнее всего, оно будет некоторым собственным подмножеством А. ( А DIVIDEBY В ) TIMES В < А Оператор DIVIDEBY Кодда больше похож на целочисленное деление в обычной арифметике (т.е. он игнорирует остаток). 6.6. Ловушка заключается в том, что в операции JOIN атрибуты CITY используются так же, как и атрибуты St и Р# (в силу нашего определения оператора JOIN). Результат будет подобен следующему.
6.7. Количество возможных проекций равно 2 . К ним относятся идентичная проекция (т.е. проекция по всем п атрибутам, которая дает результат, идентичный исходному отношению А) и нулевая проекция (т.е. проекция по никаким атрибутам), которая дает в результате TABLE DUM, если исходное отношение А пустое, и TABLE DEE в противном случае [5.5]. 6.8. Да, есть такое отношение, а именно- TABLE DEE. Отношение TABLE DEE (далее для краткости - просто DEE) - аналог числа 1 по отношению к умножению в обычной арифметике, поскольку для всех отношений R имеем следующее. R TIMES DEE = DEE TIMES R = R Иначе говоря, DEE - это тождественный элемент для операции TIMES (и конечно, для операции JOIN). 6.9. Не существует отношения, ведущего себя относительно операции TIMES аналогично числу нуль относительно операции умножения. Однако поведение отношения TABLE DUM (или сокращенно - DUM) несколько сходно с поведением нуля, так как для всех отношений R имеем следующее. R TIMES DUM = DUM TIMES R = <пустое отношение с тем же заголовком, что и заголовок R> 6.10. Отношениями, которые совместимы с DEE и DUM при объединении, пересечении и вычитании, являются сами отношения DEE и DUM. В результате имеем следующее.
В случае вычитания первый операнд показан слева в таблице, а второй - вверху (для других операторов, конечно, операнды могут меняться местами). Обратите внимание, как это напоминает таблицы истинности для логических операций OR, AND, AND NOT соответственно. Конечно, такое совпадение не случайно. Рассмотрев затем выборку и проекцию, получим следующее. Любая выборка из отношения DEE дает отношение DEE, если значение условия выборки равно значению истина, и DUM, если оно равно значению ложь. Любая выборка из отношения DUM дает отношение DUM. Проекция любого отношения по пустому множеству атрибутов дает отношение DUM, если исходное отношение пустое, и отношение DEE в противном случае. В частности, проекция отношения DEE или отношения DUM (обязательно по пустому множеству атрибутов) возвращает исходное отношение. Для операций расширения и подведения итогов имеем следующее. Расширение отношения DEE или DUM для добавления новых атрибутов дает отношение с одним атрибутом и тем же количеством кортежей, что и в исходном отношении. Суммирование отношения DEE или DUM (обязательно по пустому множеству атрибутов) дает отношение с одним атрибутом и тем же количеством кортежей, что и в исходном отношении. 6.11. Нет! 6.12. Мы можем определить (и определяем) объединение, пересечение, произведение или соединение одного отношения R как само R. Рассмотрим случай, когда п=0. Пусть RT - некоторый тип отношений. Тогда имеем следующее. Объединением нулевого числа отношений типа RT будет пустое отношение типа RT. Обратите внимание, что при этом должен существовать какой-либо способ указания того, что RT - операнд операции объединения. Пересечением нулевого числа отношений типа RT является универсальное отношение типа RT, где термин универсальное отношение типа RT обозначает отношение типа RT, тело которого состоит из всевозможных кортежей, удовлетворяющих заголовку отношения (при этом, опять-таки, должен быть какой-то способ указания того, что RT - операнд операции пересечения). Заметьте, что термин универсальное отношение часто употребляется в литературе с другим значением [12.19]! Произведением и пересечением нулевого числа отношений будет TABLE DEE. 6.13. J 6.14. J WHERE CITY = London 6.15. ( SPJ WHERE J# = J# ( Jl ) ) { St } 6.16. SPJ WHERE QTY > QTY ( 300 ) AND QTY < QTY ( 750 ) 6.17. P { COLOR, CITY } 6.18. ( S JOIN P JOIN J ) { S#, PI, Jl } 6.19. ( ( ( S RENAME CITY AS SCITY ) TIMES ( P RENAME CITY AS PCITY ) TIMES ( J RENAME CITY AS JCITY ) ) WHERE SCITY PCITY OR PCITY Ф JCITY OR JCITY Ф SCITY ) { SI, PI, Jl } 6.20. ( ( ( S RENAME CITY AS SCITY ) TIMES ( P RENAME CITY AS PCITY ) TIMES ( J RENAME CITY AS JCITY ) ) WHERE SCITY Ф PCITY AND PCITY Ф JCITY AND JCITY Ф SCITY ) { S, P, J } 6.21. P SEMIJOIN ( SPJ SEMIJOIN ( S WHERE CITY = London ) ) 6.22. Для того чтобы напомнить о такой возможности, приводим пошаговое решение этой задачи. WITH ( S WHERE CITY = London ) AS Tl, ( J WHERE CITY = London ) AS T2, ( SPJ JOIN Tl ) AS T3, T3 { PI, Jl } AS T4, ( T4 JOIN T2 ) AS T5 : T5 { PI } Вот как выглядит этот же запрос без использования WITH. ( ( SPJ JOIN ( S WHERE CITY = London ) ) { Pi, Jl } JOIN ( J WHERE CITY = London ) ) { Pi } Далее приводятся ответы к следующим упражнениям (как с предложением WITH так и без него). 6.23. ( ( S RENAME CITY AS SCITY ) JOIN SPJ JOIN ( J RENAME CITY AS JCITY ) ) { SCITY, JCITY } 6.24. ( J JOIN SPJ JOIN S ) { PI } 6.25. ( ( ( J RENAME CITY AS JCITY ) JOIN SPJ JOIN ( S RENAME CITY AS SCITY ) ) WHERE JCITY Ф SCITY ) { Jl } 6.26. WITH ( SPJ { SI, P# } RENAME SI AS XS, Pi AS XP ) AS Tl, ( SPJ { SI, PI } RENAME SI AS YSl, Pi AS YPl ) AS T2, ( Tl TIMES T2 ) AS T3,
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |