Реляционная алгебра

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

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

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

  • объединение,

  • пересечение,

  • разность

  • декартово произведение.

Во вторую группу входят операции, применимые только к отношениям:

  • выборка,

  • проекция,

  • соединение.

Основные операции реляционной алгебры

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

Пример объединения. Нужно объединить два отношения Физ_лица и Юр_лица.

Если обозначить отношение Физ_лица как R1 и отношение Юр_лица как R2, то выражение можно представить следующим образом

Пересечение возвращает отношение, содержащее все кортежи, которые принадлежат одновременно двум заданным отношениям

Разность возвращает отношение, содержащее все кортежи, ко­торые принадлежат первому из двух заданных отношений и не при­надлежат второму.

Результат:

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

Результат:

ПРИМЕР.

Исходными являются три отношения R1 R2 и R3. Все они имеют эквивалентные схемы.

R1= (ФИО, Паспорт, Школа);

R2= (ФИО, Паспорт, Школа);

R3= (ФИО, Паспорт, Школа).

Рассмотрим ситуацию поступления в высшие учебные заведения когда разрешены репетиционные вступительные экзамены, которые сдаются раньше основных вступительных экзаменов в вуз. Отношение R1 содержит список абитуриентов, сдававших репетиционные экзамены. Отношение, R2 содержит список абитуриентов, сдававших экзамены на общих условиях. Отношение R3 содержит список абитуриентов, принятых в институт. Будем считать, что при неудачной сдаче репетиционных экзаменов абитуриент мог делать вторую попытку и сдавать экзамены в общем потоке, поэтому некоторые абитуриенты могут присутствовать как в первом, так и во втором отношении.

Ответим на следующие вопросы:

1. Список абитуриентов, которые поступали два раза и не поступили в вуз

2. Список абитуриентов, которые поступили в вуз с первого раза.

3. Список абитуриентов, которые поступили в вуз только со второго раза.

Прежде всего это те абитуриенты, которые присутствуют в отношениях R1 и R2, потому что они поступали два раза, и присутствуют в отношении R3, потому что они поступили.

4. Список абитуриентов, которые поступали только один раз и не поступили.

Это прежде всего те абитуриенты; которые присутствуют в R1 и не присутствуют в R2, и те, кто присутствуют в R2 и не присутствуют в R1. И никто из них не присутствует в R3.

Специальные операции

Выборка возвращает отношение, содержащие все записи из за­данного отношения, которые удовлетворяют указанным условиям.

Первая выборка выводит записи, которые содержат значение 22 поля Chair. Вторая выбор выводит записи, которые одновременно удовлетворяют двум условиям: Chair=24 и Year < 1970

Проекция возвращает отношение, содержащее все записи заданного отношения, которые остались в этом отноше­нии после исключения из него некоторых полей.

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

Запись R1.Job=R3.Job указывает на общее связующее поле для двух соединяющихся отношений.