Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
напечатанные лекции по БД этого года(нет по мое....docx
Скачиваний:
10
Добавлен:
22.04.2019
Размер:
795.55 Кб
Скачать

Раздел 3.3. Реляционная алгебра.

Теоретической основой языков запросов к реляционным БД является реляционная алгебра. Операндами в реляционной алгебре являются отношения Ri и их реализации – таблицы ri, ki – арность отношения Ri (количество столбцов); ni – количество строк в Ri.

Базисный набор операций:

1. Объединение: R=R1 R2. Результат операции R содержит кортежи из R1 и R2. Ограничения на операнды: а) k1=k2; б) схемы R1 и R2 также должны совпадать; в) дублирующие кортежи в результат включаются только один раз. Пример:

SQL: R1 UNION R2;

2. Разность: R=R1 \ R2. Результат операции R включает в себя кортежи из R1, которых нет в R2. Ограничения на операнды: а) k1=k2; б) схемы R1 и R2 также должны совпадать. Пример:

SQL: к сожалению в стандарте SQL нет соответствующего оператора, например, как в ORACLE: R1 MINUS R2;, поэтому можно воспользоваться другими конструкциями, например: DELETE * FROM R1 WHERE ID IN (SELECT ID FROM R2);, где ID – одиночное значение некоторого выражения, например первичного ключа в R1 и R2.

3. Декартово произведение. R=R1 R2. Результат операции R: каждый кортеж из R1 дополняется кортежем из R2; арность результата – k = k1+k2; n = n1*n2. Результат декартова произведения не может содержать дублирующие кортежи.

Пример: пусть

тогда

SQL: SELECT * FROM R1, R2;

4. Селекция: R = F(Ri), где F - логическая формула над атрибутами из Ri. Результатом операции является таблица R, содержащая те же столбцы, что и Ri и строки из Ri, подстановка которых в F дает значение "истина". Пример: R = C=c1 (R1):

Результат имеет ту же схему, что и аргумент операции (тот же набор столбцов). Кортеж аргумента попадает в результирующее отношение, если при подстановке в формулу F он дает значение «истина».

SQL: SELECT * FROM Ri WHERE F;

  1. Проекция: R = X(Ri), где X - подмножество атрибутов из отношения Ri. Результирующее отношение имеет схему, совпадающую с множеством X, и содержит кортежи отношения Ri, из которых «вырезаны» значения, соответствующие атрибутам X. Дублирующие кортежи из результата удаляются. Вырезка по столбцам. Пример: R = BC(R1)

SQL: SELECT DISTINCTROW FROM R1;

Дополнительный набор операций:

  1. Пересечение:

Те же ограничения, что у второй базисной операции. Результат содержит кортежи, принадлежащие к и к .

  1. Соединение: , где

  1. Эквисоединение: Частный случай соединения, когда есть знак =

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

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

Выражение через базисный набор: R=X(F(R1R2)), где F=i=1,…,k(R1.Ai=R2.Ai) – конъюнкция по всем одноименным атрибутам, X= R1R2 – объединение атрибутов из R1 и R2.

R1 = поставщик ([А1] , [А2] наименование поставщика, [А3] адрес поставщика)

R2 = потребители ([А4] номер потребителя, [А5] наименование потребителя, [А6] адрес потребителя)

R3 =детали ([А7] номер детали, [А8] наименование детали)

R4 = поставка ([А1] номер поставщика, [А4] номер потребителя, [А7] номер детали, [А9] цена детали, [А10] дата поставки)

ФОРМУЛИРУЕМ ЗАПРОС: получить список деталей, которые были поставлены поставщиком , потребителем в период с 20.09.10 по 21.10.10

Для формализации запроса воспользуемся так называемым универсальным реляционным запросом:

Проекция

Свойства операции:

  1. Коммутативность:

Любая операция соединения, в том числе и естественного.

  1. Ассоциативность:

- определена на атрибутах и

- определена на атрибутах и

  1. Свойство проекции:

  1. Свойство селекции:

- определена на атрибутах из

- определена на атрибутах из

Правила формальной оптимизации запроса:

  1. Операция селекции должна выполняться раньше, чем декартово произведение и соединения (см. св-во 4).

  2. Операция проекции должна выполняться раньше, чем декартово произведение и соединение (см. св-во 3).

  3. Операция селекции и проекции должны выполняться совместно.

  4. Порядок выполнения операции должен быть такой, чтобы в системных буферах было минимальное количество памяти для промежуточных результатов (см. св-ва 1,2)

Пример: