Определение 7.1 (Мультимножественное
?-полусоединение) Мультимножественный вариант операции ?-полусоединения ?<? определяется следующим образом. Для двух заданных отношений R1 и R2
где ?(t2) обозначает предикат ?, в котором имена атрибутов из R2 заменены их значениями из кортежа t2.
Определение ?-полусоединения сохраняет семантику семантику мультимножеств, т.е. кратность каждого кортежа, присутствующего в результате, совпадает с кратностью этого кортежа в R1. Например, если отношение R1(A,B) является мультимножеством кортежей {(1,2), (1,2), (1,4), и R2(C,D) состоит из {(3,5), (3,6), (3,7)}, то R1 ?<C?D R2 = {(1,2), (1,2)}.
В мультимножественной реляционной алгебре ?-полусоединение является выводимой операцией, выражаемой через операции ?-соединения, проекции (?) и удаления дубликатов (?) следующим образом:
где ?? Nat обозначает естественное соединение. Интуитивно понятно, что выражение
содержит все кортежи результата ?-полусоединения, но, возможно, с неверной кратностью. Следующая за естественным соединением операция удаления дубликатов используется для восстановления желаемой кратности.
В некоторых из описываемых нами правил эквивалентности ?-полусоединений используются присутствующие в отношениях функциональные зависимости; мы обозначаем функциональные зависимости, присутствующие в отношении R, как FD(R). Кроме того, в правилах эквивалентности также используются функциональные зависимости, следующие из предикатов (таких как предикаты ?-соединения и ?-полусоединения). Например, из предиката x = y * y следует функциональная зависимость {y} > x, а из предиката x = y + z следуют функциональные зависимости {y,z} > x, {x,y} > z и {x,z} > y. Мы используем нотацию FD(?) для обозначения множества всех функциональных зависимостей, следующих из предиката ?.