Исчисление доменов и его реляционная полнота — различия между версиями
(→Примеры запросов) |
(→Исчисление доменов) |
||
Строка 1: | Строка 1: | ||
==Исчисление доменов== | ==Исчисление доменов== | ||
+ | В отличие от исчисления кортежей, где областью знацения переменных были отношения, в исчислении доменов, значения переменных лежат в заренее заданых доменах (мы будем называть их также типами). Введём синтаксис для указания типов переменных. Также введём предикат, который для заданного отношения и значений атрибутов проверяет, есть ли совпадающий кортеж в отношении. | ||
===Синтаксис=== | ===Синтаксис=== | ||
<font color=red>Переменная</font> :: <font color=red>Тип</font> <font color=green>-- Переменная может принимать значения из какого-то типа. Тип == набор значений | <font color=red>Переменная</font> :: <font color=red>Тип</font> <font color=green>-- Переменная может принимать значения из какого-то типа. Тип == набор значений |
Версия 15:47, 19 декабря 2021
Исчисление доменов
В отличие от исчисления кортежей, где областью знацения переменных были отношения, в исчислении доменов, значения переменных лежат в заренее заданых доменах (мы будем называть их также типами). Введём синтаксис для указания типов переменных. Также введём предикат, который для заданного отношения и значений атрибутов проверяет, есть ли совпадающий кортеж в отношении.
Синтаксис
Переменная :: Тип -- Переменная может принимать значения из какого-то типа. Тип == набор значений -- Условие принадлежности отношению Отношение { Атрибут1 = Значение1, Атрибут2 = Значение2, ... }
Условие принадлежности
Предикат, значение которого истина тогда, когда в отношении есть кортеж с совпадающими значениями атрибутов.
S{FirstName = 'Иван', LastName = 'Иванов'}
Примеры запросов
Идентификаторы всех студентов
SId where S{SId = SId}
Идентификаторы студентов, не сдавших курс с CId=10
SId where ¬∃Points (Points ≥ 60 ∧ Points{SId = SId, Points = Points, CId = 10})
Реляционная полнота исчисления доменов
Проекция $\pi_{A_1, ..., A_n}(R)$
$A_1$, ..., $A_n$ from $R$ where $R${$A_1$ = $A_1$, ..., $A_n$ = $A_n$}
Фильтр $σ_θ(R)$
$A_1$, ..., $A_n$ from $R$ where $R${$A_1$ = $A_1$, ..., $A_n$ = $A_n$} ∧ $θ$
Переименовывание $ε_{A=expr}(R_1)$
expr as A from $R$ where $R${$A_1$ = $A_1$, ..., $A_n$ = $A_n$}
Объединение $R_1 ∪ R_2$
$A_1$, ..., $A_n$ where $R_1${$A_i$ = $A_i$} ∨ $R_2${$A_i$ = $A_i$}
Разность $R_1 ∖ R_2$
$A_1$, ..., $A_n$ where $R_1${$A_i$ = $A_i$} ∧ $¬R_2${$A_i$ = $A_i$}
Декартово произведение $R_1 × R_2$
$A_1$, ..., $A_n$, $B_1$, ..., $B_m$ where $R_1${$A_i$ = $A_i$} ∧ $R_2${$B_j$ = $B_j$}
Естественное соединение $R_1 ⋈ R_2$
$A_1$, ..., $A_n$, $B_1$, ..., $B_m$, $C_1$, ..., $C_l$ where $R_1${$A_i$ = $A_i$, $B_j$ = $B_j$} ∧ $R_2${$C_k$ = $C_k$, $B_j$ = $B_j$}