19. Теоретические языки запросов. Реляционная алгебра. Основные операторы реляционной алгебры.

В реляционной СУБД для выполнения операций над отношениями используются 2 группы языков. языки, предложенные Коддом: 1) Реляционная алгебра 2) Реляционное исчисление

И реляционная алгебра и реляционное исчисление являются теоретическими языками. Выражения реляционной алгебры и формулы реляционного исчисления выполняются над отношениями реляционных БД, т.е. операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при пошаговом выполнении последовательности реляционных операторов, применяемым к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций. Результатом реляционной операции является отношение.

Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными (описательными, или декларативными) и позволяют выражать запросы с помощью предиката первого порядка (высказывания в виде функции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. Непроцедурные языки формулируют, что нужно делать, а не как этого добиться.

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

Пример:В качестве первичного ключа таблицы выбран код поставщика S#. Таблица M (материалы) Первичным ключом этой таблицы является М# (код материала). Последняя таблица SM (поставки) содержит сведения о поставках тканей, осуществляемых поставщиками, и их количестве. Предполагается, что в одно и то же время не может быть более, чем одной поставки для одного поставщика и для одной ткани. Поэтому в качестве первичного ключа этой таблицы можно выбрать составной ключ S#М#, представляющий уникальную комбинацию для каждой поставки с точки зрения набора текущих поставок в таблице. Каждое из полей S# и М# таблицы SM в отдельности является внешним ключом по отношению к таблице S и M соответственно.

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

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

Вычитанием совместимых отношений R1 и R2 одинаковой размерности (R1 MINUS R2) является отношение, тело которого состоит из множества всех кортежей, принадлежащих отношению R1, но не принадлежащих отношению R2.

Можно заметить, что результат операции вычитания зависит от порядка следования операндов, т. е. R1 MINUS R2 и R2 MINUS R1 – не одно и то же.

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

Выборка возвращает отношение, содержащее все кортежи из определенного отношения, которые удовлетворяют определенным условиям. Выборка (R WHERE f) отношения R по формуле f представляет собой новое отношение с заголовком отношения R и телом, состоящим из таких кортежей отношения R, которые удовлетворяют истинности логического выражения, заданного формулой f.

Для записи формулы f используются имена атрибутов, константы, логические операции (AND – И, OR – ИЛИ, NOT – НЕ), операции отношения между величинами и скобки.

Пример. Выборка

1. Логическое выражение: M WHERE MS <400. Результирующее отношение содержит кортежи таблицы М, содержащие материалы, поверхностная плотность которых меньше 400.

2. Логическое выражение: SM WHERE S# = "S1" АND М# = "M1". Результирующее отношение содержит кортеж таблицы SM, определяющий поставку поставщиком S1 материала M1.

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

Повторение одинаковых атрибутов запрещается

Операция проекции допускает следующие дополнительные варианты записи. 1.Отсутствие списка атрибутов подразумевает указание всех атрибутов (операция тождественной проекции); 2.Выражение вида R[ ] означает пустую проекцию, результатом которой является пустое множество; 3.Операция проекции может применяться к произвольному отношению, в том числе и к результату выборки.

Для манипулирования данными в базах данных используются запросы. Запрос представляет собой сообщение конечного пользователя или приложения, направляемое СУБД и активизирующее в базе данных следующие действия: выборку, вставку, удаление или обновление указанных в запросе данных. Запросы описываются с помощью языков запросов: QBE (Query By Example) – язык запросов по образцу; SQL (Structured Query Language) – структурированный язык запросов. Оба языка являются непроцедурными, т. е. описывают свойства результата ("что надо сделать"), а не алгоритм решения задачи ("как это сделать").

Главное отличие между ними заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.

Язык QBE позволяет создавать запросы к БД путем заполнения предлагаемой СУБД QBE является графическим языком, в котором запросы формулируются посредством графического представления таблиц базы данных. Такой способ задания запросов обеспечивает высокую наглядность и не требует знания программирования – достаточно описать образец ожидаемого результата.

В реализациях конкретных реляционных СУБД реляционная алгебра и реляционное исчисление в "чистом" виде не используются. Фактическим стандартом доступа к реляционным данным стал язык SQL (Structured Query Language), представляющий собой смесь операторов реляционной алгебры и выражений реляционного исчисления, использующий синтаксис, близкий к фразам английского языка и расширенный дополнительными возможностями, отсутствующими в реляционной алгебре и реляционном исчислении.

Hosted by uCoz