Formální základy databázové technologie/Bezpečné výrazy Datalog

Z ωικι.matfyz.cz
Přejít na: navigace, hledání
př: nebezpečná pravidla Datalog

z přednášky:

  • GREATER(x,y) :- x > y (není bezpečné)
  • FRIEND(x,y) :- M(x) (není bezpečné)
  • S1(y,w) :- F(x,y), F(x,w), y ≠ w (je bezpečné, ≠ se bere jako =)

z media:Datalog-unsafe_rules.PNG:

  • s(X) :- r(Y) (není bezpečné)
  • s(X) :- r(Y) AND NOT r(X) (není bezpečné)
  • s(X) :- r(Y) AND X < Y (není bezpečné)

(ve všech připadech nekonečnost X splni pravidlo i když je R konečná relace)

Bezpečné pravidla v Datalogu[editovat | editovat zdroj]

  • Omezená proměnná x v Datalogu je taková, která se vyskytuje v těle literálu L a pro jehož tělo platí:
    • L je dán pravým predikátem, nebo
      • pravý predikát - jméno zákl.db relace nebo jméno virtuální relace (prakticky EDB nebo levá strana IDB pravidla)
    • L je x = a nebo a = x , kde a je konstanta nebo omezená proměnná

Pravidlo je bezpečné pokud jsou ∀proměnné omezené.

Datalog má povolená pouze bezpečná pravidla a dále platí, že v hlavách jsou pouze jména virtuálních relací

💡 (ktere nejsou v EDB), tzn odvozováním nevytvářím další základní data