Реляционные сравнения

Реляционная алгебра в том виде, в котором она была изначально определена, не под­держивает прямого сравнения двух отношений (например, проверки их равенства или того, является ли одно из них подмножеством другого). Одно из следствий этого упущения состоит в том, что некоторые запросы выражаются весьма неуклюже. Од­нако это упущение легко исправить. Сначала определим новый вид условия - реля­ционное сравнение - со следующим синтаксисом:

expression θ expression

Здесь expression- это в обоих случаях выражения реляционной алгебры, представ­ляющие совместимые по типу отношения, а θ - один из следующих операторов сравнения:

= (равно)

≠ (не равно)

≤ (подмножество)

< (собственное подмножество)

≥ (надмножество)

> (собственное надмножество)

Замечание. Возможно, выбор обозначений операторов не совсем удачен, так как отрицанием утверждения - собственное подмножество В" не будет - над­множество В" (т.е. отношения "<" и "≥" не противоположны). Однако в этой книге используются именно такие обозначения.

Приведем примеры.

1. S [ CIТY ] = Р [ CIТY ]

Значение. Совпадает ли проекция отношения S по атрибуту CIТY с проекцией от­ношения Р по атрибуту CIТY?

2. S [ S# ] = SP [ S#]

Значение (несколько перефразированное). Есть ли поставщики не поставляющие деталей?

Этот новый вид условия допустим для использования в операциях выборки (выборки в алгебраическом смысле).[9] Например:

S WНERE ((SP REMAМE S# AS Х) WНERE Х = S#) [ P# ] = Р [ P# ]

При вычислении этого выражения получаем отношение, содержащее кортежи поставщиков, поставляющих все детали.

Пояснения:

n Для данного поставщика выражение

((SP RENAМE S# AS Х) WНERE Х = S#) [ Р# ]

дает множество номеров деталей, поставляемых этим поставщиком.

n Затем это множество номеров деталей сравнивается с множеством всех номеров деталей. Если эти два множества совпадают, то соответствующий кортеж постав­щика заносится в результат.

Конечно, можно использовать сокращение МAТCНING, представленное в разделе опе­рации расширения, тогда общее выражение упростится так:

S WНERE (МAТCНING SP) [ Р# ] = P [ P# ]


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: