Автор работы: Пользователь скрыл имя, 06 Января 2014 в 21:03, лекция
Системы управления базами данных (СУБД) – это специализированные программные продукты, позволяющие:
1) постоянно хранить сколь угодно большие (но не бесконечные) объемы данных;
2) извлекать и изменять эти хранящиеся данные в том или ином аспекте, используя при этом так называемые запросы;
r 1 × r 2 = r 2 × r 1.
Свойство коммутативности выполняется для всех операций, кроме операции разности. Это легко понять, ведь от перестановки отношений местами их состав (кортежи) не меняется. А при применении операции разности важно, какое из отношений-операндов стоит на первом месте, потому что от этого зависит, кортежи какого отношения примутся за эталонные, т. е. с какими кортежами будут сравниваться другие кортежи на предмет исключения.
4. Свойство ассоциативности:
1) для операции объединения:
(r 1 ∪ r 2) ∪ r 3 = r 1 ∪(r 2 ∪ r 3);
2) для операции пересечения:
(r 1 ∩ r 2) ∩ r 3 = r 1 ∩ (r 2 ∩ r 3);
3) для операции разности:
(r 1 \ r 2) \ r 3 ≠ r 1 \ (r 2 \ r 3);
4) для операции декартового произведения:
(r 1 × r 2) × r 3 = r 1 × (r 2 × r 3);
5) для операции естественного соединения:
(r 1 × r 2) × r 3 = r 1 × (r 2 × r 3).
И снова мы видим, что свойство
выполняется для всех операций, кроме
операции разности. Объясняется это
таким же образом, как и в случае
применения свойства коммутативности.
По большому счету, операциям объединения,
пересечения, разности и естественного
соединения все равно в каком
порядке стоят отношения-
На основании вышеприведенных свойств и рассуждений можно сделать следующий вывод: три последних свойства, а именно свойство идемпотентности, коммутативности и ассоциативности, верны для всех рассмотренных нами операций, кроме операции разности двух отношений, для которой не выполнилось вообще ни одно из трех означенных свойств, и только в одном случае свойство оказалось неприменимым.
Используя как основу рассмотренные ранее унарные операции выборки, проекции, переименования и бинарные операции объединения, пересечения, разности, декартова произведения и естественного соединения (все они в общем случае называются операциями соединения ), мы можем ввести новые операции, выведенные с помощью перечисленных понятий и определений. Подобная деятельность называется составлением вариантов операций соединения .
Первым таким вариантом операций соединения является операция внутреннего соединения по заданному условию соединения.
Операция внутреннего соединения по какому-то определенному условию определяется как производная операция от операций декартового произведения и выборки.
Запишем формульное определение этой операции:
r 1(S 1) × P r 2(S 2) = σ <P > (r 1 × r 2), S 1 ∩ S 2 = ∅;
Здесь P = P <S 1 ∪ S 2> – условие, накладываемое на объединение двух схем исходных отношений-операндов. Именно по этому условию и происходит отбор кортежей из отношений r 1 и r 2 в результирующее отношение.
Следует отметить, что операция внутреннего соединения может применяться к отношениям с разными схемами отношений. Эти схемы могут быть любыми, но они ни в коем случае не должны пересекаться.
Кортежи исходных отношений-операндов, попавшие в результат операции внутреннего соединения, называются соединимыми кортежами .
Для наглядного иллюстрирования работы операции внутреннего соединения, приведем следующий пример.
Пусть нам даны два отношения r 1(S 1) и r 2(S 2) с различными схемами отношения:
r 1(S 1):
r 2(S 2):
Следующая таблица даст результат применения операции внутреннего соединения по условию P = (b1 = b2).
r 1(S 1) × P r 2(S 2):
Итак, мы видим, что действительно «слипание» двух таблиц, представляющих отношения, произошло именно по тем кортежам, в которых выполняется условие операции внутреннего соединения P = (b1 = b2).
Теперь на основании уже введенной операции внутреннего соединения мы можем ввести операцию левого внешнего соединения и правого внешнего соединения . Поясним.
Результатом операции левое внешнее соединение является результат внутреннего соединения, пополненный несоединимыми кортежами левого исходного отношения-операнда. Аналогично результат операции правого внешнего соединения определяется как результат операции внутреннего соединения, пополненный несоединимыми кортежами стоящего справа исходного отношения-операнда.
Вопрос, чем же пополняются результирующие отношения операций левого и правого внешнего соединения, вполне ожидаем. Кортежи одного отношения-операнда дополняются на схеме другого отношения-операнда Null-значениями .
Стоит заметить, что введенные таким образом операции левого и правого внешнего соединения являются производными операциями от операции внутреннего соединения.
Чтобы записать общие формулы для операций левого и правого внешнего соединений, проведем некоторые дополнительные построения.
Пусть нам даны два отношения r 1(S 1) и r 2(S 2) с различными схемами отношений S 1 и S 2, не пересекающимися друг с другом.
Так как мы уже оговаривали,
что операции левого и правого
внутреннего соединения являются производными,
то мы можем получить следующие вспомогательные
формулы для определения
1) r 3 (S 2 ∪ S 1) ≔ r 1(S 1) × P r 2(S 2);
r 3 (S 2 ∪ S 1) – это просто результат внутреннего соединения отношений r 1(S 1) и r 2(S 2). Левое внешнее соединение является производной операцией именно от операции внутреннего соединения, поэтому мы и начинаем наши построения с нее;
2) r 4(S 1) ≔ r 3(S 2 ∪ S 1) [S 1];
Таким образом, с помощью унарной операции проекции, мы выделили все соединимые кортежи левого исходного отношения-операнда r 1(S 1). Результат обозначили r 4(S 1) для удобства применения;
3) r 5 (S 1) ≔ r 1(S 1) \ r 4(S 1);
Здесь r 1(S 1) – все кортежи левого исходного отношения-операнда, а r 4(S 1) – его же кортежи, только соединимые. Таким образом, при помощи бинарной операции разности, в отношении r 5(S 1) у нас получились все несоединимые кортежи левого отношения-операнда;
4) r 6(S 2)≔ {∅(S 2)};
{∅(S 2)} – это новое отношение со схемой (S 2), содержащее всего один кортеж, причем составленный из Null-значений. Для удобства мы обозначили это отношение r 6(S 2);
5) r 7 (S 2 ∪ S 1) ≔ r 5(S 1) × r 6(S 2);
Здесь мы взяли полученные в пункте три, несоединимые кортежи левого отношения-операнда (r 5(S 1)) и дополнили их на схеме второго отношения-операнда S 2 Null-значениями, т. е. декартово умножили отношение, состоящее из этих самых несоединимых кортежей на отношение r 6(S 2), определенное в пункте четыре;
6) r 1(S1 ) →× P r 2(S 2) ≔ (r 1 × P r 2) ∪ r 7 (S 2 ∪ S 1);
Это и есть левое внешнее соединение , полученное, как можно видеть, объединением декартового произведения исходных отношений-операндов r 1 и r 2 и отношения r 7 (S 2 ∪ S 1), определенного в пункте пятом.
Теперь у нас имеются все необходимые выкладки для определения не только операции левого внешнего соединения, но по аналогии и для определения операции правого внешнего соединения. Итак:
1) операция левого внешнего соединения в строгом формулярном виде выглядит следующим образом:
r 1(S 1 ) →× P r 2(S 2) ≔ (r 1 × P r 2) ∪ [(r 1 \ (r 1 × P r 2) [S 1]) × {∅(S 2)}];
2) операция правого внешнего соединения определяется подобным образом операции левого внешнего соединения и имеет следующий вид:
r 1(S 1 ) →× P r 2(S 2) ≔ (r 1 × P r 2) ∪ [(r 2 \ (r 1 × P r 2) [S 2]) × {∅(S 1)}];
Эти две производные операции имеют всего два свойства, достойные упоминания.
1. Свойство коммутативности:
1) для операции левого внешнего соединения:
r 1(S 1) →× P r 2(S 2) ≠ r 2(S 2) →× P r 1(S 1);
2) для операции правого внешнего соединения:
r 1(S 1) ←× P r 2(S 2) ≠ r 2(S 2) ←× P r 1(S 1)
Итак, мы видим, что свойство коммутативности не выполняется для этих операций в общем виде, но при этом операции левого и правого внешнего соединения взаимно обратны друг другу, т. е. выполняется:
1) для операции левого внешнего соединения:
r 1(S 1) →× P r 2(S 2) = r 2(S 2) →× P r 1(S 1);
2) для операции правого внешнего соединения:
r 1(S 1) ←× P r 2(S 2) = r 2(S 2) ←× P r 1(S 1).
2. Основным свойством операций левого и правого внешнего соединения является то, что они позволяют восстановить исходное отношение-операнд по конечному результату той или иной операции соединения, т. е. выполняются:
1) для операции левого внешнего соединения:
r 1(S1 ) = (r 1 →× P r 2) [S 1];
2) для операции правого внешнего соединения:
r 2(S 2) = (r 1 ←× P r 2) [S 2].
Таким образом, мы видим, что первое исходное отношение-операнд можно восстановить из результата операции левого правого соединения, а если конкретнее, то применением к результату этого соединения (r 1 × r 2) унарной операции проекции на схему S 1, [S 1].
И аналогично второе исходное отношение-операнд можно восстановить применением к результату операции правого внешнего соединения (r 1 × r 2) унарной операции проекции на схему отношения S 2.
Приведем пример для более подробного рассмотрения работы операций левого и правого внешних соединений. Введем уже знакомые нам отношения r 1(S 1) и r 2(S 2) с различными схемами отношения:
r 1(S 1):
r 2(S 2):
Несоединимый кортеж левого отношения-операнда r 2(S 2) – это кортеж {d, 4}. Следуя определению, именно им следует дополнить результат внутреннего соединения двух исходных отношений-операндов.
Условие внутреннего соединения отношений r 1(S 1) и r 2(S 2) также оставим прежнее: P = (b1 = b2). Тогда результатом операции левого внешнего соединения будет следующая таблица:
r 1(S 1) →× P r 2(S 2):
Действительно, как мы можем видеть, в результате воздействия операции левого внешнего соединения, произошло пополнение результата операции внутреннего соединения несоединимыми кортежами левого, т. е. в нашем случае первого отношения-операнда. Пополнение кортежа на схеме второго (правого) исходного отношения-операнда по определению произошло при помощи Null-значений.
И аналогично результатом правого внешнего соединения по тому же, что и раньше, условию P = (b1 = b2) исходных отношений-операндов r 1(S 1) и r 2(S 2) является следующая таблица:
r 1(S 1) ←× P r 2(S 2):
Действительно, в этом случае
пополнять результат операции внутреннего
соединения следует несоединимыми
кортежами правого, в нашем случае
второго исходного отношения-
И, наконец, рассмотрим третий
вариант приведенных ранее
Операция полного внешнего соединения . Эту операцию вполне можно рассматривать не только как операцию, производную от операций внутреннего соединения, но и как объединение операций левого и правого внешнего соединения.
Операция полного внешнего соединения определяется как результат пополнения того же самого внутреннего соединения (как и в случае определения левого и правого внешних соединений) несоединимыми кортежами одновременно и левого, и правого исходных отношений-операндов. Исходя из этого определения дадим формулярный вид этого определения:
r 1(S 1) ↔× P r 2(S 2) = (r 1 →× P r 2) ∪ ( r 1 ←× P r 2);
У операции полного внешнего
соединения также имеется свойство,
сходное с аналогичным
r 1(S 1) ↔× P r 2(S 2)= r 2(S 2) ↔ × P r 1(S 1);
И для завершения рассмотрения вариантов операций соединения, рассмотрим пример, иллюстрирующий работу операции полного внешнего соединения. Введем два отношения r 1(S 1) и r 2(S 2) и условие соединения.
Пусть
r 1(S 1)