7
SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected] 1 Baze podataka :: Predavanje ZADAĆA IZ BAZE PODATAKA 0. RELACIONA SHEMA RJ (RJ#, NAZIV, GRAD) RADNIK (RADNIK#, IME, KVALIFIKACIJA, ZARADA, RJ#) PROJEKAT (PROJEKAT#, NAZIV, SREDSTVA) UČĆE (RADNIK#, PROJEKAT#, FUNKCIJA) 1. Pretpostavimo da je potrebno da načinimo upit kojim se dobija tabelarni pregled kvalifikacione strukture zaposlenih (KVALIFIKACIJA) po radnim jedinicama (RJ#). SELECT RJ#, KVALIFIKACIJA FROM RADNIK O1 VKV O2 VSS O1 KV O2 VKV O3 VSS O3 VSS O1 VKV 2. Upit (1) definiše radnju selekcije kolona RJ# i KVALIFIKACIJA iz tabele RADNIK. To još uvek nije projekcija, jer se iz praktičnih razloga iz rezultata ne eliminišu jednake vrste. To je često veoma skup proces, a nekada i nije neophodan, pa stoga njegovo aktiviranje treba eksplicitno naznačiti: SELECT DISTINCT RJ#, KVALIFIKACIJA FROM RADNIK O1 KV O1 VKV O2 VKV O2 VSS O3 VSS 3 Upit (2) sada precizno definiše projekciju relacije RADNIK po atributima RJ# i KVALIFIKACIJA. Tabela koja predstavlja rezultat upita može da se uredi. Na primer, pregled imena RADNIK-a i njihovih RJ-a prema abecednom redosledu imena radnika (IME) formira se upitom:

BP Zadaci1

  • Upload
    emirdi

  • View
    13

  • Download
    4

Embed Size (px)

DESCRIPTION

df

Citation preview

Page 1: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

1 Baze podataka :: Predavanje

ZADAĆA IZ BAZE PODATAKA

0. RELACIONA SHEMA

RJ (RJ#, NAZIV, GRAD) RADNIK (RADNIK#, IME, KVALIFIKACIJA, ZARADA, RJ#) PROJEKAT (PROJEKAT#, NAZIV, SREDSTVA) UČEŠĆE (RADNIK#, PROJEKAT#, FUNKCIJA)

1.

Pretpostavimo da je potrebno da načinimo upit kojim se dobija tabelarni pregled kvalifikacione strukture zaposlenih (KVALIFIKACIJA) po radnim jedinicama (RJ#). SELECT RJ#, KVALIFIKACIJA FROM RADNIK O1 VKV O2 VSS O1 KV O2 VKV O3 VSS O3 VSS O1 VKV 2. Upit (1) definiše radnju selekcije kolona RJ# i KVALIFIKACIJA iz tabele RADNIK. To još uvek nije projekcija, jer se iz praktičnih razloga iz rezultata ne eliminišu jednake vrste. To je često veoma skup proces, a nekada i nije neophodan, pa stoga njegovo aktiviranje treba eksplicitno naznačiti: SELECT DISTINCT RJ#, KVALIFIKACIJA FROM RADNIK O1 KV O1 VKV O2 VKV O2 VSS O3 VSS

3

Upit (2) sada precizno definiše projekciju relacije RADNIK po atributima RJ# i KVALIFIKACIJA.

Tabela koja predstavlja rezultat upita može da se uredi. Na primer, pregled imena RADNIK-a i njihovih RJ-a prema abecednom redosledu imena radnika (IME) formira se upitom:

Page 2: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

2 Baze podataka :: Predavanje

SELECT IME, RJ# FROM RADNIK ORDER BY IME DUSAN O1 DUSICA O3 MAJA O1 MARKO O1 RADOJE O2 RUZICA O3 ZIVORAD O2 4. Selekciju redova tabele RADNIK koji odgovaraju visokokvalifikovanim radnicima (VKV) dobijamo upitom: SELECT * FROM RADNIK WHERE KVALIFIKACIJA = 'VKV' R1 MAJA VKV 5000.0000 O1 R4 ZIVORAD VKV 5100.0000 O2 R7 DUSAN VKV 5300.0000 O1 5.

Kompozicija operacija selekcije i restrikcije sadržana je u upitu (2), koji formira tabelu imena visokokvalifikovanih radnika (VKV) i šifara njihovih radnih jedinica (RJ). Tabela je uređena po abecednom redosledu. SELECT IME, RJ# FROM RADNIK WHERE KVALIFIKACIJA = 'VKV' ORDER BY IME DUSAN O1 MAJA O1 ZIVORAD O2 6. Kvalifikacioni izraz može imati oblik složenijeg logičkog izraza. Tako u upitu (3), kojim se formira tabela visokokvalifikovanih radnika (VKV) čija je plata (ZARADA) veća od 20.000 dinara, to je konjukcija prostih poređenja vrednosti atributa sa zadatom konstantom. SELECT IME FROM RADNIK WHERE KVALIFIKACIJA ='VKV' AND ZARADA >5000 ZIVORAD DUSAN

Page 3: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

3 Baze podataka :: Predavanje

7. Kvalifikaconi izraz u obliku disjunkcije srećemo u upitu (4), kojim se formira tabela imena radnika (RADNIK) onih radnih jedinica (RJ) čije su šifre 1 i 3. SELECT IME FROM RADNIK WHERE RJ# = 'O1' OR RJ# = 'O3' MAJA MARKO DUSICA RUZICA DUSAN 8. Elegantniji način izražavanja ovog upita ilustrovan je u primeru (5), a zasnovan je na upotrebi relacije pripadnosti (IN) elemenata skupu. SELECT IME FROM RADNIK WHERE RJ# IN (O1,O3) 9. Zajednička karakteristika svih do sada razmatranih primera je da predstavljaju upite nad jednom relacijom. Umetanjem upita nad jednom relacijom u upit nad drugom relacijom izražava se implicitno operecija prirodnog spajanja, odnosno dobija se upit nad dve relacije. Primer tog tipa je upit (6) kojim se formira tabela imena radnika koji su zaposleni u radnim jedinicama (RJ) u gradu Beogradu. SELECT IME FROM RADNIK WHERE RJ# IN SELECT RJ# FROM RJ# WHERE GRAD = 'SARAJEVO'

A) SELECT IME

FROM RADNIK

WHERE RJ# = 'O3'

DUSICA

RUZICA

B) SELECT RJ#

FROM RJ

WHERE GRAD = 'SARAJEVO'

O3

Page 4: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

4 Baze podataka :: Predavanje

A I B) SKUPA SELECT IME

FROM RADNIK

WHERE RJ# ='O3' IN

SELECT RJ#

FROM RJ

WHERE GRAD = 'SARAJEVO'

9 RJESENJE SAMO ZAGRADE

SELECT IME

FROM RADNIK

WHERE RJ# IN (SELECT RJ#

FROM RJ

WHERE GRAD = 'SARAJEVO')

DUSICA

RUZICA

10. Upit (1) kojim se formira tabela imena radnika (IME) i lokacija njihovih radnih jedinica (GRAD) zadat je nad dve relacije: RADNIK i RJ. On predstavlja kompoziciju operacije spajanja ovih relacija po atributima RJ# i operacija projekcije relacije RADNIK po atributu IME i relacije RJ po atributu GRAD. SELECT RADNIK.IME,RJ.GRAD FROM RADNIK,RJ WHERE RADNIK.RJ# = RJ.RJ# MAJA TRAVNIK RADOJE TRAVNIK MARKO TRAVNIK ZIVORAD TRAVNIK DUSICA SARAJEVO RUZICA SARAJEVO DUSAN TRAVNIK 11. Složenijeg oblika je upit (2) kojim se formira tabela imena visokokvalifikovanih (VKV) radnika koji rade u GRAD-u u Beogradu i naziva tih radnih jedinica (NAZIV).

Pored operacija projekcije i spajanja, upit (2) sadrži i restrikcije relacija RADNIK i RJ. SELECT RADNIK.IME,RJ.NAZIV FROM RADNIK,RJ WHERE RADNIK.KVALIFIKACIJA = 'VKV' AND RADNIK. RJ# = RJ.RJ# AND RJ.GRAD = 'SARAJEVO'

Page 5: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

5 Baze podataka :: Predavanje

12. Rezultat izvršenja radnje koju definiše upitni blok je relacija, što znači skup, pa se upitni blokovi mogu pojaviti kao operandi skupovnih operacija: unije (UNION), preseka (INTERSECT) i razlike (MINUS). Tako je moguće formirati upitne izraze koji mogu biti znatno složeniji od pojedinačnih upitnih blokova.

Na primer, upitom (1) traže se sve radne jedinice (RJ#) koje nemaju zaposlenih radnika. SELECT RJ# FROM RJ MINUS SELECT RJ# FROM RADNIK RJ# O1 O2 O3 RJ# O1 O2 O1 O2 O3 O3 O1 13. Poslednja dva reda upita izdvajaju iz tabele RADNIK one radne jedinice koje imaju zaposlene – jer su njihovi lični podaci dati u tabeli RADNIK. Prva dva reda upita izdvajaju iz tabele RJ sve radne jedinice. Oduzimanjem rezultata drugog dela upita od rezultata prvog dela upita dobija se traženi spisak radnih jedinica koje nemaju zaposlenih radnika.

Rezultat upita (2) su matični brojevi onih visokokvalifikovanih (VKV) radnika koji učestvuju na nekom projektu. SELECT RADNIK# FROM RADNIK WHERE KVALIFIKACIJA = 'VKV' INTERSECT SELECT RADNIK# FROM UCESCE

SELECT RADNIK#

FROM RADNIK

WHERE KVALIFIKACIJA = 'VKV'

R1

Page 6: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

6 Baze podataka :: Predavanje

R4

R7

SELECT RADNIK#

FROM UCESCE

R1

R2

R2

R3

R3

R4

R5

R6

R6

R6

R7

14. Gornji upit sadrži veznu promenljivu X čiji je dijapazon (tj. skup iz kojeg ta promenljiva dobija vrednosti) relacija UČEŠĆE.

U ovom upitu takođe se pojavljuje skupovna relacija (CONTAINS).

Primetimo da gornji upit odgovara deljenju relacije UČEŠĆE (RADNIK#, PROJEKAT#, FUNKCIJA) relacijom koja predstavlja rezultat upita:

SELECT PROJEKAT#

FROM PROJEKAT

WHERE SREDSTVA > 3000

P1

P2

P3

15. Funkcionalnoj kompletnosti SQL-a znatno doprinose prisutne standardne funkcije: AVG (izračunavanje srednje vrednosti), SUM (izračunavanje zbira, sume), COUNT (utvrđivanje kardinalnosti skupa), MAX (nalaženje majveće vrednosti, maksimuma) i MIN (nalaženje najmanje vrednosti, minimuma).

Rezultat upita (1) je prosečna zarada (ZARADA) visokokvalifikovanih radnika (VKV).

SELECT AVG (ZARADA)

FROM RADNIK

WHERE KVALIFIKACIJA = 'VKV'

Page 7: BP Zadaci1

SVEUČILIŠTE/UNIVERZITET “VITEZ” TRAVNIK FAKULTET POSLOVNE INFORMATIKE [email protected]

7 Baze podataka :: Predavanje

5133.3333

16. Upit (2) daje odgovor na pitanje koliko različitih funkcija (FUNKCIJA) obavlja na projektima radnik sa matičnim brojem 946.

SELECT COUNT (DISTINCT FUNKCIJA)

FROM UCESCE

WHERE RADNIK# = 'R6'

SELECT COUNT (DISTINCT FUNKCIJA)

FROM UČEŠĆE

WHERE RADNIK# = 'R6'