Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реляционная_алгебра.doc
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
2.61 Mб
Скачать

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

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

expression θ expression

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

= (равно)

≠ (не равно)

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

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

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

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

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

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

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

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

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

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

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

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

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

Пояснения:

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

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

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

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

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

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

Еще несколько упрощений

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

IS _ ЕМРТУ ( expression )

Эта функция возвращает истину, если вычисленное значение expression пустое, и ложь в противном случае.

Также часто требуется проверить, есть ли данный кортеж t в данном отношении R. Предположим, можно построить отношение, содержащее только один данный кортеж, заключив его в фигурные скобки; тогда нам подойдет следующее сравнение:

{ t } ≤ R

Однако для пользователя более удобно следующее сокращение (знакомое читате­лям, знающим язык SQL):

t IN R

Здесь IN заменяет оператор принадлежности, обычно обозначаемый є