Tiedonhallinta I, syksy 1999, Harjoitus 4 (18.-21.10.)

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

Huom.1. Ryhmän 4 harjoitus (19.10. ti 16-18) pidetään poikkeuksellisesti salissa B450.

Huom.2. Viikolla 44 (1.-5.11.) ei pidetä luentoja eikä harjoituksia. (Välikoe on 3.11. - siitä tarkemmin aikanaan.)


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

Ilmoittautumisjärjestelmä perustuu Oracle-tietokantaan.  Olisiko
järjestelmä toteutettavissa keskusmuistipohjaisena (edut, haitat)?

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

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

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

4.  Hajautusrakenteisessa tiedostossa on B = 4 solua, hajautusavain on
kokonaislukuarvoinen ja hajautin h on määritelty kaavalla h(v) = v mod
B.  Jaksoon mahtuu kaksi tietuetta.  Anna tiedostorakenteen sisältö, kun
tiedostoon lisätään ensin avainarvoin 9, 10, 11, 31, 32, 41, 42, 43, 44,
45, 46 varustetut tietueet tässä järjestyksessä ja siitä poistetaan
lopuksi avainarvoilla 10, 41, 42 varustetut tietueet. 

5.  Toteutetaan relaatio WORKS_ON hajautusrakenteisena tiedostona,
hajautusavaimena ESSN.  Kuinka määrittelisit hajauttimen (mieti 2-3
vaihtoehtoa)? Oletetaan, että ESSN-arvot ovat tässä suomalaisia
henkilötunnuksia. 

6.  Miten toteuttaisit SQL-kyselyn

	select ESSN, count(PNO)
	from WORKS_ON  
	group by ESSN, 

kun relaation WORKS_ON rakenne on edellisen tehtävän mukainen? Montako
levyhakua toteutus vaatii? Paljonko tarvitaan keskusmuistitilaa
puskurisivuja varten?