4.3.3. Реляционное исчисление на кортежах

Доказано, что операции реляционной алгебры, причем без дополнительных - соединения, пересечения и деления позволяют производить любые манипуляции с отношениями, а следовательно с данными в реляционной модели. Однако для удобства пользователей существуют и другие в чем-то более удобные ЯМД. Некоторые из них основаны на операциях реляционного исчисления на кортежах, точнее на одной операции {t | f(t)}. Фактически данное выражение означает мно¬жество кортежей, удовлетворяющих формуле f(t), построенной по следующим правилам:
A) Под атомом понимается либо выражение вида R(s), подразумевающее, что R - кортеж отношения s (например ПРЕПОДАВАТЕЛИ^)), либо выраже¬ние построенное на основе операций сравнения для каких-либо значений атрибутов кортежа (например t.1d=1d_преп, либо 1возраст>40 и т.д.).
B) Атом - есть формула.
C) Если F - формула, то IF - формула.
D) Если F,G - формулы, то FAG, F\/G, F^G, F^G - формулы.
E) Формулы могут заключаться в скобки для изменения приоритета операций. Приоритеты по умолчанию: 1, A, V, =>, ^.
F) Если F - формула, содержащая переменную х то " xF, $ xF - формулы. При этом, если формула F содержит переменную х, то она является связан¬ной.
G) Ничто иное не является формулой.
Видно, что эти правила соответствуют правилам логики предикатов первого порядка (подробнее см [32]). Однако, если в логике предикатов предполагается отсутствие в корректных формулах свободных переменных (не связанных кванторами), то для корректности выражения {t| f(t)} переменная t в формуле f(t) должна быть свободной, а все остальные переменные (если таковые существуют) - связанными.
 

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

Пример 1. Найти всех преподавателей старше 40 лет

P={ t |ПРЕПОДАВАТЕЛИ^) Л ^.возраст>4 0)}

OUTPUT P

Пример 2. Найти всех преподавателей физико-математического факультета, получающих з/п. больше 15000 рублей. Удалить тех из них, у кого стаж <2 лет.

P1={t | ФАКУЛЬТЕТЫ(t) Л t (t-название = "ФМФ"}

P2={t | КАФЕДРЫ(t) Л 3s[P1(s) Л(t.id_фак = s.id)]}

P3={t | БЫТЬ_СОТР (t) Л 3s[P2(s) Л(t.id_каф = s.id^(t.3/n > 15000)]} P4={t | ПРЕПОДАВАТЕЛИ(t) Л 3s[P3(s) Л(t.id = s.id_преп)]}

OUTPUT P4

P5={t | P4(t) Л (t-стаж < 2)}

DELETE P5

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