Даны два отношения r1(R1) и r2(R2), для которых R2 ⊆ R1 и R2 не пусто. Частным от деления отношения r1 на отношение r2 называется отношение s(R) = r1 ÷ r2, для которого:
• схема отношения R = R1 – R2,
• реализация отношения есть множество кортежей t таких, что для всех ui ∈ r2 существует vj ∈ r1 такой, что vj(R1 – R2) = t и vj(R2) = ui.
Формальная запись:
Даны r1(R1), r2(R2), R2 ⊆ R1, R2 ≠ 0.
s(R) = r1 ÷ r2, R = R1 – R2, s = {tj | ∀ u ∈ r2 (tju ∈ r1)}
Другими словами, s × r2 ∈ r1.
Пример:
r1 | (A | B | C | D | r2 | (C | D) | s = r1 ÷ r2 | (A | B) | ||
a | b | c | d | c | d | b | c | |||||
a | b | c | f | e | f | e | d | |||||
b | c | e | f | |||||||||
b | c | c | d | |||||||||
e | d | e | f | |||||||||
e | d | c | d | |||||||||
e | d | c | f |
Действительно, кортежи <bccd>, <bcef>, <edcd> и <edef> есть в отношении r1. Кортеж <abcd> есть в отношении r1, но кортежа <abed> нет, поэтому в s нет кортежа <ab>.
Можно написать выражение реляционной алгебры, эквивалентное операции деления:
r1 ÷ r2 = πR1-R2(r1) – πR1-R2((πR1-R2(r1) × r2) – r1)
Примеры
Рассмотрим некоторые примеры написания запросов к базе данных на языке реляционной алгебры.
Пусть дана следующая схема базы данных:
S(S#, SN, SC) – ПОСТАВЩИК (Номер поставщика, Имя, Город)
P(P#, PN, PC) – ДЕТАЛЬ (Номер детали, Название, Цена)
SP(S#, P#, QTY) – ПОСТАВКА ( Номер поставщика, Номер детали, Количество)
1. Получить имена поставщиков, поставляющих деталь с номером P1.
πSN(σP# =’ P1’(S SP))
1. Получить имена поставщиков, не поставляющих деталь с номером P1.
πSN(S) – πSN(σP# = ‘P1’(S SP))
2. Получить имена поставщиков, поставляющих только деталь с номером P1.
πSN(σP# =’P1’(S SP)) – πSN(σP# ≠’ P1’(S SP))
3. Получить имена поставщиков, поставляющих все детали.
πSN((πS#,P#(SP) ÷ πP#(P)) S)
Реляционное исчисление
Общие определения
Реляционное исчисление лежит в основе декларативного подхода к формулировке запроса к базе данных, суть которого заключается в следующем:
Запросу к базе данных соответствует формула некоторой формально-логической теории, которая описывает свойства желаемого результата.
Ответом на запрос служит множество объектов из области интерпретации (которой является база данных), на котором истинна формула, соответствующая запросу.
В качестве такой формально-логической теории используется теория исчисления предикатов первого порядка, в которой формула задается в виде предиката.