Tietokannan hallinta, syksy 2000, Harjoitus 1 (18.-22.9.)

Läsnäolo: 3 tehtävää

Tehtävien 1-2 tavoitteena on palauttaa lyhyesti mieleen SQL-kielen piirteitä. Ks. tarvittaessa kurssien Tietokantojen perusteet tai Informaatiojärjestelmät materiaali ja harjoitukset. SQL-kyselyt liittyvät luennolla hieman yksinkertaistettuna esitettyyn Elmasrin ja Navathen kirjan esimerkkitietokantaan. Kurssikansiossa on kopio alkuperäisen tietokannan määrittelystä (eroilla ei ole tässä merkitystä).

1. Selosta seuraavan SQL-kyselyn merkitys.

select x.NAME, y.NAME
from EMPLOYEE x, EMPLOYEE y
where x.SUPERSSN = y.SSN
union select x.NAME, z.NAME
from EMPLOYEE x, EMPLOYEE y, EMPLOYEE z
where x.SUPERSSN = y.SSN and y.SUPERSSN = z.SSN. 
2. Laadi SQL-kyselyt, joilla saat selville:
a) hallinto-osaston projekteissa työskentelevien nimet ja osoitteet;
b) työntekijät, joilla ei ole lapsia;
c) työntekijät, jotka eivät työskentele missään projektissa.

3. Hahmottele TKTL:n ilmoittautumisjärjestelmän tietokannan rakennetta sen verran, että voit arvioida suuruusluokan tarkkuudella sen tilantarpeen yhden lukukauden ilmoittautumisten hoitamiseksi. Oletetaan seuraavaa: opiskelijoita 3000, kursseja (tai vastaavia; laboratorioryhmiä ja seminaareja ei käsitellä erikseen) 100, kurssilla harjoitusryhmiä 1-20, loppukokeita 80, kurssi-ilmoittautumisia 10000 ja loppukoeilmoittautumisia 2000.

Ilmoittautumisjärjestelmä perustuu levymuistissa olevaan tietokantaan (Oracle). Olisiko järjestelmä tietokannan koon kannalta toteutettavissa keskusmuistipohjaisena (edut, haitat)?

4. Toteutetaan luennolla esitetyn henkilöstötietokannan EMPLOYEE-relaatio kasarakenteisena tiedostona (ks. relaation määrittely luentojen luvun 1 sivuilla 2-4). Levyjakson koko on 4 KB. Millaista sisäistä rakennetta käyttäisit monikolle? (Mieti myös vaihtoehtoja.) Arvioi tiedoston koko (jaksojen lukumäärä), kun työntekijöitä on 10000.

5. (**) a) Sijoitetaan 80000 jaksoa käsittävä tiedosto optimaalisesti levykölle, jossa on 12 levypintaa, levypinnalla 2000 uraa ja uralla 36 jaksoa. Kuinka paljon aikaa kuluu koko tiedoston läpilukuun, kun jaksot luetaan sijaintijärjestyksessä? Levyn kohdistusaika on 1-12 ms (keskimäärin 6 ms) ja jakson siirtoaika 0.2 ms. (Jaksovälejä ei tarvitse huomioida.)

b) Kuinka paljon vie aikaa kaikkien jaksojen haku erikseen (mielivaltaisessa järjestyksessä)?

c) Millä jaksolukumäärällä X koko tiedoston läpiluku on erillisiä hakuja tehokkaampaa?

d) Mitkä levymuistille esitetyistä parametreista vaikuttavat tuloksiin eniten? (Arvioi lyhyesti parametriarvojen muutosten vaikutusta.)

(**) tehtävä lasketaan kahdeksi