Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции базы данных 1.doc
Скачиваний:
25
Добавлен:
12.11.2018
Размер:
1.73 Mб
Скачать

Специальные реляционные операции* Выборка

Пусть задано отношение А с атрибутами X и Y (, возможно, с другими атрибутами), а символ Θ обозначает любой скалярный оператор сравнения (=, ≠, ≥,< и т.д.), такой, что условие X Θ Y корректно определено и при заданных значениях атрибутов X и Y его проверка дает значение истина или ложь. Тогда Θ-выборкой из отношения А по атрибутам X и Y (что записывается, например, как S WHERE CITY = 'London', причем именно в этом порядке) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множество всех кортежей t отношения А, для которых проверка условия X ΘY дает значение истина.

Необходимо отметить следующее:

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

A WHERE c1 AND с2 ≡ ( A WHERE c1 ) INTERSECT ( A WHERE с2 )

A WHERE c1 OR c2 ≡ ( A WHERE c1 ) UNION ( A WHERE c2 )

A WHERE NOT c ≡ A MINUS ( A WHERE С )

Поэтому впредь будем подразумевать, что параметр <логическое выражение> в предложении WHERE для операции выборки содержит произвольное число логических сочетаний единичных сравнений (с использованием круглых скобок, если необходимо указать желаемый порядок вычисления), где каждое единичное сравнение, в свою очередь, включает либо атрибуты указанного отношения, либо обращение к оператору выборки, либо и то, и другое. Значение параметра <логическое выражение> может быть истолковано как истина или ложь для каждого заданного кортежа в отдельности независимо от остальных. Описанное выше значение параметра <логическое выражение> принято называть условием выборки.

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

Рис.8. Примеры операции выборки.

Проекция

Пусть задано отношение А с атрибутами X, Y, ... , Z. Тогда проекцией отношения А по атрибутам X, У, ... , Z (что записывается как А {X, Y, ... , Z }) называется отношение, удовлетворяющее следующим требованиям.

■ Его заголовок получается из заголовка отношения А посредством удаления из него всех атрибутов, не входящих в множество {X, Y, ... , Z}.

■ Его тело содержит множество всех кортежей вида {X:x, Y:y, ... , Z:z}, таких, для которых в отношении А значение атрибута X равно х, значение атрибута Y равно у,..., значение атрибута Z равно z.

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

Из этого определения можно сделать следующие выводы

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

2. Если в списке атрибутов указаны все атрибуты отношения А, то такая проекция представляет собой тождественную проекцию.

3. Проекция вида А{ } (т.е. такая, в которой список атрибутов пуст) также допустима.

Она представляет собой нулевую проекцию.

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

Рис.9. Примеры операций проекции.