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

 

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

 

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

· Bs = { ts : exists tr1 exists tr2 ( ( tr1 Î Br1 or tr2 Î Br2 ) and ts = tr1 union tr2 ) }; легко видеть, что при этом:

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

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

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

 

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

 

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