Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных.doc
Скачиваний:
114
Добавлен:
16.03.2016
Размер:
5.67 Mб
Скачать

5.2.4. Операция реляционной конъюнкции

Пусть sобозначает результат операцииr1 <AND> r2. Для обеспечения возможности выполнения операции требуется, чтобы если<A, T1>Hr1и<A, T2>Hr2, тоT1=T2. (Другими словами, если в двух отношениях-операндах имеются одноименные атрибуты, то они должны быть определены на одном и том же типе (домене).) Тогда:

  • Hs = Hr1 union Hr2, т. е. заголовок результата получается путем объединения заголовков отношений-операндов, как в операцияхTIMESиJOINиз предыдущей лекции;

  • Bs = { ts : exists tr1 exists tr2 ((tr1Br1 and tr2Br2) and ts = tr1 union tr2)}; обратите внимание на то, что кортеж результата определяется какобъединение кортежей операндов; поэтому:

    • если схемы отношений-операндов имеют непустое пересечение, то операция <AND>работает как естественное соединение;

    • если пересечение схем операндов пусто, то <AND>работает как расширенное декартово произведение;

    • если схемы отношений полностью совпадают, то результатом операции является пересечение двух отношений-операндов.

Операция <AND>является реляционной конъюнкцией, в некоторых случаях выдающей в результате отношениеrs, ранее называвшееся естественным соединением двух заданных отношенийr1иr2. Заголовокrsявляется объединением заголовковr1иr2. Телоsвключает каждый кортеж, соответствующий заголовкуsи являющийся надмножеством некоторого кортежа из телаr1и некоторого кортежа из телаr2.

Для иллюстрации воспользуемся примерными отношениями, показанными на рис. 5.3, которые мы уже использовали в примерах предыдущей лекции.

На рис. 5.4(a)у отношенийСЛУЖАЩИЕиПРОЕКТЫимеется общий атрибутПРО_НОМ. Поэтому операция<AND>работает как операция естественного соединения. Нарис. 5.4(b)пересечение заголовков отношенийСЛУЖАЩИЕ_В_ПРОЕКТЕ_1иПРОЕКТЫпусто, и поэтому в результате реляционной конъюнкции производится расширенное декартово произведение этих отношений. Наконец, нарис. 5.4(c)схемы отношенийСЛУЖАЩИЕ_В_ПРОЕКТЕ_1иСЛУЖАЩИЕ_В_ПРОЕКТЕ_2совпадают, и телом операции<AND>является пересечение тел отношений-операндов.

5.2.5. Операция реляционной дизъюнкции

Пусть sобозначает результат операцииr1 <OR> r2. Для обеспечения возможности выполнения операции требуется, чтобы если<A, T1>Hr1и<A, T2>Hr2, то должно бытьT1 = T2(одноименные атрибуты должны быть определены на одном и том же типе). Тогда:

  • Hs = Hr1 union Hr2(из схемы результата удаляются атрибуты-дубликаты);

  • Bs = { ts : exists tr1 exists tr2 ((tr1Br1 or tr2Br2) and ts = tr1 union tr2)}; очевидно, что при этом:

    • если у операндов нет общих атрибутов, то в тело результирующего отношения входят все такие кортежи ts, которые являются объединением кортежейtr1иtr2, соответствующих заголовкам отношений-операндов, и хотя бы один из этих кортежей принадлежит телу одного из операндов;

    • если у операндов имеются общие атрибуты, то в тело результирующего отношения входят все такие кортежи ts, которые являются объединением кортежейtr1иtr2, соответствующих заголовкам отношений-операндов, если хотя бы один из этих кортежей принадлежит телу одного из операндов, и значения общих атрибутовtr1иtr2совпадают;

    • если же схемы отношений-операндов совпадают, то тело отношения-результата является объединением тел операндов.

Операция <OR>является реляционной дизъюнкцией и обобщением того, что ранее называлось объединением. Заголовокsесть объединение заголовковr1иr2. Телоsсостоит из всех кортежей, соответствующих заголовкуsи являющихся надмножествомлибонекоторого кортежа из телаr1,либонекоторого кортежа из телаr2.

Рис. 5.3.Примерные отношения для иллюстрации операции<AND>

Предположим, у нас имеются отношения ПРОЕКТЫ_1 {ПРОЕКТ_НАЗВ, ПРОЕКТ_РУК}иНОМЕРА_ПРОЕКТОВ {ПРО_НОМ}(рис. 5.5). Предположим также, что домен атрибутаПРОЕКТ_НАЗВвключает значенияПРОЕКТ_1,ПРОЕКТ_2,ПРОЕКТ_3, домен атрибутаПРОЕКТ_РУКограничен значениямиИванов,Иваненко, а доменом атрибутаПРО_НОМявляется множество{1, 2, 3}. Результат операцииПРОЕКТЫ <OR> НОМЕРА_ПРОЕКТОВпоказан нарис. 5.5.

Как показано на рис. 5.5, операция<OR>при наличии операндов с несовпадающими схемами производит результат, гораздо более мощный, чем результат операции взятия расширенного декартова произведения из лекции 4, и еще менее осмысленный с практической точки зрения.

Для иллюстрации операции <OR>над операндами, схемы которых имеют непустое пересечение, воспользуемся отношениемПРОЕКТЫ_2 {ПРО_НОМ, ПРОЕКТ_РУК}(рис. 5.6) и унарным отношениемНОМЕРА_ПРОЕКТОВ, схема и тело которого показаны нарис. 5.5. Будем предполагать, что множества значений доменов атрибутов такие же, как в предыдущем примере. Результат операцииПРОЕКТЫ_2 <OR> НОМЕРА_ПРОЕКТОВпоказан нарис. 5.6.

Рис. 5.4.Иллюстрации операции реляционной конъюнкции

Как уже отмечалось, при совпадении схем отношений-операндов результатом выполнения над ними операции<OR>является объединение отношений. Это непосредственно следует из спецификации операции. Если этот факт кажется неочевидным, еще раз внимательно посмотрите на спецификацию. Иллюстрирующий пример мы приводить не будем.

Рис. 5.5.Результат операции<OR>над операндами без общих атрибутов

Рис. 5.6.Результат операции<OR>над операндами, схемы которых частично пересекаются