4
Baze podataka II 1. Napisati PL/SQL naredbu za kreiranje tablice SALARY_HISTORY u kojoj će se upisivati kako se zaposlenom menja plata u toku vremena (slično tablici JOB_HISTORY u kojoj se upisuje kako se zaposlenom menja radno mesto u toku vremena), koja će se sastojati iz sledecih polja: SALARY_ID NUMBER(6,0); EMPLOYEE_ID NUMBER(6,0); START_DATE (DATE); END_DATE (DATE); SALARY NUMBER(8,2); čiji je primarni ključ polje SALARY_ID. [15 poena] 2. Napisati PL/SQL naredbu kojom se kreira sekvenca SAL_HIST_SEQ kojom će se automatski upisivati vrednost za polje SALARY_ID u tablici SALARY_HISTORY. Sekvencu napraviti tako da kreće od 10, a svaka sledeća vrednost bude uvećana za 5 i kreirati triger koji će preuzimati sledeću vrednost iz sekvence i automatski upisivati vrednost za polje SALARY_ID. [15 poena] 3. Kreirati naredbu INSERT INTO SALARY_HISTORY SELECT ... kojom će se inicijalno napuniti tablica SALARY_HISTORY trenutnim platama svih zaposlenih iz tablice EMPLOYEES. U polju START_DATE tablice SALARY_HISTORY postaviti vrednost HIRE_DATE iz tablice EMPLOYEES, a u polju END_DATE postaviti vrednost NULL. [15 poena] 4. Kreirati triger nad tablicom EMPLOYEES koji će pri promeni plate zaposlenom (promena vrednosti SALARY u tablici EMPLOYEES) 1) u tablici SALARY_HISTORY prvo ažurirati vrednosti polja END_DATE gde je vrednost bila NULL za izabranog zaposlenog i upisati tekući datum i 2) zatim kreirati novi slog za istog zaposlenog, čiji će vrednost za START_DATE biti tekući datum, vrednost za END_DATE biti NULL a SALARY biti nova plata zaposlenog [20 poena]

Baze Podataka II Sept_okt_2014

Embed Size (px)

DESCRIPTION

j

Citation preview

Page 1: Baze Podataka II Sept_okt_2014

Baze podataka II

1. Napisati PL/SQL naredbu za kreiranje tablice SALARY_HISTORY u kojoj će se upisivati kako se zaposlenom menja plata u toku vremena (slično tablici JOB_HISTORY u kojoj se upisuje kako se zaposlenom menja radno mesto u toku vremena), koja će se sastojati iz sledecih polja: SALARY_ID NUMBER(6,0); EMPLOYEE_ID NUMBER(6,0); START_DATE (DATE); END_DATE (DATE); SALARY NUMBER(8,2); čiji je primarni ključ polje SALARY_ID.

[15 poena]

2. Napisati PL/SQL naredbu kojom se kreira sekvenca SAL_HIST_SEQ kojom će se automatski upisivati vrednost za polje SALARY_ID u tablici SALARY_HISTORY. Sekvencu napraviti tako da kreće od 10, a svaka sledeća vrednost bude uvećana za 5 i kreirati triger koji će preuzimati sledeću vrednost iz sekvence i automatski upisivati vrednost za polje SALARY_ID.

[15 poena]

3. Kreirati naredbu INSERT INTO SALARY_HISTORY SELECT ... kojom će se inicijalno napuniti tablica SALARY_HISTORY trenutnim platama svih zaposlenih iz tablice EMPLOYEES. U polju START_DATE tablice SALARY_HISTORY postaviti vrednost HIRE_DATE iz tablice EMPLOYEES, a u polju END_DATE postaviti vrednost NULL.

[15 poena]4. Kreirati triger nad tablicom EMPLOYEES koji će pri promeni plate zaposlenom (promena vrednosti SALARY u tablici EMPLOYEES) 1) u tablici SALARY_HISTORY prvo ažurirati vrednosti polja END_DATE gde je vrednost bila NULL za izabranog zaposlenog i upisati tekući datum i 2) zatim kreirati novi slog za istog zaposlenog, čiji će vrednost za START_DATE biti tekući datum, vrednost za END_DATE biti NULL a SALARY biti nova plata zaposlenog

[20 poena]

5. Kreirati proceduru PromeniPlatu kojom će se menjati plata zaposlenom (polje SALARY u tablici EMPLOYEES) i koja će imati dva ulazna parametra: id zaposlenog i novu platu zaposlenog.

[15 poena]

6. Kreirati VIEW_CHECK_SALARY u kome će se uporediti tekuće plate u tablici employees i poslednje plate iz tablice SALARY_HISTORY. View treba da ima polja EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY (iz EMPLOYEES), SALARY (iz SALARY_HISTORY) i razliku poslednja dva polja

[20 poena]

Page 2: Baze Podataka II Sept_okt_2014

Baze podataka II

1. Napisati PL/SQL naredbu kojom se u tablici Departments dodaje kolona Manager_id_prev (bivši rukovodilac) koja ima ista svojstva kao i kolona Manager_id.

[15 poena]

2. Napisati PL/SQL naredbu kojom se kreira “before update” trigger nad tablicom Departments koji okida kada se promeni (ažurira) vrednost polja manager_id i njegovu prethodnu (staru) vrednost upisuje u kolonu Manager_id_prev

[25 poena]

3. Napisati PL/SQL naredbu kojom se kreira procedura UpdateManagerInDept(dept_id, mng_id) kojom se ažurira polje manager_id za navedeni department_id

[20 poena]

4. U proceduri UpdateManagerInDept izvršiti proveru da li se mng_id nalazi u granicama 100 <= mng_id <= 206, u suprotnom javiti grešku 'Identifikacija rukovodioca pogrešna, probajte ponovo!'

[20 poena]

5. Napisati PL/SQL naredbu kojom se kreira view vDepartment_full gde se prikazuje sadržaj tabele Departments tako da se umesto polja manager_id, manager_id_prev i location_id pokazuju prezime i ime sadašnjeg i prethodnog menadžera, a pored polja location_id dodati i grad gde se nalazi department (odeljenje).

[20 poena]