Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
101
Добавлен:
15.06.2014
Размер:
1.7 Mб
Скачать

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

Операции, выполняемые над отношениями, можно разделить на две группы. Первую группу составляют операции над множествами, к которым от­носятся операции: объединения, пересечения, разности и декартова произведения. Вторую группу составляют специальные операции над отношениями, к которым, в частности, относятся операции: выбора, проекции, деления, соединения.

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

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

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

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

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

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

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

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

  • S(поставщики);

  • Р (детали);

  • SP(поставки).

Первичными ключами этих таблиц являются соответственно: П# (код постав­щика), Д# (код детали) и составной ключ (П#, Д#). Содержимое таблиц приведено на рис. 3.4. Для удобства изложения предположим, что в рассматриваемых языках запросов нет ограничений на употребление символов русского алфавита в именах атрибутов. Каждое из полей П# и Д# таблицы SP в отдельности является внешним ключом по отношению к таблице S и Р соответственно.

S

П#

Имя

Статус

Город_П

S1

Сергей

20

Москва

S2

Иван

10

Киев

S3

Борис

30

Киев

S4

Николай

20

Москва

S5

Андрей

30

Минск

P

Д#

Название

Тип.

Вес

Город_Д

P1

гайка

каленый

12

Москва

P2

болт

мягкий

17

Киев

P3

винт

твердый

17

Ростов

P4

винт

каленый

14

Москва

P5

палец

твердый

12

Киев

P6

шпилька

каленый

19

Москва

SP

П#

Д#

Количество

S1

Р1

300

S1

Р2

200

S1

РЗ

400

S1

Р4

200

S1

Р5

100

S1

Р6

100

S2

Р1

300

S2

Р2

400

S3

Р2

200

S4

P2

200

S4

Р4

300

S4

Р5

400

Рис. 3.4. Таблицы поставщиков, деталей и поставок

Предположим, что имена доменов (множеств допустимых значений) совпадают с именами атрибутов. Исключение составляют атрибуты Город_П (город, в котором находится поставщик) и Город_Д (город, в котором выпускается деталь), которые имеют общий домен: множество названий городов. Имя этого домена может быть, например, просто Город. Характеристики доменов как типов данных следующие: Д# - строка символов длиной 5 или кратко С (5), Имя – С(20), Статус - цифровое длиной 5 или кратко N(5), Город – С (15), Д# —С(6), Тип —С(6), Вес —N(5), Количество —N(5).