Шрифт:
r4(S4) r1(S1) x Pr2(S2):
Сравним эти два результата, получившиеся новые отношения r3(S3) и r4(S4).
Ясно, что операция естественного соединения выражается через операцию внутреннего соединения, но, что главное, с условием соединения специального вида.
Запишем математическую формулу, описывающую действие операции естественного соединения как производную операции внутреннего соединения.
r1(S1) x r2(S2) = { <1> r1 x E< 2>r2}[S1 S2],
где E —условие соединимости кортежей;
E= a S1 S2 [IsNull (b1) & IsNull (2) b1 = b2];
b1 = 1 (name(a)), b2 = 2 (name(a));
Здесь одна из функций переименования1 является тождественной, а другая функция переименования (а именно – 2) переименовывает атрибуты, на которых наши схемы пересекаются.
Условие соединимости E для кортежей записывается в общем виде с учетом возможных появлений Null-значений, ведь операция внутреннего соединения (как уже было сказано выше) является производной операцией от операции декартового произведения двух отношений и унарной операции выборки.
6. Выражения реляционной алгебры
Покажем, как можно использовать рассмотренные ранее выражения и операции реляционной алгебры в практической эксплуатации различных баз данных.
Пусть для примера в нашем распоряжении имеется фрагмент какой-то коммерческой базы данных:
Поставщики (Код поставщика, Имя поставщика, Город поставщика);
Инструменты (Код инструмента, Имя инструмента, …);
Поставки (Код поставщика, Код детали);
Подчеркнутые имена атрибутов [1] являются ключевыми (т. е. идентификационными) атрибутами, причем каждый в своем отношении.
Предположим, что к нам, как разработчикам этой базы данных и хранителям информации по этому вопросу, поступил заказ получить наименования поставщиков (Имя Поставщика) и место их расположения (Город Поставщика) в случае, когда эти поставщики не поставляют каких-либо инструментов с родовым именем «Плоскогубцы».
Чтобы в нашей, возможно, весьма обширной, базе данных определить всех поставщиков, отвечающих этому требованию, запишем несколько выражений реляционной алгебры.
1
Подчеркнутому шрифту в типографском издании книги соответствует полужирный курсив в данной (электронной) версии книги. (Прим. эл. ред)
1. образуем естественное соединение отношений «Поставщики» и «Поставки» для того, чтобы сопоставить с каждым поставщиком коды поставляемых им деталей. Новое отношение – результат применения операции естественного соединения – для удобства дальнейшего применения обозначим через r1.
Поставщики x Поставки r1 (Код поставщика, Имя поставщика, Город поставщика,
В скобках мы перечислили все атрибуты отношений, участвующих в этой операции естественного соединения. Мы видим, что атрибут «Код поставщика» дублируется, но в итоговой записи операции каждое имя атрибута должно присутствовать только один раз, т. е.:
Поставщики x Поставки r1 (Код поставщика, Имя поставщика, Город поставщика, Код инструмента);
2. снова образуем естественное соединение, только на этот раз отношения, получившегося в пункте один и отношения Инструменты. Делаем это для того, чтобы с каждым кодом инструмента, получившемуся в предыдущем пункте, – сопоставить имя этого инструмента.