Professional Documents
Culture Documents
1.
2.
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
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.
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.
{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
NazivPesme,
NazivDraveOcenjivaa,
2.
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
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.
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.
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.
2.
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
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.
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.
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.
2.
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
3.
Navesti i u po jednoj reenici objasniti koje su dve osnovne prednosti korienja pogleda.
4.
(10 poena)
(10 poena)
5.
(10 poena)
1
6.
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.
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
NazivPesme,
NazivDraveOcenjivaa,
2.
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
5.
6.
<?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.
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.
2.
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
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.
(10 poena)
6.
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.
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.
2.
( 10 poena )
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
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.
6.
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.
BAZE PODATAKA
03.11. 2008. godine
1.
2.
( 10 poena )
3.
Spoljno spajanje. Objasniti svaku vrstu spoljnog spajanja i OBAVEZNO dati primere.
(10 poena)
4.
5.
6.
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.
{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)
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
NazivDraveOcenjivaa,
2.
( 10 poena )
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
3.
4.
5.
(10 poena)
(10 poena)
6.
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.
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 )
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:
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)
8. zadatak
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);
DOMEN
OGRANIENJE
INTEGER
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:
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),
8. zadatak
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)
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);
DOMEN
OGRANIENJE
INTEGER
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
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
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
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:
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)
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
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)
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
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#)
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
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.
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
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;
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
ifraOdeljenja
NazivOdeljenja
ifraRadnika
ImePrezime
ifraOdeljenja
Uprava
1000
Pera Peri
Uprava
1001
Marko Markovi
Raunski centar
1002
ika iki
Raunski centar
1003
Laza Lazi
Proizvodnja
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
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
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)
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
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
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
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.
nasleivanje stanja
Za nasleivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podreena klasa nasleuje celokupno stanje i ponaanje klase koju
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
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>
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)
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
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.
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).
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
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')));
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.
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
www.fonforum.org
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
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
www.fonforum.org
www.fonforum.org
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
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
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.
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
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