Tiedonhallinta I, syksy 1999, Harjoitus 6 (8.-11.11.)

Läsnäolo: 2 tehtävää

Huom. Välikoe on keskiviikkona 3.11. klo 15-18 salissa Porthania I. Koealue käsittää luentojen sivuilla 1-181 tai harjoituksissa 1-5 esitetyt asiat. Viikolla 44 (1.-5.11.) ei pidetä luentoja eikä harjoituksia.

1.  Tarkastellaan yritystietokantaan kohdistuvaa kyselyä

select e.LNAME, s.LNAME
from EMPLOYEE e, EMPLOYEE s, DEPARTMENT d
where e.SUPERSSN = s.SSN and e.DNO = d.DNUMBER and d.DNAME = "Research"
and e.SALARY > 30000.

a) Anna kyselyä suoraan vastaava projektio-valinta-tulo-tyyppinen
relaatiolauseke ja tätä vastaava kaavapuu.  Assosioi karteesiset
tulo-operaatiot tavalla, jonka arvelet tuottavan parhaan
optimointituloksen. 

b) Optimoi kysely käyttäen heuristiikkaa "suorita valinnat
mahdollisimman aikaisin". Anna optimoitua kyselyä vastaava kaavapuu ja
relaatiolauseke.    

2.  Miten lasket edellisen tehtävän kyselyn, kun relaatioon EMPLOYEE on
hakemisto attribuutilla SSN ja relaatioon DEPARTMENT on hakemisto
attribuutilla DNAME?

3.  Luentojen sivuilla 194-195 esitetyssä, sisäkkäisiin silmukoihin
perustuvassa liitosalgoritmissa kumpi tahansa relaatioista r ja s
voitaisiin valita ulommassa silmukassa läpikäytävän relaation rooliin. 
Kannattaako ulompaan silmukkaan valita suurempi vai pienempi näistä
relaatioista?

4.  Tarkastellaan relaatioiden r(A,B) ja s(B,C) luonnollisen liitoksen
laskentaa järjestämisliitosmenetelmällä, kun liitosattribuutti B on
relaation s avain (vrt.  luentojen sivu 197). Luonnostele
lomitusvaiheen algoritmi.  Algoritmi toimii kolmen sivun puskuritilassa. 

5. Tarkastellaan relaatiolausekkeen

	P  (r * s * t)			(P on siis projektio-operaattori)
         BD

laskentaa, kun relaatiot r(AB), s(BC) ja t(CD) ovat
seuraavansisältöisiä:

r = {(i,1) | i = 1,...,n},
s = {(1,j) | j = 1,...,n},
t = {(k,2) | k = 1,...,n}.

Mikä on tuloksen koko, so. kuinka monta monikkoa lausekkeen
arvo sisältää? Entä minkä kokoisia välitulosrelaatioita syntyy,
kun lauseke lasketaan muodossa

a)	P  (r * P  (s * t)),	b)   P  (P  (r * s) * t)
         BD      BD		      BD  BC

Oletetaan, että tietokannan hallintajärjestelmän kyselynoptimoijalla on
käytettävissään relaatioiden koot ja attribuuttien arvojoukkojen koot
(äskettäin suoritetun analyysi/tilastointi-ajon jäljiltä).
Millaista heuristiikkaa käyttämällä kyettäisiin tässä tapauksessa
valitsemaan kyselyn kahdesta laskentatavasta tehokkaampi?