Операция удаления атрибута

 

Пусть s обозначает результат операции r <REMOVE> A. Для обеспечения возможности выполнения операции требуется, чтобы существовал некоторый тип (или домен) T такой, что <A, T> Î Hr (т.е. в состав заголовка отношения r должен входит атрибут A). Тогда:

 

· Hs = Hr minus { <A, T> }, т.е. заголовок результата получается из заголовка операнда изъятием атрибута A;

· Bs = { ts : exists tr exists v ( tr Î Br and v Î T and <A,T,v> Î tr and ts = tr minus { <A,T,v> } ) }, т.е. в тело результата входят все кортежи операнда, из которых удалено значение атрибута A.

Операция <REMOVE> производит отношение s, формируемое путем удаления указанного атрибута A из заданного отношения r. Операция эквивалентна взятию проекции r на все атрибуты, кроме A. Заголовок s получается теоретико-множественным вычитанием из заголовка r множества из одного элемента {<A, T>}. Тело s состоит из таких кортежей, которые соответствуют заголовку s, и каждый из которых является подмножеством некоторого кортежа тела отношения r.

 

Разумным примером операции REMOVE (конечно же, очень похожим на пример использования операции PROJECT из предыдущей лекции) является СЛУЖАЩИЕ REMOVE ПРО_НОМ (получить данные о служащих, участвующих в проектах). Результат этой операции над отношением СЛУЖАЩИЕ, тело которого приведено в верхней части рис. 4.2, показан на рис. 4.2 внизу.