Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Слайды ИС (2005) Тема 10 Языки запросов.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
613 Кб
Скачать

Тема 10. Языки запросов

Запрос представляет собой специальным образом описанное требование, определяющее состав производимых над БД операций по выборке, удалению или модификации хранимых данных.

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

Языки запросов можно разделить на теоретические и практические.

Теоретические языки запросов являются математической основой практических языков запросов.

10.1. Теоретические языки запросов

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

• реляционная алгебра;

• реляционное исчисление.

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

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

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

Операторы состоят из операндов, в роли которых выступают отношения, и реляционных опера­ций.

Результатом реляционной операции является отношение.

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

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

Для этих языков характерно наличие наборов правил для записи запросов.

В частности, к языкам этой группы относятся QBE и SQL.

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

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

Реляционная алгебра как теоретический язык запросов по сравнению с реляционным исчислением более наглядно описывает выполняемые над отношениями действия.

Примером языка запросов, основанного на реляционной алгебре, является ISBL (Information System Base Language — базовый язык информационных систем). Языки запросов, построенные на основе реляционной алгебры, в современных СУБД широкого распространения не получили. Однако знакомство с ней полезно для понима­ния сути реляционных операций, выражаемых другими используемыми языками.

Вариант реляционной алгебры, предложенный Коддом, включает в себя следующие основные операции: объединение, разность (вычитание), пересечение, декартово (прямое) произведение (или произведение), выборка (селекция, ограничение), проекция, деление и соединение. Упрощенное графическое представление этих операций приведено на рис. 10.2.

Операции реляционной алгебры Кодда можно разделить на две группы:

базовые теоретико-множественные

и специальные реляционные.

Первая группа операций включает в себя классические операции теории множеств:

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

разность,

пересечение

и произведение.

Вторая группа представляет собой развитие обычных теоретико-множественных операций в направлении к реальным задачам манипулирования данными, в ее состав входят следующие операции:

проекция,

селекция,

соединение

и деление.

Операции реляционной алгебры могут выполняться над одним отношением (например, проекция) или над двумя отношениями (например, объединение).

В первом случае операция называется унарной, а во втором — бинарной.

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

Совместимость структур отношений означает совместимость имен атрибутов и типов соответствующих доменов.

Частным случаем совместимости является идентичность (совпадение).

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

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

По справедливому замечанию Дейта, реляционная алгебра Кодда обладает несколькими недостатками.

Во-первых, восемь перечисленных операций по охвату своих функций, с одной стороны, избыточны, так как минимально необходимый набор составляют пять операций: объединение, вычитание, произведение, проекция и выборка. Три другие операции (пересечение, соединение и деление) можно определить через пять минимально необходимых. Так, например, соединение — это проекция выборки произведения.

Во-вторых, этих восьми операций недостаточно для построения реальной СУБД на принципах реляционной алгебры.

Требуются дополнительные операции, включающие:

переименования атрибутов,

расширения – образования новых вычисляемых атрибутов,

подведения итогов – вычисления итоговых функций,

присвоения,

вставки,

обновления,

удаления,

реляционного сравнения,

построения сложных алгебраических выражений и т. д.

Рассмотрим перечисленные операции более подробно, сначала — операции реляционной алгебры Кодда, а затем — дополнительные операции, введенные Дейтом.

Объединение Разность Пересечение

Произведение Выборка (селекция) Проекция

Деление Соединение (естественное)

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