Изменения

Перейти к: навигация, поиск

Datalog и рекурсия

926 байт добавлено, 01:23, 20 декабря 2021
Ограничение отношений
'''Каждая переменная должна входить в неотрицательный реляционный атом'''
 
==Реляционная полнота==
{{Утверждение
|statement=Язык Datalog реляционно полон
|proof=
Выразим базис реляционной алгебры на языке Datalog:
 
'''Проекция $\pi_{A_1, ..., A_n}(R)$'''
Q(A1, ..., An) :- R(A1, ..., An, _, ..., _).
'''Фильтр $σ_θ(R)$'''
Q(A1, ..., An) :- R(A1, ..., An), θ.
'''Объединение $R_1 ∪ R_2$'''
Q(A1, ..., An) :- R1(A1, ..., An).
Q(A1, ..., An) :- R2(A1, ..., An).
'''Разность $R_1 ∖ R_2$'''
Q(A1, ..., An) :- R1(A1, ..., An), ¬R2(A1, ..., An).
'''Декартово произведение $R_1 × R_2$'''
Q(A1, ..., An, B1, ..., Bm) :-
R1(A1, ..., An), R2(B1, ..., Bm).
 
'''Естественное соединение $R_1 ⋈ R_2$'''
Q(A1, ..., An, B1, ..., Bm, C1, ..., Cl) :-
R1(A1, ..., An, B1, ..., Bm), R2(B1, ..., Bm, C1, ..., Cl).
 
<div></div>
}}
==Рекурсивные запросы==
Анонимный участник

Навигация