Выборка

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

A WHERE Х θ Y

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

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

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 для операции выборки содержит произвольное число логических сочетаний простых сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления). Если условие может быть истолковано как истина или ложь для данного кортежа, то рассматривая такой кортеж как отдельный, это условие на­зывают условием выборки.

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

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

S WHERE CITY = ‘London’

S# SNAME STATUS CITY
S1 S4 Smith Clark   London London

P WHERE WEIGHT < 14

P# PNAME COLOR WEIGHT CITY
P1 P5 Nut Cam Red Blue   London Paris

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

S# P# QTY
S1 P1  

Проекция

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

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

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

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

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

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


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



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