Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные_задания / Лабораторная работа 7

.docx
Скачиваний:
24
Добавлен:
15.06.2014
Размер:
13.5 Кб
Скачать

Лабораторная работа №12. Операции реляционной алгебры

В основе любой реляционной базы данных лежат модели, построенные на алгебре множеств (реляционной). Таким образом, задачей SQL является выполнение операций реляционной алгебры на множествах, представленных в виде таблиц БД. Основным средством, выполняющим эти функции, является предложение SELECT в  различных вариантах. Как именно могут выглядеть запросы SELECT для выполнения той или иной операции, можно представить исходя из следующего:

Селекция (горизонтальное подмножество) таблицы создается из тех ее строк, которые удовлетворяют заданным условиям. Например:

SELECT * FROM goods WHERE vendorID = 1 AND  cost > 200;

Проекция (вертикальное подмножество) таблицы создается из указанных ее столбцов (в заданном порядке) с последующим исключением дубликатов строк. Например:

SELECT DISTINCT name, cost FROM goods;

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

Пересечение двух таблиц содержит только те строки, которые есть и в первой, и во второй. Например, так, как в приведенном вложенном запросе на выборку списка производителей, чья продукция имеется в общем списке товаров:

SELECT vendor FROM vendors WHERE vendorID IN (SELECT vendorID FROM goods);

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

Декартово произведение таблиц и различные виды соединений, которые тоже являются операциями реляционной алгебры, рассматривались в ЛР №9.

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

Задания к лабораторной работе

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