Tietokannan hallinta, syksy 2001, Harjoitus 4 (9.-12.10.)

Läsnäolo: 3 tehtävää        (**)-merkitty tehtävä lasketaan kahdeksi

Tehtävät liittyvät luentojen lukuun 4.

1. Vertaile luentojen sivuilla 8-9 esitettyjä kyselypuita välitulosten koon kannalta käyttämällä esimerkkinä seuraavia monikkomääriä: department 200, project 1000, employee 10000. Tarkastele myös valinta- ja liitosehtoja sen mukaan, millaiset attribuuttijakaumat tuntuvat mahdollisilta. (Relaatioiden toteutukseen tai hakemistoihin ei tarvitse puuttua.)

2. Tarkastellaan yritystietokantaan kohdistuvaa kyselyä

select n.DEPENDENT_NAME, e.LNAME  
from EMPLOYEE e, DEPARTMENT d, DEPENDENT n 
where e.SSN = n.ESSN and e.DNO = d.DNUMBER and d.DNAME = 'Research' 
and n.RELATIONSHIP='SPOUSE'. 
a) Mitä kysely tulostaa?
b) Anna kyselyä suoraan vastaava projektio-valinta-tulo-tyyppinen relaatiolauseke ja tätä vastaava kaavapuu. Assosioi karteesiset tulo-operaatiot tavalla, jonka arvelet tuottavan parhaan optimointituloksen.
c) Optimoi kysely käyttäen heuristiikkaa "suorita valinnat mahdollisimman aikaisin". Anna optimoitua kyselyä vastaava kaavapuu ja relaatiolauseke.
d) Voidaanko tehdä vielä muita optimointitoimenpiteitä?

3. Miten lasket edellisen tehtävän kyselyn, kun relaatioon EMPLOYEE on hakemisto attribuutilla SSN ja relaatioon DEPARTMENT on hakemisto attribuutilla DNAME? Onko hakemistojen ominaisuuksilla merkitystä? Voisiko kyselyn suoritusta tehostaa paremmin joillakin muilla hakemistoilla?

4. Tarkastellaan relaatiokaavioita (avaimet lihavoitu):

Henkilö(Sotu, Etunimi, Sukunimi),
Kuollut(Sotu, Kuolinpäivä),
Aviopari(Miehensotu, Vihkipäivä, Vaimonsotu),
Eronnut(Miehensotu, Vihkipäivä, Eropäivä).

a) Esitä kysely 'Melanie Griffithin aviomiesten nimet ja asianomaiset vihkipäivät' relaatioalgebran operaatioina.
b) Millaisia tiedosto- ja hakemistorakenteita loisit tietokantaan? Vaatimuksena on, että a-kohdan kysely on tehokkaasti toteutettavissa. Selosta kyselyn toteutusperiaate hakemistoja käytettäessä.

5. (**) Tarkastellaan kyselyä

select FNAME, LNAME, PNO, HOURS
from EMPLOYEE, WORKS_ON
where ESSN=SSN and HOURS > 20;
Arvioi kyselyn suorituksessa tarvittavien levyhakujen määrän ylä- ja alarajoja erilaisilla toteutustavoilla ja tiedosto/hakemistorakenteilla. EMPLOYEE-relaatiossa on 10000 kpl 100 merkin rivejä ja WORKS_ON-relaatiossa 30000 kpl 20 merkin rivejä. Jakson koko on 2KB.

6. a) Esitä kaksi olennaisesti erilaista tapaa toteuttaa seuraava kysely. (Mieti, millaisia hakemistoja voi käyttää.)

select * from EMPLOYEE where SALARY < 20000 or DNO = 3;
b) Luentojen sivulla 39 on esitetty sisäkyselyrakenteisen SQL-lauseen muunnos (Oraclessa) liitokseksi.
Onko muunnos aina mahdollinen?