Tiedonhallinta I, syksy 1999, Harjoitus 1 (27.-30.9.)

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