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

6. 5. Специальные реляционные операции

Теперь переключим внимание на специальные реляционные операции: выборку, про­екцию, соединения (разных видов) и деление.

Выборка

Как отмечалось в начале этой главы операция выборки также называется операцией ог­раничения, поэтому далее в этой книге будет также употребляться термин ограничение, если подразумевается алгебраическая операция. Выборка — это сокра­щенное название θ-выборки, где θ обозначает любой скалярный оператор сравнения (=, =, >, > и т.д.). θ-выборкой из отношения А по атрибутам Х и У (в этом порядке)

A WHERE Х θ Y

называется отношение, имеющее тот же заголовок, что и отношение А, и тело, со­держащее множество всех кортежей t отношения А, для которых проверка условия иx θ у" дает значение истина. Атрибуты X и У должны быть определены на одном и том же домене, а оператор должен иметь смысл для этого домена. (Обратите внимание, что не все операторы сравнения (θ) имеют смысл для всех доменов. Например, рассмотрим домен SEX (пол) со значениями "Male" (мужской) и "Female" (женский). Этот очевидный пример показывает, что для таких доменов имеют смысл только операторы сравнения равно и не равно, а оператор меньше не имеет смысла. Мы еще вернемся к данной теме далее в этой книге.)

Скалярное литеральное значение может быть указано как вместо атрибута X, так и вместо атрибута У (или, естественно, вместо обоих); на практике это обычный случай1. Например:

A WHERE X θ literal

В результате выполнения этого оператора выборки получим "горизонтальное" подмножество данного отношения, т.е. такое подмножество кортежей, для которого удовлетворяется указанное условие.

Выборка, как было определено, допускает простые сравнения в выражении where. Однако на основании свойства замкнутости можно однозначно расширить определение до формы, в которой условие в выражении where будет содержать произвольное число логических сочетаний таких простых сравнений благодаря следующим тождествам:

  1. A WHERE c1 AND c2 = ( A WHERE c1 ) INTERSECT ( A WHERE с2 )

  2. A WHERE c1 OR с2 = ( A WHERE c1 ) UNION ( A WHERE c2 )

  3. A WHERE NOT с = A MINUS ( A WHERE с )

Поэтому впредь будем подразумевать, что условие сравнения в выражении where для операции выборки содержит произвольное число логических сочетаний простых сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления). Если условие может быть истолковано как истина или ложь для данного кортежа, то рассматривая такой кортеж как отдельный, это условие на­зывают условием выборки.

Итак, мы определили синтаксические обозначение условия1.

На рис. 6.5. приведено несколько примеров выборки.

S WHERE CITY = ‘London’

S#

SNAME

STATUS

CITY

S1

S4

Smith

Clark

20

20

London

London

P WHERE WEIGHT < 14

P#

PNAME

COLOR

WEIGHT

CITY

P1

P5

Nut

Cam

Red

Blue

12

12

London

Paris

SP WHERE S# = ‘S1’ AND P# = ‘P1’

S#

P#

QTY

S1

P1

300

Проекция

Проекцией отношения А по атрибутам X, Y, … Z, где каждый из атрибутов принадлежит отношению А (А [ x, y, … , z ]), называется отношение с заголовком {X, Y, …, Z} и телом, содержащим множество всех кортежей {X:x, Y:y, …, Z:z}, таких для которых в отношении A значение атрибута X равно х, атрибута У равно у, … , атрибута Z равно z. Таким образом, с помощью оператора проекции получено «вертикальное» подмножество данного отношения, т. е. подмножество, получаемое исключением всех атрибутов, не указанных в списке атрибутов, и последующим исключением дублирующих кортежей (подкортежей) из того, что осталось.

Никакой атрибут не может быть указан в списке атрибутов более одного раза. Обратите внимание на следующее.

  1. Наш синтаксис позволяет опустить список атрибутов совсем (вместе с квадратными скобками). Действие такой операции эквивалентно указанию списка всех атрибутов исходного отношения, т. е. такая операция представляет собой тождественную проекцию. Другими словами, имя отношения является, конечно, допустимым реляционным выражением.

  1. Проекция вида R[ ], т. е. такая, в которой список атрибутов не пропущен, но пустой, тоже допустима. Она представляет собой «нулевую» проекцию.

Несколько примеров проекций показано на рис. 6.6. Обратите внимание, что в первом примере (проекция поставщиков по атрибуту CITY), хотя отношение S имеет пять кортежей и, следовательно, пять городов, в результате есть только три города, поскольку исключены дублирующие кортежи. Аналогичные замечания можно сделать и для других примеров.

Отметим, что на практике часто бывает удобно указывать не те атрибуты, по которым берется проекция, а те, которые проекцией «отбрасываются». Например, удобнее сказать: «проекция, исключающая атрибут WEIGHT из отношения Р» вместо «проекция отношения Р по атрибутам P#, PNAME, COLOR и CITY». Однако здесь не предлагается никакого конкретного синтаксиса для этой альтернативной, но, конечно, эквивалентной версии операции проекции.

Естественное соединение.

Операция соединения имеет несколько разновидностей. Однако наиболее важным, без сомнения, является естественное соединение, причем настолько, что для обозначения исключительно естественного соединения почти постоянно используется общий термин «соединение». Мы будем следовать этому, применяя в нашем синтаксисе для обозначения естественного соединения ключевое слово JOIN (соединение). Далее приводится определение (оно несколько абстрактное, но мы считаем, что читатели уже знакомы с естественным соединением на интуитивном уровне по материалу главы 3).

S [ CITY ]

CITY

London

Paris

Athens

P [ COLOR, CITY ]

COLOR

CITY

Red

Green

Blue

Blue

London

Paris

Rome

Paris

( S WHERE CITY = ‘Paris’ ) [ S# ]

S#

S2

S3