Реляционная алгебра
Реляционная алгебра - это язык операций, выполняемых над отношениями - таблицами реляционной базы данных. Операции реляционной алгебры позволяют на основе одного или нескольких отношений создавать другое отношение без изменения самих исходных отношений.
Полученное другое отношение обычно не записывается в базу данных, а существует в результате выполнения запроса - массиве, создаваемом функциями для работы с базами данных в языках программирования.
Рассмотрим семь основных операций реляционной алгебры. Они разделены на две группы. В первую входят операции, совершаемые над любыми множествами:
объединение,
пересечение,
разность
декартово произведение.
Во вторую группу входят операции, применимые только к отношениям:
выборка,
проекция,
соединение.
Основные операции реляционной алгебры
Объединение - операция над двумя отношениями, в результате которой получается новое отношение, состоящее из всех кортежей (записей) исходных отношений (таблиц). Общие для исходных отношений кортежи в новом отношении встречаются только по одному разу.
Пример объединения. Нужно объединить два отношения Физ_лица и Юр_лица.
Если обозначить отношение Физ_лица как 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 указывает на общее связующее поле для двух соединяющихся отношений.