Tietokannan hallinta, syksy 2001, Harjoitus 2 (25.-28.9.)

Läsnäolo: 2 tehtävää
(**)-merkitty tehtävä lasketaan kahdeksi

1. Oletetaan, että relaatio PROJECT on toteutettu a) kasarakenteena, b) järjestettynä peräkkäistiedostona. Esitä kyselyn

   select * from PROJECT where PNUMBER > 10 and PNUMBER < 21;
toteutuksen pääpiirteet (pseudokielisenä algoritmina kuten luentomateriaalin luvun 2 sivuilla 18, 20 jne).

2. Hajautusrakenteisessa tiedostossa on B = 8 solua ja hajautin h on määritelty kaavalla
h(v) = v mod B. Jaksoon mahtuu kaksi tietuetta.
a) Anna tiedostorakenteen sisältö, kun tiedostoon lisätään ensin avainarvoin 60, 86, 40, 18, 92, 68, 71, 44, 11, 13, 76 ja 69 varustetut tietueet tässä järjestyksessä ja siitä poistetaan sitten avainarvoilla 68, 69, 71 ja 76 varustetut tietueet.
b) Mikä on levyhakujen määrän keskiarvo lisäysten jälkeen, kun tehdään haku satunnaisella avainarvolla? Entä poistojen jälkeen?

3. Mitkä yritystietokannan attribuuteista ovat a) sopivia, b) sopimattomia hajautusrakenteisen tiedoston perustaksi?
c) Anna kolme esimerkkiä erilaisista hajauttimen määritystavoista sopiviin attribuutteihin liittyen.

4. Toteutetaan relaatio WORKS_ON hajautusrakenteisena tiedostona, hajautusavaimena ESSN. Miten toteuttaisit seuraavan kyselyn? Montako levyhakua toteutus vaatii? Paljonko tarvitaan keskusmuistitilaa puskurisivuja varten? (Huom. Kysely ja relaation toteutusrakenne saattavat tuntua "liian" hyvin yhteensopivilta - jos otetaan huomioon relaation muut mahdolliset käyttötarpeet. Tämän erikoistapauksen on tässä tapauksessa tarkoitus havainnollistaa hajautusrakenteen etuja.)

    select ESSN, count(PNO)
    from WORKS_ON
    group by ESSN;
5. Selitä seuraavien SQL-lauseiden toiminta luentojen sivulla 4 (luku 3) esitetyn relaation
emp(ssn, name, salary) tapauksessa:
a) update emp set name = 'Franck' where name = 'Frank';
b) update emp set name = 'Takala' where name = 'Hakala';
c) update emp set ssn = 9122 where ssn = 1122;

Huom. Sivulla 4 on - vaikka ollaankin vasta hakemisto-osuuden alussa - esimerkki oheishakemistosta (tiheä hakemisto), jota selitetään varsinaisesti vasta myöhemmin. Päivitysten jälkeen tulee siis sekä perustiedoston että molempien hakemistojen olla uutta tilannetta vastaavassa kunnossa. Tehtävän tarkoitus on siis käydä läpi hakemistojen käytön yleistä periaatetta.

6. Luodaan harva ISAM-hakemistorakenne tehtävässä 1 mainituin avainarvoin (60, 86 jne) varustetuista tietueista. Oletetaan, että sivulle sopii kaksi perustietuetta tai kolme hakemistotietuetta. Rakenteen luontivaiheessa käytetään tässä 100 %:n täyttöastetta.

a) Anna rakenteen luontivaiheen jälkeinen sisältö. Selosta, miten rakenteesta poistetaan avainarvoilla 69 ja 71 varustetut tietueet ja miten rakenteeseen sitten lisätään avainarvolla 20, 34 ja 22 varustetut tietueet.

b) Anna esimerkki luontivaiheen jälkeen lisättävien tietueiden jonosta, joka kasvattaa levyhakujen määrän keskiarvoa yhdellä alkutilanteeseen verrattuna. (Keskiarvon laskemiseksi oletetaan siis, että hakuja suoritetaan tasaisesti kaikilla tiedostossa kulloinkin olevilla avainarvoilla.)