Tiedonhallinta I, syksy 1999, Harjoitus 9 (29.11.-2.12.)

Läsnäolo: 3 tehtävää
Huom. lisäys paperiversioon tehtävässä 4!

1. Tarkastellaan seuraavaa yritystietokantaan määriteltyä näkymää.

create view DEPT_SUMMARY (Dept, EmpCount, TotalSalary, AverageSalary) as
   select DNO, COUNT(*), SUM(Salary), AVG(Salary) from EMPLOYEE
   group by DNO.

a) Lavenna seuraava näkymää käyttävä kysely suorituskelpoiseen muotoon,
so. muotoon, jossa argumentteina on ainoastaan perustauluja.
Mitkä optimoinnit näet mahdollisiksi?

select Dept, AverageSalary from DEPT_SUMMARY
where EmpCount > (select EmpCount from DEPT_SUMMARY where Dept = 4).

b) Onko seuraava operaatio sallittu?

update DEPT_SUMMARY set Dept = 3 where Dept = 4.

2. Mikä on alla määriteltyjen herättimien R1 ja R2 aikaansaama toiminta? 

R1:     create trigger varaston_muutos
        after insert on muutostapahtuma
        for each row
                update varasto set maara = ...;

R2:     create trigger muutos_talteen
        after update of maara on varasto
        for each row
                insert into muutostapahtuma values (...);

3.  Anna herättimet, joilla valvotaan yritystietokannan relaatioiden
EMPLOYEE ja DEPARTMENT välisiä viite-eheyksiä.  Viite-eheyttä rikkonut
transaktio peruutetaan.  Millainen suoritussemantiikka herättimille
pitäisi valita, so. missä vaiheessa ja minkä transaktion osana
herättimien toiminto-osat pitäisi suorittaa?

4.  Toteuta edellisen tehtävän viite-eheyksien valvonta herättimillä
siten, että ratkaisu vastaa luentojen sivun 58 määrityksiä.  Millainen
suoritussemantiikka herättimille pitäisi valita?                    

(Sivun 58 määritykset: taulun employee sarakkeen dno default-arvo = 1,
viiteavainmäärittelyt seuraavat:

CONSTRAINT empsuperfk FOREIGN KEY (superssn) REFERENCES employee(ssn)
        ON DELETE set null  ON UPDATE cascade,
CONSTRAINT empdeptfk FOREIGN KEY (dno) REFERENCES department (dnumber)
        ON DELETE set default  ON UPDATE cascade.)

Lisäys: Luentojen sivulla 58 esitetyn lisäksi tarvitaan taustatiedoksi
taulun department määrityksiä (E&N2, s. 189, E&N3, s. 249):

- sarakkeen mgrssn oletusarvo = 888665555,
- viiteavainmäärittely 
CONSTRAINT deptmgrfk FOREIGN KEY (mgrssn) REFERENCES (employee(ssn)
	ON DELETE set default  ON UPDATE cascade;

5.  Lisätään relaatioon DEPARTMENT attribuutti NumberOfEmployees, joka
sisältää osaston työntekijöiden lukumäärän.  ('NumberofEmployees'
esiintyi aikanaan yritystietokannan ER-kaaviossa, vrt. luennot, s. 32.)

Anna herätin/herättimet, jolla tämän attribuutin arvo pysytetään
ajantasaisena.  Millainen suoritussemantiikka herättimille pitäisi
valita?

6.  Anna Pascal-, C- tai Java-kieleen sulautetulla SQL:llä kirjoitettu
ohjelman osa, joka tulostaa päätteelle yksitellen Research-osaston
kunkin työntekijän nimen, kysyy kullekin myönnetyn mahdollisen
palkankorotuksen ja toteuttaa korotuksen tietokantaan.