Agregácie a rekurzia Flashcards

1
Q

Ako vieme zrátať iba unikátne hodnoty?

A

COUNT(DISTINCT x)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Ako vieme robiť selekciu na už agregovaných a grupovaných výrazoch?

A
na konci HAVING
HAVING SUM(v.Mnozstvo) >= 5
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Ako funguje agregácia a relačný kalkul?

A

Za <3 vypíšeme voľné premenné a agregácie. Zvyšné sa použijú na grupovanie.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Ako funguje subtotal v datalogu?

subtotal(nieco, nieco2, nieco3)

A

nieco - množiny argumentov, vstupné dáta na ktorých robíme agregáciu
nieco2 - grupovacie argumenty
nieco3 - agregácie

subtotal(vypite_alkoholy(K, A), [K], [Pocet = count(A)]).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ako preložiť datalog do rel. algebry?

A

Najprv preložíme nezávislé dotazy.

Negácia je rozdiel, or je zjednotenie a pod.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Čo vieme použiť namiesto rozdielu?

A

Antijoin

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Prečo je antijoin lepší ako rozdiel?

A

Pri rozdiele môžeme stratiť atribúty, ktoré treba potom znova najoinovať, pri antijoine ale nestrácame.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Ako robíme rekurziu v rel. algebre?

A

fixpoint (fí)
fí(postupnosť priradení), pokiaľ sa mení tak sa opakuje, ak sa nezmení máme výsledok. napr.
ancestor := parent
fí(ancestor := ancestor \/ X, A(ancestor ⋈ parent))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ako robíme rekurziu v rel. kalkule?

A

Nijak špeci, spravíme len definície v rámci tej množiny (slide 28)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ako robíme rekurziu v sql?

A

WITH RECURSIVe, potom v tele dávame triviálny prípad a UNION

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Čo hovorí Tarskeho veta o pevnom bode pre úplné zväzy?

A

iteratívny výpočet konverguje k pevnému bodu pre “obvyklé“ (aj rekurzívne) dotazy, keďže kartézsky súčin, join, zjednotenie, projekcia a premenovanie sú „neklesajúce“ operácie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Čo je stratifikácia?

A

program je stratifikovaný, keď existuje priradenie S(.), ktoré každému predikátu priradí celé číslo, tzv. stratum (vrstva) tak, že platí:
• Ak p je definovaný pomocou q, tak S(p) >= S(q)
• Ak p je definovaný pomocou not q, tak S(p) > S(q)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Aký je alg. stratifikácie?

A
  1. Všetkým predikátom priraď stratum 1
  2. Ak niektoré pravidlo porušuje podmienku stratifikácie, tak zvýš stratum predikátu tak kde je najmenšie celé číslo, ktoré tú podmienku spĺňa
  3. Ak je niektoré stratum väčšie ako počet predikátov, tak program sa nedá stratifikovať
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aká je naivná evaluácia v datalogu?

A
  1. pre všetky predikáty pi = prázdna množina
  2. priraďuj pokiaľ sa nejaká mn. zmenila
  3. máme výsledok (niekedy ale krok 2 neskončí)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Aká je seminaivná evaluácia?

A

Nepridávať vždy všetko znova ale len rozdiel (nejaká delta, nové záznamy)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly