Helsingin yliopisto/TKTL
Tietokannan hallinta, kevät 2003 muunto, Harjoitus 4, 10.-12.6.

Tee tehtäviin tarvittaessa täydentäviä oletuksia (osoitteiden pituudet, yms.) aiempien harjoitusten tehtävien mukaisesti. Voit pyöristää lukuja laskennan helpottamiseksi. Olennaista on idea ja mittasuhteet.

 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, ei tarvitse optimoida - mutta voit yrittää sitäkin)
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 näiden taulujen liitoksen. Montako levyhakua silloin tarvitaan?

3-4. 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 (käsittele ainakin 2 tapaa), 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.

5. 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.

6. Nostat pankkiautomaatilla tililtäsi 140 euroa. Mitä tietokantaan liittyviä toimintoja tililtänostoon sisältyy? Mitkä toiminnot yhdessä muodostavat transaktion? Millaisissa tilanteissa transaktio pitää peruuttaa? Voitko välttyä tilanteelta, jossa tilisi vähennys nostetulla summalla jää sitoutuneena voimaan, vaikkei automaatti rahoja antanutkaan?