Управл_данными / 19-алгебра
.pdfХотя в реляционном исчислении используется совершенно иной подход, чем в реляционной алгебре, тем не менее эти два языка логически эквивалентны.
Это означает, что любой запрос, который можно выполнить на одном языке, можно сформулировать и выполнить на другом.
Рассмотрим отношение:
В реляционной алгебре для выполнения этого запроса необходимо использовать алгебраическое выражение, которое должно содержать следующие операции:
1)операцию Выбор над отношением r;
2)проецирование результата предыдущей операции на атрибут Назв_дет :
21
В реляционном исчислении для получения того же результата формулировка запроса должна иметь следующий вид:
{t.Назв_дет | t in r ^ t.Bec = 2 }
,где:
t — переменная, обозначающая произвольную строку.
Отношение, из которого берется t, определяется выражением "t in r", которое означает, что t — строка отношения r.
t.Назв_дет — значение атрибута Назв_дет в строке t;
символ (|) — разделяет целевой список и определяющее выражение.
t.Назв_дет — целевой список;
t in r t.Bec = 2 — определяющее выражение;
t.Вес = 2 означает, что значение атрибута Вес в строке t равно 2.
Фигурные скобки "{ }", в которые заключено выражение, определяют результат запроса, как множество значений данных.
Приведенное решение иллюстрирует почти все элементы реляционного исчисления.
22
В основе языка SQL лежит реляционное исчисление
Для получения того же результата, используется запрос на языке SQL:
SELECT Назв_дет FROM Детали WHERE Вес=2
{ t.Назв_дет | t in r ^ t.Bec = 2 }
23
Пример 2
Задача: Перечислить названия деталей, потребности в которых покрываются деталями, хранящимися на складе.
SELECT ПОТРЕБНОСТИ.Назв
FROM ПОТРЕБНОСТИ, СКЛАД
WHERE ПОТРЕБНОСТИ.Код_дет = СКЛАД.Код_дет
AND СКЛАД.Колич > ПОТРЕБНОСТИ.Количество
{t.Назв | |
t |
in ПОТРЕБНОСТИ |
s in СКЛАД |
|
(s.Код_дет |
= |
t.Код_дет |
s.Колич > t.Количество)} |
Здесь: |
- Квантор существования |
|
- Логическая операция “И” |
|
|
24