Смекни!
smekni.com

Методические указания по курсам «Теория информационных систем» и«Базы данных» Разделы «Реляционная алгебра» и«Язык sql» (стр. 2 из 6)

Пример операции проекции.

A [NAME, CITY] A [CITY]

NAME CITY CITY
Иванов Москва Москва
Петров Нижний Новгород Нижний Новгород
Сидоров Рязань Рязань
Галкин Москва

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

Пусть X={X1, X2, …, Xm}, Y={Y1, Y2, …, Yn}, Z={Z1, Z2, …, Zk}.

Естественным соединением отношений A(X,Y) и B(Y,Z) (A JOIN B) называется отношение с заголовком {Х, Y, Z} и с телом, содержащим множество всех кортежей вида <Х:x, Y:y, Z:z> таких, для которых в отношении A значение атрибута Х равно x, а значение атрибута Y равно y, и в отношении В значение атрибута Y равно y, а атрибута Z равно z. При естественном соединении производится сцепление строк операндов соединения по общим атрибутам.

Замечание 1. Соединения не всегда выполняются по внешнему ключу и соответствующему потенциальному ключу, хотя такие соединения очень распространены и являются важным частным случаем.

Замечание 2. Если отношения A и B не имеют общих атрибутов, то выражение A JOIN B эквивалентно A ´B.

Отношение А (поставщики) Отношение В (детали)

ID_NUM NAME CITY STATUS IP_NUM NAIMEN CITY WEIGHT
1809 Иванов Москва 20 Р123 Болт Москва 12
1996 Петров Нижний Новгород 15 Р896 Гайка Нижний Новгород 14
1777 Сидоров Рязань 10 Р432 Шарнир Москва 15

A JOIN B

ID_NUM NAME STATUS CITY IP_NUM NAIMEN CITY WEIGHT
1809 Иванов 20 Москва Р123 Болт Москва 12
1809 Иванов 20 Москва Р432 Шарнир Москва 15
1996 Петров 15 Нижний Новгород Р896 Гайка Нижний Новгород 14

Тета – соединение. Пусть отношения А и В не имеют общих имен атрибутов и θ определяется так же, как в операции выборки.

θ - соединением отношения А по атрибуту X с отношением В по атрибуту Y называется результат вычисления выражения (A´B) WHERE X θ Y.

θ - соединение – это отношение с тем же заголовком, что и при декартовом произведении отношений А и В, и с телом, содержащим множество кортежей t Î A´B , таких что вычисление условия X θ Y дает значение истина для данного кортежа. Атрибуты X и Y должны быть определены на одном и том же домене, а оператор должен иметь смысл для этого домена.

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

Пример операции θ - соединения.

Отношение А (поставщики) Отношение В (поставки)

ID_NUM NAME CITY STATUS ID_NUM IP_NUM QTY
1809 Иванов Москва 20 1809 Р123 100
1996 Петров Нижний Новгород 15 1809 Р896 200
1777 Сидоров Рязань 10 1777 Р432 150
1996 Р432 150
1996 Р123 250

(A´B (RENAME ID_NUM AS AID_NUM) WHERE QTY <200

ID_NUM NAME CITY STATUS AID_NUM IP_NUM QTY
1809 Иванов Москва 20 1809 Р123 100
1996 Петров Нижний Новгород 15 1996 Р432 150
1777 Сидоров Рязань 10 1777 Р432 150

Операция деления

У операции реляционного деления два операнда - бинарное и унарное отношения. Пусть X={X1, X2, …, Xm}, Y={Y1, Y2, …, Yn}.

Делением отношений А(Х,Y) на В(Y) (А/В) называется отношение с заголовком {X} и телом, содержащим множество всех кортежей {X:x}, таких что существует кортеж {X:x, Y:y}, который принадлежит отношению А для всех кортежей {Y:y}, принадлежащих отношению В.

Деление отношений - создает новое отношение, содержащее атрибуты первого отношения, отсутствующие во втором отношении и кортежи первого отношения, которые совпали кортежами второго. Для выполнения этой операции второе отношения должно содержать лишь атрибуты, совпадающие с атрибутами первого.

Замечание: Операция деления полезна тогда, когда запрос содержит слово «все».

Пример:

Отношение А Отношение В Отношение В1 Отношение В2

S# P# P# P# P#
S1 P1 P1 P2 P1
S1 P2 P3 P2
S1 P3 P3
S1 P4
S2 P1 A/B A/В1 A/B2
S2 P3 S1 S1 S1
S3 P2 S2 S3
S3 P3

Кроме рассмотренных выше операций в состав алгебры включаются:

● операция присваивания, позволяющая сохранить в базе данных результаты вычисления алгебраических выражений (A:= B),

○ операция переименования атрибутов, дающая возможность корректно сформировать заголовок (схему) результирующего отношения (A RENAME X AS Y),

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

● операция подведения итогов, дающая возможность разбивать множество кортежей отношения на группы в соответствии с содержимым одного или нескольких атрибутов, и внутри каждой группы применять определенный оператор агрегирования (аналог операции GROUP BY в языке SQL). Операторы агрегирования предназначены для подведения итогов в определенном столбце таблицы – отношения, например, для нахождения суммарных, средних, минимальных и максимальных значений (SUM, AVG, MIN, MAX, COUNT).

SUMMARIZE <реляционное выражение> BY (атрибуты) ADD <функция агрегирования> AS <новое имя атрибута>

Пример: SUMMARIZE SP BY (P#) ADD SUM(QTY) AS TOTAL_QTY

Отношение SP Результат

S# P# QTY P# TOTAL_QTY
S1 P1 300 P1 600
S1 P2 200 P2 300
S1 P3 400 P3 800
S1 P4 200 P4 300
S2 P1 300
S2 P3 200
S3 P2 100
S3 P3 200
S3 P4 100

Примеры использования реляционных операторов.

Пример №1.

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

Новая продукция (номер цеха, код продукции, дата выпуска, количество)

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

Выпуск продукции (номер цеха, код продукции, дата выпуска, количество)

Так как атрибуты отношений совпадают, то для обновления сведений об ассортименте и количестве выпускаемой продукции необходимо отношение Новая продукция объединить с исходным отношением Выпуск продукции.

Новая продукция È Выпуск продукции

Пример №2.

Имеется набор экзаменационных ведомостей - отношений с совпадающими атрибутами:

Ведомость_i (группа_i, номер зачетной книжки_i, фамилия студента_i, дата_i, дисциплина_i, оценка_i)

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

Для экзаменационных ведомостей нужной группы:

1. Выполняем ограничение исходных отношений, отбирая из каждого в новое отношение кортежи, удовлетворяющие условию оценка_i = 'отлично'. Получили списки отличников группы по дисциплинам.

Отличники_i := Ведомость_i WHERE оценка_i = 'отлично'

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

Отличники_i [номер зачетной книжки, фамилия студента]

3. Пересечение последних даст нам искомое отношение - Список отличников, содержащее номера зачетных книжек и фамилии общие для всех списков отличников

Пример №3.

Используя ежемесячные отчеты цехов о выпуске продукции (смотри пример №1), подготовить сведения о выпуске новых видов продукции за последний квартал.