Теоретические языки запросов
Теоретические языки запросов
Операции, выполняемые над отношениями можно разделить на 2 группы:
1. Операции над множествами:
· объединение;
· пересечение;
· разность;
· деление;
· декартово произведение;
2. Операции над отношениями:
Рекомендуемые материалы
· проекция;
· соединение;
· выбор.
В различных СУБД реализована некоторая часть операций над отношениями, этим и определяется возможности данной СУБД и сложность реализации запросов к БД. В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющих в качестве своей математической основы теоретические языки запросов, предложенные Э.Коддом:
· реляционная алгебра;
· реляционное исчисление.
Эти языки предоставляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью и эквивалентны друг другу по своим выразительным возможностям. Существуют несложные правила преобразования запросов между ними.
В реляционной алгебре операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемых к отношениям, и реляционных операций. Результатом реляционной операции является отношение.
Языки исчислений. В отличие от реляционной алгебры, являются непроцедурными, т.е. описательными, или декларативными, и позволяют выражать запросы с помощью предиката первого порядка, т.е. высказывания в виде функции, которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. В частности, к языкам той группы относится SQL.
При рассмотрении языков реляционной алгебры и исчислений будем использовать пример базы данных, состоящей из таблиц:
· S – поставщики;
· P – детали;
· SP – поставки.
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 | P1 | 300 |
S1 | P2 | 200 |
S1 | P3 | 400 |
S1 | P4 | 200 |
S1 | P5 | 100 |
S1 | P6 | 100 |
S2 | P1 | 300 |
S2 | P2 | 400 |
S3 | P2 | 200 |
S4 | P2 | 200 |
S4 | "Лекция 16" - тут тоже много полезного для Вас. P4 | 300 |
S4 | P5 | 400 |