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?