Helsingin yliopisto/TKTL
Tietokannan hallinta, kevät 2003 - muunto, Harjoitus 3, 3.-5.6.

 1. Sarakeyhdistelmään perustuvan hakemiston hakemistoavain saadaan liimaamalla eri attribuuttien kiinteäpituisiksi muutetut arvot peräkkäin hakemiston määrittelyn yhteydessä annetussa järjestyksessä. Mieti voisiko olla tarvetta toteuttaa useita samoihin sarakkeisiin perustuvia hakemistoja käyttäen kussakin hakemistossa eri järjestystä sarakkeille, esim A,B,C ja B,C,A. Mitä hyötyä tällaisista olisi? Entäpä sarakeyhdistelmään ja sen osajonoihin perustuvien hakemistojen tarve esim A,B,C ja A,B tai B,C. Mieti hyötyjä erilaisilla hakemiston toteutustavoilla.

2. Harjoitusten 2 tehtävässä 3 käsiteltiin taulua osallistuminen, joka kuvaa opiskelijan osallistumista kursseille. Tauluun syntyy rivi kun opiskelija ilmoittautuu kurssille. Taulun avaimena toimii sarakeyhdistelmä kurssikoodi (noin 9 tavua), lukukausi (1 tavu), lukuvuosi (4 tavua), kurssin saman lukukauden toteutukset erittelevä kurssinumero (2 tavua), harjoitusryhmänumero (2 tavua) ja opiskelijanumero (11 tavua). Tauluun sisältyy myös opiskelijan nimi (noin 25 tavua) ja keskimäärin 300 tavua muuta tietoa. Riviä lisättäessä on tarkastettava, ettei opiskelija ole jo ilmoittautunut kurssille kyseisenä lukukautena. Samassa yhteydessä on myös selvitettävä monestiko opiskelija on osallistunut aiemmin samalle kursille. Opiskelijanumeron perusteella kysytään usein tietoja opiskelijan nykyisen lukukauden osallistumisista. Kurssikirjanpito hakee usein tietyn kurssitoteutuksen kaikkia osallistumistietoja, tietyn ryhmän osallistumistietoja ja opiskelijan kurssikohtaista osallistumistietuetta opiskelijan nimen alkuosan perusteella.

Osallistumisrivejä on taulussa noin 200000. Kursseja on ehkä 60 vuodessa, opiskelijalla on keskimäärin 3 osallistumista lukukaudessa. Oletetaan, että hakemistossa käytettävän  osoitteen pituus on 10 tavua (tähän sisältyy myös tietuekohtainen ylimäärä). Sivukoko  olkoon 4K.   Tiedoston perusrakenteena on kasa.  Sen päälle pitäisi määritellä ISAM rakenteena toteutettuja tiheitä hakemistoja.

Mitä hakemistoja tässä mielestäsi tarvitaan? Miksi?  Harkitse erilaisia sarakeyhdistelmiä.

3. Arvioi tehtävään 2 määrittelemiesi hakemistojen kokoa ja levyhakujen määrää operaatioissa. Oletetaan,  että kunkin hakemiston perussivujen täyttösuhde on noin 70% ja ylivuotosivuja on noin 5% perusivujen määrästä.

4.  Oletetaan, että kertaluokan 2 B+ -puuhun (kaikissa hakemistosolmuissa 2..4 avainta, samoin datasivuilla tietueita) lisätään järjestyksessä tietueet, joiden avaimet ovat 23, 65, 37, 60, 46, 92, 48, 71, 56, 59, 18, 21, 10, 74, 78, 15, 16, 20 ja 24.

a) Millainen B+ -puu tästä syntyy? Esitä rakenteen muodostuminen vaihe vaiheelta.
b) Kuinka B+ -puu muuttuu, kun siitä poistetaan avaimet 24, 23, 10 ja 20?

5. Opiskelija taulussa on sarakkeet henkilötunnus (11 c), opiskelijanumero (15 c), sukunimi, etunimet,entinen sukunimi, sähköpostiosoite, puhelinnumero(15 c), pääaine(3 c),  viimeinen_kirjausaika (7 c). Nimet ja sähköpostiosoite on määritelty varchar(80), mutta niiden keskipituudet ovat sukunimi (9), etunimet (12), entinen sukunimi (2 - suurin osa tyhjiä), sähköpostiosoite (20). Oletetaan että osoitteen pituus on 10 tavua. Tarkastele tilantarpeen ja levyhakujen määrän kannata seuraavia tapauksia:.

a) taulu on toteutettu opiskelijanumeroon perustuvana B+ -puuna
b) taulu toteutettu kasarakenteena ja sen päälle on tehty opiskelijanumero perustainen tiheä hakemisto B+ -puuna.
c) a- ja b-kohdan rakenteiden päälle on tehty oheishakemisto henkilötunnuksen perusteella (toteutuksessa a hakemisto on epäsuora ja antaa pääavaimen (opiskelijanumero) eikä sivuosoitetta) - tarkastele hakua henkilötunnuksen perusteella.