Relačný kalkul Flashcards
Aké operácie vieme robiť v relačnom kalkule na reláciach?
môžeme mať konštanty, premenné, predikáty (true, false), s nimi robiť konjunkcie a vš. možné logické operácie.
Ako fungujú predikáty v rel. kalkule? Ako generujú tabuľku?
Všetky hodnoty, pre ktoré vracajú TRUE,
uložíme do tabuliek (relácií).
Čo je datalog?
Rozumné zúženie rel. kalkulu, na potrebné operácie, nech nepíšeme napr. furt kvantifikátory, tie tam sú implicitne.
Sú sql, rel. kalkul, datalog deklaratívne alebo imperatívne?
deklaratívne, píšeme ČO nie AKO.
Vieme určiť, ktorý SQL dotaz je najefektívnejší?
Nie, na pozadí ajtak spraví svoje.
Čo je relácia?
Definícia: relácia je podmnožina kartézskeho súčinu množín. Množinám D1, D2, …, Dn sa hovorí domény (typy) atribútov relácie r
Čo sú prvky relácie?
Prvkami relácie sú usporiadané n-tice (hovorí sa im tiež n-tuples,
tuples, záznamy).
Môžeme v ľubovoľnom poradí miešať atribúty?
Nie, ale v SQL áno, tam sú pomenované a nezáleží na poradí.
Čo je predikát?
k r(a,b,c) prislúcha predikát p: AxBxC -> bool, kde p(x,y,z)=true práve vtedy keď [x,y,z] in r.
Čo píšeme malými a čo veľkými písmenami?
Konštanty a predikáty malými
Premenné veľkými.
Čo sú dotazy v relačnom kalkule?
Dotazy v relačnom kalkule sú formuly logiky 1.rádu
Čo je výsledok dotazu v relačnom kalkule?
Výsledok dotazu je usporiadaná množina hodnôt voľných
premenných, po ktorých dosadení tá formula platí.
Čo sú doménovo nezávislé formuly?
Ak sa ich výsledok nemení pri zmene domény, na základe ktorej je výraz vyhodnotený. (ich výsledok závisí nie od domény, ale len od obsahu databázy)
Čo sú ohraničené premenné formuly?
(range-restricted), ak vieme algoritmicky vypočítať konečnú množinu hodnôt Ri takú, že po dosadení
ľubovoľnej hodnoty v not in Ri za Vi formula nie je splniteľná
Čo sú bezpečné formuly? V rel. kalkule
Formula je bezpečná (safe), ak každá jej premenná je ohraničená.
Ako píšeme v datalogu fakty?
napr. r(1,2). r(2,3). (s bodkou).
Kedy je datalog program bezpečný?
Program je bezpečný, ak každé jeho pravidlo je bezpečné
Kedy je v datalogu pravidlo bezpečné?
Pravidlo je bezpečné, ak každá premenná použitá kdekoľvek v tom
pravidle je použitá aj v nejakom pozitívnom relačnom podcieli
Aký je rozdiel medzi prologom a datalogom?
Datalog je podmnožina prologu, povoľuje len bezpečné operácie.
Prečo stačí na definícu v datalogu implikácia?
Nech platí len krat(1,1,1), teda krat(1, 1, 1) :- true. Chceme vyjadriť že true => krat(1,1,1), to ale nevylučuje že neplatí krat(2,3,4). V Datalogu ale platí len to, čo „platiť musí“ (dá sa odvodiť, t.j. dokázať z programu).
čo je russelov paradox?
“Holič holí všetkých mužov v meste, ktorí neholia sami seba“. Holí potom holič holiča?
Ako vyjadriť disjunkciu v datalogu?
dvoma pravidlami.