{{zarovka |
každá bezpečná fle je doménově nezávislá
dá se rychle zjistit zda ze daná fle bezpečná
N/DRK fle vyjádřitelné realnými DJ jsou bezpečné
| bezpečné fle }}
volne proměnné - nejsou v zadnem kvantif. (např R(x)), vázané - jsou v nejakem kvantifikátoru (např: ∃xR(x))
Definujeme: výrazy dotazu , je formule DRK, databáze , dom je doména pro , aktuální doména formule je množina hodnot z relací v a konstant v .
Problém RK jsou nekonečné domény, které je potřeba omezit (aktuální doménou - adom), aby nedocházelo k nežádoucím jevům:
Nekonečná odpověď v případě nekonečné (např. )
situace, kdy TRUE ohodnocení volných proměnných není v DB (např. )
nekonečný výpočet (impl. vyhodnoceni kvantifikace na nekonečné ) (např. kde y má nekon.doménu )
řešením jsou doménově nezávislé (definitní, určité) dotazy
tj.: nejsou definitní pokud pod ruznymi davaji ruzne vysledky
bezpečná formule ⇒ je také doménově nezávislá (opačně to neplatí, dom.nezávislé jsou nadmnožinou bezpečných)
{{Collapse|další info| další sémantiky (stejně silné), které uvedené problémy řeší:
neomezená interpretace s omezeným výstupem (výsledek je definová jako průnik s )
omezená interpretace (vyhodnocení dotazu probíhá pouze přes hodnoty z )
každou proměnnou (volné i vázanou) omezíme doménu - přidáme a tím omezíme doménu na vzhledem k relaci
konkrétněji:
Omezené kvantifikátory:
místo se používá
ParseError: KaTeX parse error: Undefined control sequence: \and at position 9: ∃x(R(x) \̲a̲n̲d̲ ̲φ(x))
- tedymísto se používá - tedy
volné proměnné ve φ(x) můžeme také omezit – konjunkcí
ParseError: KaTeX parse error: Undefined control sequence: \and at position 6: R(x) \̲a̲n̲d̲ ̲φ(x)
}}
zjistit, zda je DRK výraz dom.nezávislý je nerozhodnutelný problém (∄program co zjisti jestli je dom.nezávislý) a tedy není rek.spočetný jazyk
máme ale jednoduchá syntaktická pravidla (třídu) která nám určují bezpečné formule (jsou podmnožinou dom.nezávislých):
Bezpečné formule DRK
{{zarovka| 1 =
¬R(x,y) NENÍ bezpečný (dle 3.a)
x = y NENÍ bezpečný (3.a)
x = y ∨ R(x,y) NENÍ bezpečný (2,3.a)
x = y ∧ R(x,y) JE bezpečný
| 2 = př: bezpečná pravidla DRK }}
{{zarovka |
pomoci ¬: {S ¬(S ∈ Sailors)}
pozn.: RA neobsahuje nebezpecna pravidla (nema ¬) a je doménově nezávislá
| př: nebezpečná pravidla NRK }}
nemají ∀
( můžeme nahradit )
každá disjunkce
ParseError: KaTeX parse error: Undefined control sequence: \or at position 11: \varphi_1 \̲o̲r̲ ̲\varphi_2 \or .…
obsahuje stejné volné proměnné( tranformujeme na
ParseError: KaTeX parse error: Undefined control sequence: \or at position 11: ¬\varphi_1\̲o̲r̲\varphi_2
)
každá **konjunkce (maximální), má všechny volné proměnné omezené, **tj. platí pro ni alespoň 1 z podmínek:
#:(a) proměnná je volná v co není negace ani binární porovnání #:(b) ∃, kde je konstanta nebo omezená proměnná
¬ smí být pouze v konjunkcích z bodu 3
{{Zdroje|1 =
Principles of Database and Knowledge-base Systems (Jeffrey D. Ullman) - zdarma ke stažení na google books
}}
Bezpečné (safe) formule NRK
{{Collapse|syntaktická pravidla pro bezpečné výrazy v NRK (nebylo na přednášce)|
nemají ∀
každá disjunkce
ParseError: KaTeX parse error: Undefined control sequence: \or at position 11: \varphi_1 \̲o̲r̲ ̲\varphi_2
obsahuje pouze 1 stejnou volnou proměnnoukaždá **konjunkce (maximální), má všechny volné proměnné omezené, **tj. platí pro ni alespoň 1 z podmínek:
#:(a) není negace ani binární porovnání ( obsahuje v ni volnou ⇒ každá komponenta je omezená) #:(b) , kde je konstanta nebo komponenta omezené proměnné
¬ smí být pouze v konjunkcích z bodu 3
}}
{{: Formální_základy_databázové_technologie/Bezpečné_výrazy_Datalog}}