You are on page 1of 101

BAZE PODATAKA

12. 02. 2008. godine

1.

Data je relacija RasporedVozila (ifraGarae, RegBroj, NazivGarae, GaranoMesto,


ifraTipaVozila, NazivTipaVozila)
i sledee funkcionalne zavisnosti:
ifraGarae, RegBroj -> NazivGarae, GaranoMesto, ifraTipaVozila, NazivTipaVozila
ifraGarae -> NazivGarae
RegBroj -> ifraTipaVozila, NazivTipaVozila
ifraTipaVozila -> NazivTipaVozila
NazivTipaVozila -> ifraTipaVozila
Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).
( 10 poena )

2.

Dat je model objekti-veze:


A1#

A2

0,M

B1#

AB1

B2

0,1

0,M

1,1

AB2

C2

0,1

C1#
S
H1

D1

0,M

D
H
F

1,M

0,M
0,7

0,M
1,M

E1

G1
G

F1

1,1
CG1

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.
(10 poena)

3.

Pravila integriteta relacionog modela. Primere ogranienja opisati preko operacija relacione algebre.
(10 poena)

4. Navesti, opisati i dati primer za sloene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard).
Za svaki tip dati optu definiciju i nain njihovog korienja u SQL naredbama.
(11 poena)
5.

a) Navesti i objasniti osnovne elemente grafa prethoenja transakcija. Dati definiciju kada Ti prethodi Tj.
(4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvrenja S1 skupa transakcija, a posle i S2. Dati obrazloenje.
S1: r2(X), r2(Y), w2(X), r1(Y), w1(Y), r3(X), w3(X), w3(Y)
S2: r2(X), r2(Y), r1(Y), w1(Y), r3(X), w3(X), w3(Y), w2(X)
(6 poena)
1

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU I DOMAEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

ZAPOSLENI(SifraZap, Ime, Prezime, Mlb, DatRodj, Pol ,SifraProf)


RADNO_MESTO(SifraRM, NazivRM, SifraProf)
ANAGAZOVANJE(SifraZap, SifraRM, DatOd, DatDo, SifraRS)
RADNI_STATUS(SifraRS, NazivRS)
OBRAZOVNI_PROFIL(SifraProf, StepenStrSpreme, NazivProf)
Pol in

{M,Z}

StepenStrSpreme in

{V,VI,VII}

NazivRS in
{probni rad, pripravnicki staz, ugovor na odredjeno vreme,
ugovor na neodredjeno vreme, ugovor o delu}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju svi podaci o zaposlenima (ifra, ime, prezime, matini broj, naziv obrazovnog profila ) za one
zaposlene koji imaju IV stepen strune spreme i koji su manje od 2 meseca na probnom radu.
(8 poena )
b) Prikazuju ifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome fluktuacija
radnika iznosi tano 5. Fluktuacija radnog mesta je definisana preko broja angaovanja kod kojih je poznat
datum odlaska (DatDo), tj. ne raunaju se tekua angaovanja zaposlenih na tom radnom mestu.
Prikazati samo one nazive obrazovnih profila koji poinju sa S i koji nisu dui od 10 karaktera.
(8 poena )
c) Kreira pogled STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2006, BR_ZAP_2007, TREND,
PROCENTUALNO) kojim se prikazuje po svim iframa profila, broj osoba koje su zaposlene u 2006-oj, broj
osoba koje su zaposlene u 2007-oj, opis uoenog trenda RAST,PAD ili BEZ_PROMENA i procentualno
izraena razlika izmeu ove dve godine.
(8 poena
)

8.

Napraviti model objekti-veze za deo informacionog sistema biblioteke. Potrebno je voditi evidenciju o
publikacijama sa sledeim osnovnim atributima: PublikacijaID, Naziv, BrojPrimeraka. Publikacija moe biti: knjiga ili
asopis ili dnevne novine. Knjiga ima osnovna obeleja redni broj izdanja i godinu izdanja, a pored toga potrebno
je beleiti i sve autore. Za asopis potrebno je pamtiti broj, mesec i kratak sadraj, za dnevne novine broj izdanja,
datum izdanja i tira. I za asopise i za dnevne novine potrebno je znati tampariju koja je tampala ta izdanja. I za
knjigu i za asopis i za dnevne novine treba voditi evidenciju o izdavau. Za svaku publikaciju obezbediti
evidentiranje datuma zaduenja i datuma razduenja od strane lana biblioteke.
( 10 poena )

BAZE PODATAKA
11. 03. 2008. godine

1. Data je relacija Evrovizija (Izvoa, ifraDraveOcenjivaa, BrojPoena, NazivPesme,


NazivDraveOcenjivaa, ifraJezika, NazivJezika)
i sledee funkcionalne zavisnosti:
Izvoa, ifraDraveOcenjivaa -> BrojPoena,
ifraJezika, NazivJezika
ifraDraveOcenjivaa -> NazivDraveOcenjivaa
Izvoa -> NazivPesme, ifraJezika, NazivJezika
ifraJezika -> NazivJezika

NazivPesme,

NazivDraveOcenjivaa,

Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).


( 10 poena )

2.

Dat je model objekti-veze:


A1#

A2

1,M

0,1

AB1

0,2

AB2

B1#

B2

1,1

H1

0,1
C2

0,M

F
H
C1#
D1
C

0,M

CG1

1,M

1,M
0,1

3,3

G1
G

E1

F1

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.
(10 poena)

3.

Poslovna pravila integriteta relacionog modela. Dati za svaki podtip ovih ogranienja primer.
(10 poena)

4. Navesti, opisati i dati primer za sloene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard).
Za svaki tip dati optu definiciju i nain njihovog korienja u SQL naredbama.
(10 poena)
5.

a) Navesti i objasniti osnovne elemente grafa prethoenja transakcija. Dati definiciju kada Ti prethodi Tj.
(4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvrenja S1 skupa transakcija, a posle i S2. Dati obrazloenje.
S1: r2(A), r2(B), w2(A), r1(B), w1(B), r3(A), w3(A), w3(B)
S2: r2(A), r2(B), r1(B), w1(B), r3(A), w3(A), w3(B), w2(A)
(6 poena)

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa BrojPredmeta.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU I DOMAEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale)
ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust,
DatumOdobravanjaPopusta, SifPravca, SifProdukcije)
DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka)
MUZICKI_PRAVAC(SifPravca,NazivPravca)
KOMPOZITOR(SifKompozitora,ImePrezime,Drzava)
KOMPONOVAO(SifKompozitora,SifAlbuma)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o albumima: naslov, ime i prezime kompozitora, cena, cena sa popustom (ukoliko ga ima,
inae prikazati punu cenu), naziv produkcijske kue i broj hale, za sve albume koje nisu na popustu ili im je
odobren popust tekueg dana.
(8 poena)
b) Prikazuje najprodavaniji album iz skupa najslabije prodavanih albuma po danima.
(8 poena)
c) Kreira
pogled
ALBUMI_NA_POPUSTU
sa
kolonama
(NazivProdukcijskeKuce,
NazivPravca,
UkBrProdPrimerakaBezPopusta, UkBrProdPrimSaPopustom,
UkPrihodOdProdaje, UkOdobrenPopust,
ProsecanIznosPopusta) kojima se prikazuje za sve produkcijske kue na sajmu, po svim muzikim pravcima
naziv produkcijske kue, naziv muzikog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa
popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kua izgubila na
ime odobrenog popusta i prosean procenat popusta.
(8 poena)

8. Nacrtati dijagram objekti-veze za evidenciju osnovnih podataka o leku, za potrebe apotekarske ustanove.
Potrebno je voditi evidenciju o svim lekovima sa sledeim osnovnim atributima: Komercijalni naziv, Hemijski naziv,
Doziranje, Dejstvo, Neeljeni efekti. Svaki lek se koristi za leenje najmanje jedne vrste indikacija (bolesti). S druge
strane, za svaki lek potrebno je dati kontraindikacije (u kojim sluajevima se ne sme koristiti) kojih moe biti vie.
Svaki lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi
jedan i samo jedan proizvoa. Lek se pakuje u vie oblika (npr. tableta, sirup, injekcija, praak itd.). Za svaku
vrstu pakovanja leka potrebno je voditi evidenciju o koliini i sastavu. Lek moe a ne mora imati zamene, a takoe
lek moe biti zamena drugim lekovima iz iste grupe.
( 11 poena )

BAZE PODATAKA
14. 05. 2008. godine

1.

Data je relacija ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime,

PeriodAngaovanja, ifraSektora, NazivSektora)


i sledee funkcionalne zavisnosti:
ifraProjekta, JMBG -> PeriodAngaovanja, ifraSektora, NazivSektora
ifraProjekta, JMBG -> NazivProjekta, ImePrezime
ifraProjekta -> NazivProjekta
JMBG -> ImePrezime, ifraSektora, NazivSektora
ifraSektora -> NazivSektora
NazivSektora -> ifraSektora
Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).
( 10 poena )

2.

Dat je model objekti-veze:


A1#

A2

1,M

0,1

AB1

0,2

AB2

B1#

B2

1,1

H1

0,1
C2

0,M

F
H
C1#
D1
C

0,M

CG1

1,M

1,M
0,1

3,3

G1
G

E1

F1

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.
(10 poena)

3.

Poslovna pravila integriteta relacionog modela. Dati za svaki podtip ovih ogranienja primer.
(10 poena)

4.

Spoljno spajanje. Objasniti svaku vrstu spoljnog spajanja i OBAVEZNO dati primere.
(10 poena)

5.

a) Navesti i objasniti osnovne elemente grafa prethoenja transakcija. Dati definiciju kada Ti prethodi Tj.
(4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvrenja S1 skupa transakcija, a posle i S2. Dati obrazloenje.
S1: r2(A), r2(B), w2(A), r1(B), w1(B), r3(A), w3(A), w3(B)
S2: r2(A), r2(B), r1(B), w1(B), r3(A), w3(A), w3(B), w2(A)
(6 poena)

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa BrojPredmeta.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU I DOMAEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale)
ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust,
DatumOdobravanjaPopusta, SifPravca, SifProdukcije)
DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka)
MUZICKI_PRAVAC(SifPravca,NazivPravca)
KOMPOZITOR(SifKompozitora,ImePrezime,Drzava)
KOMPONOVAO(SifKompozitora,SifAlbuma)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o albumima: naslov albuma, naziv produkcijske kue, tira i cena za sve albume kojima je
tira vei od 50.000 ili da im je tira manji od 50.000 ali popust vei od 10%.
(8 poena)
b) Prikazuje najprodavaniji album iz skupa najslabije prodavanih albuma po danima.
(8 poena)
c) Kreira
pogled
ALBUMI_NA_POPUSTU
sa
kolonama
(NazivProdukcijskeKuce,
NazivPravca,
UkBrProdPrimerakaBezPopusta, UkBrProdPrimSaPopustom,
UkPrihodOdProdaje, UkOdobrenPopust,
ProsecanIznosPopusta) kojima se prikazuje za sve produkcijske kue na sajmu, po svim muzikim pravcima
naziv produkcijske kue, naziv muzikog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa
popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kua izgubila na
ime odobrenog popusta i prosean procenat popusta.
(8 poena)

8. Napraviti model objekti-veze za deo informacionog sistema Svetskog prvenstva u fudbalu. Potrebno je voditi
evidenciju o reprezentacijama uesnicama takmienja sa osnovnim atributima ifraDrave, NazivDrave, kao i o
njenim igraima sa sledeim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godite. Svaka
reprezentacija je rasporeena u jednu i samo jednu kvalifikacionu grupu. Omoguiti beleenje grada u kojem se
igrala utakmica. Potrebno je modelovati utakmice, gde se tano zna koja je reprezentacija u ulozi domaina a koja
u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih golova domae i gostujue reprezentacije. Za svaku
utakmicu je potrebno znati i u kojoj fazi takmienja se odigrala (kvalifikacije u grupi, etvrtfinale, polufinale, finale).
Za svakog igraa je potrebno voditi statistiku uinka na svakoj odigranoj utakmici, gde uinak podrazumeva
evidenciju broja golova, broja udaraca u okvir gola, kao i da li je dobio uti ili crveni karton.
( 11 poena )

BAZE PODATAKA
05. 07. 2008. godine

1.

Data je relacija ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime,

PeriodAngaovanja, ifraSektora, NazivSektora)


i sledee funkcionalne zavisnosti:
ifraProjekta, JMBG -> PeriodAngaovanja, ifraSektora, NazivSektora, NazivProjekta,
ImePrezime
ifraProjekta -> NazivProjekta
JMBG -> ImePrezime, ifraSektora, NazivSektora
ifraSektora -> NazivSektora
NazivSektora -> ifraSektora
Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).
( 10 poena )

2.

Dat je model objekti-veze:


D1

A1#

A2

0,M

B1#

AB1

B2

0,1

0,1

1,1

0,M

AB2

0,M

0,12

0,1

E1#

H
C
G1

E2

1,M
G

H1

0,M
F1

C1

1,M
C

0,M

Transformisati prikazani model objekti-veze u relacioni model.


(10 poena)

3.

Navesti i u po jednoj reenici objasniti koje su dve osnovne prednosti korienja pogleda.

4.

Dat je objektni model. Podrazumeva se da svi tipovi imaju atribute ID i Naziv.

(10 poena)

a) Dati ODL naredbe za kreiranje sheme


objektne baze.
b) Napisati OQL upit kojim se prikazuju svi
projekti na kojima uestvuje i profesor koji je
inicirao taj projekat.

(10 poena)

5.

Vremensko oznaavanje transakcija.

(10 poena)
1

6.

Za dati model objekti-veze:


LID
Letilica

0,1
S
BrojSedista

1,1

Proizvoa

PIB

Avion
BrojMotora

Naziv

0,M
Kompanija

1,1

Vlasnik

0,M

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Napisati XPath ili XQuery kojim se prikazuju svi avioni koji su u vlasnitvu kompanije koja ih je i proizvela.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

SEMINAR (SIFSEM,NAZS,BUDZET,RUKOVODILAC_S)
UCESCE (SIFIST, SIFSEM)
ISTRAZIVAC (SIFIST,IMEIST,DATRODJ,DATZAP,PLATA,SIFINST, SRUKOV)
INSTITUT (SIFINST, NAZIV,GRAD)
Napisati SQL:1999 naredbe kojima se:
a) prikazuju svi podaci o istraivaima koji su u tekuoj godini napunili tano 5 godina radnog staa a uestvovali
su na vie od 60 seminara.
(8 poena)
b) prikazuje starosna struktura istraivaa po gradovima u kojima rade (broj istraivaa mlaih od 22 god, broj
istraivaa izmeu 20 i 45 god. i broj istraivaa starijih od 50 godina).
(8 poena)
c) kreira pogled RUKOVODILAC (NazivInstituta, ImeIstraivaa, SifraIstraivaa, DatumZaposlenja) kojim se
prikazuje za sve institute imena rukovodilaca koji su uestvovali na vie od 10 seminara u tekuoj godini.
(8 poena)

8. Napraviti model objekti-veze za zadati verbalni opis. U cipelgradu ive cipelii i izmii. I za cipelie i za
izmie moe se rei da su obuii. Cipelii mogu biti papuii ili nanulii ili opanii. izmii se dele na cokulie i
gojzerie. Cokulii mogu da se drue sa svim cipeliima osim sa papuiima. Nanuli moe ali ne mora da se drui
sa najvie jednim papuiem, dok jedan papui moe da se drui sa vie nanulia. Gojzerii su dovoljni sami sebi
tako da se drue meusobno. Kada se udrue cokulii, opanii i nanulii onda se to naziva srpii.
( 11 poena )

BAZE PODATAKA
30. 08. 2008. godine

1. Data je relacija Evrovizija (Izvoa, ifraDraveOcenjivaa, BrojPoena, NazivPesme,


NazivDraveOcenjivaa, ifraJezika, NazivJezika)
i sledee funkcionalne zavisnosti:
Izvoa, ifraDraveOcenjivaa -> BrojPoena,
ifraJezika, NazivJezika
ifraDraveOcenjivaa -> NazivDraveOcenjivaa
Izvoa -> NazivPesme, ifraJezika, NazivJezika
ifraJezika -> NazivJezika

NazivPesme,

NazivDraveOcenjivaa,

Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).


( 10 poena )

2.

Dat je model objekti-veze:


A1#

A2

0,M

B1#

AB1

B2

0,1

0,M

1,1

AB2

C2

0,1

C1#
S
H1

D1

0,M

D
H
F

1,M

0,M
0,7

1,M

E1

G1

0,M

F1

1,1
CG1

Transformisati prikazani model objekti-veze u relacioni model.


Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.
(10 poena)

3. Objasniti osnove relacionog upitnog jezika QBE (Query by Example).


poena)
4.

Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u?

5.

ta je Transakcija? Objasniti skup osobina koje transakcija mora da poseduje.

6.

Za dati XML dokument:

<?xml version="1.0"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes" xml:space="preserve">
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
<share dt:dt="number">1000</share>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>

(10

(10 poena)
(10 poena)

<share dt:dt="number">1500</share>
</stock>
<stock exchange="nasdaq">
<name>zysmergy inc</name>
<symbol>ZYSZ</symbol>
<price dt:dt="number">20.313</price>
<share dt:dt="number">2000</share>
</stock>
</portfolio>

a) Napisati XML schemu posmatrajui dati dokument kao templejt uz sledee pretpostavke: svi atributi su
obavezni; redosled oznaka je bitan; atribut exchange moze imati samo vrednosti nyse, nasdaq, i amx.
b) Uz pretpostavku da se podaci o validnim XML dokumentima skladiste u relacionoj bazi podataka,
definisati relacije kojima se omogucava njihovo skladistenje sa najmanje redudansi.
c) Napisati XQuery izraz kojim se prikazuju sva portfolija koja sadre deonice (stocks) kompanije zysmergy
inc..
(15 poena)
NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU, A PRVI PUT IZLAZE NA ISPIT. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

PopisnaKomisija(KomisijaID, PredsednikKomisije, BrojClanova)


Lokacija(LokacijaID, Naziv, TipLokacije)
PopisnaLista(ListaID, DatumPopisa, KomisijaID, LokacijaID)
StavkaPopisneListe(ListaID,Rb,PopisanaKol, InventarniBroj)
OsnovnoSredstvo(InventarniBroj, Naziv, DatumNabavke, NabavnaVrednost,
OtpisanaVrednost, AmortizacionaGrupa)
TipLokacije in {PROIZVODNI POGON,ADMINISTRATIVNI OBJEKTI, POMONI OBJEKTI}
AmortiazacionaGrupa in { GRAEVINSKI OBJEKTI, OPREMA , AUTOMOBILI,
KOMPJUTERSKA OPREMA }
PopisanaKolicina in {0,1}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju ifre lokacija koje su tipa 'ADMINISTRATIVNI OBJEKTI' i na kojima prema popisu iz 2008 nema
popisanog vika (popisana koliina je za svaku stavku na toj lokaciji jednaka nula).
(8 poena)
b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama ukupnu nabavnu vrednost osnovnih
sredstava i ukupnu otpisanu vrednost. Od atributa prikazati ifre lokacija, nazive lokacija i nazive
amortizacionih grupa. Prikazati u rastuem redosledu po ifri lokacija.
(8 poena)
c) Prikazati radnike koji su bili predsednici popisnih komisija u poslednje tri godine na lokacijama koje su u toj
godini vaile za lokacije sa najveom ukupnom nabavnom vrednou osnovnih sredstava.
(8 poena)

8.

Napraviti model objekti-veze za deo informacionog sistema Evropskog prvenstva u koarci. Potrebno je voditi
evidenciju o reprezentacijama uesnicama takmienja sa osnovnim atributima ifraDrave, NazivDrave, kao i o
njenim igraima sa sledeim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godite. Svaka
reprezentacija je rasporeena u jednu i samo jednu kvalifikacionu grupu. Sve utakmice jedne kvalifikacione grupe
se igraju u samo jednom gradu. Potrebno je modelovati utakmice, gde se tano zna koja je reprezentacija u ulozi
domaina a koja u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih poena domae i gostujue
reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi takmienja se odigrala (kvalifikacije u grupi,
bara, etvrtfinale, polufinale, finale ...). Za svakog igraa je potrebno voditi statistiku uinka na svakoj odigranoj
utakmici, gde uinak podrazumeva evidenciju broja pogodaka za 1 poen, broja pogodaka za 2 poena, broja
pogodaka za 3 poena, broja ofanzivnih skokova, broja defanzivnih skokova i broja asistencija.
( 11 poena )

BAZE PODATAKA
20. 09. 2008. godine

1.

Data je relacija UesnikTrke (ifraTrke, OlimpijskiBroj, NazivTrke, RBStaze


ImePrezimeTrkaa, ifraDrave, NazivDrave)
i sledee funkcionalne zavisnosti:
ifraTrke, OlimpijskiBroj -> RBStaze, ifraDrave, NazivDrave
ifraTrke, OlimpijskiBroj -> NazivTrke, ImePrezimeTrkaa
ifraTrke -> NazivTrke
OlimpijskiBroj -> ImePrezimeTrkaa, ifraDrave, NazivDrave
ifraDrave -> NazivDrave
Normalizovati datu relaciju direktnim korienjem BCNF (Obavezno objasniti postupak).
( 10 poena )

2.

Dat je model objekti-veze:


D1

A1#

A2

0,M

B1#

AB1

B2

0,1
D

0,1

1,1

0,M

0,M

AB2

0,23

G2

0,1

G1#

H
C

1,M

G
H1

C1

1,M
S

1,M
E

0,M
E1

F1

Transformisati prikazani model objekti-veze u relacioni model.


Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete B, C, D, G, H.
(10 poena)

3.

Spoljno spajanje. Objasniti svaku vrstu spoljnog spajanja i OBAVEZNO dati primer.

(10 poena)

4. Navesti, opisati i dati primer za sloene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard).
Za svaki tip dati optu definiciju i nain njihovog korienja u SQL naredbama.
(10 poena)
5.

Vremensko oznaavanje transakcija.

(10 poena)

6.

Za dati relacioni model:

Dobavlja (SifraDob, NazivDob, AdresaDob)


Narudbenica (BrojNarDob, SifraDob)
StavkaNar (BrojNarDob, RedniBroj, Proizvod, Kolicina, Vrednost, Valuta)

a) napraviti XML emu


b) dati primer ekstenzije relacija datog relacionog modela i primer XML dokumenta na osnovu napravljene XML
eme
c) napisati XQuery kojim se prikazuju sve narudbenice kod kojima se nalaze narueni i proizvod "A" i proizvod
"B" od dobavljaa "XYZ"
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU, A PRVI PUT IZLAZE NA ISPIT. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

PopisnaKomisija(KomisijaID, PredsednikKomisije, BrojClanova)


Lokacija(LokacijaID, Naziv, TipLokacije)
PopisnaLista(ListaID, DatumPopisa, KomisijaID, LokacijaID)
StavkaPopisneListe(ListaID,Rb,PopisanaKol, InventarniBroj)
OsnovnoSredstvo(InventarniBroj, Naziv, DatumNabavke, NabavnaVrednost,
OtpisanaVrednost, AmortizacionaGrupa)
TipLokacije in {PROIZVODNI POGON,ADMINISTRATIVNI OBJEKTI, POMONI OBJEKTI}
AmortizacionaGrupa in { GRAEVINSKI OBJEKTI, OPREMA , AUTOMOBILI, KOMPJUTERSKA
OPREMA }
PopisanaKolicina in {0,1}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju ifre lokacija koje su tipa PROIZVODNI POGON' i na kojima prema popisu iz 2007. ima manjka
(popisana koliina za bar jednu stavku na toj lokaciji je jednaka nuli).
(8 poena)
b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama najmanju nabavnu vrednost osnovnih
sredstava. Od atributa prikazati ifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u
opadajuem redosledu po ifri lokacija.
(8 poena)
c) Prikazati sva osnovna sredstva amortizacione grupe KOMPJUTERSKA OPREMA koja se nalaze u popisnoj
listi za 2008 a nisu u popisnoj listi za 2007. godinu.
(8 poena)

8.

Napraviti model objekti-veze za deo informacionog sistema SPA centra. SPA centar nudi razne vrste
usluga. Postoje pojedinane usluge (bazen, sauna, akuzi, fitnes, masaa, akupunktura ...) i paketi usluga. Paket
usluga objedinjuje ve postojee pojedinane usluge. Potrebno je voditi evidenciju korisnika usluga Centra (ID,
ImePrezime, Adresa, KontaktTelefon). Takoe, potrebno je voditi evidenciju korienja usluga za svakog korisnika
sa tanim datumom korienja bilo da je pojedinana usluga ili paket usluga. Modelovati cenovnik usluga tako da
se prati istorija promene cena za svaku pojedinanu uslugu. Paket usluga nema definisanu cenu ve je samo
definisan popust za svaku pojedinanu uslugu koja je ukljuena u paket.
( 11 poena )
2

BAZE PODATAKA
11.10. 2008. godine

1.

Data je relacija RasporedVozila (ifraGarae, RegBroj, NazivGarae, GaranoMesto,


ifraTipaVozila, NazivTipaVozila)
i sledee funkcionalne zavisnosti:
ifraGarae, RegBroj -> NazivGarae, GaranoMesto, ifraTipaVozila, NazivTipaVozila
ifraGarae -> NazivGarae
RegBroj -> ifraTipaVozila, NazivTipaVozila
ifraTipaVozila -> NazivTipaVozila
NazivTipaVozila -> ifraTipaVozila
Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).

2.

( 10 poena )

Dat je model objekti-veze:


A1#

A2

0,1

B1#

AB1

B2

1,1
1,M

H1

0,2

0,1
C2

0,M

AB2

F
H
C1#
D1
C

0,M

CG1

1,M

1,M

G1

0,1

3,3

E1

F1

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.
(10 poena)

3. Navesti sve dodatne operacije relacione algebre koje su uvedene zbog postojanja nula vrednosti u bazi
podataka i OBAVEZNO dati primere.
(10 poena)
4. Date su tabele R(P,A) i S(F,B). Uz pretpostavku da postoji referencijalno ogranienje: S.F je spoljni klju
koji se referencira na primarni R.P, napisati triger na nivou naredbe kojim se implementira dinamiko pravilo
integriteta on update default i on delete nullifies.
(10 poena)
5.

Semantika i obrada ECA pravila.


(10 poena)

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja )


KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva)
TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub)
ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati )
ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje Prezime, Ime, GodineStaza, Naziv kluba za one trenere koji su zaposleni u sportskom drutvu sa
nazivom Atleta u poslednjih 5 godina. Rezultat sortirati u opadajuem redosledu godina staa i rastuem
prezimena.
(8 poena)
b) Prikazuje za sva sportska drutva klubove koji imaju broj zaposlenih trenera izmedu 5 i 10, i koji su bili
angaovani samo u matinom klubu.
(8 poena)
c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju
mesene isplate trenerima u prethodnoj godini koji su angaovani van matinog kluba. Kolona BrojKlubova
prikazuje broj razliitih klubova koji su isplatili honorar treneru u datom mesecu.
(8 poena)

8. Nacrtati dijagram objekti-veze za deo kadrovske evidencije u vazduhoplovnoj kompaniji. Potrebno je


voditi evidenciju o zaposlenima sa sledeim zajednikim atributima: JMBG, ImePrezime, GodinaRoenja.
Svaki zaposleni je ili Avio-mehaniar ili Pilot ili Stjuardesa(Stjuard). Za svakog avio-mehaniara potrebno je
znati datum dobijanja licence za odreeni tip aviona (ifraTipaAviona, NazivTipaAviona). Jedan aviomehaniar
moe
imati
licence
za
vie
tipova
aviona.
Osnovna
svojstva
pilota
su:
DatumPoslednjegSistematskogPregleda i OcenaZdravstvenogStanja. Svaki pilot je dodeljen nekom
konkretnom avionu (OznakaAviona, GodProizvodnje) i u toj posadi ima svoju ulogu (ifraUloge, NazivUloge).
U modelu obezbediti da jedan pilot moe biti dodeljen istom avionu vie puta bez obzira na ulogu. Voditi
evidenciju i o rasporedu stjuardesa (stjuarda) po avionima. Potrebno je omoguiti pamenje poznavanja stranih
jezika za svaku stjuardesu (stjuarda), moraju znati bar dva strana jezika.
( 11 poena )

BAZE PODATAKA
03.11. 2008. godine

1.

Data je relacija ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime,


PeriodAngaovanja, ifraSektora, NazivSektora)
i sledee funkcionalne zavisnosti:
ifraProjekta, JMBG -> PeriodAngaovanja, ifraSektora, NazivSektora,
NazivProjekta, ImePrezime
ifraProjekta -> NazivProjekta
JMBG -> ImePrezime, ifraSektora, NazivSektora
ifraSektora -> NazivSektora
NazivSektora -> ifraSektora
Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).

2.

( 10 poena )

Dat je model objekti-veze:

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.
(10 poena)

3.

Spoljno spajanje. Objasniti svaku vrstu spoljnog spajanja i OBAVEZNO dati primere.
(10 poena)

4.

Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u?


(10 poena)

5.

Semantika i obrada ECA pravila.


(10 poena)

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Napisati XPath ili XQuery kojim se prikazuju svi avioni koji su u vlasnitvu kompanije koja ih je i
proizvela.
(15 poena)
NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

ZAPOSLENI(SifraZap, Ime, Prezime, Mlb, DatRodj, Pol ,SifraProf)


RADNO_MESTO(SifraRM, NazivRM, SifraProf)
ANAGAZOVANJE(SifraZap, SifraRM, DatOd, DatDo, SifraRS)
RADNI_STATUS(SifraRS, NazivRS)
OBRAZOVNI_PROFIL(SifraProf, StepenStrSpreme, NazivProf)
Pol in

{M,Z}

StepenStrSpreme in

{V,VI,VII}

NazivRS in
{probni rad, pripravnicki staz, ugovor na odredjeno vreme,
ugovor na neodredjeno vreme, ugovor o delu}
Napisati SQL:1999 naredbe kojima se:
a)

Prikazuju svi podaci o zaposlenima (ifra, ime, prezime, matini broj, naziv obrazovnog profila ) za one
zaposlene koji imaju V stepen strune spreme i koji e u tekuoj ili narednoj godini stei pravo na odlazak
u penziju po osnovu starosti(U tekuoj ili narednoj godini navravaju Mukarci-65, ene-58).
(8 poena )

b)

Prikazuju ifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kojem do
sada nije bilo angaovanja.
(8 poena )

c)

Kreira pogled STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2007, BR_ZAP_2008, TREND,


PROCENTUALNO) kojim se prikazuje po svim iframa profila, broj osoba koje su zaposlene u 2007-oj,
broj osoba koje su zaposlene u 2008-oj i opis uoenog trenda RAST,PAD ili BEZ_PROMENA.
(8 poena )

8. Napraviti model objekti-veze za praenje olimpijskog takmienja gimnastikog vieboja. Potrebno je voditi
evidenciju o takmiarima sa sledeim osnovnim atributima: OlimpijskiBroj, PrezimeIme, GodinaRoenja, Pol.
Svaki takmiar je iz jedne i samo jedne drave za koju je potrebno znati Skraeni naziv i Pun naziv drave.
Svaki takmiar veba na vie sprava (ifra sprave, Naziv sprave). Unapred je odreen Redosled vebanja
posmatranog takmiara na odreenoj spravi. Svaki takmiar za svoju vebu na odreenoj spravi dobija po
jednu ocenu od svakog postavljenog sudije. Potrebno je voditi evidenciju sudija sa osnovnim obelejima kao
to su ifraSudije, NazivSudije i drava iz koje dolaze. Pored ovoga modelirati listu sudija za ocenjivanje vebi
na spravi, t.j. postavljanje jednog ili vie sudija za svaku spravu.
2

( 11 poena )

BAZE PODATAKA
18.12. 2008. godine

1. Data je relacija Evrovizija (Izvoa, ifraDraveOcenjivaa, BrojPoena, NazivPesme,


NazivDraveOcenjivaa, ifraJezika, NazivJezika)
i sledee funkcionalne zavisnosti:
Izvoa, ifraDraveOcenjivaa -> BrojPoena, NazivPesme,
ifraJezika, NazivJezika
ifraDraveOcenjivaa -> NazivDraveOcenjivaa
Izvoa -> NazivPesme, ifraJezika, NazivJezika
ifraJezika -> NazivJezika

NazivDraveOcenjivaa,

Normalizovati datu relaciju direktnim korienjem BCNF (Objasniti postupak).

2.

( 10 poena )

Dat je model objekti-veze:


A1#

A2

0,M

B1#

AB1

B2

0,1
A

0,M

1,1

AB2

C2

0,1

C1#
S

H1
D1

0,M

D
H
F

1,M

0,M
0,7

G1

0,M
E

1,M

1,1
E1

F1

CG1

a) Transformisati prikazani model objekti-veze u relacioni model.


b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.
(10 poena)

3.

Objasniti osnove relacionog upitnog jezika QBE (Query by Example).


(10 poena)

4.

ta je Transakcija? Objasniti skup osobina koje transakcija mora da poseduje.

5.

Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u?

(10 poena)

(10 poena)

6.

Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.
(15 poena)

NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA
KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA.

7.

Data je relaciona shema:

SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja )


KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva)
TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub)
ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati )
ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje Prezime, Ime, Naziv kluba za one trenere koji su zaposleni u sportskom drutvu sa nazivom
Atleta. Rezultat sortirati u opadajuem redosledu godina staa i rastuem prezimena.
(8 poena)
b) Prikazuje za sva sportska drutva klubove koji imaju vie od 10 angaovanih trenera, koji imaju vie od 5
godina radnog iskustva.
(8 poena)
c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju
mesene isplate trenerima u prethodnoj godini koji su angaovani van matinog kluba. Kolona BrojKlubova
prikazuje broj razliitih klubova koji su isplatili honorar treneru u datom mesecu.
(8 poena)

8. Napraviti model objekti-veze za deo informacionog sistema Gradskog saobraajnog preduzea (GSP).
Potrebno je voditi evidenciju o linijama GSP tako da je za svaku liniju potrebno znati poetnu, krajnju i sve
meustanice. Voditi rauna o rednom broju stanice za svaku liniju polazei od poetne (redosled stanica).
Vozilo u sistemu gradskog saobraaja ima atribute: Registarski broj i Oznaka vozila. Vozilo moe biti vlasnitvo
GSP sa obelejima Naziv garae i Parking mesto, dok ako je vozilo vlasnitvo privatnog prevoznika onda se
evidentiraju podaci o prevozniku (ifra, Naziv, Mesto). Ispravno vozilo se svakoga dana rasporeuje na jednu
od linija i zadaje se vreme svakog polaska u toku dana. Za svaki polazak pored vremena potrebno je omoguiti
evidenciju realizacije polaska kao i napomene ukoliko je dolo do otkaza polaska.
( 11 poena )

Februar 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu. Za
kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli da
probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
RasporedVozila (ifraGarae, RegBroj, NazivGarae, GaranoMesto, ifraTipaVozila, NazivTipaVozila)

funkcionalne zavisnosti:
ifraGarae, RegBroj --> NazivGarae, GaranoMesto, ifraTipaVozila, NazivTipaVozila
ifraGarae --> NazivGarae
RegBroj --> ifraTipaVozila, NazivTipaVozila
ifraTipaVozila --> NazivTipaVozila
NazivTipaVozila --> ifraTipaVozila

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku vrednost R.A
postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta:
determinanta je bilo koji prost ili sloen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.
Boyce-Codd ova normalna forma:
Relacija R je u Boyce-Codd ovoj normalnoj formi ako su sve determinante ujedno i kandidati za klju relacije.
determinante:
ifraGarae --> NazivGarae(D)
ifraTipaVozila --> NazivTipaVozila(D)
NazivTipaVozila --> ifraTipaVozila(D)
RegBroj --> NazivTipaVozila, ifraTipaVozila(D)
ifraGarae, RegBroj --> GaranoMesto(D)(KK)
oigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlae projekcije sa onim determinantama koje nisu
kandidati za klju, relacija se svodi na BCNF.
Garaa(ifraGarae, NazivGarae) jeste BCNF
RasporedVozila2(ifraGarae, RegBroj, GaranoMesto, ifraTipaVozila, NazivTipaVozila) nije BCNF (4D, 1KK)
dalje se dekomponuje relacija RasporedVozila2
Vozilo(RegBroj, ifraTipaVozila, NazivTipaVozila) nije BCNF (3D, 1KK)
RasporedVozila3(ifraGarae, RegBroj, GaranoMesto) jeste BCNF
dalje se dekomponuje relacija Vozilo
Vozilo2(RegBroj, ifraTipaVozila) jeste BCNF
TipVozila(ifraTipaVozila, NazivTipaVozila) jeste BCNF
konano:
Garaa(ifraGarae, NazivGarae)
RasporedVozila(ifraGarae, RegBroj, GaranoMesto)
Vozilo(RegBroj, ifraTipaVozila)

TipVozila(ifraTipaVozila, NazivTipaVozila)

2. zadatak
a)
A (A1#, A2)
B (B1#, B2, A1#)
AB1 (B1#, A1#)
C (A1#,C1#, C2)
D (A1#, D1)
E (A1#, E1)
F (A1#, F1)
G (A1#, G1, A1#, G1)
H (A1#, A1#, A1#, G1, H1)

b)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship set<Bgtt; AB1 inverse B :: BA1;
relationship set<Bgtt; AB2 inverse B :: BA2;
};
class B (extent Bs key B1#){
attribute string B1#;
attribute string B2;
relationship A BA1 inverse A :: AB1;
relationship A BA2 inverse A :: AB2;
};
class D exdends A{
attribute string D1;
attribute set<Ggtt; Gs;
};
class G {
attribute string G1;
relationship G G1G2 inverse G :: G2G1;
relationship set<Ggtt; G2G1 inverse G :: G1G2;
relationship set<Hgtt; GH inverse H :: HG;
};
class H {
attribute string H1;
relationship C HC inverse C :: CH;
relationship F HF inverse F :: FH;
relationship G HG inverse G :: GH;
};

3. zadatak
1. Integritet entiteta (integritet kljua)
Ni jedan atribut koji je primarni klju ili deo primarnog kljua neke bazne relacije ne moe da uzme "nula vrednost"
2. Referencijalni integritet
Ako bayna relacija R1 poseduje spoljni klju SK koji ovu relaciju povezuje sa baznom relacijom R2, tada svaka vrednost kljua SK mora biti
bilo jednaka nekoj vrednosti primarnog kljua iz R2 ili "nula vrednost"
SK(R1) PK(R2) {null}

4. zadatak
Sloeni konstruisani tipovi u objektno-relacionom bp su tip vrsta i tip kolekcija.

Tip vrsta
je niz polja koja ine parovi (<naziv podatka>,<tip podatka>). U SQL:1999 je moguce definisati promenljive i parametre koji su tipa vrsta,
odnosno definisati kolonu u tabeli koja e imati kompleksnu strukturu.
tip vrsta se specificira sledeom sintaksom:
ROW (ulica CHAR(30), broj INTEGER, grad CHAR(20))

na primer:
CREATE TABLE student (brind char(6),
prezime CHAR(15),
adresa ROW (ulica CHAR(30),
broj INTEGER,
grad CHAR(20)));

Tip kolekcija
predstavlja grupu koja se sastoji od nula ili vie elemenata istog tipa. Tip kolekcije je odreen vrstom kolekcije i tipom elementa kolekcije.
SQL:1999 definie samo jednu vrstu kolekcije - niz, ostale u nekoj sledecoj generaciji.
formalna definicija niza:
<tip elementa niza> ARRAY [<maksimalna kardinalnost niza>]

na primer:
CREATE TABLE sekcija (naziv CHAR(15),
clan CHAR(20) ARRAY[20]);

5. zadatak
a)
Graf prethoenja tranaskcija se sastoji od vorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethoenje transakcija. Kae se da
Transakcija Ti prethodi transakciji Tj u izvrenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:
1. Oi prethodi Oj u S
2. I Oi i Oj se odnose na isti element baze podataka
3. Barem jedna od operacija Oi i Oj je upisivanje
Ako postoji ciklus u grafu tada izvrenje nije mogue uiniti serijabilnim (nije konflikt-serijabilno)

b)
S1
T2 prethodi T3 (operacije 3 i 6) T2 prethodi T1 (operacije 2 i 5) T1 prethodi T3 (operacije 5 i 8)
graf prethoenja:

Poto na grafu nema ciklusa izvrenje jeste konflikt serijabilno!


S2
T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, ve ovde je jasno da izvrenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)
T1 prethodi T3 (operacije 4 i 7)
graf prethoenja:

Poto na grafu ima ciklusa izvrenje nije konflikt serijabilno!

6. zadatak
a)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="Model">
<xs:complexType>
<xs:sequence>
<xs:element name="Pacijent" type="PacijentType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="jedinstvenoImePrezime">
<xs:selector xpath=".//Pacijent"/>
<xs:field xpath="@ImePrezime"/>
</xs:unique>
</xs:element>
<xs:complexType name="PacijentType">
<xs:sequence>
<xs:element name="Karton" type="KartonType"/>
</xs:sequence>
<xs:attribute name="JMBG" type="xs:ID" use="required"/>
<xs:attribute name="ImePrezime" type="xs:string"/>
</xs:complexType>
<xs:complexType name="KartonType">
<xs:attribute name="BrojKartona" type="xs:ID" use="required"/>
<xs:attribute name="DatumPregleda" type="xs:date"/>
<xs:attribute name="Dijagnoza" type="xs:string"/>
</xs:complexType>
</xs:schema>

b)
<?xml version="1.0" encoding="UTF-8"?>
<Model
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/feb2008/podA.xsd">
<Pacijent JMBG="JMBG123123123123" ImePrezime="Pera Peric">
<Karton BrojKartona="K1" DatumPregleda="2008-01-01" Dijagnoza="..."/>
</Pacijent>
<Pacijent JMBG="JMBG234234234234" ImePrezime="Petar Peric">
<Karton BrojKartona="K2" DatumPregleda="2008-01-01" Dijagnoza="..."/>
</Pacijent>
</Model>

c)
<xs:unique name="jedinstvenoImePrezime">
<xs:selector xpath=".//Pacijent"/>
<xs:field xpath="@ImePrezime"/>
</xs:unique>

7. zadatak
a)
select
SifraZap, Ime, Prezime, Mlb, NazivProf
from
ZAPOSLENI join ANGAZOVANJE using(SifraZap) join OBRAZOVNI_PROFIL using(SifraProf) join RADNI_STATUS using(SifraRS)
where
StepenStrSpreme = 'IV' and NazivRS = 'probni rad' and DATE_ADD(DatOd,INTERVAL 2 month) > current_date

b)
select
SifraRM, NazivRM, NazivProf
from
RADNO_MESTO join OBRAZOVNI_PROFIL using(SifraProf) join ANGAZOVANJE using(SifraRM)
where
NazivProf like 'S%' and length(NazivProf)<=10 and DatDo is not null
group by
SifraRM, NazivRM, NazivProf
having
count(*) > 5

c)

create view STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2006, BR_ZAP_2007, TREND, PROCENTUALNO) as


select
SifraProf,
NazivProf,
sum(case when extract(year from datOd)=2006 then 1 else 0 end),
sum(case when extract(year from datOd)=2007 then 1 else 0 end),
case when sum(case when extract(year from datOd)=2006 then 1 else 0 end)>sum(case when extract(year from datOd)=2007 then 1 else 0 end) then 'PAD' when sum(case when extract(year fro
(sum(case when extract(year from datOd)=2007 then 1 else 0 end)/sum(case when extract(year from datOd)=2006 then 1 else 0 end))*100
from
OBRAZOVNI_PROFIL join RADNO_MESTO using(SifraProf) join ANGAZOVANJE using(SifraRM)
group by
SifraProf, NazivProf

8. zadatak

Mart 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu. Za
kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli da
probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
Evrovizija (Izvodja, ifraDraveOcenjivaa, BrojPoena, NazivPesme, NazivDraveOcenjivaa, ifraJezika, NazivJezika)

funkcionalne zavisnosti:
Izvodja, ifraDraveOcenjivaa --> BrojPoena, NazivPesme, NazivDraveOcenjivaa, ifraJezika, NazivJezika
ifraDraveOcenjivaa --> NazivDraveOcenjivaa
Izvodja --> NazivPesme, ifraJezika, NazivJezika
ifraJezika --> NazivJezika

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku vrednost R.A
postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta:
determinanta je bilo koji prost ili slozen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.

determinante:
Izvodja, ifraDraveOcenjivaa --> BrojPoena(D)(KK)
Izvodja --> NazivPesme, ifraJezika, NazivJezika(D)
ifraDraveOcenjivaa --> NazivDraveOcenjivaa(D)
ifraJezika --> NazivJezika(D)
relacija se svodi na BCNF dekompozicijom kojom se iz relacije izvlae projekcije sa onim determinantama koje nisu kandidati za klju
Pesma (Izvodja, NazivPesme, ifraJezika)
Ocena (Izvodja, ifraDraveOcenjivaa, BrojPoena)
DravaOcenjiva (ifraDraveOcenjivaa, NazivDraveOcenjivaa)
Jezik (ifraJezika, NazivJezika)
u ovim relacijama sve determinante su kandidati za klju tako da su relacije u Boyce-Codd normalnoj formi.

2. zadatak
a)
A (A1#, A2)
B (B1#, B2, A1#)
AB2 (A1#, B1#)
C (A1#,C1#, C2)
D (A1#, D1)
E (A1#, E1)
F (A1#, F1)

G (A1#, G1)
CG1 (A1#, A1#, G1)
H (A1#,A1#, H1)

b)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship B AB1 inverse B :: BA1;
relationship set<Bgtt; AB2 inverse B :: BA2;
};
class C extends A{
attribute string C1#;
attribute string C2;
relationship set<G> CG1 inverse G :: GC1;
};
class D extends A{
attribute string D1;
relationship set<Ggtt; DG inverse G :: GD;
};
class G (key G1) {
attribute string G1;
relationship D GD inverse D :: DG;
relationship set<Cgtt; GC1 inverse C :: CG1;
};
class E extends C {
attribute string E1;
relationship H EH inverse H :: HE;
};

3. zadatak
pravila integriteta za domene
svodi se na definisanje semantikog domena
CREATE DOMAIN Kol INTEGER
(Kol > 5000 AND Kol < 50000 AND MOD(Kol,50)=0);

pravila integriteta za atribute


mogu se definisati preko sledee etvorke <naziv atributa, domen, ogranienje, akcija>
ATRIBUT
OCENA

DOMEN

OGRANIENJE

INTEGER

OCENA > 5 AND OCENA <= 10

pravila integriteta za relacije


mogue je vezati vrednost jednog za vrednost drugog atributa u relaciji
CREATE INTEGRITY RULE Starost_smer
FORALL Student (IF Studen.Smera = 01 THEN Student.Starost < 28)

pravila integriteta za bazu


mogue je skazati bilo kakvo sloeno ogranienje, pa i ono koje povezuje atribute iz razliitih relacija
CREATE INTEGRITY RULE Ocene_smer
FORALL Student (IF Studen.Smera = 01 THEN
EXISTS Prijava (Prijava.Ocena > 7 AND Student.BrInd + Prijava.BrInd AND Prijava.ifPred = Predmet.ifPred AND Predmet.NazivPredmeta = "Matematika"));

4. zadatak
Sloeni konstruisani tipovi u objektno-relacionom bp su tip vrsta i tip kolekcija.

Tip vrsta

je niz polja koja ine parovi (<naziv podatka>,<tip podatka>). U SQL:1999 je moguce definisati promenljive i parametre koji su tipa vrsta,
odnosno definisati kolonu u tabeli koja e imati kompleksnu strukturu.
tip vrsta se specificira sledeom sintaksom:
ROW (ulica CHAR(30), broj INTEGER, grad CHAR(20))

na primer:
CREATE TABLE student (brind char(6),
prezime CHAR(15),
adresa ROW (ulica CHAR(30),
broj INTEGER,
grad CHAR(20)));

Tip kolekcija
predstavlja grupu koja se sastoji od nula ili vie elemenata istog tipa. Tip kolekcije je odreen vrstom kolekcije i tipom elementa kolekcije.
SQL:1999 definie samo jednu vrstu kolekcije - niz, ostale u nekoj sledecoj generaciji.
formalna definicija niza:
<tip elementa niza> ARRAY [<maksimalna kardinalnost niza>]

na primer:
CREATE TABLE sekcija (naziv CHAR(15),
clan CHAR(20) ARRAY[20]);

5. zadatak
a)
Graf prethoenja tranaskcija se sastoji od vorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethoenje transakcija. Kae se da
Transakcija Ti prethodi transakciji Tj u izvrenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:
1. Oi prethodi Oj u S
2. I Oi i Oj se odnose na isti element baze podataka
3. Barem jedna od operacija Oi i Oj je upisivanje
Ako postoji ciklus u grafu tada izvrenje nije mogue uiniti serijabilnim (nije konflikt-serijabilno)

b)
S1
T2 prethodi T3 (operacije 3 i 6) T2 prethodi T1 (operacije 2 i 5) T1 prethodi T3 (operacije 5 i 8)
graf prethoenja:

Poto na grafu nema ciklusa izvrenje jeste konflikt serijabilno!


S2
T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, ve ovde je jasno da izvrenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)
T1 prethodi T3 (operacije 4 i 7)
graf prethoenja:

Poto na grafu ima ciklusa izvrenje nije konflikt serijabilno!

6. zadatak
a)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Model">
<xs:complexType>

<xs:sequence>
<xs:element name="Predmet" type="PredmetType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="jedinstveniBrojPredmeta">
<xs:selector xpath=".//Predmet"/>
<xs:field xpath="@BrojPredmeta"/>
</xs:unique>
</xs:element>
<xs:complexType name="PredmetType">
<xs:sequence>
<xs:element name="Akt" type="AktType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="BrojPredmeta" type="xs:int" use="required"/>
<xs:attribute name="Opis" type="xs:string"/>
</xs:complexType>
<xs:complexType name="AktType">
<xs:attribute name="RBAkta" type="xs:ID" use="required"/>
<xs:attribute name="DatumPodnosenja" type="xs:date"/>
<xs:attribute name="KratakOpis" type="xs:string"/>
</xs:complexType>
</xs:schema>

b)
<?xml version="1.0" encoding="utf-8"?>
<Model
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/maj2008/podA.xsd">
<Predmet BrojPredmeta="1" Opis="neki opis">
<Akt RBAkta="A11" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
<Akt RBAkta="A12" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
</Predmet>
<Predmet BrojPredmeta="2" Opis="neki opis">
<Akt RBAkta="A21" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
<Akt RBAkta="A22" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
</Predmet>
</Model>

c)
<xs:unique name="jedinstveniBrojPredmeta">
<xs:selector xpath=".//Predmet"/>
<xs:field xpath="@BrojPredmeta"/>
</xs:unique>

7. zadatak
a)
select
Naslov, ImePrezime, Cena, case when SajamskiPopust=0 then Cena else Cena*SajamskiPopust end as CenaSaPopustom, Naziv, BrojHale
from
ALBUM join PRODUKCIJSKA_KUCA using(SifProdukcije) join KOMPONOVAO using(SifAlbuma) join KOMPOZITOR using(SifKompozitora)
where
SajamskiPopust = 0.0 or DatumOdobravanjaPopusta >= current_date

b)
select
Naslov
from
ALBUM join DNEVNA_PRODAJA using(SifAlbuma)
where
(Datum, BrojPrimeraka)
in
(select
Datum, min(BrojPrimeraka)
from
DNEVNA_PRODAJA
group by
Datum
having
min(BrojPrimeraka) = ( select
max(najmanjaDnevnaProdaja)
from
(select
Datum, min(BrojPrimeraka) as najmanjaDnevnaProdaja
from
DNEVNA_PRODAJA
group by
Datum)as unutrasnja))

c)

create view ALBUMI_NA_POPUSTU (NazivProdukcijskeKuce, NazivPravca, UkBrProdPrimerakaBezPopusta, UkBrojProdPrimSaPopustom, UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIzn
select
PRODUKCIJSKA_KUCA.Naziv,
NazivPravca,
sum(case when Datum<DatumOdobravanjaPopusta then BrojPrimeraka else 0 end),

sum(case when Datum>=DatumOdobravanjaPopusta then BrojPrimeraka else 0 end),


sum(case when Datum<DatumOdobravanjaPopusta then BrojPrimeraka*Cena else BrojPrimeraka*Cena*(1-SajamskiPopust) end),
sum(case when Datum<DatumOdobravanjaPopusta then 0 else BrojPrimeraka*Cena*SajamskiPopust end),
sum(SajamskiPopust)/count(SajamskiPopust)
from
PRODUKCIJSKA_KUCA join ALBUM using(SifProdukcije) JOIN MUZICKI_Pravac using(SifPravca) join DNEVNA_PRODAJA using(SifAlbuma)
group by
PRODUKCIJSKA_KUCA.Naziv,NazivPravca

8. zadatak

Maj 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu. Za
kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli da
probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora)

funkcionalne zavisnosti:
ifraProjekta, JMBG --> PeriodAngaovanja, ifraSektora, NazivSektora, NazivProjekta, ImePrezime
ifraProjekta --> NazivProjekta
JMBG --> ImePrezime, ifraSektora, NazivSektora
ifraSektora --> NazivSektora
NazivSektora --> ifraSektora

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku vrednost R.A
postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta:
determinanta je bilo koji prost ili sloen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.
Boyce-Codd ova normalna forma:
Relacija R je u Boyce-Codd ovoj normalnoj formi ako su sve determinante ujedno i kandidati za klju relacije.
determinante:
ifraProjekta --> NazivProjekta(D)
ifraSektora --> NazivSektora(D)
NazivSektora --> ifraSektora(D)
JMBG --> ImePrezime, ifraSektora, NazivSektora(D)
JMBG, ifraProjekta --> PeriodAngaovanja(D)(KK)
oigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlae projekcije sa onim determinantama koje nisu
kandidati za klju, relacija se svodi na BCNF.
Projekat(ifraProjekta, NazivProjekta) jeste BCNF
ProjektniTim2(ifraProjekta, JMBG, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora) nije BCNF (4D, 1KK)
dalje se dekomponuje relacija ProjektniTim2
Radnik(JMBG, ImePrezime, ifraSektora, NazivSektora) nije BCNF (3D, 1KK)
ProjektniTim3(ifraProjekta, JMBG, PeriodAngaovanja) jeste BCNF
dalje se dekomponuje relacija Radnik
Radnik2(JMBG, ImePrezime, ifraSektora) jeste BCNF
Sektor(ifraSektora, NazivSektora) jeste BCNF
konano:
Sektor(ifraSektora, NazivSektora)
Radnik(JMBG, ImePrezime, ifraSektora)
Projekat(ifraProjekta, NazivProjekta)

ProjektniTim(ifraProjekta, JMBG, PeriodAngaovanja)

2. zadatak
a)
A (A1#, A2)
B (B1#, B2, A1#)
AB2 (A1#, B1#)
C (A1#,C1#, C2)
D (A1#, D1)
E (A1#, E1)
F (A1#, F1)
G (A1#, G1)
CG1 (A1#, A1#, G1)
H (A1#,A1#, H1)

b)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship B AB1 inverse B :: BA1;
relationship set<Bgtt; AB2 inverse B :: BA2;
};
class C extends A{
attribute string C1#;
attribute string C2;
relationship set<G> CG1 inverse G :: GC1;
};
class D extends A{
attribute string D1;
relationship set<Ggtt; DG inverse G :: GD;
};
class G (key G1) {
attribute string G1;
relationship D GD inverse D :: DG;
relationship set<Cgtt; GC1 inverse C :: CG1;
};
class E extends C {
attribute string E1;
relationship H EH inverse H :: HE;
};

3. zadatak
pravila integriteta za domene
svodi se na definisanje semantikog domena
CREATE DOMAIN Kol INTEGER
(Kol > 5000 AND Kol < 50000 AND MOD(Kol,50)=0);

pravila integriteta za atribute


mogu se definisati preko sledee etvorke <naziv atributa, domen, ogranienje, akcija>
ATRIBUT
OCENA

DOMEN

OGRANIENJE

INTEGER

OCENA > 5 AND OCENA <= 10

pravila integriteta za relacije

mogue je vezati vrednost jednog za vrednost drugog atributa u relaciji


CREATE INTEGRITY RULE Starost_smer
FORALL Student (IF Studen.Smera = 01 THEN Student.Starost < 28)

pravila integriteta za bazu


mogue je skazati bilo kakvo sloeno ogranienje, pa i ono koje povezuje atribute iz razliitih relacija
CREATE INTEGRITY RULE Ocene_smer
FORALL Student (IF Studen.Smera = 01 THEN
EXISTS Prijava (Prijava.Ocena > 7 AND Student.BrInd + Prijava.BrInd AND Prijava.ifPred = Predmet.ifPred AND Predmet.NazivPredmeta = "Matematika"));

4. zadatak
Spoljno spajanje se koristi kako bi se u rezultat spajanja ukljuili i oni redovi koji ne zadovoljavaju uslov spajanja.
Za ilustraciju emo koristiti sledee tabele:

Odeljenje
ifraOdeljenja

NazivOdeljenja

Uprava

Raunski centar

Proizvodnja

Radnik
ifraRadnika

ImePrezime

ifraOdeljenja

1000

Pera Peri

1001

Marko Markovi

1002

ika iki

1003

Laza Lazi

1004

Petar Petrovi

Levo spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa leve strane JOIN klauzule tako to se praznim redom proiruje tabela sa desne
strane
Odeljenje LEFT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

Uprava

1000

Pera Peri

ImePrezime

ifraOdeljenja
1

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja

Desno spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa desne strane JOIN klauzule tako to se praznim redom proiruje tabela sa leve
strane
Odelenje RIGHT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

ImePrezime

ifraOdeljenja

Uprava

1000

Pera Peri

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

1004

Petar Petrovi

Centralno spoljno spajanje


omoguuje ukljuivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajua strana je popunjena
praznim poljima
Odelenje FULL OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

Uprava

1000

ImePrezime
Pera Peri

ifraOdeljenja
1

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja
1004

Petar Petrovi

5. zadatak
a)
Graf prethoenja tranaskcija se sastoji od vorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethoenje transakcija. Kae se da
Transakcija Ti prethodi transakciji Tj u izvrenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:
1. Oi prethodi Oj u S
2. I Oi i Oj se odnose na isti element baze podataka
3. Barem jedna od operacija Oi i Oj je upisivanje
Ako postoji ciklus u grafu tada izvrenje nije mogue uiniti serijabilnim (nije konflikt-serijabilno)

b)
S1
T2 prethodi T3 (operacije 3 i 6) T2 prethodi T1 (operacije 2 i 5) T1 prethodi T3 (operacije 5 i 8)
graf prethoenja:

Poto na grafu nema ciklusa izvrenje jeste konflikt serijabilno!


S2
T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, ve ovde je jasno da izvrenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)
T1 prethodi T3 (operacije 4 i 7)
graf prethoenja:

Poto na grafu ima ciklusa izvrenje nije konflikt serijabilno!

6. zadatak
a)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Model">
<xs:complexType>
<xs:sequence>
<xs:element name="Predmet" type="PredmetType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="jedinstveniBrojPredmeta">
<xs:selector xpath=".//Predmet"/>
<xs:field xpath="@BrojPredmeta"/>
</xs:unique>
</xs:element>
<xs:complexType name="PredmetType">
<xs:sequence>
<xs:element name="Akt" type="AktType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="BrojPredmeta" type="xs:int" use="required"/>
<xs:attribute name="Opis" type="xs:string"/>
</xs:complexType>
<xs:complexType name="AktType">
<xs:attribute name="RBAkta" type="xs:ID" use="required"/>
<xs:attribute name="DatumPodnosenja" type="xs:date"/>
<xs:attribute name="KratakOpis" type="xs:string"/>
</xs:complexType>
</xs:schema>

b)

<?xml version="1.0" encoding="utf-8"?>


<Model
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/maj2008/podA.xsd">
<Predmet BrojPredmeta="1" Opis="neki opis">
<Akt RBAkta="A11" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
<Akt RBAkta="A12" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
</Predmet>
<Predmet BrojPredmeta="2" Opis="neki opis">
<Akt RBAkta="A21" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
<Akt RBAkta="A22" DatumPodnosenja="2008-01-01" KratakOpis="neki kratak opis"/>
</Predmet>
</Model>

c)
<xs:unique name="jedinstveniBrojPredmeta">
<xs:selector xpath=".//Predmet"/>
<xs:field xpath="@BrojPredmeta"/>
</xs:unique>

7. zadatak
a)
select
Naslov, Naziv, Tiraz, Cena
from
ALBUM join PRODUKCIJSKA_KUCA using(SifProdukcije)
where
Tiraz > 50000 or (Tiraz < 50000 and SajamskiPopust > 0.10)

b)
select
Naslov
from
ALBUM join DNEVNA_PRODAJA using(SifAlbuma)
where
(Datum, BrojPrimeraka)
in
(select
Datum, min(BrojPrimeraka)
from
DNEVNA_PRODAJA
group by
Datum
having
min(BrojPrimeraka) = ( select
max(najmanjaDnevnaProdaja)
from
(select
Datum, min(BrojPrimeraka) as najmanjaDnevnaProdaja
from
DNEVNA_PRODAJA
group by
Datum)as unutrasnja))

c)

create view ALBUMI_NA_POPUSTU (NazivProdukcijskeKuce, NazivPravca, UkBrProdPrimerakaBezPopusta, UkBrojProdPrimSaPopustom, UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIzn
select
PRODUKCIJSKA_KUCA.Naziv,
NazivPravca,
sum(case when Datum<DatumOdobravanjaPopusta then BrojPrimeraka else 0 end),
sum(case when Datum>=DatumOdobravanjaPopusta then BrojPrimeraka else 0 end),
sum(case when Datum<DatumOdobravanjaPopusta then BrojPrimeraka*Cena else BrojPrimeraka*Cena*(1-SajamskiPopust) end),
sum(case when Datum<DatumOdobravanjaPopusta then 0 else BrojPrimeraka*Cena*SajamskiPopust end),
sum(SajamskiPopust)/count(SajamskiPopust)
from
PRODUKCIJSKA_KUCA join ALBUM using(SifProdukcije) JOIN MUZICKI_Pravac using(SifPravca) join DNEVNA_PRODAJA using(SifAlbuma)
group by
PRODUKCIJSKA_KUCA.Naziv,NazivPravca

8. zadatak

Jun 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu. Za
kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli da
probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora)

funkcionalne zavisnosti:
ifraProjekta, JMBG --> PeriodAngaovanja, ifraSektora, NazivSektora, NazivProjekta, ImePrezime
ifraProjekta --> NazivProjekta
JMBG --> ImePrezime, ifraSektora, NazivSektora
ifraSektora --> NazivSektora
NazivSektora --> ifraSektora

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku vrednost R.A
postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta:
determinanta je bilo koji prost ili sloen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.
Boyce-Codd ova normalna forma:
Relacija R je u Boyce-Codd ovoj normalnoj formi ako su sve determinante ujedno i kandidati za klju relacije.
determinante:
ifraProjekta --> NazivProjekta(D)
ifraSektora --> NazivSektora(D)
NazivSektora --> ifraSektora(D)
JMBG --> ImePrezime, ifraSektora, NazivSektora(D)
JMBG, ifraProjekta --> PeriodAngaovanja(D)(KK)
oigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlae projekcije sa onim determinantama koje nisu
kandidati za klju, relacija se svodi na BCNF.
Projekat(ifraProjekta, NazivProjekta) jeste BCNF
ProjektniTim2(ifraProjekta, JMBG, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora) nije BCNF (4D, 1KK)
dalje se dekomponuje relacija ProjektniTim2
Radnik(JMBG, ImePrezime, ifraSektora, NazivSektora) nije BCNF (3D, 1KK)
ProjektniTim3(ifraProjekta, JMBG, PeriodAngaovanja) jeste BCNF
dalje se dekomponuje relacija Radnik
Radnik2(JMBG, ImePrezime, ifraSektora) jeste BCNF
Sektor(ifraSektora, NazivSektora) jeste BCNF
konano:
Sektor(ifraSektora, NazivSektora)
Radnik(JMBG, ImePrezime, ifraSektora)
Projekat(ifraProjekta, NazivProjekta)

ProjektniTim(ifraProjekta, JMBG, PeriodAngaovanja)

2. zadatak
A (A1#, A2, B1#)
B (B1#, B2, A1#)
G (B1#, G1)
D (A1#,D1)
E (E1#, E2)
H (B1#, A1#, E1#, H1)
C (E1#, C1)
F (E1#, F1)
FF (E1#, E1#)

3. zadatak
Jednostavnost korienja:
poglede definiu administratori baze i stavljaju ih na uvid korisnicima
Sigurnost podataka:
pogled predstavlja moan mehanizam kontrole pristupa podacima
Performanse:
pogled se uva u kompajliranom obliku
Nezavisnost podataka:
poto korisnik radi sa pogledom, promene u bazi ne zahtevaju promenu korisnikog programa vec samo promenu definicije pogleda

4. zadatak
a)
interface Istrazivac {
relationship Projekat ucestvuje inverse Projekat :: ima_istrazivace;
};
class Osoba (extent Osobe key ID){
attrinute short ID;
attribute string Naziv;
relationship Projekat zahteva inverse Projekat :: iniciran_od_osobe;
};
class Projekat (extent Projekti key ID){
attribute short ID;
attribute string Naziv;
relationship setima_istrazivace inverse Istrazivac :: ucestvuje;
relationship Osoba iniciran_od_osobe inverse Osoba :: zahteva;
};
class Profesor extends Osoba : Istrazivac (extent Profesori) {
relationship Projekat ucestvuje inverse Projjekat :: ima_istrazivace;
};

b)
select
x
from
x in Projekti
where
x.iniciran_od_osobe in x.ima_istrazivace

5. zadatak
Kod vremenskog obeleavanja transakcija, transakcije na poetku izvravanja dobiju redni broj, tako da se kasnije zna koja je transakcija starija.
Konflikt nastaje kada transakcija hoe da ita neki slog koji je mladja transakcija vec aurirala, ili hoe da aurira slog koji je mladja transakcija vec
aurirala ili videla. Konflikti se razreavaju ponovnim startovanjem starije transakcije.
postoje dva identifikatora koji se zadaju svakom objektu baze podataka:
RMAX - najvea identifikacija transakcije koja je proitala objekat
UMAX - najvea identifikacija transakcije koja je aurirala objekat

itanje:
if(t>=UMAX){
operacija se prihvata;
RMAX = max(t, RMAX);
}else{
konflikt;
restart T;
}

auriranje:
if(t>=RMAX && t>=UMAX){
operacija se prihvata;
UMAX = t;
}else{
konflikt;
restart T;
}

6. zadatak
a)
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd">
<xsd:element name="Model">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Kompanija" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="PIB" type="xsd:ID"/>
<xsd:attribute name="Naziv" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Letilica">
<xsd:attribute name="LID" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Avion" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="Letilica">
<xsd:attribute name="BrojSedista" type="xsd:integer"/>
<xsd:attribute name="BrojMotora" type="xsd:string"/>
<xsd:attribute name="Proizvodjac" type="xsd:IDREF" use="required"/>
<xsd:attribute name="Vlasnik" type="xsd:IDREF" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

b)
<?xml version="1.0" encoding="utf-8"?>
<Model
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/jun2008/podA.xsd">
<Kompanija PIB="K1" Naziv="Prince Aviation"/>
<Kompanija PIB="K2" Naziv="Airbus"/>
<Avion LID="A1" BrojSedista="50" BrojMotora="M1111" Proizvodjac="K2" Vlasnik="K2"/>
<Avion LID="A2" BrojSedista="50" BrojMotora="M1112" Proizvodjac="K2" Vlasnik="K1"/>

</Model>

c)
XPath
//Avion[@Proizvodjac=@Vlasnik]

XQuery
for
$x in doc("podB.xml")/Model/Avion
where
$x/@Proizvodjac = $x/@Vlasnik
return
$x

7. zadatak
a)
select
SIFIST, IMEIST, DATRODJ, DATZAP, PLATA, SIFINST, SRUKOV
from
ISTRAZIVAC join UCESCE using(SIFIST)
where
extract(year from current_date)-extract(year from DATZAP) = 5
group by
SIFIST, IMEIST, DATRODJ, DATZAP, PLATA, SIFINST, SRUKOV
having
count(SIFIST) > 60

b)

select
GRAD,
sum(case when (extract(year from current_date)-extract(year from DATRODJ)) < 22 then 1 else 0 end) as "mladji od 22 godine",
sum(case when (extract(year from current_date)-extract(year from DATRODJ))>20 and (extract(year from current_date)-extract(year from DATRODJ))<45 then 1 else 0 end) as "izmedju 20 i 45 go
sum(case when (extract(year from current_date)-extract(year from DATRODJ))>50 then 1 else 0 end) as "stariji od 50 godina"
from
ISTRAZIVAC join INSTITUT using(SIFINST)
group by
GRAD

c)
/*nije uzeto u obzir ogranicenje tekuce godine jer je besmisleno*/
create view RUKOVODILAC (NazivInstituta, ImeIstrazivaca, SifraIstrazivaca, DatumZaposlenja) as
select
NAZIV, IMEIST, SIFIST, DATZAP
from
ISTRAZIVAC join UCESCE using(SIFIST) join INSTITUT using(SIFINST)
group by
NAZIV, IMEIST, SIFIST, DATZAP
having
count(SIFIST) > 10
and
SIFIST in
(select distinct
SRUKOV
from
ISTRAZIVAC)

8. zadatak

Septembar 2008, reeni rok iz predmeta "Baze


podataka"
fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003
dijagram (.vsd) ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na
odgovarajuu emu. Za kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX
http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti
su provereni, prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL
dump" da bi mogli da probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
Evrovizija (Izvodja, ifraDraveOcenjivaa, BrojPoena, NazivPesme, NazivDraveOcenjivaa, ifraJezika, NazivJezika)

funkcionalne zavisnosti:
Izvodja, ifraDraveOcenjivaa --> BrojPoena, NazivPesme, NazivDraveOcenjivaa, ifraJezika, NazivJezika
ifraDraveOcenjivaa --> NazivDraveOcenjivaa
Izvodja --> NazivPesme, ifraJezika, NazivJezika
ifraJezika --> NazivJezika

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku
vrednost R.A postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa
atributa R.A
determinanta:
determinanta je bilo koji prost ili slozen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.

determinante:
Izvodja, ifraDraveOcenjivaa --> BrojPoena(D)(KK)
Izvodja --> NazivPesme, ifraJezika, NazivJezika(D)
ifraDraveOcenjivaa --> NazivDraveOcenjivaa(D)
ifraJezika --> NazivJezika(D)
relacija se svodi na BCNF dekompozicijom kojom se iz relacije izvlae projekcije sa onim determinantama koje nisu kandidati za klju
Pesma (Izvodja, NazivPesme, ifraJezika)
Ocena (Izvodja, ifraDraveOcenjivaa, BrojPoena)
DravaOcenjiva (ifraDraveOcenjivaa, NazivDraveOcenjivaa)
Jezik (ifraJezika, NazivJezika)
u ovim relacijama sve determinante su kandidati za klju tako da su relacije u Boyce-Codd normalnoj formi.

2. zadatak
a)
A (A1#, A2)
B (B1#, B2, A1#)

AB1 (B1#, A1#)


C (A1#,C1#, C2)
D (A1#, D1)
E (A1#, E1)
F (A1#, F1)
G (A1#, G1, A1#, G1)
H (A1#, A1#, A1#, G1, H1)

b)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship set<Bgtt; AB1 inverse B :: BA1;
relationship set<Bgtt; AB2 inverse B :: BA2;
};
class B (extent Bs key B1#){
attribute string B1#;
attribute string B2;
relationship A BA1 inverse A :: AB1;
relationship A BA2 inverse A :: AB2;
};
class D exdends A{
attribute string D1;
attribute set<Ggtt; Gs;
};
class G {
attribute string G1;
relationship G G1G2 inverse G :: G2G1;
relationship set<Ggtt; G2G1 inverse G :: G1G2;
relationship set<Hgtt; GH inverse H :: HG;
};
class H {
attribute string H1;
relationship C HC inverse C :: CH;
relationship F HF inverse F :: FH;
relationship G HG inverse G :: GH;
};

3. zadatak
QBE je upitni jezik koji predstavlja implementaciju relacionog rauna domena, preko specifine "dvodimenzione" sintakse, koja je vrlo
bliska korisniku jer se preko nje direktno, u skeletu tabele predstavljene na ekranu, zadaje primer odgovora koji korisnik eli.
naziv relacije

atributi

operacije nad celim n-torakama

oznake promenjivih, konstanti, uslova i operacija nad atributima

operacije
P (print)
D (delete)
U (update)
I (insert)
uslovi koje treba da ispune atributi navode se u kolonama tog atrubuta. Ako su uslovi u istom redu, vezani su logikim operatorom i
(AND) a ako su u razliitim redovima vezani su logikim operatorm ili (OR).
Promenjiva u QBE je niz karkatera koji poinje sa _. Slui za spajanje tabela.

4. zadatak
U ODMGu postoje dve vrste nasleivanja: nasleivanje ponaanja i nasleivanje stanja.

nasleivanje ponaanja
Za nasleivanje ponaanja se koristi veza nadtip-podtip (koja se ponekad naziva veza generalizacija-specijalizacija ili ISA veza)
na primer:
interface Osoba{
...
};
class Radnik : Osoba{
...
};

osnovna pravila:
1.
2.
3.
4.

interfejs moe naslediti drugi interfejs (ili vie njih)


klasa moe naslediti interfejs (ili vie njih)
interfejs ne moe naslediti klasu
klasa ne moe naslediti klasu

nasleivanje stanja
Za nasleivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podreena klasa nasleuje celokupno stanje i ponaanje
klase koju proiruje. Klasa moe naslediti samo jednu klasu extends nasleivanjem.
na primer:
class Osoba {
...
};
class Radnik extends Osoba{
...
};

5. zadatak
Transakcija je osnovna logika jedinica posla u obradi podataka (LUW - Logical Unit of Work). Transakcija mora da poseduje tzv "ACID"
osobine.
A (Atomicity - Atomnost)
transakcija je skup aktivnosti koje se izvravaju nad bazom po principu "sve ili nita". Ili e se sve aktivnosti izvriti ili ni jedna.
C (Consistency - Konzistentnost)
transakcija mora da prevede bazu iz jednog konzistentnog stanja u drugo konzistentno stanje.
I (Isolation - Izolacija)
transakcija ne bi trebalo da dozvoljava na uvid medjurezultate svog izvrenja drugim transakcijama
D (Durability - Trajnost)
promene koje izvri jedna transakcija moraju biti stalne

6. zadatak
a)
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd">
<xsd:element name="portfolio">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="stock">

<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="symbol" type="xsd:string"/>
<xsd:element name="price">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:double"gtt;
<xsd:attribute name="dt" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="share">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:integer">
<xsd:attribute name="dt" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="excange" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="nyse"/>
<xsd:enumeration value="nasdaq"/>
<xsd:enumeration value="amx"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

b)
portfolio (potfolioID)
stock (portfolioID, stockID, exchange, name, symbol, price, share)

c)
for
$x in doc("portfolio.xml")/portfolio
where
$x/stock/name["zysmergy inc"]
return
$x

7. zadatak
a)
select
LokacijaID
from
Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID)
where
TipLokacije = 'Administrativni objekti' and extract(year from DatumPopisa) = '2008'
group by
LokacijaID
having
sum(PopisanaKol) = 0

b)
select
LokacijaID, Lokacija.Naziv, AmortizacionaGrupa, sum(NabavnaVrednost) as UkupnaNabavnaVrednost, sum(OtpisanaVrednost) as UkupnaOtpisanaVrednost
from
Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) join OsnovnoSredstvo using(InventarniBroj)
group by
LokacijaID, Lokacija.Naziv, AmortizacionaGrupa
order by
LokacijaID asc

c)
select
PredsednikKomisije, sum(NabavnaVrednost) as SumaNabavnihVrednosti, extract(year from DatumPopisa) as GodinaPopisa
from

PopisnaKomisija join PopisnaLista using(KomisijaID) join StavkaPopisneListe using(ListaID) join Lokacija using(LokacijaID) join OsnovnoSredstvo using(InventarniBroj)
group by
LokacijaID, GodinaPopisa,PredsednikKomisije
having
(SumaNabavnihVrednosti, GodinaPopisa)
in
(select
max(unutrasnja.suma), unutrasnja.GodinaPopisa
from
(select
sum(NabavnaVrednost) as suma, LokacijaID, extract(year from DatumPopisa) as GodinaPopisa
from
Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) join OsnovnoSredstvo using(InventarniBroj)
where
extract(year from DatumPopisa) in (extract(year from current_date),extract(year from current_date)-1,extract(year from current_date)-2)
group by
LokacijaID, extract(year from DatumPopisa)) as unutrasnja
group by
unutrasnja.GodinaPopisa)

8. zadatak

Oktobar 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu.
Za kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su
provereni, prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi
mogli da probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatak
relacija:
UesnikTrke (ifraTrke, OlimpijskiBroj, NazivTrke, RBStaze, ImePrezimeTrkaa, ifraDrave, NazivDrave)

funkcionalne zavisnosti:
ifraTrke, OlimpijskiBroj --> RBStaze, ifraDrave, NazivDrave, NazivTrke, ImePrezimeTrkaa
ifraTrke --> NazivTrke
OlimpijskiBroj --> ImePrezimeTrkaa, ifraDrave, NazivDrave
ifraDrave --> NazivDrave
Relacija je u Boyce-Codd normalnoj formi ako su sve determinante ujedno i kandidati za klju.
Determinanta je atribut ili skup atributa od kojih neki drugi atribut ili skup atributa potpuno funkcionalno zavisi.

determinante:
ifraTrke, OlimpijskiBroj --> RBStaze(D)(KK)
ifraTrke --> NazivTrke(D)
OlimpijskiBroj --> ImePrezimeTrkaa, ifraDrave, NazivDrave(D)
ifraDrave --> NazivDrave(D)
Oigledno relacija nije u Boyce-Codd normalnoj formi, pa je potrebno relaciju dekomponovati, tako da se dobiju relacije u kojima su kandidati za
klju one relacije koje su determinante u polaznoj relaciji:
Trka(OlimpijskiBroj,ifraDrave)
Drava(ifraDrave, NazivDrave)
Trka(ifraTrke, NazivTrke)
MestoUTrci(ifraTrke, OlimpijskiBroj, RBStaze)

2. zadatak
a)
A (A1#, A2, B)
B (B1#, B2)
AB1 (B1#, A1#)
D (A1#, D1)
G (G1#, G2)
H (B1#, A1#, G1#, H1)
C (B1#, C1)
E (G1#, E1)
F (G1#, F1)
FF (G1#, G1#)

b)
class B (extent Bs key B1#){
attribute string B1#;
attribute string B2;
relationship A BA1 inverse A :: AB1;

relationship set<A> BA2 inverse A :: AB2;


attribute set<C> Cs;
};
class C {
attribute string C1;
};
class D extends A{
attribute string D1;
relationship set<H> DH inverse H :: HD;
};
class G (extent Gs key G1#){
attribute string G1#;
attribute string G2;
relationship set<H> Gh inverse H :: HG;
};
class H {
attribute string H1;
relationship B HB inverse B :: BH;
relationship D HD inverse D :: DH;
relationship G HG inverse G :: GH;
};

3. zadatak
Spoljno spajanje se koristi kako bi se u rezultat spajanja ukljuili i oni redovi koji ne zadovoljavaju uslov spajanja.
Za ilustraciju emo koristiti sledee tabele:

Odeljenje
ifraOdeljenja

NazivOdeljenja

Uprava

Raunski centar

Proizvodnja

Radnik
ifraRadnika

ImePrezime

ifraOdeljenja

1000

Pera Peri

1001

Marko Markovi

1002

ika iki

1003

Laza Lazi

1004

Petar Petrovi

Levo spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa leve strane JOIN klauzule tako to se praznim redom proiruje tabela sa desne
strane
Odeljenje LEFT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

ImePrezime

ifraOdeljenja

Uprava

1000

Pera Peri

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja

Desno spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa desne strane JOIN klauzule tako to se praznim redom proiruje tabela sa leve
strane
Odelenje RIGHT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

Uprava

1000

Pera Peri

ImePrezime

ifraOdeljenja
1

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

1004

Petar Petrovi

Centralno spoljno spajanje


omoguuje ukljuivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajua strana je popunjena
praznim poljima
Odelenje FULL OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

ImePrezime

ifraOdeljenja

Uprava

1000

Pera Peri

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja
1004

Petar Petrovi

4. zadatak
Sloeni konstruisani tipovi u objektno-relacionom bp su tip vrsta i tip kolekcija.

Tip vrsta
je niz polja koja ine parovi (<naziv podatka>,<tip podatka>). U SQL:1999 je moguce definisati promenljive i parametre koji su tipa vrsta,
odnosno definisati kolonu u tabeli koja e imati kompleksnu strukturu.
tip vrsta se specificira sledeom sintaksom:
ROW (ulica CHAR(30), broj INTEGER, grad CHAR(20))

na primer:
CREATE TABLE student (brind char(6),
prezime CHAR(15),
adresa ROW (ulica CHAR(30),
broj INTEGER,
grad CHAR(20)));

Tip kolekcija
predstavlja grupu koja se sastoji od nula ili vie elemenata istog tipa. Tip kolekcije je odreen vrstom kolekcije i tipom elementa kolekcije.
SQL:1999 definie samo jednu vrstu kolekcije - niz, ostale u nekoj sledecoj generaciji.
formalna definicija niza:
<tip elementa niza> ARRAY [<maksimalna kardinalnost niza>]

na primer:
CREATE TABLE sekcija (naziv CHAR(15),
clan CHAR(20) ARRAY[20]);

5. zadatak
Kod vremenskog obeleavanja transakcija, transakcije na poetku izvravanja dobiju redni broj, tako da se kasnije zna koja je transakcija starija.
Konflikt nastaje kada transakcija hoe da ita neki slog koji je mladja transakcija vec aurirala, ili hoe da aurira slog koji je mladja transakcija vec
aurirala ili videla. Konflikti se razreavaju ponovnim startovanjem starije transakcije.
postoje dva identifikatora koji se zadaju svakom objektu baze podataka:
RMAX - najvea identifikacija transakcije koja je proitala objekat
UMAX - najvea identifikacija transakcije koja je aurirala objekat

itanje:
if(t>=UMAX){
operacija se prihvata;
RMAX = max(t, RMAX);
}else{
konflikt;

restart T;
}

auriranje:
if(t>=RMAX && t>=UMAX){
operacija se prihvata;
UMAX = t;
}else{
konflikt;
restart T;
}

6. zadatak
a)
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd"
targetNamespace="www.nemanjakovacevic.com/bazepodataka/okt2008"
xmlns="www.nemanjakovacevic.com/bazepodataka/okt2008">
<xsd:element name="model">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Dobavljac" type="DobavljacTip" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Narudzbenica" type="NarudzbenicaTip" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="DobavljacTip">
<xsd:attribute name="SifraDob" type="xsd:ID" use="required"/>
<xsd:attribute name="NazivDob" type="xsd:string" />
<xsd:attribute name="AdresaDob" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="NarudzbenicaTip">
<xsd:sequence>
<xsd:element name="StavkaNar" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="RedniBroj" type="xsd:integer" use="required"/>
<xsd:attribute name="Proizvod" type="xsd:string" />
<xsd:attribute name="Kolicina" type="xsd:integer"/>
<xsd:attribute name="Vrednost" type="xsd:double"/>
<xsd:attribute name="Valuta" type="xsd:string" default="din"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="BrojNarDob" type="xsd:ID" use="required"/>
<xsd:attribute name="SifraDob" type="xsd:IDREF" use="required"/>
</xsd:complexType>
</xsd:schema>

b)
<?xml version="1.0" encoding="utf-8"?>
<model
xmlns="www.nemanjakovacevic.com/bazepodataka/okt2008"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="www.nemanjakovacevic.com/bazepodataka/okt2008 file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/okt2008/podA.xsd">
<Dobavljac SifraDob="D1" NazivDob="Logitech"/>
<Dobavljac SifraDob="D2" NazivDob="Canon"/>
<Dobavljac SifraDob="D3" NazivDob="XYZ"/>
<Narudzbenica BrojNarDob="N11" SifraDob="D1">
<StavkaNar RedniBroj="1" Proizvod="Logitech MX Revolution" Kolicina="1" Vrednost="7800"/>
<StavkaNar RedniBroj="2" Proizvod="Logitech Deluxe Keyboard" Kolicina="1" Vrednost="800"/>
<StavkaNar RedniBroj="3" Proizvod="Logitech X 230" Kolicina="1" Vrednost="3500"/>
<StavkaNar RedniBroj="4" Proizvod="A" Kolicina="1" Vrednost="3500"/>
<StavkaNar RedniBroj="5" Proizvod="B" Kolicina="1" Vrednost="3500"/>
</Narudzbenica>
<Narudzbenica BrojNarDob="N21" SifraDob="D2">
<StavkaNar RedniBroj="1" Proizvod="Canon MP 180" Kolicina="1" Vrednost="8800"/>
<StavkaNar RedniBroj="2" Proizvod="Canon MX 300" Kolicina="1" Vrednost="10000"/>
</Narudzbenica>
<Narudzbenica BrojNarDob="N31" SifraDob="D3">
<StavkaNar RedniBroj="1" Proizvod="A" Kolicina="1" Vrednost="3500"/>
<StavkaNar RedniBroj="2" Proizvod="B" Kolicina="1" Vrednost="3500"/>
</Narudzbenica>

</model>

c)
for
$x in doc("podB.xml")/model/Narudzbenica
where
$x/@SifraDob=/model/Dobavljac[@NazivDob="XYZ"]/@SifraDob
and
$x/StavkaNar[@Proizvod="A"]
and
$x/StavkaNar[@Proizvod="B"]
return
$x

7. zadatak
a)
select
LokacijaID
from
Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID)
where
extract(year from DatumPopisa) = 2007 and TipLokacije = 'Proizvodni pogon'
group by
LokacijaID
having
sum(case when PopisanaKol = 0 then 1 else 0 end) > 0

b)
select
LokacijaID, Lokacija.Naziv, AmortizacionaGrupa, min(NabavnaVrednost)
from
Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) join OsnovnoSredstvo using(InventarniBroj)
group by
LokacijaID, Naziv, AmortizacionaGrupa
order by
LokacijaID desc

c)
select distinct
Naziv
from
OsnovnoSredstvo join StavkaPopisneListe using(InventarniBroj) join PopisnaLista using(ListaID)
where
extract(year from DatumPopisa) = 2008 and AmortizacionaGrupa = 'Kompjuterska oprema'
and Naziv not in
(select distinct
Naziv
from
OsnovnoSredstvo join StavkaPopisneListe using(InventarniBroj) join PopisnaLista using(ListaID)
where
extract(year from DatumPopisa) = 2007 and AmortizacionaGrupa = 'Kompjuterska oprema')

8. zadatak

Novembar 2008, reeni rok iz predmeta "Baze podataka"


fajlovi prikaeni uz rok.
U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQL dump baze (.sql), visio 2003 dijagram (.vsd)
ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuu emu. Za
kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korien je XML editor EditX http://www.editix.com/
SQL: baza je napravljena u MySQL-u pa prema tome SQL kod moe imati netipinu sintaksu ili funkcije razliite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji esto nisu ba lako shvatljivi. Najlake je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli da
probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQLyog www.webyog.com

1. zadatak
relacija:
ProjektniTim (ifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora)

funkcionalne zavisnosti:
ifraProjekta, JMBG --> PeriodAngaovanja, ifraSektora, NazivSektora, NazivProjekta, ImePrezime
ifraProjekta --> NazivProjekta
JMBG --> ImePrezime, ifraSektora, NazivSektora
ifraSektora --> NazivSektora
NazivSektora --> ifraSektora

definicije:
fukcionalna zavisnost:
u relaciji R atribut R.B (R.A i R.B mogu biti sloeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno odreuje R.B) ako za svaku vrednost R.A
postoji jedna i samo jedna vrednost R.B
potpuna funkcionalna zavisnost:
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta:
determinanta je bilo koji prost ili sloen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.
Boyce-Codd ova normalna forma:
Relacija R je u Boyce-Codd ovoj normalnoj formi ako su sve determinante ujedno i kandidati za klju relacije.
determinante:
ifraProjekta --> NazivProjekta(D)
ifraSektora --> NazivSektora(D)
NazivSektora --> ifraSektora(D)
JMBG --> ImePrezime, ifraSektora, NazivSektora(D)
JMBG, ifraProjekta --> PeriodAngaovanja(D)(KK)
oigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlae projekcije sa onim determinantama koje nisu
kandidati za klju, relacija se svodi na BCNF.
Projekat(ifraProjekta, NazivProjekta) jeste BCNF
ProjektniTim2(ifraProjekta, JMBG, ImePrezime, PeriodAngaovanja, ifraSektora, NazivSektora) nije BCNF (4D, 1KK)
dalje se dekomponuje relacija ProjektniTim2
Radnik(JMBG, ImePrezime, ifraSektora, NazivSektora) nije BCNF (3D, 1KK)
ProjektniTim3(ifraProjekta, JMBG, PeriodAngaovanja) jeste BCNF
dalje se dekomponuje relacija Radnik
Radnik2(JMBG, ImePrezime, ifraSektora) jeste BCNF
Sektor(ifraSektora, NazivSektora) jeste BCNF
konano:
Sektor(ifraSektora, NazivSektora)
Radnik(JMBG, ImePrezime, ifraSektora)
Projekat(ifraProjekta, NazivProjekta)

ProjektniTim(ifraProjekta, JMBG, PeriodAngaovanja)

2. zadatak
a)
A (A1#, A2, B1#)
B (B1#, B2, A1#)
G (B1#, G1)
D (A1#,D1)
E (E1#, E2)
H (B1#, A1#, E1#, H1)
C (E1#, C1)
F (E1#, F1)
FF (E1#, E1#)

b)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship set<B> AB1 inverse B :: BA1;
relationship B AB2 inverse B :: BA2;
};
class B (extent Bs key B1#){
attribute string B1#;
attribute string B2;
attribute set<G> Gs;
relationship A BA1 inverse A :: AB1;
relationship set<A> BA2 inverse A :: AB2;
relationship H BH inverse H :: HB;

};
class D extends A{
attribute string D1;
attribute set<H> DH inverse H :: HD;
};
class G {
attribute string G1;
};
class H {
attribute string H1;
relationship B HB inverse B :: BH;
relationship D HD inverse D :: DH;
relationship E HE inverse E :: EH;
};

3. zadatak
Spoljno spajanje se koristi kako bi se u rezultat spajanja ukljuili i oni redovi koji ne zadovoljavaju uslov spajanja.
Za ilustraciju emo koristiti sledee tabele:

Odeljenje
ifraOdeljenja

NazivOdeljenja

Uprava

Raunski centar

Proizvodnja

Radnik
ifraRadnika

ImePrezime

ifraOdeljenja

1000

Pera Peri

1001

Marko Markovi

1002

ika iki

1003

Laza Lazi

1004

Petar Petrovi

Levo spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa leve strane JOIN klauzule tako to se praznim redom proiruje tabela sa desne
strane
Odeljenje LEFT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

Uprava

1000

Pera Peri

ImePrezime

ifraOdeljenja
1

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja

Desno spoljno spajanje


omoguuje ukljuivanje u rezultujuu tabelu svih redova sa desne strane JOIN klauzule tako to se praznim redom proiruje tabela sa leve
strane
Odelenje RIGHT OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

Uprava

1000

Pera Peri

ImePrezime

ifraOdeljenja
1

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

1004

Petar Petrovi

Centralno spoljno spajanje


omoguuje ukljuivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajua strana je popunjena
praznim poljima
Odelenje FULL OUTER JOIN Radnik USING(ifraOdeljenja)

ifraOdeljenja

NazivOdeljenja

ifraRadnika

ImePrezime

ifraOdeljenja

Uprava

1000

Pera Peri

Uprava

1001

Marko Markovi

Raunski centar

1002

ika iki

Raunski centar

1003

Laza Lazi

Proizvodnja
1004

Petar Petrovi

4. zadatak
U ODMGu postoje dve vrste nasleivanja: nasleivanje ponaanja i nasleivanje stanja.

nasleivanje ponaanja
Za nasleivanje ponaanja se koristi veza nadtip-podtip (koja se ponekad naziva veza generalizacija-specijalizacija ili ISA veza)
na primer:
interface Osoba{
...
};
class Radnik : Osoba{
...
};

osnovna pravila:
1.
2.
3.
4.

interfejs moe naslediti drugi interfejs (ili vie njih)


klasa moe naslediti interfejs (ili vie njih)
interfejs ne moe naslediti klasu
klasa ne moe naslediti klasu

nasleivanje stanja
Za nasleivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podreena klasa nasleuje celokupno stanje i ponaanje klase koju

proiruje. Klasa moe naslediti samo jednu klasu extends nasleivanjem.


na primer:
class Osoba {
...
};
class Radnik extends Osoba{
...
};

5. zadatak
Event-Condition-Action
Semantika ECA pravila:
Svako pravilo se donosi na odreeni dogaaj, vri proveru uslova po nastanku dogaaja i izvrava definisanu akciju ako je uslov zadovoljen.
Izuzetno je mogue formirati pravilo koje se izvrava bezuslovno.
Generalno razlikujemo primitivne i sloene dogaaje.
Primitivni doga]aji su:
Auriranje podataka
Prikaz podataka
Vreme
Aplikativno definisan dogaaj
Sloeni dogaaji se formiraju kombinovanjem primitivnih i prethodno definisanih sloenih dogaaja. Kao operatori za kombinovanje se mogu koristiti
logiki operatori (AND, OR, NOT), sekvence dogaaja, vremenske kompozicije...
Obrada ECA pravila:
a) Trenutan

Prouzrokuje prekid izvravanja transakcije odmah po identfikovanju dogaaja za koji postoji definisano ECA-pravilo.
a) Odloen

Izrvavanje pravila se odlae do zavretka transakcije koja je proizvela dogaaj.


a) Razdvojen

Pravilo postaje sasvim nova transakcija koja se izvrava nezavisno od polazne.

6. zadatak
a)
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd">
<xsd:element name="Model">
<xsd:complexType>
<xsd:sequence>

<xsd:element name="Kompanija" maxOccurs="unbounded">


<xsd:complexType>
<xsd:attribute name="PIB" type="xsd:ID"/>
<xsd:attribute name="Naziv" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Letilica">
<xsd:attribute name="LID" type="xsd:ID"/>
</xsd:complexType>
<xsd:element name="Avion" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="Letilica">
<xsd:attribute name="BrojSedista" type="xsd:integer"/>
<xsd:attribute name="BrojMotora" type="xsd:string"/>
<xsd:attribute name="Proizvodjac" type="xsd:IDREF" use="required"/>
<xsd:attribute name="Vlasnik" type="xsd:IDREF" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

b)
<?xml version="1.0" encoding="utf-8"?>
<Model
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///D:/My%20FON/IV%20godina/I%20semestar/Baze%20podataka/BProkovi2008/jun2008/podA.xsd">
<Kompanija PIB="K1" Naziv="Prince Aviation"/>
<Kompanija PIB="K2" Naziv="Airbus"/>
<Avion LID="A1" BrojSedista="50" BrojMotora="M1111" Proizvodjac="K2" Vlasnik="K2"/>
<Avion LID="A2" BrojSedista="50" BrojMotora="M1112" Proizvodjac="K2" Vlasnik="K1"/>
</Model>

c)
XPath
//Avion[@Proizvodjac=@Vlasnik]

XQuery
for
$x in doc("podB.xml")/Model/Avion
where
$x/@Proizvodjac = $x/@Vlasnik
return
$x

7. zadatak
a)
select
SifraZap, Ime, Prezime, Mlb, NazivProf
from
ZAPOSLENI join OBRAZOVNI_PROFIL using(SifraProf)
where
StepenStrSpreme = 'V' and (((extract(year from current_date)-extract(year from DatRodj))=65 and Pol='M') or ((extract(year from current_date)-extract(year from DatRodj))=58 and Pol='Z'))

b)
select
SifraRM, NazivRM, NazivProf
from
RADNO_MESTO join OBRAZOVNI_PROFIL using(SifraProf)
where
SifraRM not in (select distinct
SifraRM
from
ANGAZOVANJE)

c)

create view STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2007, BR_ZAP_2008, TREND) as


select
SifraProf,
NazivProf,
sum(case when extract(year from datOd)=2007 then 1 else 0 end),
sum(case when extract(year from datOd)=2008 then 1 else 0 end),
case when sum(case when extract(year from datOd)=2007 then 1 else 0 end)>sum(case when extract(year from datOd)=2008 then 1 else 0 end) then 'PAD' when sum(case when extract(year fro

from
OBRAZOVNI_PROFIL join RADNO_MESTO using(SifraProf) join ANGAZOVANJE using(SifraRM)
group by
SifraProf, NazivProf

8. zadatak

Zadaci PMOV
1. Napraviti model objekti-veze za deo informacionog sistema Elektro-privrednog sistema. Potrebno je voditi evidenciju o
poslovnim jedinicama EPS-a sa sledeim osnovnim atributima: ifraPJ, Naziv, Adresa, MatiniBroj. Poslovna jedinica
moe biti: proizvoa struje ili elektrodistribucija ili rudnik. Proizvoa struje se moe klasifikovati na hidroelektrane,
termoelektrane i sisteme vetrenjaa. Proizvoa struje ima osnovno obeleje maksimalnu snagu, a pored toga potrebno je
beleiti i dnevnu proizvodnju u KW (kilovatima). Za hidrocentrale potrebno je pamtiti hidropotencijal, za system
vetrenjaa broj vetrenjaa, a za termoelektranu dnevnu isporuku uglja iz svakog rudnika. Za svaku elektrodistribuciju
treba voditi evidenciju o dnevnoj isporuci struje u KW (kilovatima) od strane proizvoaa struje. Za svaki rudnik
obezbediti evidentiranje dnevne proizvodnje uglja po vrstama uglja.
2. Nacrtati dijagram objekti-veze za deo kadrovske evidencije u vazduhoplovnoj kompaniji. Potrebno je voditi evidenciju
o zaposlenima sa sledeim zajednikim atributima: JMBG, ImePrezime, GodinaRoenja. Svaki zaposleni je ili Aviomehaniar ili Pilot ili Stjuardesa(Stjuard). Za svakog avio-mehaniara potrebno je znati datum dobijanja licence za
odreeni tip aviona (ifraTipaAviona, NazivTipaAviona). Jedan aviomehaniar moe imati licence za vie tipova aviona.
Osnovna svojstva pilota su: DatumPoslednjegSistematskogPregleda i OcenaZdravstvenogStanja. Svaki pilot je dodeljen
nekom konkretnom avionu (OznakaAviona, GodProizvodnje) i u toj posadi ima svoju ulogu (ifraUloge, NazivUloge). U
modelu obezbediti da jedan pilot moe biti dodeljen istom avionu vie puta bez obzira na ulogu. Voditi evidenciju i o
rasporedu stjuardesa (stjuarda) po avionima. Potrebno je omoguiti pamenje poznavanja stranih jezika za svaku
stjuardesu (stjuarda), moraju znati bar dva strana jezika.
3. Napraviti model objekti-veze za deo informacionog sistema biblioteke. Potrebno je voditi evidenciju o publikacijama sa
sledeim osnovnim atributima: PublikacijaID, Naziv, BrojPrimeraka. Publikacija moe biti: knjiga ili asopis ili dnevne
novine. Knjiga ima osnovna obeleja redni broj izdanja i godinu izdanja, a pored toga 3 potrebno je beleiti i sve autore.
Za asopis potrebno je pamtiti broj, mesec i kratak sadraj, za dnevne novine broj izdanja, datum izdanja i tira. I za
asopise i za dnevne novine potrebno je znati tampariju koja je tampala ta izdanja. I za knjigu i za asopis i za dnevne
novine treba voditi evidenciju o izdavau. Za svaku publikaciju obezbediti evidentiranje datuma zaduenja i datuma
razduenja od strane lana biblioteke.
4. Napraviti model objekti-veze za deo informacionog sistema Svetskog prvenstva u fudbalu. Potrebno je voditi
evidenciju o reprezentacijama uesnicama takmienja sa osnovnim atributima ifraDrave, NazivDrave, kao i o njenim
igraima sa sledeim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godite. Svaka reprezentacija je
rasporeena u jednu i samo jednu kvalifikacionu grupu. Omoguiti beleenje grada u kojem se igrala utakmica. Potrebno
je modelovati utakmice, gde se tano zna koja je reprezentacija u ulozi domaina a koja u ulozi gosta. Za svaku utakmicu
evidentirati broj postignutih golova domae i gostujue reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi
takmienja se odigrala (kvalifikacije u grupi, etvrtfinale, polufinale, finale). Za svakog igraa je potrebno voditi statistiku
uinka na svakoj odigranoj utakmici, gde uinak podrazumeva evidenciju broja golova, broja udaraca u okvir gola, kao i
da li je dobio uti ili crveni karton.
5. Napraviti model objekti-veze za deo informacionog sistema SPA centra. SPA centar nudi razne vrste usluga. Postoje
pojedinane usluge (bazen, sauna, akuzi, fitnes, masaa, akupunktura ...) i paketi usluga. Paket usluga objedinjuje ve
postojee pojedinane usluge. Potrebno je voditi evidenciju korisnika usluga Centra (ID, ImePrezime, Adresa,
KontaktTelefon). Takoe, potrebno je voditi evidenciju korienja usluga za svakog korisnika sa tanim datumom
korienja bilo da je pojedinana usluga ili paket usluga. Modelovati cenovnik usluga tako da se prati istorija promene
cena za svaku pojedinanu uslugu. Paket usluga nema definisanu cenu ve je samo definisan popust za svaku pojedinanu
uslugu koja je ukljuena u paket.
6. Napraviti model objekti-veze za deo informacionog sistema taksi udruenja. Potrebno je voditi evidenciju o taksi
vozaima sa osnovnim atributima Broj, GradskiBroj, ImePrezime, DatumRodj. Omoguiti beleenje podataka o
gradovima i o ulicama u gradovima. Za svakog taksi vozaa je potrebno evidentirati jednu i samo jednu klasu vozila koje
poseduje (KlasaVozilaID, NazivKlaseVozila). Potrebno je modelovati Vonju za koju se zna polazna adresa (Ulica i broj
zgrade), taksi voza koji je dodeljen vonji, datum prijema, vreme prijema, vreme dodele, za koliko minuta stie taksi
voza i status. U modelu obezbediti da stranka moe izraziti elju za jednom ili vie klasa vozila za svoju vonju.

www.fonforum.org

7. Nacrtati dijagram objekti-veze za evidenciju osnovnih podataka o leku, za potrebe apotekarske ustanove.
Potrebno je voditi evidenciju o svim lekovima sa sledeim osnovnim atributima: Komercijalni naziv, Hemijski naziv,
Doziranje, Dejstvo, Neeljeni efekti. Svaki lek se koristi za leenje najmanje jedne vrste indikacija (bolesti). S druge
strane, za svaki lek potrebno je dati kontraindikacije (u kojim sluajevima se ne sme koristiti) kojih moe biti vie. Svaki
lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi jedan i samo
jedan proizvoa. Lek se pakuje u vie oblika (npr. tableta, sirup, injekcija, praak itd.). Za svaku vrstu pakovanja leka
potrebno je voditi evidenciju o koliini i sastavu. Lek moe a ne mora imati zamene, a takoe lek moe biti zamena
drugim lekovima iz iste grupe.
8. Napraviti model objekti-veze za zadati verbalni opis. U cipelgradu ive cipelii i izmii. I za cipelie i za izmie
moe se rei da su obuii. Cipelii mogu biti papuii ili nanulii ili opanii. izmii se dele na cokulie i gojzerie.
Cokulii mogu da se drue sa svim cipeliima osim sa papuiima. Nanuli moe ali ne mora da se drui sa najvie
jednim papuiem, dok jedan papui moe da se drui sa vie nanulia. Gojzerii su dovoljni sami sebi tako da se drue
meusobno. Kada se udrue cokulii, opanii i nanulii onda se to naziva srpii.
9. Napraviti model objekti-veze za praenje olimpijskog takmienja gimnastikog vieboja. Potrebno je voditi evidenciju
o takmiarima sa sledeim osnovnim atributima: OlimpijskiBroj, PrezimeIme, GodinaRoenja, Pol. Svaki takmiar je iz
jedne i samo jedne drave za koju je potrebno znati Skraeni naziv i Pun naziv drave. Svaki takmiar veba na vie
sprava (ifra sprave, Naziv sprave). Unapred je odreen Redosled vebanja posmatranog takmiara na odreenoj spravi.
Svaki takmiar za svoju vebu na odreenoj spravi dobija po jednu ocenu od svakog postavljenog sudije. Potrebno je
voditi evidenciju sudija sa osnovnim obelejima kao to su ifraSudije, NazivSudije i drava iz koje dolaze. Pored ovoga
modelirati listu sudija za ocenjivanje vebi na spravi, t.j. postavljanje jednog ili vie sudija za svaku spravu.
10. Napraviti model objekti-veze za deo informacionog sistema Gradskog saobraajnog preduzea (GSP). Potrebno je
voditi evidenciju o linijama GSP tako da je za svaku liniju potrebno znati poetnu, krajnju i sve meustanice. Voditi
rauna o rednom broju stanice za svaku liniju polazei od poetne (redosled stanica). Vozilo u sistemu gradskog
saobraaja ima atribute: Registarski broj i Oznaka vozila. Vozilo moe biti vlasnitvo GSP sa obelejima Naziv garae i
Parking mesto, dok ako je vozilo vlasnitvo privatnog prevoznika onda se evidentiraju podaci o prevozniku (ifra, Naziv,
Mesto). Ispravno vozilo se svakoga dana rasporeuje na jednu od linija i zadaje se vreme svakog polaska u toku dana. Za
svaki polazak pored vremena potrebno je omoguiti evidenciju realizacije polaska kao i napomene ukoliko je dolo do
otkaza polaska.
11. Nacrtati dijagram objekti-veze za deo sistema praenja avionskog saobraaja opisan sledeim tekstom: Avionska
karta za jednu standardnu avio-liniju moe biti sastavljena od vie kupona. Jedna linija moe da ukljui vie letova na
relaciji izmedju mesta polaska i mesta krajnjeg odredita. Svaki avion obino ima nekoliko letova u toku dana (let je
identifikovan preko datuma i vremena poletanja aviona). Karta sadri podatke o avionskoj liniji, prezimenu i imenu
putnika, mestu polazita, mestu krajnjeg odredita, datumu izdavanja, roku vaenja i ceni. Kuponi karte sadre identine
podatke kao i karta, kao i podatke o pojedinanim letovima izmedju polazita i odredita: mesto poletanja, mesto sletanja,
broj leta, klasa sedita, datum i vreme poletanja.
12. Napraviti model objekti-veze za deo informacionog sistema Evropskog prvenstva u koarci. Potrebno je voditi
evidenciju o reprezentacijama uesnicama takmienja sa osnovnim atributima ifraDrave, NazivDrave, kao i o njenim
igraima sa sledeim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godite. Svaka reprezentacija je
rasporeena u jednu i samo jednu kvalifikacionu grupu. Sve utakmice jedne kvalifikacione grupe se igraju u samo jednom
gradu. Potrebno je modelovati utakmice, gde se tano zna koja je reprezentacija u ulozi domaina a koja u ulozi gosta. Za
svaku utakmicu evidentirati broj postignutih poena domae i gostujue reprezentacije. Za svaku utakmicu je potrebno
znati i u kojoj fazi takmienja se odigrala (kvalifikacije u grupi, bara, etvrtfinale, polufinale, finale ...). Za svakog igraa
je potrebno voditi statistiku uinka na svakoj odigranoj utakmici, gde uinak podrazumeva evidenciju broja pogodaka za 1
poen, broja pogodaka za 2 poena, broja pogodaka za 3 poena, broja ofanzivnih skokova, broja defanzivnih skokova i broja
asistencija.
13. Nacrtati dijagram objekti-veze za video klub. Potrebno je obezbediti pretraivanje po nazivu filma, anru, reiseru,
glumcima, scenaristi i muzici. Voditi evidenciju o lanu video kluba (osnovni atributi: JMBG, Ime, Prezime, Status).
Video klub poseduje vie kaseta (kopija) istog filma. Potrebno je obezbediti praenje istorijata izdavanja i vraanja svake
kasete. Jedan lan kluba moe dnevno zaduiti vie kaseta.

www.fonforum.org

14. Nacrtati dijagram objekti-veze za praenje poslova u zubarskoj ordinaciji. Potrebno je voditi evidenciju o kartonima
pacijenata sa osnovnim podacima o pacijentu i o stanju njegovih zuba nakon svakog pregleda ili intervencije. Za svaku
invtervenciju se belee zubi nad kojima je raeno, vrsta intervencije kao i svi zubari koji su uestvovali u intervenciji.
Zatim, potrebno je voditi evidenciju o zakazanim pregledima imajui u vidu da u ordiniciji ima vie zubara i da pacijent
moe zakazati termin kod bilo kog zubara.
15. Nacrtati modelobjekti-veze za jednu turistiku agenciju sa sledeim opisom: Agencija organizuje razne tipove
aranmana (letovanja, zimovanja, ekskurzije, poslovne itd.). Potrebno je za svaki aranman voditi podatke o jednoj
krajnjoj destinaciji (mestu) kao i o svim prolaznim mestima koja se poseuju. Za svako prolazno mesto u aranmanu treba
dati sadraj posete sa satnicom. Svaki aranman se realizuje u veem broju termina, gde se vodi evidencija o datumu
polaska, datumu povratka, cenu aranmana. Za svaku realizaciju aranmana angauje se jedno ili vie vozila istog ili
razliitog tipa.
16. Napraviti model objekti-veze za deo informacionog sistema banaka. Potrebno je voditi podatke o svim bankama u
naoj zemlji (ifra banke, naziv banke, sedite, godina osnivanja, vlasniki odnos). Svaka banka je jednog i samo jednog
tipa (komercijalna, kreditna, izvozna itd.). Jedna banka moe preuzeti vie drugih banaka, s druge strane moe a ne mora
biti preuzeta od najvie jedne banke. Za svaku banku se na kraju godine evidentira godinji profit. Ukoliko je banka sa
veinskim stranim vlasnitvom, potrebno je evidentirati datum licence, a ukoliko je banka sa veinskim domaim
vlasnitvom onda se vodi evidencija UkupneAktive i UkupnogDuga. Banka sa veinskim domaim vlasnitvom nalazi se
u jednom i samo jednom stanju (likvidna, u steaju, u likvidaciji, likvidirana, preuzeta itd.) koje se kroz vreme moe
menjati.
17. Potrebno je napraviti model objekti-veze na osnovu sledeceg opisa: U okviru manifestacije Fashion Week bie
odrzano vie revija na kojima e kreatori prikazati svoje najnovije kolekcije. Tim povodom na odranom kastingu izabran
je vei broj manekena iz razliitih modnih agencija. Na pojednim revijama u svojstvu manekena pojavie se i specijalni
gosti, tj. poznate linosti iz javnog ivota. Za modnu reviju treba voditi evidenciju o broju, nazivu revije, datumu i
vremenu odravanja i mestu odravanja. Za svakog manekena treba evidentirati pored ifre i imena, i konfekcijski broj.
Maneken moe uestvovati na vie modnih revija nosei odreene kolekcije kreatora. Ukoliko maneken pripada modnoj
agenciji mora se znati o kojoj se modnoj agenciji radi. S druge strane, ukoliko je maneken specijalni gost (koji nije u
modnoj agenciji) potrebno je evidentirati njegovo zanimanje.
18. Potrebno je napraviti model objekti-veze koji pokriva neke funkcije mobilnog telefona na osnovu sledeeg opisa.
Zahteva se da telefon ima mogunost kreiranja grupa (atributi: ifraGrupe, NazivGrupe), svakoj grupi pripada jedan ili
vie brojeva telefona kontakt osobe, s druge strane broj telefona kontakt osobe pripada jednoj i samo jednoj grupi.
Takoe, svaka grupa moe a ne mora imati prikljuenu muziku (ifraMuzike, NazivMuzike) koja se aktivira kada zove
pozivalac iz posmatrane grupe, muzika moe biti prikljuena u vie grupa. Sledei zahtev je da model podrava
definisanje situacija (npr. raspoloiv, na sastanku, rekreacija, odmara se). Za svaki par grupa-situacija treba definisati da li
se aktivira muzika ili vibracija i definie se jedna ili vie akcija odreenog tipa akcije, akcija moe biti povezana sa vie
parova grupa-situacija. Tip akcije (atributi: ifraTipaAkcije, OpisTipaAkcije) moe imati sledea pojavljivanja: Prebaci
na elektronsku sekretaricu provajdera, Prebaci na sekretaricu u kancelariji, Poalji SMS pozivaocu, Poalji email na
definisanu adresu i slino. Konkretna akcija odreenog tipa akcije treba da ima atribute ifraAkcije, Tekst SMS poruke,
BrojTelefona, Email adresa.
19. Napraviti model objekti-veze za deo informacionog sistema Elektrodistribucije. Potrebno je voditi evidenciju o svim
pretplatnicima sa sledeim osnovnim atributima: EDBroj, ImePrezime, Adresa, PotReon. Svaki pretplatnik je iz jednog i
samo jednog mesta. Pretplatniku je dodeljen jedan i samo jedan Tarifni stav (koji ima atribut NazivTS sa moguim
vrednostima 'zeleni', 'plavi', 'crveni'). Tarifni stav odreuje kolika je cena vie (cenaVT) a kolika je cena manje tarife
(cenaMT). Treba imati u vidu da se cene tarifa menjaju vremenom pa je potrebno obezbediti praenje istorije menjanja
cena tarifa. Za svakog pretplatnika se svakog meseca evidentira meseni utroak struje gde su najvanija obeleja
Datumitanja, NovoStanjeVT, NovoStanjeMT, DatumOd, DatumDo. Takoe, za svakog pretplatnika se svakog meseca
pravi obraun utroka struje, gde se mora znati datum obrauna, za koji mesec i godinu, utroak VT, utroak MT, fiksni
deo u KW. Potrebno zabeleiti po kojem se tarifnom stavu vrio obraun (onaj tarifni stav koji je bio vaei u trenutku
obrauna).

www.fonforum.org

20. Napraviti model objekti-veze za deo informacionog sistema Republike radiodifuzne agencije. Potrebno je voditi
evidenciju o svim reklamama koje se prikazuju na televizijama sa nacionalnom frekvencijom (ifraTelevizije,
NazivTelevizije). Osnovni atributi reklame su ifraReklame, NazivReklame, VremeTrajanja. Reklama je produkcija jedne
i samo jedne advertajzing agencije. Reklama moe biti komercijalna ili politika. Ako se radi o politikoj reklami
potrebno je evidentirati koju politiku partiju reklamira (ifraPartije, NazivPartije). Ukoliko se radi o komercijalnoj
reklami onda je potrebno zabeleiti na koju se granu privrede odnosi kao I kompaniju koja je reklamu naruila
(ifraKompanije, Naziv, Sedite). Potrebno je voditi evidenciju svakog prikazivanja reklame na bilo kojoj televiziji. U
toku dana mogue je da se ista reklama prikazuje vie puta na istoj televiziji.
21. Napraviti model objekti-veze za deo informacionog sistema mukog teniskog turnira. Potrebno je voditi evidenciju o
teniserima koji uestvuju na turniru. Osnovni atributi tenisera su ifra tenisera, ime i prezime tenisera, rang na ATP listi,
datum roenja. Teniser je iz jedne i samo jedne drave (ifra drave, naziv drave). Obezbediti evidenciju meeva izmeu
dva tenisera, gde je jedan crveni, a drugi plavi. Me na sebi ima atrubut Pobednik koji uzima vrednosti iz skupa {crveni,
plavi}. Svaki me ima najmanje 2, a najvie 3 seta. Set ima sledee karakteristike: Broj osvojenih gemova crvenog
igraa, Broj osvojenih gemova plavog igraa. Me se odigrava na odreenom terenu (broj terena, naziv terena) i me
odgovara jednoj i samo jednoj fazi takmienja. Takoe, potrebno je napraviti deo modela koji bi obezbedio voenje
statistike o teniseru. Za svakog tenisera na svakom meu obezbediti pamenje ostvarene vrednosti za sve tipove dogaaja
(npr. procenat prvog ubaenog servisa, procenat drugog ubaenog servisa, as, dupla greka itd.). Lista tipova dogaaja se
moe proirivati.

www.fonforum.org

10

11

12

13

14

Lek
Nacrtati dijagram objekti-veze za evidenciju osnovnih podataka o leku,.com za potrebe apotekarske ustanove. Potrebno je voditi evidenciju o svim
lekovima sa sledeim osnovnim atributima: Komercijalni naziv, Hemijski naziv, Doziranje, Dejstvo, Neeljeni efekti. Svaki lek se koristi za
leenje najmanje jedne vrste indikacija (bolesti). S druge strane, za svaki lek potrebno je dati kontraindikacije (u kojim sluajevima se ne sme
koristiti) kojih moe biti vie. Svaki lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi
jedan i samo jedan proizvoa. Lek se pakuje u vie oblika (npr. tableta, sirup, injekcija, praak, itd.). Za svaku vrstu pakovanja leka potrebno je
voditi evidenciju o koliini i sastavu. Lek se moe a ne mora imati zamene, a takoe lek moe biti zamena drugim lekovima iz iste grupe.

15

16

1. Dat je relacioni model:


APARTMAN(ApartmanID, BrojSoba, BrojSpavacihSoba, BrojKupatila, VrstaID)
VRSTA_APARTMANA(VrstaID, NazivVrste)
GOST(GostID, Ime, Prezime, DatumRodjenja, Pol)
REZERVACIJA_APARTMANA(ApartmanID, GostID, DatumOd, DatumDo, StatusID)
STATUS_REZERVACIJE(StatusID, NazivStatusa)
Pol in (m, z)
NazivStatusa in (Privremena, Potvrdjena, Otkazana, Realizovana)

a) Napisati DDL naredbe za kreiranje tabela: GOST, STATUS_REZERVACIJE i


REZERVACIJA_APARTMANA datog modela. Obavezno ukljuiti i definicije svih
ogranienja.
(7 poena)
CREATE TABLE "GOST"
(
"GOSTID" NUMBER,
"IME" VARCHAR2(150),
"PREZIME" VARCHAR2(200),
"DATUMRODJENJA" DATE,
"POL" VARCHAR2(10),
CONSTRAINT "GOST_PK" PRIMARY KEY ("GOSTID"),
CONSTRAINT "GOST_C01" CHECK (pol in ('m', 'z'))
)
CREATE TABLE "STATUS_REZERVACIJE"
(
"STATUSID" NUMBER NOT NULL,
"NAZIVSTATUSA" VARCHAR2(300),
CONSTRAINT "STATUS_REZERVACIJE_PK" PRIMARY KEY ("STATUSID")
CONSTRAINT "STATUS_REZERVACIJE_C01" CHECK (nazivstatusa in
(Privremena, Potvrdjena, Otkazana, Realizovana))
)
CREATE TABLE "REZERVACIJA_APARTMANA"
(
"APARTMANID" NUMBER ,
"GOSTID" NUMBER,
"DATUMOD" DATE,
"DATUMDO" DATE,
"STATUSID" NUMBER,
CONSTRAINT "REZERVACIJA_APARTMANA_PK" PRIMARY KEY ("DATUMDO",
"DATUMOD", "GOSTID", "APARTMANID"),
CONSTRAINT "REZERVACIJA_APARTMANA_FK" FOREIGN KEY ("STATUSID")
REFERENCES "STATUS_REZERVACIJE" ("STATUSID"),
CONSTRAINT "APARTMAN_FK" FOREIGN KEY ("APARTMANID")
REFERENCES "APARTMAN" ("APARTMANID"),
CONSTRAINT "GOST_FK" FOREIGN KEY ("GOSTID")
REFERENCES "GOST" ("GOSTID")
)

b) Prikazati ifru, ime i prezime svih razliitih gostiju koji imaju potvrene rezervacije u
januaru tekue godine. Rezultat sortirati u opadajuem redosledu prezimena gosta.
(7 poena)
select distinct gostid, ime, prezime
from gost join rezervacija_apartmana using (gostid) join
status_rezervacije using (statusid)
where extract(year from datumod) = extract(year from sysdate) and
extract(month from datumod) = 1 and nazivstatusa = 'Potvrdjena'
order by prezime desc;

KARDINALNE GREKE: Upotreba group by ili group by + having klauzule (umesto order by).
TIPINE GREKE: Izostavljanje distinct klauzule.

c) Sve jo uvek nerealizovane rezervacije za apartmane vrste Duplex nagrauju se


produetkom boravka u trajanju od dva dana. Nagrauju se samo rezervacije due od
nedelju dana. Napisati naredbu kojom se navedeni zahtev realizuje u bazi podataka.
(8 poena)
update rezervacija_apartmana
set datumdo = datumdo + 2
where apartmanid in (select apartmanid
from apartman join vrsta_apartmana
using(vrstaid)
where nazivvrste = 'Duplex')
and statusid in (select statusid
from status_rezervacije
where nazivstatusa <> 'Realizovana')
and datumdo - datumod>7;
NAPOMENA: Mogue je koristiti samo jedan podupit (svi ili veina uslova u njemu), ALI samo ako je
uslov definisan preko kompletnog primarnog kljua!!!! Npr.
. where (apartmanid,gostid,datumod,datumdo) in (select apartmanid,

gostid,datumod,datumdo from )
KARDINALNE GREKE: Nekorienje naredbe UPDATE, ve select, alter table, alter update table i
slino. Automatski 0 poena.
TIPINE (KRUPNE) GREKE: Definisanje uslova nad podupitom (iz napomene) samo preko dela
primarnog kljua (samo apartmanid, samo gostid, itd.) ili preko statusid. Upotreba FROM klauzule u
UPDATE naredbi (?). Upotreba operatora = umesto in (oigledno je da svi podupiti potencijalno
vraaju vie vrednosti).

d) Kreirati pogled PREGLED_VRSTA_APARTMANA(VRSTA_ID, NAZIV_VRSTE, UKUPNO,


REALIZOVANO, PROSECNO_TRAJANJE) kojim se za svaku vrstu apartmana prikazuje
ifra, naziv, ukupan broj rezervacija, realizovan broj rezervacija i proseno trajanje
rezervacije za tu vrstu apartmana. U rezultatu je potrebno prikazati samo podatke o
vrstama apartmana kod kojih je proseno trajanje rezervacije due od opteg prosenog
trajanja rezervacije (prosenog trajanja svih rezervacija, bez obzira na vrstu apartmana).
(8 poena)
create or replace view PREGLED_VRSTA_APARTMANA(VRSTA_ID,
NAZIV_VRSTE, UKUPNO, REALIZOVANO, PROSECNO_TRAJANJE)
as
select vrstaid, nazivvrste, count(*),
sum(case nazivstatusa when 'Realizovana' then 1 else 0 end),
avg(datumdo-datumod)
from vrsta_apartmana join apartman using(vrstaid) join
rezervacija_apartmana using (apartmanid) join status_rezervacije
using(statusid)
group by vrstaid, nazivvrste
having avg(datumdo-datumod) > (select avg(datumdo-datumod)
from rezervacija_apartmana) ;
KARDINALNE GREKE: Definisanje uslova u where klauzuli, umesto u having.

TIPINE (KRUPNE) GREKE: Nekorienje podupita u having klauzuli. Izostavljanje grupisanja ili
loe grupisanje. Upotreba podupita u okviru count, sum i avg funkcija (koji nemaju nikakve veze sa
ostatkom upita). Upotreba dodeljenog naziva kolone umesto SQL koda. Npr.
..........

having

prosecno_trajanje > (select avg(datumdo-datumod)


from rezervacija_apartmana) ;

Baze podataka
- priprema za kolokvijum 2012/13 (by Stepke) Predgovor: pripreme za kolokvijum su odrane 05.06.2013. (drao ih je Sra Bjeladinovi u terminu predavanja, od 12-14h).
Pisanje DDL naredbi (1. i 2. zadatak pod a) ) dolazi na kolokvijumu, ali ne i na ispitu.
Zahtevi pod c) u zadatku na kolokvijumu se obino odnose na UPDATE ili VIEW.
1. Dat je relacioni model (italic nazivi u relacionom modelu predstavljaju spoljne kljueve)
TRENING_CENTAR (CENTARID, NAZIV_CENTRA)
UCIONICA (CENTARID, UCIONICAID, UK_BR_MESTA, NAZIV_UCIONICE)
PREDAVAC (PREDAVACID, IME_I_PREZIME, DRZID)
PROGRAM_KURSA (PROGRAMID, NAZIV_PROGRAMA, DATUM_POCETKA, DATUM_ZAVRSETKA, KOORDINATOR)
KURS (PROGRAMID, KURSID, NAZIV_KURSA, SERTIFIKAT, CENA)
DRZAVA (DRZID, NAZIV)
RASPORED (CENTARID, UCIONICAID, PROGRAMID, KURSID, PREDAVACID, DATUM_I_VREME)
NAZIV_KURSA in ('ORACLE SQL', 'ORACLE PL/SQL', 'JAVA')
DATUM_I_VREME je tipa TIMESTAMP
a) Napisati DDL naredbe za kreiranje tabela: PROGRAM_KURSA, KURS, DRZAVA i RASPORED datog modela.
Obavezno ukljuiti i definicije svih ogranienja.
Reenje:
CREATE TABLE DRZAVA(
DRZID NUBMER(7),
NAZIV VARCHAR(20),
CONSTRAINT DRZAVA_PK PRIMARY KEY (DRZID));
CREATE TABLE PROGRAM_KURSA(
PROGRAMID NUBMER(7),
NAZIV_PROGRAMA VARCHAR(20),
DATUM_POCETKA DATE,
DATUM_ZAVRSETKA DATE,
KOORDINATOR VARCHAR(20),
CONSTRAINT PROGRAM_PK PRIMARY KEY (PROGRAMID));
CREATE TABLE KURS(
PROGRAMID NUBMER(7),
KURSID NUBMER(7),
NAZIV_KURSA VARCHAR(20),
SERTIFIKAT VARCHAR(20),
CENA NUBMER(7),
CONSTRAINT KURS_PK PRIMARY KEY (PROGRAMID, KURSID),
CONSTRAINT KURS_FK FOREIGN KEY (PROGRAMID) REFERENCES PROGRAM_KURS (PROGRAMID),
CONSTRAINT KURS_CHECK CHECK (NAZIV_KURSA IN ('ORACLE SQL', 'ORACLE PL/SQL', 'JAVA')));

CREATE TABLE RASPORED(


CENTARID NUBMER(7),
UCIONICAID NUBMER(7),
PROGRAMID NUBMER(7),
KURSID NUBMER(7),
PREDAVACID NUBMER(7),
DATUM_i_VREME TIMESTAMP,
CONSTRAINT RASPORED_PK PRIMARY KEY (CENTARID, UCIONICAID, PROGRAMID, KURSID, PREDAVACID),
CONSTRAINT RASPORED_FK1 FOREIGN KEY (CENTARID, UCIONICAID) REFERENCES UCIONICA(CENTARID,
UCIONICAID),
CONSTRAINT RASPORED_FK2 FOREIGN KEY (PROGRAMRID, KURSID) REFERENCES KURS(PROGRAMID, KURSID),
CONSTRAINT RASPORED_FK3 FOREIGN KEY (PREDAVACID) REFERENCES PREDAVAC(PREDAVACID));
b) Prikazati sve podatke o Oracle kursevima koji imaju stranog predavaa.
Reenje:
SELECT k.*
FROM KURS k JOIN RASPORED R ON (k.PROGRAMID = R.PROGRAMID AND k.KURSID = R.KURSID) JOIN
PREDAVAC P ON (R.PREDAVACID = P.PREDAVACID) JOIN DRZAVA D ON (P.DRZID = D.DRZID)
WHERE D.NAZIV <> 'SRBIJA' AND k.NAZIV_KURSA IN ('ORACLE SQL', 'ORACLE PL/SQL');
c) Prikazati naziv, datum poetka i datum zavretka, kao i ukupnu cenu programa (= sumi cena kurseva u programu) onih
programa koji su odrani u 2008-oj godini i koji nisu skuplji od 800 EUR.
Reenje:
SELECT PK.NAZIV_PROGRAMA, PK.DATUM_POCETKA, PK.DATUM_ZAVRSETKA, SUM(K.CENA)
FROM PROGRAM_KURSA PK JOIN KURS K ON (PK.PROGRAMID = K.PROGRAMID)
WHERE (EXTRACT(YEAR FROM PK.DATUM_POCETKA) = 2008) AND (EXTRACT(YEAR FROM PK.DATUM_ZAVRSETKA) = 2008)
GROUP BY PK.NAZIV_PROGRAMA, PK.DATUM_POCETKA, PK.DATUM_ZAVRSETKA
HAVING SUM(K.CENA) < 800;
Napomena: u GROUP BY moraju da se nau sve kolone iz SELECT. Obrnuto ne vai.
d) Prikazati naziv kursa, sertifikat, cenu i cenu sa popustom. Cena sa popustom se formira tako to se za kurseve koji e se
odrati u uionici sa 5, 10 i 15 mesta odobrava popust od 5%, 10% i 15% respektivno. Za sve ostale kurseve odobreni
popust iznosi 2%.
Reenje:
SELECT K.NAZIV_KURS, K.SERTIFIKAT, K.CENA,
(CASE U.UK_BR_MESTA WHEN 5 THEN K.CENA*0.95
WHEN 10 THEN K.CENA*0.9
WHEN 15 THEN K.CENA*0.85
ELSE K.CENA*0.98 END) AS CENA_SA_POPUSTOM
FROM KURS K JOIN RASPORED R ON (K.PROGRAMID = R.PROGRAMID AND K.KURSID = R.KURSID)
JOIN UCIONICA U ON (R.CENTARID = U.CENTARID AND R.UCIONICAID = U.UCIONICAID);

2. Data je relaciona shema (italic nazivi u relacionoj shemi predstavljaju spoljne kljueve):
SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja)
KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva)
TRENER (SifraTrenera, Ime, Prezime, DatumRodjenja, DatumZaposlenja, MaticniKlub)
ANGAZOVANJE (SifraKluba, SifraTrenera, DatumAng, BrojSati)
ISPLATA (SifraIsplate, DatupIsp, Iznos, SifraKluba, SifraTrenera, DatumAng)
a) Napisati DDL naredbe za kreiranje tabela: SPORTSKO_DRUSTVO, KLUB i TRENER datog modela. Obavezno ukljuiti i
definicije svih ogranienja.
Reenje: Sra Bjeladinovi je preskoio ovu stavku jer je slina kao u 1. zadatku pod a)
b) Prikazuje Prezime, Ime, GodinaStaza, Naziv kluba za one trenere koji su zaposleni u sportskom drutvu sa nazivom
<<Atleta>> u poslednjih 5 godina, pri emu u obzir uzeti samo trenere kojima je to prvo zaposlenje, tj. trenere koji su
zaposleni u svom matinom klubu. Rezultat sortirati u opadajuem redosledu godina staa i rastuem prezimena.
Reenje:
SELECT T.PREZIME, T.IME, ROUND((SYSDATE - T.DATUM_ZAPOSLENJA)/365, 2) AS GodSta, K.NAZIV
FROM TRENER T JOIN KLUB K ON (K.SIFRAKLUBA = T.MATICNIKLUB)
WHERE K.SIFRADRUSTVA = (
SELECT SIFRADRUSTVA
FROM SPORTSKO_DRUSTVO
WHERE UPPER(NAZIV) = 'ATLETA')
AND EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM T.DATUMZAPOSLENJA) < 5
ORDER BY GodSta DESC, T.PREZIME;
c) Poveava iznos isplate za 50% svim trenerima koji su stariji od 40 godina, a njihov matini klub pripada sportskom
drutvu iji naziv poinje sa A.
Reenje:
UPDATE ISPLATA
SET IZNOS = IZNOS*1.5
WHERE SIFRATRENERA IN (
SELECT SIFRATRENERA
FROM TRENER T JOIN KLUB K ON (T.MATICNIKLUB = K.SIFRAKLUBA)
JOIN SPORTSKO_DRUSTVO SD ON (K.SIFRADRUSTVA = SD.SIFRADRUSTVA)
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM T.DATUMRODJENJA) > 40 AND (SD.NAZIV LIKE 'A%')
);

d) Kreira pogled HONORAR (Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesene isplate
trenerima u tekuoj godini. Kolona BrojKlubova prikazuje broj razliitih klubova koji su isplatili honorar treneru u datom
mesecu.
Reenje:
CREATE OR REPLACE VIEW HONORARI AS
SELECT T.PREZIME, T.IME, COUNT (DISTINCT I.SIFRAKLUBA) AS BrojKlubova,
EXTRACT(MONTH FROM I.DATUMISP) AS MESEC, SUM(I.IZNOS) AS UkupnaMesecnaIsplata
FROM TRENER T JOIN ANGAZOVANJE A ON (T.SIFRATRENERA = A.SIFRATRENERA)
JOIN ISPLATA I ON (A.SIFRAKLUBA = I.SIFRAKLUBA AND A.SIFRATRENERA = I.SIFRATRENERA
AND A.DATUMANG = I.DATUMANG)
WHERE EXTRACT(YEAR FROM I.DATUMISPLATE) = EXTRACT(YEAR FROM SYSDATE)
GROUP BY T.IME, T.PREZIME, EXTRACT(MONTH FROM I.DATUMISP);

b) Prikazati naziv pice, veliinu pice, datum i vreme narudbine, za sve pice naruene u
poslednja tri dana. Prikazati podatke samo za pice koje meu svojim sastojcima sadre
mocarelu ili gorgonzolu i iji je prenik vei od 30 cm. Rezultat sortirati u rastuem
redosledu naziva pice i opadajuem redosledu datuma i vremena narudbine.
select nazivpice, nazivvel, datumvreme
from pica join narudzbina using (picaid) join velicina using (velid) join normativ using (picaid)
join sastojak using (sastojakid)
where sysdate - datumvreme<3 and (nazivsastojka = 'Mozzarela' or
nazivsastojka='Gorgonzola') and precnik > 30
order by nazivpice asc, datumvreme desc;
c) Potrebno je poveati cenu za 10% svim picama koje sadre bar dve vrste sira (tj. imaju
bar dva sastojka ija je vrsta sastojka "Sir") i ija cena posle poveanja nee biti vea od
2000 dinara. Napisati naredbu kojom se navedeni zahtev realizuje u bazi podataka.
update pica
set cena = cena * 1.1
where cena*1.1 < 2000 and picaid in (select picaid
from pica join normativ using(picaid) join sastojak
using (sastojakid)
where vrstasastojka='Sir'
group by picaid
having count(*)>1);
d) Atribut Cena relacije Pica, koristi se za cenu pice u standardnoj veliini, prenika 32 cm.
Cene za druge veliine pice izraunavaju se na osnovu cene standardne pice,
proporcionalno preniku pice. Kreirati pogled OBRAUNCENA(PICAID, NAZIVPICE,
NAZIVVELICINE, CENA, BRNARUDZBI,VAUCER) kojim se za SVAKU PICU KOJA
POSTOJI U PONUDI prikazuju ifra pice, naziv pice, naziv veliine, obraunata cena pice
za tu veliinu i ukupan broj narudzbina pice u toj veliini. Pogled prikazuje podatke samo
za pice naruene u poslednjih sat vremena, a ija veliina nije "Standard". U koloni
VAUCER se prikazuje vrednost "DA" ukoliko je broj narudbina vei od 5, a vrednost "NE"
u suprotnom.

create or replace view OBRACUNCENE(PICAID, NAZIVPICE, NAZIVVELICINE, CENA,


BRNARUDZBI,VAUCER) as
select picaid, nazivpice, nazivvel as nazivvelicine, cena/32*precnik as cena,
sum(case when (sysdate-datumvreme)*24<1 and nazivvel <> 'Standard' then 1 else 0 end) as
brnarudzbi,
case when sum(case when (sysdate-datumvreme)*24<1 and nazivvel <> 'Standard' then 1 else 0
end)>5 then 'DA' else 'NE' end as vaucer
from pica left join narudzbina using (picaid) join velicina using (velid)
group by picaid, nazivpice, nazivvel, cena/32*precnik;

b) Napisati SQL upit kojim se prikazuju naziv seminara i period odravanja seminara (datume
poetka i kraja seminara) za seminare koji su odrani u poslednje tri godine (raunajui od
dananjeg datuma), kojima je poetak bio u oktobru mesecu, a na kojima su uestvovali
istraivai iz instituta koji se nalaze u Beogradu. Rezultat sortirati od najranije ka najkasnije
odranom seminaru.
(7 poena)
select s.nazivsem, s.datumod, s.datumdo
from seminar s join ucesce u on (s.seminarid = u.seminarid) join istrazivac
ist on (u.istrazivacid = ist.istrazivacid) join institut ins on
(ist.institutid = ins.institutid)
where ins.grad = 'Beograd' and sysdate-s.datumod < 3*365 and extract (month
from s.datumod) = 10
order by s.datumod;

c) Napisati SQL naredbu kojom se poveava plata za 20% svim istraivaima koji su imali vie
od dvadeset uea na seminarima i barem dve razliite uloge na njima, a mlai su od 27
godina.
(8 poena)
update istrazivac
set plata = plata * 1.2
where istrazivacid in (select istrazivacid
from ucesce
group by istrazivacid
having count(*) > 20 and count(distinct ulogaid) > 1)
and extract(year from sysdate) - extract(year from datumrodj) < 27;

d) Kreirati
pogled
PREGLED_ISTRAZIVACA
(ID,
IME,
UCESCA_PREZENTER,
UCESCA_OSTALO, UCESCA_UKUPNO, STATUS) kojim se prikazuje id istraivaa, ime
istraivaa, broj uea na seminarima u ulozi prezentera, broj uea na seminarima u
drugim ulogama, ukupan broj uea istraivaa na seminarima i status. U koloni STATUS
potrebno je prikazati vrednost ispod proseka ukoliko je ukupan broj uea konkretnog
istraivaa manji od prosenog broja uea. U suprotnom prikazati iznad proseka.
Pogledom obuhvatiti sve istraivae, bez obzira da li su imali uee na seminaru tokom
svoje karijere ili ne.
(8 poena)
create or replace view PREGLED_ISTRAZIVACA(ID, IME, UCESCA_PREZENTER,
UCESCA_OSTALO, UCESCA_UKUPNO, STATUS) as
select i.istrazivacid, i.ime,
sum(case when ul.nazivuloge = 'prezenter' then 1 else 0 end),
sum(case when ul.nazivuloge <> 'prezenter' then 1 else 0 end),
count(u.istrazivacid),
case when count(u.istrazivacid) > (select avg(count(*))
from ucesce group by istrazivacid)
then 'iznad proseka' else 'ispod proseka'
end
from istrazivac i left join ucesce u on (i.istrazivacid = u.istrazivacid)
left join uloga ul on (u.ulogaid = ul.ulogaid)
group by i.istrazivacid, i.ime

SQL zadaci
1. Data je relaciona shema :
OSIGURANIK(LICEID, PREZIME, IME, ADRESA, GRAD)
TIP_OSIGURANJA (TIPID, NAZIV, TARIFA)
POLISA(POLISAID,DATUMIZDAVANJA,UKUPAN_IZNOS,LICEID,TIPOSIGURANJAID,
BROJ_MESECNIH_RATA, PREMIJSKI_RAZRED, ZAMENA_POLISEID)
UPLATA_PO_POLISI (POLISAID,DATUMUPLATE, IZNOS)
Napisati SQL:1999 naredbe kojima se realizuju sledei zahtevi:
a) Prikazati sve podatke o izdatim polisama osiguranja vozila (naziv tipa osiguranja = OSIGURANJE VOZILA) u
tekuem mesecu sortirane po premijskom razredu.
b) Obrisati sve polise za koje nije bila nijedna uplata posle tri meseca od datuma izdavanja polise.
c) Kreirati pogled kojim se prikazuje po godinama, i u okviru njih po mesecima ukupan broj izdatih polisa, ukupna
vrednost polisa, za sve tipove osiguranja imovine i lica (to su tipovi osiguranja sa nazivima OSIGURANJE
IMOVINE, OSIGURANJE LICA) od 2000. godine.
d) Kreira pogled SPORNA_POTRA@IVANJA kojim se prikazuju BROJ_POLISE, DATUMPOLISE,
UKUPNA_OBAVEZA, UKUPNO_UPLACENO, BROJ_ODOBRENIH_
2. Data je relaciona shema :
AERODROM(AEROID, NAZIV, DRZAVA, MESTO)
LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO)
LET(LINIJAID,DATUMiVREME, AVIONID)
AVION (AVIONID, OZNAKA, TIPAVIONA, BROJ_SEDISTA)
REZERVACIJA(LINIJAID,DATUMiVREME, RBR, STATUS)
Napisati SQL:1999 naredbe kojima se:
a) Odlazu se svi letovi za Zurich 15.11.2003. godine (azurira se atribut STATUS na vrednost Odlozen).
b) Prikazuju svi direktni letovi iz VELIKE BRITANIJE u NEMACKU: datum, vreme, broj linije, naziv polaznog
aerodroma, naziv odredisnog aerodroma sortirano po datumu i vremenu polaska za sve letove u drugom kvartalu tekuce
godine.
c) Kreira pogled REALIZACIJA kojim se prikazuje ukupna realizacija po svim linijama u tekucoj godini. Prikazuju se
BrojLinije, BrojRealizovanihLetova, UkupanBrojPutnika, UkupniKapaciteti, ProsecnaPopunjenostLeta.
3. Data je relaciona shema:
PROJEKAT (SIFP,NAZP,BUDZET,RUKOVODILAC_P)
ANGAZOVANJE (SIFRAD, SIFP)
RADNIK (SIFRAD,IMER,DATRODJ,DATZAP,PLATA,SIFPR, SRUKOV)
PREDUZECE (SIFPR, NAZIV,GRAD)
Napisati SQL:1999 naredbe kojima se:
a) prikazuju svi podaci o radnicima koji su u tekucoj godini napunili 10 godina radnog staza a angazovani su na bar 2
projekta. ILI a) prikazuju svi podaci o radnicima koji imaju platu veu od 30.000 dinara, a angaovani su bar na jednom
projektu.
b) kreira pogled RUKOVODILAC (NazivPreduzeca, ImeRadnika, SifraRadnika, DatumZaposlenja) kojim se prikazuje za
sva preduzeca imena rukovodilaca koji nisu angazovani ni na jednom projektu.
c) prikazuje starosna struktura radnika po gradovima u kojima rade (broj radnika mladjih od 20 god, broj radnika izmedju
20 i 45 god. i broj radnika starijih od 45 godina).
4. Data je relaciona shema:
UNIVERZITET(SifraUniverziteta, NazivUniverziteta)
FAKULTET(SifraFakulteta, NazivFakulteta, SifraUniverziteta)
PROFESOR(JMBG, Ime, Prezime, DatZaposlenja, MaticniFakultet)
ANGAZOVANJE(JMBG, SifraFakulteta)
ISPLATA(JMBG, SifraFakulteta, DatumIsplate, Iznos)
Napisati SQL:1999 naredbe kojima se:
a) prikazati Prezime, Ime, GodineStaza, NazivFakulteta za one profesore koji su zaposleni na univerzitetu sa nazivom
Beogradski u poslednjih 10 godina. Rezultat sortirati u opadajucem redosledu godina staza i rastucem prezimena.

www.fonforum.org

b) prikazati za sve univerzitete fakultete koji imaju broj zaposlenih profesora izmedu 50 i 100, sortirano u opadajucem
redosledu u okviru univerziteta.
c) kreira pogled HONORARI(Prezime, Ime, BrojFakulteta, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesecne
isplate profesorima u prethodnoj godini koji su angazovani van maticnog fakulteta. Kolona BrojFakultet prikazuje broj
razlicitih fakulteta koji su isplatili honorar profesoru u datom mesecu.
5. Data je relaciona shema:
MESTO(SifraMesta, NazivMesta)
SKOLA(SifraSkole, NazivSkole, TipSkole, SifraMesta)
KANDIDAT(JMBG, Prezime, ImeRoditelja, Ime, DatRodj,UkupanUspeh, ZavrsenaSkola, DatumPrijave,
BrojPrijave);
SVEDOCANSTVO(JMBG, Godina, Prosek, SifraSkole)
OCENA(JMBG, Godina, Rbr, NazivPredmeta, Ocena)
TipSkole in ('Poljoprivredna', 'Tehnicka', 'Gimanzija', 'ostalo');
Ocena in (2,3,4,5);
Napisati SQL:1999 naredbe kojima se:
a) prikazuju prezime, ime, nazivSkole, ukupanUspeh i brojPrijave svih kandidata, koji su zavrsili neku tehnicku skolu,
prijavljenih 25.06.2003. Rezultat soritiranih u rastucem redosledu prezimena.
b) kreira pogled OpstiUspeh (Uspeh, BrojKandidata, ProsecanUspeh) kojim se prikazuje postignuti uspeh kandidata
(odlican, vrlo-dobar, dobar, dovoljan), broj kandidata, prosecan uspeh tih kandidata. Uzeti u obzir samo svedocanstva iz
cetvrte godine (zavrsne godine).
c) Kreira pogled UspehPoMestima (NazivMesta, Uspeh, BrojKandidata) kojim se prikazuje za svako mesto, broj
kandidata za navedene skolske uspehe (odlican, vrlo-dobar, dobar, dovoljan).
6. Data je relaciona shema:
FUDBALSKI_TIM (TIMID, NAZIV, GRAD)
IGRAC (IGRACID, IME_PREZIME, DAT_RODJENJA, TIMID)
UTAKMICA (RBKOLA,RBPARA,TIM_DOMACI,TIM_GOSTI,DATUM,TOTAL_DOMACI,TOTAL_GOSTI)
UTAKMICA_IGRAC (RBKOLA, RBPARA, IGRACID, MINUTAZA)
STAT_UTAKMICE (RBKOLA, RBPARA, VREME, IGRACID, DOGADJAJ)
(Napomena: Atribut dogadjaj moze sadrzati sledece vrednosti: GOL, AUTOGOL ,ZUTI KARTON,
CREVENI KARTON. Atribut VREME je tipa INTERVAL MINUTE TO SECOND.)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje statisticke podatke o igracima fudbalskog kluba PARTIZAN za odigranu utakmicu cetvrtog 4. kola
(prikazuje se minutaza svih igraca kluba). Ili
a) Prikazuju podaci o igraima fudbalskog tima Real Madrid koji NISU igrali na utakmici 7. kola.
b) Prikazuje najbolje strelce po odigranim kolima (prikazati broj kola, ime_prezime igraca, naziv tima i broj postignutih
golova). Najbolji strelac je onaj igrac koji je postigao najvise golova na utakmici (moze biti vise takvih igraca).
c) kreira se pogled TABELA_PRVENSTVA koja sadrzi Naziv_tima, UkupanBrojPoena, BrojPostignutihGolova,
BrojPrimljenihGolova, Gol_razlika, BrojOdigranihUtakmica, kojim se prikazuje naziv fudbalskog tima, broj bodova
dobijen na osnovu rezultata odigranih utakmica (ukoliko je rezultat utakmice neresen timovi dobijaju po 1 poen, pobednik
3 poena, porazeni 0 poena), podaci o ukupno postignutim, primljenim golovima, gol razlika kao i broj odigranih utakmica.
7. Data je relaciona shema:
VOZILO(SifraVozila, TipVozila)
LINIJA(BrojLinije, PolaznaStanica, DolaznaStanica)
STANICA(SifraStanice, NazivStanice)
RUTA(BrojLinije, SifraStanice, RB)
POLAZAK(SifraVozila, BrojLinije, DatumVreme, Status)
TipVozila in (Autobus, Tramvaj, Trolejbus);
Status in ('Uspesan', 'Otkazan', 'Kasnjenje');
RB u ruti definise redosled stanica na liniji;
Napisati SQL:1999 naredbe kojima se:
a) prikazuje SifraVozila, TipVozila, Datum i Vreme na liniji 18, u vremenu izmedu 13:00 i 17:00 casova za 01. i 07.
aprila 2003. godine gde je polazak otkazan (atribut Status) .

www.fonforum.org

b) kreira pogled DnevniRasporedPolazaka (BrojLinije, TipVozila, NazivPolazneStanice, NazivDolazneStanice,


UkupanBrojVozila) kojim se prikazuje planirani dnevni izlazak vozila za tekuci datum.
c) prikazuje sve podatke o liniji, dan i broj polazaka, za liniju koja je imala najmanje polazaka iz skupa maksimalno
realizovanih linija po danima u mesecu Januaru tekuce godine. Maksimalno realizovana linija za neki konkretan dan je
ona koja ima nejveci broj realizovanih polazaka.
d) daje pregled po kvartalima, pa po tipovima vozila, ukupan broj planiranih polazaka, broj uspesnih polazaka, broj
otkazanih polazaka i broj polazaka sa kasnjenjem za 2002. godinu.
8. Data je relaciona shema :
TIP_KOMPONENTE (TIPID, NAZIV, OPIS)
ATRIBUTI_TIPA(TIPID, ATRIBUTID,NAZIV, DOMEN, OBAVEZAN)
KOMPONENTA(KOMPID, SERIJSKIBROJ, TIPKOMPONENTE)
ATRIBUTI_KOMPONENTE(KOMPID, ATRIBUTID,VREDNOST)
VEZA(NADR_KOMPID, PODR_KOMPID)
SKLOP(KOMPONENTAID, NAZIV)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju sve komponente i nazivi i vrednosti njihovih obaveznih atributa koje pripadaju tipu komponente sa nazivom
AAA.
b) Dati prosene, minimalne i maksimalne vrednosti svih atributa sa domenom INTEGER za sve tipove komponenti.
c) Kreirati pogled POGRESNI_ATRIBUTI(KOMPID, ATRIBUTID, NAZIV_ATRIBUTA, GRESKA) kojim se
prikazuju svi pogreno uneti atributi za svaku komponentu. Ukoliko je komponenti pridru`en atribut koji nije definisan za
tip komponente kojem pripada komponenta u polje GRESKA upisati N/A. Ukoliko komponenti nije pridruen obavazan
atribut u polje GRESKA upisati OBAVEZAN.
d) Ubaciti u relaciju SKLOP sve primarne komponente koje se ne nalaze u relaciji. Primarne komponente su one koje
nisu ugradjene ni u jedan sklop.
9. Data je relaciona shema :
KNJIGA (KNJIGA-ID, NAZIV, GOD_IZDANJA, BROJ_AUTORA, BROJ_PRIMERAKA)
PRIMERAK_KNJIGE (KNJIGA-ID,EVIDENCIONI-BROJ, STATUS)
AUTOR(AUTOR-ID, IME)
NAPISAO(KNJIGA-ID, AUTOR-ID)
- Napisati SQL:1999 naredbe kojima se:
(a) Za sve autore prikazuje broj knjiga koje su napisali. Rezultat sortirati po broju knjiga.
(b) Prikazuju nazivi knjiga koje je napisao neparan broj autora i kojih ima u veem broju primeraka (podatak o broju
primeraka koristiti iz relacije PRIMERAK_KNJIGE, podatke o broju autora koristiti iz relacije NAPISAO).
(c) Proverava da li je vrednost atributa BROJ_AUTORA relacije KNJIGA jednaka broju n-torki relacije NAPISAO. Ako
je vrednost atributa ispravna upit treba da prikae naziv knjige i tekst Ispravan broj autora, a u suprotnom naziv knjige i
tekst Neispravan broj autora.
10. Data je relaciona shema :
HOTEL(HOTELID, NAZIV, ADRESA, GRAD, KLASA)
TIPSOBE(TIPSOBEID, NAZIV, OPIS)
SOBA (HOTELID, BROJSOBE, TIPSOBE, STATUS)
HOTEL_TIPSOBE (HOTELID,TIPSOBEID, UKBROJSOBA, CENA)
REZERVACIJA(HOTELID,RBR, DATUMOD, DATUMDO, TIPSOBEID, STATUS, BROJSOBE)
Napisati SQL:1999 naredbe kojima se:
a) Prikazati sledee podatke o kapacitetima hotela (nazivHotela, nazivTipaSobe, brojSoba I cenaSobe) za hotele klase 3
zvezdice koji imaju bar 2 (dve) jednokrevetne sobe. Rezultat upita sortirati po opadajuem redosledu nazivaTipaSobe
a u okviru njih u rastuem redosledu cena sobe.
b) Kreirati pogled kojim se za sve gradove prikazuju broj hotela po kategorijama. Pogled sadri sledee atribute:
nazivGrada, klasaHotela, ukupanBrojHotela, ukupanBrojSoba.
c) Na osnovu podatka o sobama (relacija SOBA) aurirati kapacitete svih hotela (atribut UKBROJSOBA relacije
HOTEL_TIPSOBE).

www.fonforum.org

11. Data je relaciona shema:


DOBAVLJAC(DOB, IMED, STATUS, GRAD)
KUPAC(KUP, IMEK, GRAD)
PROIZVOD(PRZ, IMEP, BOJA, TEZINA)
ISPORUKA(DOB, PRZ, KUP, DATUM, KOLICINA)
Napisati SQL naredbe kojima se:
a) prikazuju imena kupaca i primljene koliine proizvoda ute boje za isporuke u 2000. godini.
b) kreira pogled RAZMENA sa atributima IMED, GRADD, IMEK, GRADK kojima se prikazuje naziv dobavljaa, grad
dobavljaa, naziv kupca i grad kupca, za one dobavljae I kupce koji su imali robnu razmenu u tekuoj godini a da nisu iz
istog grada.
c) prikazati imena, gradove i koliine za one dobavljae koji su isporuili vi{e od 100 komada proizvoda Philips TV 51
u prvom kvartalu tekue godine. Rezultat prikazati u opadajuem redosledu koliina.
d) Napisati program u C (izuzetno u pseudo kodu) kojim se dobavljaima koji su imali vi{e od 100 isporuka u prvom
kvartalu tekue godine postavlja vrednost atributa STATUS na VIS. (Napomena: Relacioni sistem podr`ava samo upite
nad jednom tabelom.)
12. Dat je relacioni model:
KLINIKA (KLINIKAID, NAZIV, ADRESA, GRAD)
DOKTOR (DOKTORID, POL, IME, SPECIJALNOST, RADNI_STAZ)
RADI_NA_KLINICI (DOKTORID, KLINIKAID, BR_SATI)
DETE (DOKTORID, DETEID, IME, POL, STAROST, RAZRED)
- Napisati SQL naredbe kojima se:
(a) Prikazuju svi podaci o doktorima koji rade na veem broju klinika a koji imaju radni sta vei od 10 godina.
(b) Prikazuju Ime doktora, broj dece mukog pola, broj dece enskog pola i ukupan broj dece za svakog doktora ija je
specijalnost OFTAMOLOG
(c) Kreira pogled PROSEK_NA_KLINICI sa atributima Klinika, Naziv, Min_Sati, Prosecni_Sati, Max_sati kojima se
prikazuje ID klinike, naziv klinike i minimalni, prose~ni i maksimalni broj sati angaovanja doktora koji rade
iskljuivo na tim klinikama.
13. Data je relaciona shema:
PROJEKAT (SIFP,NAZP,BUDET,RUKOVODILAC_P)
ANGAZOVANJE (SIFRAD, SIFP)
RADNIK (SIFRAD,IMER,DATRODJ,DATZAP,PLATA,SIFPR, SRUKOV)
PREDUZECE (SIFPR, NAZIV,GRAD)
Napisati SQL:1999 naredbe kojima se:
a) prikazuju svi podaci o radnicima koji su u tekuoj godini napunili 10 godina radnog staa a angaovani su na bar 4
projekta.
b) prikazuje starosna struktura radnika po gradovima u kojima rade (broj radnika mladjih od 20 god, broj radnika izmedju
20 i 50 god. i broj radnika starijih od 50 godina).
c) kreira pogled RUKOVODILAC (NazivPreduzea, ImePrezimeRukovodioca, DatumZaposlenja, Plata) kojim se
prikazuju za sva preduzea svi rukovodioci kojima ime i prezime poinje na slovo M' a zavrava na i imaju platu
veu od 45.000 dinara, a bar na jednom projektu kojim rukovodi ima bar 30 angaovanih radnika.
14. Data je relaciona shema :
AERODROM(AEROID, NAZIV, DRZAVA, MESTO)
LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO)
LET(LINIJAID,DATUMiVREME, AVIONID)
AVION (AVIONID, OZNAKA, TIPAVIONA, BROJ_SEDISTA)
REZERVACIJA(LINIJAID,DATUMiVREME, RBR, STATUS)
STATUS in {OK, OTKAZAN}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju svi podaci o avionima koji imaju vie od 200 sedita, na svim letovima 05.10.2004. godine osim na letovima
za NEW YORK i LONDON.
b) Prikazuju svi direktni letovi iz VAJCARSKE za PANIJU: datum, vreme, broj linije, naziv polaznog aerodroma,
naziv odredinog aerodroma sortirano po datumu i vremenu polaska za sve letove u drugom kvartalu tekue godine.

www.fonforum.org

c) Kreira pogled REALIZACIJA kojim se prikazuje ukupna realizacija po svim linijama u tekuoj godini. Prikazuju se
BrojLinije, BrojRealizovanihLetova, UkupanBrojPutnika, UkupniKapaciteti, ProsenaPopunjenostLeta.
15. Data je relaciona shema :
HOTEL(HOTELID, NAZIV, ADRESA, GRAD, KLASA)
TIPSOBE(TIPSOBEID, NAZIV, OPIS)
SOBA (HOTELID, BROJSOBE, TIPSOBE, STATUS)
HOTEL_TIPSOBE (HOTELID,TIPSOBEID, UKBROJSOBA, CENA)
REZERVACIJA(HOTELID,RBR, DATUMOD, DATUMDO, TIPSOBEID, STATUS, BROJSOBE)
Napisati SQL:1999 naredbe kojima se:
a) Prikazati sledee podatke (nazivHotela, adresaHotela i cenaJednokrevetneSobe) svih hotela sa 4 zvezdice u gradu
Pariz koji imaju bar 50 soba naziva tipa Jednokrevetna a ne poseduju sobe tipa Trokrevetna. Rezultat upita
sortirati po rastuem redosledu ceneJednokrevetneSobe.
b) Prikazati sledee podatke o kapacitetima hotela (nazivHotela, nazivTipaSobe, brojSoba i cenaSobe) za hotele klase 3
zvezdice koji imaju bar 10 (deset) dvokrevetnih soba. Rezultat upita sortirati po opadajuem redosledu
nazivaTipaSobe a u okviru njih u rastuem redosledu cena sobe.
c) Kreirati pogled kojim se za sve gradove prikazuje broj hotela po kategorijama. Pogled sadri sledee atribute:
nazivGrada, klasaHotela, ukupanBrojHotela, ukupanBrojSoba.
16. Data je relaciona shema :
FIZICKO_LICE(FLID, PREZIME, IME, ADRESA, MESTO, JMBG, STATUS)
TIP_ISPLATE(TIPID, NAZIV)
TIP_OBAVEZE(OBVID, NAZIV_OBAVEZE)
OBRACUN(OBRID,DATUMISPLATE, FLID, TIPID, DATOD, DATDO, NETO_IZNOS)
OBRACUN_OBAVEZA(OBRID, OBVID, OSNOVICA_OBV,STOPA_OBV,IZNOS_OBV, ULAZI_U_BRUTO)
ULAZI_U_BRUTO in {DA, NE}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o isplaenim zaradama (naziv tipa isplate je ZARADE) zaposlenima (fiziko lice sa statusom
ZAPOSLEN) ije ime poinje na slovo C. Rezultat sortirati po prezimenu i imenu zaposlenog.
b) Prikazuje jmbg, prezime, ime , UkDavanja, UkBruto, UkNeto, BrojIsplata za sva fizika lica iji je ukupan bruto iznos
(UkBruto) vei od 500.000,00 dinara. UkDavanja predstavlja neto iznos svih obaveza, a UkBruto ini neto iznos
uvean za iznos obraunatih obaveza koje ulaze u bruto.
c) Kreira pogled PORESKA_PRIJAVA (tip, jmbg, prezime, ime, neto, osnovica, porez, pio, zdravstvo, nezaposlenost)
kojim se za svako fiziko lice daje matini broj, prezime i ime fizikog lica, ukupan isplaeni neto iznos, osnovica je
zbir osnovica na koju je raunat samo porez, kao i ukupne iznose pojedinih obaveza porez, pio, zdravstvo,
nezaposlenost. Atribut tip treba da prikazuje RADNIK ako je status fizikog lica 'ZAPOSLEN ili PENZIONER, a
TRECA LICA u svim ostalim sluajevima. Poreska prijava treba da sadri podatke samo za 2003. godinu.
17. Data je relaciona shema:
PONUDA(PonudaID, Datum, Naziv_preduzea,Telefon, Period_otplate, Gotovinski_popust, KonkursID)
STAVKA_PONUDE(PonudaID,Rb, Proizvoa, Cena, Garantni_rok, OpremaID)
KONKURS_ZA_NABAVKU(KonkursID, Datum_od, Datum_do)
STAVKA_KONKURSA(KonkursID,Rb, Kolicina, OpremaID)
VRSTA_OPREME(OpremaID, Naziv_opreme)
Napisati SQL:1999 naredbe kojima se:
a) Prikazati podatke o ponudama i stavkama ponuda(ifru ponude, datum, naziv preduzea, naziv proizvoaa opreme,
ponuenu cenu opreme, naziv opreme i period garancije) za sve ponude u tekuoj godini onih preduzea koja
odobravaju period otplate vei od godinu dana ili odobravaju gotovinski popust od bar 5%. Period otplate je izraen u
mesecima.
b) Prikazati ifru ponude, naziv preduzea i uslove plaanja za ona preduzea koja za opremu tipa KOMPJUTERSKA
OPREMA nude proizvode vie razliitih proizvoaa.
c) Kreirati pogled PREGLED_KONKURSA (IFRA_OPREME, NAZIV_OPREME, UK_KOL, GODINA) kojim se
prikazuje za sve vrste opreme, po godinama: ifra opreme, naziv i ukupna koliina koja je nabavljena konkursima u
toj godini. Prikazati podatke za 2004. i 2005. godinu (uzimati u obzir datum zatvaranja konkursa). Prikazati podatke i
za one vrste opreme koje nisu bile nabavljane u tom periodu.
ILI

www.fonforum.org

a) Prikazati sve podatke o ponudama koje su poslate u prethodnoj godini, sa periodom otplate do dve godine i
odobrenim gotovinskim popustom ispod 10%. U obzir uzeti samo ponude koje su poslate po konkursima za nabavku
koji su trajali due od 20 dana. Rezultat sortirati od najkasnijeg do najranijeg datuma ponude.
b) Prikazati ifru ponude i naziv preduzea koje je poslalo ponudu, pri emu se u ponudi za opremu tipa
KOMPJUTERSKA OPREMA nude proizvodi vie razliitih proizvoaa, a cena te opreme je izmeu 15 000 i 80
000 (bez uraunatog popusta).
18. Data je relaciona shema:
ZAPOSLENI(SifraZap, Ime, Prezime, Mlb, DatRodj, Pol ,SifraProf)
RADNO_MESTO(SifraRM, NazivRM, SifraProf)
ANAGAZOVANJE(SifraZap, SifraRM, DatOd, DatDo, SifraRS)
RADNI_STATUS(SifraRS, NazivRS)
OBRAZOVNI_PROFIL(SifraProf, StepenStrSpreme, NazivProf)
Pol in {M,Z}
StepenStrSpreme in {V,VI,VII}
NazivRS in {probni rad, pripravnicki staz, ugovor na odredjeno vreme, ugovor na neodredjeno vreme, ugovor o
delu}
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju svi podaci o zaposlenima (ifra, ime, prezime, matini broj, naziv obrazovnog profila ) za one zaposlene koji
imaju bar VI stepen strune spreme i koji nee u tekuoj ili narednoj godini stei pravo na odlazak u penziju po
osnovu starosti(U tekuoj ili narednoj godini navravaju Mukarci-65, ene-58).
b) Prikazuju ifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome je bilo angaovano
najmanje radnika.
c) Kreira pogled STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2004, BR_ZAP_2005, TREND,
PROCENTUALNO) kojim se prikazuje po svim iframa profila, broj osoba koje su zaposlene u 2005-oj, broj osoba koje
su zaposlene u 2004-oj, opis uoenog trenda RAST,PAD ili BEZ_PROMENA i procentualno izraena razlika
izmeu ove dve godine.
ILI
a) Prikazuju svi podaci o zaposlenima (ifra, ime, prezime, matini broj, naziv obrazovnog profila ) za one zaposlene koji
imaju V stepen strune spreme i koji su vie od 6 meseci na probnom radu.
b) Prikazuju ifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome je bila najvea
fluktuacija radnika. Fluktuacija radnog mesta je definisana preko broja angaovanja kod kojih je poznat datum odlaska
(DatDo), tj. ne raunaju se tekua angaovanja zaposlenih na tom radnom mestu.
c) Kreira pogled STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2005, BR_ZAP_2006, TREND,
PROCENTUALNO) kojim se prikazuje po svim iframa profila, broj osoba koje su zaposlene u 2006-oj, broj osoba koje
su zaposlene u 2005-oj, opis uoenog trenda RAST,PAD ili BEZ_PROMENA i procentualno izraena razlika
izmeu ove dve godine.
ILI
a) Prikazuju svi podaci o zaposlenima (ifra, ime, prezime, matini broj, naziv obrazovnog profila ) za one zaposlene koji
imaju IV stepen strune spreme i koji su manje od 2 meseca na probnom radu.
b) Prikazuju ifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome fluktuacija radnika
iznosi tano 5. Fluktuacija radnog mesta je definisana preko broja angaovanja kod kojih je poznat datum odlaska
(DatDo), tj. ne raunaju se tekua angaovanja zaposlenih na tom radnom mestu. Prikazati samo one nazive obrazovnih
profila koji poinju sa S i koji nisu dui od 10 karaktera.
c) Kreira pogled STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2006, BR_ZAP_2007, TREND,
PROCENTUALNO) kojim se prikazuje po svim iframa profila, broj osoba koje su zaposlene u 2006-oj, broj osoba koje
su zaposlene u 2007-oj, opis uoenog trenda RAST,PAD ili BEZ_PROMENA i procentualno izraena razlika
izmeu ove dve godine.
19. Data je relaciona shema:
POPISNAKOMISIJA(KomisijaID, PredsednikKomisije, BrojClanova)
LOKACIJA(LokacijaID, Naziv, TipLokacije)
POPISNALISTA(ListaID, DatumPopisa, KomisijaID, LokacijaID)
STAVKAPOPISNELISTE(ListaID,Rb,PopisanaKol, InventarniBroj)

www.fonforum.org

OSNOVNOSREDSTVO(InventarniBroj, Naziv, DatumNabavke, NabavnaVrednost, OtpisanaVrednost,


AmortizacionaGrupa)
TipLokacije in {PROIZVODNI POGON,ADMINISTRATIVNI OBJEKTI, POMONI OBJEKTI}
AmortiazacionaGrupa in { GRAEVINSKI OBJEKTI, OPREMA , AUTOMOBILI, KOMPJUTERSKA
OPREMA }
PopisanaKolicina in {0,1}
Napisati SQL:1999 naredbe kojima se:
a) Prikazati ifre lokacija koje su tipa 'PROIZVODNI POGON' i na kojima prema popisu iz 2004 nema popisanog manjka
(popisana koliina je za svaku stavku na toj lokaciji jednaka jedan).
b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama ukupnu nabavnu vrednost osnovnih sredstava,
ukupnu otpisanu vrednost i broj sredstava koja su potpuno otpisala vrednost. Od atributa prikazati ifre lokacija,
nazive lokacija i nazive amortizacionih grupa. Prikazati u opadajuem redosledu po ifri lokacija.
c) Prikazati radnike koji su bili predsednici popisnih komisija u poslednje dve godine na lokacijama koje su u toj godini
vaile za lokacije sa najmanjom ukupnom nabavnom vrednou osnovnih sredstava.
ILI
a) Prikazuju ifre lokacija koje su tipa PROIZVODNI POGON' i na kojima prema popisu iz 2007. ima manjka (popisana
koliina za bar jednu stavku na toj lokaciji je jednaka nuli).
b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama najmanju nabavnu vrednost osnovnih sredstava. Od
atributa prikazati ifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u opadajuem redosledu po ifri
lokacija.
c) Prikazati sva osnovna sredstva amortizacione grupe KOMPJUTERSKA OPREMA koja se nalaze u popisnoj listi za
2008 a nisu u popisnoj listi za 2007. godinu.
20. Data je relaciona shema:
IZDAVAC(SifIzdavaca,Naziv,BrojHale)
KNJIGA(SifKnjige,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifVrsteLit)
DNEVNA_PRODAJA(SifKnjige,Datum,BrojPrimeraka)
VRSTA_LITERATURE(SifVrsteLit,NazivVrsteLit)
AUTOR(SifAutora,ImePrezime,Drzava)
NAPISAO(SifAutora,SifKnjige)
Napisati SQL:1999 naredbe kojima se:
a) prikazuju svi podaci o knjigama koje spadaju u vrstu 'STRUCNA LITERATURA', koje je napisalo vie autora, od
kojih je jedan profesor Petrovic.
b) od tekueg datuma, pa do kraja sajma odobrava (aurira) popust od 20% za najslabije prodavano izdanje izdavake
kue Narodna knjiga. Najslabije prodavana knjiga je ona sa najmanjim procentualnim odnosom ukupnog broja
prodatih primeraka i tiraa.
c) kreira pogled KNJIGE_NA_POPUSTU sa kolonama (NazivIzdavaca, NazivVrsteLiterature, UkBrProdPrimeraka,
UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIznosPopusta) kojima se prikazuje po izdavacima na sajmu i za njih
po tipovima literature ukupan broj prodatih primeraka, ukupan prihod od prodaje, ukupna suma koju je izdavac
izgubio na ime odobrenog popusta i prosecan procenat popusta. Vriti prikaz podataka samo za knjige koje su na
popustu.
21. Data je relaciona shema:
IZDAVAC(SifIzdavaca,Naziv,BrojHale)
KNJIGA(SifKnjige,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifVrsteLit, SifIzdavaca)
DNEVNA_PRODAJA(SifKnjige,Datum,BrojPrimeraka)
VRSTA_LITERATURE(SifVrsteLit,NazivVrsteLit)
AUTOR(SifAutora,ImePrezime,Drzava)
NAPISAO(SifAutora,SifKnjige)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o knjigama: naslov, ime i prezime autora, cena, cena sa popustom (ukoliko ga ima, inae prikazati
punu cenu), naziv izdavaa i broj hale, za sve knjige koje nisu na popustu ili im je odobren popust tekueg dana.
b) Prikazuje najprodavanija knjiga iz skupa najslabije prodavanih knjiga po danima.
c)
Kreira
pogled
KNJIGE_NA_POPUSTU
sa
kolonama
(NazivIzdavaca,
NazivVrsteLiterature,
UkBrProdPrimerakaBezPopusta,
UkBrProdPrimSaPopustom,
UkPrihodOdProdaje,
UkOdobrenPopust,
ProsecanIznosPopusta) kojima se prikazuje za sve izdavace na sajmu, po svim tipovima literature naziv izdavaca, naziv

www.fonforum.org

vrste literature, broj prodatih primeraka bez popusta, broj prodatih primeraka sa popustom, ukupan prihod od prodaje (sa i
bez popusta), ukupna suma koju je izdavac izgubio na ime odobrenog popusta i prosecan procenat popusta.
22. Data je relaciona shema:
PopisnaKomisija(KomisijaID, PredsednikKomisije, BrojClanova)
Lokacija(LokacijaID, Naziv, TipLokacije)
PopisnaLista(ListaID, DatumPopisa, KomisijaID, LokacijaID)
StavkaPopisneListe(ListaID,Rb,PopisanaKol, InventarniBroj)
OsnovnoSredstvo(InventarniBroj,
Naziv,
DatumNabavke,
NabavnaVrednost,
OtpisanaVrednost,
AmortizacionaGrupa)
TipLokacije in {PROIZVODNI POGON,ADMINISTRATIVNI OBJEKTI, POMONI OBJEKTI}
AmortiazacionaGrupa in { GRAEVINSKI OBJEKTI, OPREMA , AUTOMOBILI, KOMPJUTERSKA
OPREMA }
PopisanaKolicina in {0,1}
Napisati SQL:1999 naredbe kojima se:
a) prikazuju sve lokacije na kojima prema popisu iz 2004. nema popisanog manjka (popisana koliina je za svaku stavku
na toj lokaciji jednaka jedan).
b) prikazuju radnici koji su bili predsednici popisnih komisija u poslednje dve godine na lokacijama koje su u toj godini
vaile za lokacije sa najveom ukupnom nabavnom vrednou osnovnih sredstava.
c) kreira pogled VrednostPopisanihOS (SifraLokacije, NazivLokacije, AmortizacionaGrupa, UkNabavnaVrednost,
UkOtpisanaVrednost, ProsStopaOtpisaneVred, UkVrednPopisanog Manjka) kojim se prikazuje po svim lokacijama i
po svim amortizacionim grupama: ifra lokacije, naziv lokacije, amortizaciona grupa, ukupna nabavna vrednost
sredstava, ukupna otpisana vrednost, prosean procenat otpisane vrednosti (procentualni odnos otpisane i nabavne
vrednosti) i ukupna sadanja vrednost sredstava (razlika nabavne i otpisane) koja nisu pronaena na odgovarajuoj
lokaciji.
23. Data je relaciona shema:
BIOSKOP(BioskopID,NazivBioskopa)
SALA(BioskopID,SalaID,BrojMesta)
FILM(FilmID,NazivFilma,ImeRezisera,Trajanje,Drava,Godina,Nagrade)
PROGRAM_FESTA(ProgramID,DatumOtvaranja,DatumZatvaranja,Urednik)
PROJEKCIJA(ProgramID,Rb,DatumVreme,CenaUlaznice,BrojPosetilaca,BioskopID, SalaID,
FilmID)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju ime filma, godina, ime autora, godina festivala, broj gledalaca, naziv bioskopa i naziv sale za sve
projekcije filmova autora sa imenom 'Pedro Almodovar' ije je vreme poetka od 12:00 do 18:00h, a
poseenost vea od 80%.
b) Prikazuju svi podaci o filmovima koji su prikazani poslednjih dana festivala, a nisu filmovi kojima su festivali
bili zatvoreni.
c) Kreira pogled GLEDANOST_FILMOVA (produkcija, uk_br_posetilaca, uk_ostvareni_prihod,
max_posecenost) kojim se prikazuje za filmove amerike produkcije ili koprodukcije: ukupan broj posetilaca,
ukupan prihod ostvaren od prodaje ulaznica i najvei procenat poseenosti projekcije od svih flmova te
produkcije. Ukoliko je u pitanju ameriki film u polju produkcija prikazati 'Sjedinjene amerike drave'.
Ukoliko je u pitanju koprodukcija, u polju produkcija prikazati 'Koprodukcija'(atribut drava je oblika USA,
USA/FRA/GB, ESP/USA, i sl).

produkcija
Sjedinjene amerike drave
Koprodukcija

uk_br_posetilaca

uk_ostvareni_prihod

max_posecenost

24. Data je relaciona shema:


BIOSKOP(BIOSKOPID, NAZIV_BIOSKOPA)
SALA(BIOSKOPID, SALAID, BROJ_MESTA)
FILM(FILMID,NAZIV_FILMA, IME_REZISERA, DRZAVA, GODINA, BROJ_NAGRADA)
PROGRAM_FESTA(PROGRAMID,DATUM_OTVARANJA,DATUM_ZATVARANJA,UREDNIK)

www.fonforum.org

PROJEKCIJA(PROGRAMID,RB, DATUM_VREME, CENA_ULAZNICE, BIOSKOPID, SALAID, FILMID,


BROJ_PRODATIH_KARATA)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje naziv bioskopa, naziv sale, naziv filma, i ime reisera za film koji je otvorio FEST 2005.(Pretpostavlja se da
je u najranijem terminu na dan otvaranja festivala bila samo jedna projekcija).
b) Poveava cena ulaznica za sve projekcije FEST-a 2006 u salama bioskopa Sava Centar, u terminima od 20 asova pa
do ponoi, za sve nagraene filmove. Za projekcije u velikoj sali, cene karata treba poveati za 150 dinara,a za projekcije
u maloj sali za 100 dinara. (Nazivi sala su VELIKA SALA i MALA SALA, respektivno).
c) Prikazati podatke o filmu za koji je registrovana najmanja poseenost iz skupa najgledanijih filmova po danima
festivala FEST-2004.
25. Data je relaciona shema:
SEZONA ( NAZIV_SEZONE , DATOD , DATDO)
PREDSTAVA (PREDID, NAZIV, TIP)
REPERTOAR (PREDID, DATUMIVREME, STATUS)
GLUMAC (GLUMID, IME, PREZIME)
POSTAVA (PREDID, GLUMID, NAZIV_SEZONE, ULOGA)
Vrednosti atributa STATUS mogu biti PLANIRANA, ODIGRANA ili OTKAZANA.
Napisati SQL:1999 naredbe kojima se:
a) Prikazati sve glumce koji u sezoni 2006/2007 nisu igrali u predstavi Mnogo buke ni oko ega.
b) Prikazati nazive svih predstava koje su u sezoni 2005/2006 odigrane tano jedanput.
c) Kreirati pogled kojim se prikazuje NAZIV PREDSTAVE, UKUPAN BROJ ODIGRANIH PREDSTAVA, UKUPAN
BROJ OTKAZANIH PREDSTAVA koje su najvie puta odigrane do tekueg datuma, a procenat otkazanih u odnosu na
ukupan broj predstava je manji od 10 procenata.
ILI
a) Prikazati naziv, datum i vreme odravanja svih drama koje se nalaze na repertoaru u junu tekue godine. Rezultat
sortirati u rastuem redosledu datuma i vremena odravanja.
b) Prikazati naziv predstave koja u sezoni 2009/2010 ima najvie glumaca u svojoj postavi.
c) Kreirati
pogled
REALIZACIJA_REPERTOARA_KOMED(GODINA,BR_ODIGRANIH_KOMEDIJA,
BR_OTKAZANIH_KOMEDIJA,PROCENAT_USPESNOSTI) kojim se za svaku kalendarsku godinu (ne sezonu
!!!) prikazuje broj odigranih komedija, broj otkazanih komedija i odnos broja odigranih komedija i ukupnog broja
komedija predvienog repertoarom. Prikazati podatke samo za one godine u kojima je repertoarom bilo predvieno
bar 20 prikazivanja komedija. Procenat uspenosti zaokruiti na dve decimale.
26. Data je relaciona shema:
SEZONA ( NAZIV_SEZONE , DATOD , DATDO)
PREDSTAVA (PREDID, NAZIV, TIP)
REPERTOAR (PREDID, DATUMIVREME, STATUS)
GLUMAC (GLUMID, IME, PREZIME)
POSTAVA (PREDID, GLUMID, NAZIV_SEZONE, ULOGA)
STATUS in (ODIGRANA, OTKAZANA)
TIP in (KOMEDIJA, DRAMA, TRAGEDIJA)
Napisati SQL:1999 naredbe kojima se:
d) Prikazati prezime i ime glumaca, kao i naziv sezone u kojoj su, u predstavi Svici, igrali ulogu iji naziv poinje
slovom O. Rezultat sortirati u opadajuem redosledu naziva sezone i rastuem redosledu prezimena glumca.
e) Prikazuju ifra i naziv predstave koja se u tekuoj godini najmanje puta nalazi na repertoaru.
f) Kreira pogled PREGLED_GLUMACA(GLUMACID, PREZIME, IME, BROJ_PREDSTAVA_08_09,
BROJ_PREDSTAVA_09_10) kojim se za svakog glumca prikazuju ifra, prezime, ime, broj predstava u ijim
postavama je bio u sezoni 2008/2009 i broj predstava u ijim postavama je bio u sezoni 2009/2010. U obzir uzeti
samo glumce koji su u svojoj karijeri bili u postavama vie od 20 razliitih predstava i kod kojih je broj komedija u
ijim postavama su bili u sezoni 2009/2010 vei od broja komedija u ijim postavama su bili u sezoni 2008/2009.
27. Data je relaciona shema:
SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja )
KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva)

www.fonforum.org

TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub)


ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati )
ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje Prezime, Ime, GodineStaza, Naziv kluba za one trenere koji su zaposleni u sportskom drutvu sa nazivom
Atleta u poslednjih 5 godina. Rezultat sortirati u opadajuem redosledu godina staa i rastuem prezimena.
b) Prikazuje za sva sportska drutva klubove koji imaju broj zaposlenih trenera izmedu 5 i 10, i koji su bili angaovani
samo u matinom klubu.
c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesene
isplate trenerima u prethodnoj godini koji su angaovani van matinog kluba. Kolona BrojKlubova prikazuje broj
razliitih klubova koji su isplatili honorar treneru u datom mesecu.
28. Data je relaciona shema:
LEKAR ( SifraLekara, Ime, Prezime, DatumZaposlenja, MaticniCentar)
ANGAZOVANJE (SifraCentra , SifraOrdinacije, SifraLekara , Datum, BrojSati)
MEDICINSKI CENTAR (SifraCentra, Naziv, Adresa, DatumOsnivanja)
ORDINACIJA (SifraCentra, SifraOrdinacije, Naziv, Adresa, DatumOsnivanja)
ISPLATA ( SifraIsplate, Datum, Iznos, SifraCentra , SifraOrdinacije, SifraLekara)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuje Prezime, Ime, GodineStaza, Naziv ordinacije za one lekare koji su zaposleni u centru sa nazivom Medicus
i koji su bili anagaovani u poslednjih 5 godina. Rezultat sortirati u rastuem redosledu godina staa i opadajuem imena.
b) Prikazuje za sve medicinske centre ordinacije koje imaju broj zaposlenih lekara manje od 5 a koji su bili anagaovani
samo u svom matinom centru.
c) Kreira pogled HONORARI(Prezime, Ime, BrojCentara, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesene
isplate lekarima u tekuoj godini koji su angaovani van matinog centra. Kolona BrojCentara prikazuje broj razliitih
ordinacija koje su isplatile honorar lekarima u prolom mesecu.
29. Data je relaciona shema:
SEMINAR (SIFSEM,NAZS,BUDZET,RUKOVODILAC_S)
UCESCE (SIFIST, SIFSEM)
ISTRAZIVAC (SIFIST,IMEIST,DATRODJ,DATZAP,PLATA,SIFINST, SRUKOV)
INSTITUT (SIFINST, NAZIV,GRAD)
Napisati SQL:1999 naredbe kojima se:
a) prikazuju svi podaci o istraivaima koji su u tekuoj godini napunili tano 5 godina radnog staa a uestvovali su na
vie od 60 seminara.
b) prikazuje starosna struktura istraivaa po gradovima u kojima rade (broj istraivaa mlaih od 22 god, broj istraivaa
izmeu 20 i 45 god. i broj istraivaa starijih od 50 godina).
c) kreira pogled RUKOVODILAC (NazivInstituta, ImeIstraivaa, SifraIstraivaa, DatumZaposlenja) kojim se prikazuje
za sve institute imena rukovodilaca koji su uestvovali na vie od 10 seminara u tekuoj godini.
30. Data je relaciona shema:
PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale)
ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifPravca, SifProdukcije)
DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka)
MUZICKI_PRAVAC(SifPravca,NazivPravca)
KOMPOZITOR(SifKompozitora,ImePrezime,Drzava)
KOMPONOVAO(SifKompozitora,SifAlbuma)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o albumima: naslov albuma, naziv produkcijske kue, tira i cena za sve albume kojima je tira vei
od 50.000 ili da im je tira manji od 50.000 ali popust vei od 10%.
ILI
a) Prikazuju podaci o albumima: naslov, ime i prezime kompozitora, cena, cena sa popustom (ukoliko ga ima,
inae prikazati punu cenu), naziv produkcijske kue i broj hale, za sve albume koje nisu na popustu ili im je
odobren popust tekueg dana.
b) Prikazuje najprodavaniji album iz skupa najslabije prodavanih albuma po danima.

www.fonforum.org

10

c)
Kreira
pogled
ALBUMI_NA_POPUSTU
sa
kolonama
(NazivProdukcijskeKuce,
NazivPravca,
UkBrProdPrimerakaBezPopusta,
UkBrProdPrimSaPopustom,
UkPrihodOdProdaje,
UkOdobrenPopust,
ProsecanIznosPopusta) kojima se prikazuje za sve produkcijske kue na sajmu, po svim muzikim pravcima naziv
produkcijske kue, naziv muzikog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa popustom, ukupan
prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kua izgubila na ime odobrenog popusta i
prosean procenat popusta.
31. Data je relaciona shema:
SOFTVERSKA_KUCA(SifSoftKuce,Naziv,BrojHale,Drzava)
SOFTVER(SifSoftvera,Naziv,Cena,SajamskiPopust,DatumOdobravanjaPopusta, SifTipa, SifSoftKuce)
DNEVNA_PRODAJA(SifSoftvera,Datum,BrojInstalacija)
TIP_SOFTVERA(SifTipaSoftvera,Naziv)
PROGRAMER(SifProgramera,ImePrezime,Drzava,DatumZaposlenja,SifSoftKuce)
IMPLEMENTIRAO(SifProgramera,SifSoftvera)
Napisati SQL:1999 naredbe kojima se:
a) Prikazuju podaci o softverima: naziv, cena, cena sa popustom (sajamski popust je iskazan procentualno), naziv
softverske kue i broj hale, za sve softvere kojima je popust odobren u tekuem mesecu i da naziv softvera sadri frazu
ERP.
b) Prikazuje naziv i ime softverske kue najslabije prodavanog softvera iz skupa najprodavanijih softvera po mesecima.
c) Kreira pogled SOFTVER_NA_POPUSTU sa kolonama (NazivSoftverskeKuce, NazivTipaSoftvera,
UkBrProdInstalacijaBezPopusta,
UkBrProdInstalacijaSaPopustom,
UkPrihodOdProdaje,
UkOdobrenPopust,
ProsecanIznosPopusta) kojima se prikazuje za sve softverske kue iz Srbije koje izlau na sajmu, po svim tipovima
softvera, naziv softverske kue, naziv softvera, broj prodatih instalacija bez popusta, broj prodatih instalacija sa
popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je softverska kua izgubila na ime
odobrenog popusta i prosean procenat popusta.
32. Data je relaciona shema:
PARTNER (SIFPAR, NAZIV, GRAD)
KUPAC (SIFK, IME, PREZIME, GODINARODJ, GRAD)
OBJEKAT (SIFO, STATUS, BROJSPRATOVA, LOKACIJA, SIFPAR_INVESTITOR, SIFPAR_IZVODJAC )
STAN (SIFO, SIFS, SPRAT, KVADRATURA, CENAPOM2, BROJSOBA)
KUPOPRODAJA (SIFO, SIFS, SIFK, DATUMUGO, DATUMISP)
STATUS IN (U_IZGRADNJI, ZAVRSEN)
Napisati SQL:1999 naredbe kojima se realizuju sledei zahtevi:
a) Prikazuje naziv kupca, kvadratura, cena i kategorija stana za sve kupljene stanove u izgradnji u Beogradu koje je kupio
kupac mladji od 30 godina. Ukoliko stan ima kvadruturu veu od 100 m2 kategorija stana je LUX, u suprotnom je
STANDARD.
b) Prikazuju svi podaci o onim izvodjaima koji su bili angaovani na izradi samo onih objekata iji su svi stanovi prodati
u poslednja dva meseca.
c) Kreira pogled STATISTIKA sa kolonama (SIFRA_INV, NAZIV, PRIHOD2007, PRIHOD2008, TREND) kojim se za
svakog investitora prikazuje uoen trend promene prihoda u 2008-oj u odnosu na 2007-mu godinu. Mogue vrednosti
trenda su: RAST, PAD, BEZ PROMENE. Prihod se rauna na osnovu prodaje stanova. Cena stana je jednaka
proizvodu kvadrature i cene po metru kvadratnom.
33. Data je relaciona shema:
TIM(TimID, Naziv, Grad)
FUDBALER(FudbalerID, Ime, Prezime, DatumRodjenja, Pozicija)
ANGAZOVANJE(FudbalerID, TimID, DatumOd, DatumDo)
UTAKMICA(UtakmicaID, Datum, BrGolDomacin, BrGolGost, TimDomacinID, TimGostID)
STATISTIKA_FUDBALERA(UtakmicaID, FudbalerID, TimID, DatumOd, BrojGolova, UkupnoSuteva,
SuteviUOkvirGola, UkupnoDodavanja, UspesnaDodavanja)
Pozicija in {golman, odbrana, vezni red, napad}
Napisati SQL:1999 naredbe kojima se realizuju sledei zahtevi:
a) Prikazati ime i prezime, kao i naziv tima, svih napadaa starijih od 28 godina koji su trenutno angaovani u timu iji
naziv poinje samoglasnikom. Rezultat sortirati u opadajuem redosledu prezimena napadaa.

www.fonforum.org

11

b) Prikazati ifru i naziv tima koji ima najmanju fluktuaciju fudbalera, odnosno, tima koji ima najmanji broj odlazaka
fudbalera. Fluktuacija fudbalera je definisana preko broja angaovanja kod kojih je poznat datum odlaska fudbalera
(DatumDo), tj. ne uzimaju se u obzir fudbaleri koji su trenutno u timu.
c) Kreirati pogled STATISTIKA_DOMACINA (TIMID, NAZIV_TIMA, UKUPNO_UTAKMICA, BROJ_POBEDA,
BROJ_NERESENIH, BROJ_PORAZA, UKUPNO_DATIH_GOLOVA, UKUPNO_PRIMLJENIH_GOLOVA) kojim
se za svaki tim prikazuje sifra, naziv, ukupan broj odigranih utakmica, broj pobeda, nereenih utakmica i broj poraza,
kao i ukupan broj datih i primljenih golova, pri cemu se u obzir uzimaju samo utakmice koje je tim igrao kao domain
u tekuoj godini.
ILI
a) Prikazati ime, prezime, datum roenja i naziv tima fudbalera koji trenutno igraju u timovima iz Londona, u veznom
redu i u timu se nalaze bar godinu dana.
b) Za svakog fudbalera prikazati ime, prezime, poziciju, naziv kluba u kom je poeo karijeru, kao i koliko je godina
proveo u tom klubu (obratiti panju na to da fudbaler moe i sada igrati u klubu u kom je poeo karijeru).
ILI

a) Prikazati sve podatke o fudbalerima koji su mlai od 25 godina, koji su u tim Real Madrida doli u toku tekue godine.
Rezultat sortirati u rastuem redosledu pozicije na kojoj fudbaler igra i opadajuem redosledu imena fudbalera.
b) Prikazati timove (timid i naziv tima) koji imaju vie od 3 napadaa koji su u klubu due od jedne godine.
c) Kreirati pogled STATISTIKA_NAPADACA ( FUDBALERID, PREZIME, IME,
NAZIV_TIMA,
UKUPNO_GOLOVA,
PROSECNO_GOL_PO_UTAKMICI,
PROCENAT_SUT_U_GOL,
PROCENAT_REALIZACIJE ) kojim se za svaki tim u kom je napada igrao prikazuje ifra napadaa, prezime, ime,
naziv tima, ukupan broj postignutih golova, prosean broj postignutih golova po utakmici, procenat uteva koji su ili u
okvir gola (u odnosu na ukupan broj uteva), kao i procenat realizacije, tj. koji je procenat od ukupnog broja uteva
rezultirao golom.

www.fonforum.org

12

XML zadaci
1. Za dati model objekti-veze:
SifraKataloga#

Datum

Katalog
1,m
RBr#

Cena

SifraArtikla#

1,1

Naziv

0,m

Stavka kataloga

Artikal

a) Napisati XML model zapisan pomou XML eme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML emi.
c) Napisati XQuery kojim se prikazuju svi katalozi koji sadre artikal Laptop i ija je prosena cena artikla
(tj. stavki kataloga) manja od 50 000.
2. Za dati model objekti-veze:
SifraFakture#

Iznos

Faktura
1,m
RBr#

Kolicina

Stavka fakture

1,1

SifraProizvoda#

0,m

Naziv

Proizvod

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Napisati XQuery kojim se prikazuju sve fakture koje sadre proizvod Notebook i iji je iznos vei od
45000.
d) Napisati XQuery kojim se prikazuju sve fakture koje sadre proizvod Chipsy i iji je iznos manji od
50000.
3.
SifraKursa#

KURS

NazivKursa

1,M

BRIND#

ImePrezime

1,1
STUDENT

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.

www.fonforum.org

4. Za dati relacioni model:


Dobavlja (SifraDob, NazivDob, AdresaDob)
Narudbenica (BrojNarDob, SifraDob)
StavkaNar (BrojNarDob, RedniBroj, Proizvod, Kolicina, Vrednost, Valuta)
a) napraviti XML emu
b) dati primer ekstenzije relacija datog relacionog modela i primer XML dokumenta na osnovu napravljene
XML eme
c) napisati XQuery kojim se prikazuju sve narudbenice kod kojima se nalaze narueni i proizvod "A" i
proizvod "B" od dobavljaa "XYZ"
5. Za dati model objekti-veze:
SifraRauna#

UkupniIznos

Raun
1,m
RBr#

SifraProizvoda#

Cena

Stavka rauna

1,1

0,m

Naziv

Proizvod

a) Napisati XML model zapisan pomou XML eme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML emi.
c) Napisati XQuery kojim se prikazuju svi rauni koji sadre proizvod Coca-Cola i iji je ukupni iznos vei
od 30 000.
6. Za dati model objekti-veze:
SifraNarudzbenice#

UkupniIznos

Narudbenica

1,1

SifraDobavljaca#

0,m

NazivDobavljaca

Dobavlja

1,m
RBr#

Naziv
proizvoda

Stavka
narudbenice

a) Napisati XML model zapisan pomou XML eme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML emi.
c) Napisati XQuery kojim se prikazuju sve narudbenice poslate dobavljau XYZ iji je ukupni iznos
manji od 55 000.
d) Napisati XQuery kojim se prikazuju sve narudbenice poslate dobavljau ABC Trade iji je ukupni
iznos vei od 500 000.

www.fonforum.org

7. Za dati model objekti-veze:


Naziv

ID#
Geografski entitet

0,1

BrojStanovnika

Grad

a)
b)
c)

1,1

Povrina
S

Pripada

0,m

Region

Napisati XML model zapisan pomou XML eme, kojim se najbolje odslikava dati PMOV.
Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML emi.
Napisati XQuery kojim se prikazuju svi gradovi sa vie od 50000 stanovnika koji pripadaju regionu
umadije.

8. Dat je DTD koji prikazuje uee studenata na projektima.


<!DOCTYPE SP [
<!ELEMENT SP (Projekat*)>
<!ELEMENT Projekat (Naslov, Student+)>
<!ATTLIST Projekat ProjNum ID>
<!ELEMENT Naslov (#PCDATA)>
<!ELEMENT Student>
<!ATTLIST Student BrInd ID Ime CDATA> ]>
a) Napraviti UML dijagram klasa ili model objekti-veze kojim se najbolje prikazuje dati DTD.
b) Napisati primer XML dokumenta koji je validan u skladu sa datim DTD-om.
c) Napisati XPath izraz kojim se prikazuju svi projekti u kojima uestvuje bar jedan student sa imenom "Marko".
9. Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML Shemi.
c) Napisati Xquery izraz kojim se prikazuje ime i prezime onih vozaa koji voze formulu sa snagom motora
veom od 700 konjskih snaga.
10. Za dati model objekti-veze:

www.fonforum.org

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Napisati XPath ili XQuery kojim se prikazuju svi avioni koji su u vlasnitvu kompanije koja ih je i proizvela.
11. Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.
12. Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa BrojPredmeta.
13. Za dati XML dokument:
<?xml version="1.0"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes" xml:space="preserve">
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
<share dt:dt="number">1000</share>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>
<share dt:dt="number">1500</share>
</stock>
<stock exchange="nasdaq">
<name>zysmergy inc</name>
<symbol>ZYSZ</symbol>
<price dt:dt="number">20.313</price>
<share dt:dt="number">2000</share>
</stock>
</portfolio>
a) Napisati XML schemu posmatrajui dati dokument kao templejt uz sledee pretpostavke: svi atributi su
obavezni; redosled oznaka je bitan; atribut exchange moze imati samo vrednosti nyse, nasdaq, i amx.
b) Uz pretpostavku da se podaci o validnim XML dokumentima skladiste u relacionoj bazi podataka, definisati
relacije kojima se omogucava njihovo skladistenje sa najmanje redudansi.
c) Napisati XQuery izraz kojim se prikazuju sva portfolija koja sadre deonice (stocks) kompanije zysmergy
inc..
www.fonforum.org

14. Za dati model objekti-veze:

a) Napisati XML model zapisan pomou XML Sheme, kojim se najbolje odslikava dati PMOV.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Definisati XML Schema ogranienje jedinstvenosti za vrednost atributa ImePrezime.
15. Za datu XML emu:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified">
<xsd:element name="BioskopskiRepertoar">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="Film" type="FilmType"/>
<xsd:element name="Bioskop" type="BioskopType"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="FilmType">
<xsd:sequence>
<xsd:element name="NazivFilma"/>
<xsd:element name="ImeRezisera" maxOccurs="unbounded"/>
<xsd:element name="Trajanje" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="FilmId" type="xsd:ID" use="required"/>
</xsd:complexType>
<xsd:complexType name="BioskopType">
<xsd:sequence>
<xsd:element name="NazivBioskopa"/>
<xsd:element name="Lokacija" minOccurs="0"/>
<xsd:element name="Sala" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NazivSale"/>
<xsd:element name="Projekcija" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DatumProjekcije"/>
<xsd:element name="BrojPosetilaca"/>
</xsd:sequence>
<xsd:attribute name="FilmId" type="xsd:IDREF" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

a) Nacrtati UML dijagram klasa ili model objekti-veze kojim se najbolje odslikava dati XML model.
b) Napisati primer validnog XML dokumenta koji sadri sve elemente date u XML shemi.
c) Napisati XQuery naredbu kojom se prikazuje ukupan broj projekcija u sali Rita Hayworth.
www.fonforum.org

You might also like