Helsingin yliopisto/TKTL
Tietokannan hallinta, k 2003, Harjoitus 4, 14.4.-25.4

Huom. maanantain, tiistain ja keskiviikon harjoitukset ovat ennen pääsiäistä ja torstain ja perjantain harjoitukset pääsiäisen jälkeen. Torstaina 17.4. ja tiistaina 22.4. ei ole luentoa.

Tee tehtäviin tarvittaessa täydentäviä oletuksia (osoitteiden pituudet, yms.) edellisten harjoitusten tehtävien mukaisesti.

 1. Tietokantojen perusteet kurssilla käytetyn harjoitustietokannan rakenne on kuvattu sivulla http://www.cs.helsinki.fi/u/laine/tkpv/pizza2sql.html. Tarkastellaan seuraavaa kyselyä

select i.orderid, i.productid, pn.objectname, p.modelid, 
    p.price, i.amount 
from itemordered i, product p, objectname pn 
where p.productid=i.productid and
i.modelid=p.modelid and
i.orderid=3019 and pn.language='english' and
pn.objectid=i.productid
a) Mitä se tekee?
b) Tee kyselystä kyselypuu (pura relaatioalgebran operaatioiksi ja laita ne järjestykseen)
c) Arvioi välitulosten ja tuloksen kokoa, kun tiedetään, että taulussa itemordered on 100000 riviä jakautuen 25000 tilaukseen (taulu ordered, jota ei tässä käytetä), taulussa product on 100 riviä ja taulussa objectname 600 riviä jakautuen kolmelle kielelle.

2. Tehtävän 1 tietokannassa taulut product ja objectname on toteutettu kasarakenteina. Sivukoko on 4 KB. Product tietueen keskipituus on 55 tavua ja objectname tietueen 60 tavua. Puskuritilaa on käytettävissä 40 sivua. Millä tekniikalla toteuttaisit liitoksen. Montako levyhakua silloin tarvitaan?

3. Tehtävän 1 tietokannassa taulut ordered ja itemordered on toteutettu kasarakenteina. Kummallakin on B+ -puuna toteutettu oheishakemisto sarakkeen OrderId perusteella. OrderId on tilaustaulun Ordered avain. Laadi arvio levyhakujen määrästä eri toteutusperiaatteilla, kun tehdään näiden taulujen liitos sarakkeen OrderId perusteella. Olkoon taulun Ordered tietueen keskipituus 70 tavua ja taulun ItemOrdered tietueen keskipituus 60 tavua. Puskuritilaa on käytettävissä 40 sivua.

4. Ulkoliitoksessa otetaan liitostulokseen mukaan myös parittomaksi jäävät rivit tyhjäarvoista muodostuvan parin kera. Käyvätkö kaikki liitosoperaation toteutusperiaatteet myös ulkoliitoksen toteutukseen? Onko periaatteiden soveltuvuudesssa eroja toispuoleisen ja molemminpuoleisen ulkoliitoksen tapauksissa? Kuvaa jonkin tavan kohdalla, miten toteutusta pitäisi muuttaa, jotta ulkoliitos sadaan muodostettua.

5. Osoita pienen vastaesimerkin avulla avulla, että relaatioalgebran projektio ei ole vaihdannainen leikkauksen eikä erotuksen kanssa (siis operaatioiden järjestystä ei voi vaihtaa).