Tietokannan hallinta, syksy 2001, Harjoitus 1 (18.-21.9.)

Läsnäolo: 2 tehtävää (= normaalia vähemmän johtuen luentotilanteesta)
(**)-merkitty tehtävä lasketaan kahdeksi

Tehtävien 1-2 tavoitteena on palauttaa lyhyesti mieleen SQL-kielen piirteitä. Ks. tarvittaessa Tietokantojen perusteet -kurssin materiaali ja harjoitukset tai Elmasri-Navathen (E&N) luku 8. SQL-kyselyt liittyvät luennolla hieman yksinkertaistettuna esitettyyn E&N:n esimerkkitietokantaan. (Kevään kurssin) 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) niiden työntekijöiden nimet ja osoitteet, jotka työskentelevät jossakin hallinto-osaston projektissa vähintään 10 tuntia viikossa.
b) työntekijät, joilla ei ole lapsia;
c) kunkin projektin työntekijöiden lukumäärät, projektit aakkosjärjestyksessä.

3. (**) Hahmottele opiskelijatietojärjestelmän (suoritukset, ilmoittautumiset) tietokannan rakennetta sen verran, että voit arvioida suuruusluokan tarkkuudella sen tilantarpeen. Oletetaan seuraavaa: opiskelijoita 50000, opintojaksoja 10000, opiskelijalla suorituksia keskimäärin 40, opintojaksolla keskimäärin 5 suorituskertaa vuodessa, kurssilla (= opintojakson kertatoteutus) keskimäärin 4 (1-20) harjoitusryhmää ja opiskelijalla keskimäärin 10 kurssi- tai koeilmoittautumista lukuvuodessa. Suoritustietoja on tietokannassa 30 vuodelta. Ilmoittautumistiedot säilytetään yhden lukuvuoden ajan.

Ilmoittautumisjärjestelmä perustuu levymuistissa olevaan tietokantaan (Oracle). Olisiko järjestelmä tietokannan koon kannalta toteutettavissa keskusmuistipohjaisena. Tämän toteutustavan edut ja haitat?

4. Toteutetaan luennolla (luku 1, s. 2-4) esitetyn henkilöstötietokannan EMPLOYEE-relaatio kasarakenteisena tiedostona (= järjestämättömänä peräkkäistiedostona; ks. luku 2, s. 17). Työntekijöitä on 10000. Levyjakson koko on 4 KB.

a) Määrittele tietueen (monikon) esitysmuoto kolmella olennaisesti erilaisella tavalla.

b) Arvioi tiedoston tilantarve (jaksojen lukumäärä).

5. (**) Sijoitetaan 120000 jaksoa käsittävä tiedosto optimaalisesti levykölle, jossa on 12 levypintaa, levypinnalla 4000 uraa ja uralla 24 jaksoa.

a) Paljonko aikaa vie koko tiedoston läpiluku, kun jaksot luetaan sijaintijärjestyksessä? Levyn kohdistusaika on 1-12 ms (keskimäärin 6 ms) ja jakson siirtoaika 0.2 ms. (Sektorivälejä ei 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) Arvioi, mitkä levymuistille esitetyistä parametreista vaikuttavat tuloksiin eniten?

(Ks. luku 2.1.)