Läsnäolo: 3 tehtävää (**)-merkitty tehtävä lasketaan kahdeksi
1. 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) Anna kyselyä suoraan vastaava projektio-valinta-tulo-tyyppinen relaatiolauseke ja tätä vastaava kaavapuu. Assosioi karteesiset tulo-operaatiot tavalla, jonka arvelet tuottavan parhaan optimointituloksen.
2. 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 jollakin muilla hakemistoilla?
3. Tarkastellaan relaatiokaavioita (avaimet lihavoitu):
Henkilö(Sotu, Etunimi,
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ä.
4. 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. (Ei ole tarkoitus käydä kaikkia vaihtoehtoja tarkasti läpi; riittää, kun löytyy joitakin hyvin hyviä ja hyvin huonoja vaihtoehtoja.)
5. Liitosoperaation toteutusvaihtoehdoille on esitetty mm. seuraavat ohjeet (luennot, ss. 19, 21): Sisäkkäisten silmukoiden menetelmässä kannattaa pienempi relaatioista käsitellä ulommassa silmukassa. Hakemistoliitoksen ainoassa silmukassa kannattaa käsitellä pienempi relaatio tai relaatio, jonka liitososallistuvuus on suurempi.
Ovatko nämä ohjeet aina päteviä? Löydätkö vastaesimerkkejä?
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 (luku 4) on esitetty sisäkyselyrakenteisen SQL-lauseen muunnos (Oraclessa) liitokseksi. Onko muunnos aina mahdollinen?