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

 

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

 

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

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

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

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

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

 

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

 

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