Läsnäolo: 4 tehtävää
Harjoituksen tavoitteena on kerrata tietokantojen ja erityisesti SQL-kielen perusasioita. Ks. tarvittaessa informaatiojärjestelmien kurssin materiaali ja harjoitukset. SQL-kyselyt liittyvät luennolla esitettyyn esimerkkitietokantaan. 1. Selosta seuraavan SQL-kyselyn merkitys. select x.LNAME, y.LNAME from EMPLOYEE x, EMPLOYEE y where x.SUPERSSN = y.SSN union select x.LNAME, z.LNAME from EMPLOYEE x, EMPLOYEE y, EMPLOYEE z where x.SUPERSSN = y.SSN and y.SUPERSSN = z.SSN. 2. Henkilöstötietokannan työntekijämonikon SUPERSSN-attribuutilla on tyhjä arvo (null), jos kyseisellä työntekijällä ei ole lähintä esimiestä tai tätä ei vielä ole ehditty kiinnittää. Muuta tietokannan kaaviota niin, ettei tyhjiä arvoja tarvita tässä tapauksessa. Miten muutos vaikuttaa tietokantaan kohdistettuihin kyselyihin? 3. Kaksi kyselyä Q1 ja Q2 ovat ekvivalentit, jos niiden vastaukset ovat aina samat, ts. jokaisella tietokannan sallitulla tilalla D pätee: Q1:n vastaus D:llä on sama kuin Q2:n vastaus D:llä. a) Ovatko seuraavat kyselyt ekvivalentit? select dp.DEPENDENT_NAME from DEPENDENT dp where dp.SEX = 'F'. select dp.DEPENDENT_NAME from DEPENDENT dp, EMPLOYEE e where dp.SEX = 'F' and e.SSN = dp.ESSN. b) Ovatko seuraavat kyselyt ekvivalentit? select d.DNAME from DEPARTMENT d. select d.DNAME from DEPARTMENT d, EMPLOYEE e where d.DNUMBER = e.DNO. 4. Laadi SQL-kyselyt, joilla saat selville: a) hallinto-osaston työntekijöiden nimet; b) hallinto-osaston projekteissa työskentelevien nimet ja osoitteet; c) työntekijät, joilla ei ole lapsia. 5. Laadi SQL-kyselyt, joilla saat selville: a) työntekijät, jotka työskentelevät jossakin projektissa; b) työntekijät, jotka eivät työskentele missään projektissa. 6. Laadi SQL-kyselyt, joilla saat selville: a) työntekijät, jotka työskentelevät täsmälleen kahdessa projektissa; b) osastot, jotka toimivat usealla paikkakunnalla. 7. Laadi SQL-kysely, jolla saat selville projektien viikottaiset työvoimakustannukset. Oletetaan: palkka = kuukausipalkka (4 viikkoa), viikossa on 40 tuntia. 8. Oracle-tietokannan tietohakemiston tauluissa ALL_CONSTRAINTS ja ALL_CONS_COLUMNS esitetään käyttäjän käytettävissä oleviin tauluihin liittyvät eheysrajoitteet ja eheysrajoitteissa käytettävät sarakkeet. Selvitä taulujen rakenne, so. mitä sarakkeita tauluihin sisältyy. Laadi myös SQL-kysely, jolla selvität, mitkä sarakkeet kuuluvat taulun OPS$SIPPU.DEPENDENT pääavaimeen. Pääavaimen rajoitetyyppi (constraint type) on 'P'.