baze zadaci

101
1 BAZE PODATAKA 12. 02. 2008. godine 1. Data je relacija RasporedVozila (ŠifraGaraže, RegBroj, NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila) i sledeće funkcionalne zavisnosti: ŠifraGaraže, RegBroj -> NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila ŠifraGaraže -> NazivGaraže RegBroj -> ŠifraTipaVozila, NazivTipaVozila ŠifraTipaVozila -> NazivTipaVozila NazivTipaVozila -> ŠifraTipaVozila Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena ) 2. Dat je model objekti-veze: F A B G E C D AB1 AB2 H S CG1 0,1 0,M 0,M 0,1 1,1 0,M 0,7 1,M 0,M 0,M A1# A2 B1# B2 H1 C1# C2 G1 D1 F S 1,M F1 E1 1,1 a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H. (10 poena) 3. Pravila integriteta relacionog modela. Primere ograničenja opisati preko operacija relacione algebre. (10 poena) 4. Navesti, opisati i dati primer za složene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard). Za svaki tip dati opštu definiciju i način njihovog korišćenja u SQL naredbama. (11 poena) 5. a) Navesti i objasniti osnovne elemente grafa prethođenja transakcija. Dati definiciju kada Ti prethodi Tj. (4 poena) b) Proveriti da li postoji konflikt-serijabilnost izvršenja S1 skupa transakcija, a posle i S2. Dati obrazloženje. S1: r 2 (X), r 2 (Y), w 2 (X), r 1 (Y), w 1 (Y), r 3 (X), w 3 (X), w 3 (Y) S2: r 2 (X), r 2 (Y), r 1 (Y), w 1 (Y), r 3 (X), w 3 (X), w 3 (Y), w 2 (X) (6 poena)

Upload: filip-krstev

Post on 10-Dec-2015

327 views

Category:

Documents


32 download

DESCRIPTION

BP FON

TRANSCRIPT

Page 1: Baze Zadaci

1

BAZE PODATAKA 12. 02. 2008. godine 1. Data je relacija RasporedVozila (ŠifraGaraže, RegBroj, NazivGaraže, GaražnoMesto,

ŠifraTipaVozila, NazivTipaVozila) i sledeće funkcionalne zavisnosti: ŠifraGaraže, RegBroj -> NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila ŠifraGaraže -> NazivGaraže RegBroj -> ŠifraTipaVozila, NazivTipaVozila ŠifraTipaVozila -> NazivTipaVozila NazivTipaVozila -> ŠifraTipaVozila

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak).

( 10 poena ) 2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

H

S

CG1

0,1

0,M

0,M0,1

1,1

0,M

0,7

1,M

0,M

0,M

A1# A2B1# B2

H1

C1#C2

G1

D1

F

S

1,M

F1E1

1,1

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.

(10 poena)

3. Pravila integriteta relacionog modela. Primere ograničenja opisati preko operacija relacione algebre. (10 poena) 4. Navesti, opisati i dati primer za složene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard). Za svaki tip dati opštu definiciju i način njihovog korišćenja u SQL naredbama. (11 poena) 5. a) Navesti i objasniti osnovne elemente grafa prethođenja transakcija. Dati definiciju kada Ti prethodi Tj. (4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvršenja S1 skupa transakcija, a posle i S2. Dati obrazloženje.

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)

Page 2: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa ImePrezime.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU I DOMAĆEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema: ZAPOSLENI(SifraZap, Ime, Prezime, Mlb, DatRodj, Pol ,SifraProf) RADNO_MESTO(SifraRM, NazivRM, SifraProf) ANAGAZOVANJE(SifraZap, SifraRM, DatOd, DatDo, SifraRS) RADNI_STATUS(SifraRS, NazivRS) OBRAZOVNI_PROFIL(SifraProf, StepenStrSpreme, NazivProf)

Pol in {’M’,’Z’}

StepenStrSpreme in {’V’,’VI’,’VII’}

NazivRS in {’probni rad’, ’pripravnicki staz’, ’ugovor na odredjeno vreme’, ’ugovor na neodredjeno vreme’, ’ugovor o delu’} Napisati SQL:1999 naredbe kojima se: a) Prikazuju svi podaci o zaposlenima (šifra, ime, prezime, matični broj, naziv obrazovnog profila ) za one

zaposlene koji imaju ‘IV’ stepen stručne 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 tačno 5. Fluktuacija radnog mesta je definisana preko broja angažovanja kod kojih je poznat datum odlaska (DatDo), tj. ne računaju se tekuća angažovanja zaposlenih na tom radnom mestu. Prikazati samo one nazive obrazovnih profila koji počinju sa ‘S’ i koji nisu duži 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 uočenog trenda ‘RAST’,‘PAD’ ili ‘BEZ_PROMENA’ i procentualno izražena razlika između ove dve godine. (8 poena )

8. Napraviti model objekti-veze za deo informacionog sistema biblioteke. Potrebno je voditi evidenciju o publikacijama sa sledećim osnovnim atributima: PublikacijaID, Naziv, BrojPrimeraka. Publikacija može biti: knjiga ili časopis ili dnevne novine. Knjiga ima osnovna obeležja redni broj izdanja i godinu izdanja, a pored toga potrebno je beležiti i sve autore. Za časopis potrebno je pamtiti broj, mesec i kratak sadržaj, 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 izdavaču. Za svaku publikaciju obezbediti evidentiranje datuma zaduženja i datuma razduženja od strane člana biblioteke. ( 10 poena )

Page 3: Baze Zadaci

1

BAZE PODATAKA 11. 03. 2008. godine 1. Data je relacija Evrovizija (Izvođač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika) i sledeće funkcionalne zavisnosti: Izvođač, ŠifraDržaveOcenjivača -> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika ŠifraDržaveOcenjivača -> NazivDržaveOcenjivača Izvođač -> NazivPesme, ŠifraJezika, NazivJezika ŠifraJezika -> NazivJezika

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak).

( 10 poena ) 2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

HS

CG1

0,1

1,M

0,11,1

0,M

1,M

3,30,1

0,2

0,M

A1# A2B1# B2

H1

C1#

C2

G1

D1

F

S

1,M

F1E1

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.

(10 poena)

3. Poslovna pravila integriteta relacionog modela. Dati za svaki podtip ovih ograničenja primer. (10 poena) 4. Navesti, opisati i dati primer za složene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard). Za svaki tip dati opštu definiciju i način njihovog korišćenja u SQL naredbama. (10 poena) 5. a) Navesti i objasniti osnovne elemente grafa prethođenja transakcija. Dati definiciju kada Ti prethodi Tj. (4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvršenja S1 skupa transakcija, a posle i S2. Dati obrazloženje.

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)

Page 4: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa BrojPredmeta.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU I DOMAĆEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema: PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale) ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust,

DatumOdobravanjaPopusta, SifPravca, SifProdukcije) DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka) MUZICKI_PRAVAC(SifPravca,NazivPravca) KOMPOZITOR(SifKompozitora,ImePrezime,Drzava) KOMPONOVAO(SifKompozitora,SifAlbuma) Napisati SQL:1999 naredbe kojima se: a) Prikazuju podaci o albumima: naslov, ime i prezime kompozitora, cena, cena sa popustom (ukoliko ga ima,

inače prikazati punu cenu), naziv produkcijske kuće i broj hale, za sve albume koje nisu na popustu ili im je odobren popust tekućeg 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 kuće na sajmu, po svim muzičkim pravcima naziv produkcijske kuće, naziv muzičkog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kuća izgubila na ime odobrenog popusta i prosečan 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 sledećim osnovnim atributima: Komercijalni naziv, Hemijski naziv, Doziranje, Dejstvo, Neželjeni efekti. Svaki lek se koristi za lečenje najmanje jedne vrste indikacija (bolesti). S druge strane, za svaki lek potrebno je dati kontraindikacije (u kojim slučajevima se ne sme koristiti) kojih može biti više. Svaki lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi jedan i samo jedan proizvođač. Lek se pakuje u više oblika (npr. tableta, sirup, injekcija, prašak itd.). Za svaku vrstu pakovanja leka potrebno je voditi evidenciju o količini i sastavu. Lek može a ne mora imati zamene, a takođe lek može biti zamena drugim lekovima iz iste grupe. ( 11 poena )

Page 5: Baze Zadaci

1

BAZE PODATAKA 14. 05. 2008. godine 1. Data je relacija ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime,

PeriodAngažovanja, ŠifraSektora, NazivSektora) i sledeće funkcionalne zavisnosti: ŠifraProjekta, JMBG -> PeriodAngažovanja, ŠifraSektora, NazivSektora ŠifraProjekta, JMBG -> NazivProjekta, ImePrezime ŠifraProjekta -> NazivProjekta JMBG -> ImePrezime, ŠifraSektora, NazivSektora ŠifraSektora -> NazivSektora NazivSektora -> ŠifraSektora

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak).

( 10 poena ) 2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

HS

CG1

0,1

1,M

0,11,1

0,M

1,M

3,30,1

0,2

0,M

A1# A2B1# B2

H1

C1#

C2

G1

D1

F

S

1,M

F1E1

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.

(10 poena)

3. Poslovna pravila integriteta relacionog modela. Dati za svaki podtip ovih ograničenja 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 prethođenja transakcija. Dati definiciju kada Ti prethodi Tj. (4 poena)

b) Proveriti da li postoji konflikt-serijabilnost izvršenja S1 skupa transakcija, a posle i S2. Dati obrazloženje.

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)

Page 6: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa BrojPredmeta.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU I DOMAĆEM ZADATKU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema: PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale) ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust,

DatumOdobravanjaPopusta, SifPravca, SifProdukcije) DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka) MUZICKI_PRAVAC(SifPravca,NazivPravca) KOMPOZITOR(SifKompozitora,ImePrezime,Drzava) KOMPONOVAO(SifKompozitora,SifAlbuma) Napisati SQL:1999 naredbe kojima se: a) Prikazuju podaci o albumima: naslov albuma, naziv produkcijske kuće, tiraž i cena za sve albume kojima je

tiraž veći od 50.000 ili da im je tiraž manji od 50.000 ali popust veći 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 kuće na sajmu, po svim muzičkim pravcima naziv produkcijske kuće, naziv muzičkog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kuća izgubila na ime odobrenog popusta i prosečan procenat popusta.

(8 poena) 8. Napraviti model objekti-veze za deo informacionog sistema Svetskog prvenstva u fudbalu. Potrebno je voditi evidenciju o reprezentacijama učesnicama takmičenja sa osnovnim atributima ŠifraDržave, NazivDržave, kao i o njenim igračima sa sledećim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godište. Svaka reprezentacija je raspoređena u jednu i samo jednu kvalifikacionu grupu. Omogućiti beleženje grada u kojem se igrala utakmica. Potrebno je modelovati utakmice, gde se tačno zna koja je reprezentacija u ulozi domaćina a koja u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih golova domaće i gostujuće reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi takmičenja se odigrala (kvalifikacije u grupi, četvrtfinale, polufinale, finale). Za svakog igrača je potrebno voditi statistiku učinka na svakoj odigranoj utakmici, gde učinak podrazumeva evidenciju broja golova, broja udaraca u okvir gola, kao i da li je dobio žuti ili crveni karton. ( 11 poena )

Page 7: Baze Zadaci

1

BAZE PODATAKA 05. 07. 2008. godine 1. Data je relacija ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime,

PeriodAngažovanja, ŠifraSektora, NazivSektora) i sledeće funkcionalne zavisnosti: ŠifraProjekta, JMBG -> PeriodAngažovanja, ŠifraSektora, NazivSektora, NazivProjekta,

ImePrezime ŠifraProjekta -> NazivProjekta JMBG -> ImePrezime, ŠifraSektora, NazivSektora ŠifraSektora -> NazivSektora NazivSektora -> ŠifraSektora

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena )

2. Dat je model objekti-veze:

A

B

G

C

E

D

AB1

AB2

M

0,1

0,1

0,M0,1

1,1

0,M 0,12

1,M

0,M

0,M

A1# A2B1# B2

H1

E1#

E2

G1

D1

F

1,M

F1C1

0,M

CH

Transformisati prikazani model objekti-veze u relacioni model. (10 poena)

3. Navesti i u po jednoj rečenici objasniti koje su dve osnovne prednosti korišćenja pogleda. (10 poena) 4. Dat je objektni model. Podrazumeva se da svi tipovi imaju atribute ID i Naziv.

a) Dati ODL naredbe za kreiranje sheme objektne baze. b) Napisati OQL upit kojim se prikazuju svi projekti na kojima učestvuje i profesor koji je inicirao taj projekat.

(10 poena)

5. Vremensko označavanje transakcija. (10 poena)

Page 8: Baze Zadaci

2

6. Za dati model objekti-veze:

Letilica

Avion Kompanija

S

Proizvođač

0,1

0,M

LID

BrojSedista

BrojMotora

NazivPIB

1,1

Vlasnik1,10,M

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Napisati XPath ili XQuery kojim se prikazuju svi avioni koji su u vlasništvu kompanije koja ih je i proizvela.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema:

SEMINAR (SIFSEM,NAZS,BUDZET,RUKOVODILAC_S) UCESCE (SIFIST, SIFSEM) ISTRAZIVAC (SIFIST,IMEIST,DATRODJ,DATZAP,PLATA,SIFINST, SRUKOV) INSTITUT (SIFINST, NAZIV,GRAD)

Napisati SQL:1999 naredbe kojima se: a) prikazuju svi podaci o istraživačima koji su u tekućoj godini napunili tačno 5 godina radnog staža a učestvovali

su na više od 60 seminara. (8 poena)

b) prikazuje starosna struktura istraživača po gradovima u kojima rade (broj istraživača mlađih od 22 god, broj istraživača između 20 i 45 god. i broj istraživača starijih od 50 godina).

(8 poena)

c) kreira pogled RUKOVODILAC (NazivInstituta, ImeIstraživača, SifraIstraživača, DatumZaposlenja) kojim se prikazuje za sve institute imena rukovodilaca koji su učestvovali na više od 10 seminara u tekućoj godini.

(8 poena) 8. Napraviti model objekti-veze za zadati verbalni opis. U cipelgradu žive cipelići i čizmići. I za cipeliće i za čizmiće može se reći da su obućići. Cipelići mogu biti papučići ili nanulići ili opančići. Čizmići se dele na cokuliće i gojzeriće. Cokulići mogu da se druže sa svim cipelićima osim sa papučićima. Nanulić može ali ne mora da se druži sa najviše jednim papučićem, dok jedan papučić može da se druži sa više nanulića. Gojzerići su dovoljni sami sebi tako da se druže međusobno. Kada se udruže cokulići, opančići i nanulići onda se to naziva srpčići. ( 11 poena )

Page 9: Baze Zadaci

1

BAZE PODATAKA 30. 08. 2008. godine 1. Data je relacija Evrovizija (Izvođač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika) i sledeće funkcionalne zavisnosti: Izvođač, ŠifraDržaveOcenjivača -> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika ŠifraDržaveOcenjivača -> NazivDržaveOcenjivača Izvođač -> NazivPesme, ŠifraJezika, NazivJezika ŠifraJezika -> NazivJezika

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena )

2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

H

S

CG1

0,1

0,M

0,M0,1

1,1

0,M

0,7

1,M

0,M

0,M

A1# A2B1# B2

H1

C1#C2

G1

D1

F

S

1,M

F1E1

1,1

Transformisati prikazani model objekti-veze u relacioni model. Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H. (10 poena)

3. Objasniti osnove relacionog upitnog jezika QBE (Query by Example). (10 poena) 4. Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u? (10 poena)

5. Šta je Transakcija? Objasniti skup osobina koje transakcija mora da poseduje. (10 poena)

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

Page 10: Baze Zadaci

2

<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 posmatrajući dati dokument kao templejt uz sledeće 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 sadrže deonice (stocks) kompanije „zysmergy inc.“.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU, A PRVI PUT IZLAZE NA ISPIT. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema: PopisnaKomisija(KomisijaID, PredsednikKomisije, BrojClanova) Lokacija(LokacijaID, Naziv, TipLokacije) PopisnaLista(ListaID, DatumPopisa, KomisijaID, LokacijaID) StavkaPopisneListe(ListaID,Rb,PopisanaKol, InventarniBroj) OsnovnoSredstvo(InventarniBroj, Naziv, DatumNabavke, NabavnaVrednost, OtpisanaVrednost, AmortizacionaGrupa) TipLokacije in {‘PROIZVODNI POGON‘,‘ADMINISTRATIVNI OBJEKTI‘, ‘POMOĆNI OBJEKTI‘} AmortiazacionaGrupa in { ‘GRAĐEVINSKI OBJEKTI’, ‘OPREMA’ , ‘AUTOMOBILI’, ‘KOMPJUTERSKA OPREMA’ } PopisanaKolicina in {0,1} Napisati SQL:1999 naredbe kojima se: a) Prikazuju šifre lokacija koje su tipa 'ADMINISTRATIVNI OBJEKTI' i na kojima prema popisu iz 2008 nema

popisanog viška (popisana količina je za svaku stavku na toj lokaciji jednaka nula). (8 poena)

b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama ukupnu nabavnu vrednost osnovnih sredstava i ukupnu otpisanu vrednost. Od atributa prikazati šifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u rastućem redosledu po šifri lokacija.

(8 poena)

c) Prikazati radnike koji su bili predsednici popisnih komisija u poslednje tri godine na lokacijama koje su u toj godini važile za lokacije sa najvećom ukupnom nabavnom vrednošću osnovnih sredstava.

(8 poena) 8. Napraviti model objekti-veze za deo informacionog sistema Evropskog prvenstva u košarci. Potrebno je voditi evidenciju o reprezentacijama učesnicama takmičenja sa osnovnim atributima ŠifraDržave, NazivDržave, kao i o njenim igračima sa sledećim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godište. Svaka reprezentacija je raspoređena u jednu i samo jednu kvalifikacionu grupu. Sve utakmice jedne kvalifikacione grupe se igraju u samo jednom gradu. Potrebno je modelovati utakmice, gde se tačno zna koja je reprezentacija u ulozi domaćina a koja u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih poena domaće i gostujuće reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi takmičenja se odigrala (kvalifikacije u grupi, baraž, četvrtfinale, polufinale, finale ...). Za svakog igrača je potrebno voditi statistiku učinka na svakoj odigranoj utakmici, gde učinak 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 )

Page 11: Baze Zadaci

1

BAZE PODATAKA 20. 09. 2008. godine 1. Data je relacija UčesnikTrke (ŠifraTrke, OlimpijskiBroj, NazivTrke, RBStaze

ImePrezimeTrkača, ŠifraDržave, NazivDržave) i sledeće funkcionalne zavisnosti: ŠifraTrke, OlimpijskiBroj -> RBStaze, ŠifraDržave, NazivDržave ŠifraTrke, OlimpijskiBroj -> NazivTrke, ImePrezimeTrkača ŠifraTrke -> NazivTrke OlimpijskiBroj -> ImePrezimeTrkača, ŠifraDržave, NazivDržave ŠifraDržave -> NazivDržave

Normalizovati datu relaciju direktnim korišćenjem BCNF (Obavezno objasniti postupak). ( 10 poena )

2. Dat je model objekti-veze:

F

AB

C

E

G

D

AB1

AB2

S

M

0,1

0,1

0,M0,1

1,1

0,M0,23

1,M

0,M

1,M

A1# A2B1# B2

H1

G1#

G2

C1

D1

F

S

1,M

F1E1

0,M

CH

Transformisati prikazani model objekti-veze u relacioni model. Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete B, C, D, G, H. (10 poena)

3. Spoljno spajanje. Objasniti svaku vrstu spoljnog spajanja i OBAVEZNO dati primer. (10 poena) 4. Navesti, opisati i dati primer za složene konstruisane tipove u objektno-relacionom bp (SQL-1999 standard). Za svaki tip dati opštu definiciju i način njihovog korišćenja u SQL naredbama. (10 poena)

5. Vremensko označavanje transakcija. (10 poena)

Page 12: Baze Zadaci

2

6. Za dati relacioni model: Dobavljač (SifraDob, NazivDob, AdresaDob) Narudžbenica (BrojNarDob, SifraDob) StavkaNar (BrojNarDob, RedniBroj, Proizvod, Kolicina, Vrednost, Valuta) a) napraviti XML šemu b) dati primer ekstenzije relacija datog relacionog modela i primer XML dokumenta na osnovu napravljene XML

šeme c) napisati XQuery kojim se prikazuju sve narudžbenice kod kojima se nalaze naručeni i proizvod "A" i proizvod

"B" od dobavljača "XYZ" (15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU, A PRVI PUT IZLAZE NA ISPIT. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema: PopisnaKomisija(KomisijaID, PredsednikKomisije, BrojClanova) Lokacija(LokacijaID, Naziv, TipLokacije) PopisnaLista(ListaID, DatumPopisa, KomisijaID, LokacijaID) StavkaPopisneListe(ListaID,Rb,PopisanaKol, InventarniBroj) OsnovnoSredstvo(InventarniBroj, Naziv, DatumNabavke, NabavnaVrednost, OtpisanaVrednost, AmortizacionaGrupa) TipLokacije in {‘PROIZVODNI POGON‘,‘ADMINISTRATIVNI OBJEKTI‘, ‘POMOĆNI OBJEKTI‘} AmortizacionaGrupa in { ‘GRAĐEVINSKI OBJEKTI’, ‘OPREMA’ , ‘AUTOMOBILI’, ‘KOMPJUTERSKA OPREMA’ } PopisanaKolicina in {0,1} Napisati SQL:1999 naredbe kojima se: a) Prikazuju šifre lokacija koje su tipa ’PROIZVODNI POGON' i na kojima prema popisu iz 2007. ima manjka

(popisana količina za bar jednu stavku na toj lokaciji je jednaka nuli). (8 poena)

b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama najmanju nabavnu vrednost osnovnih sredstava. Od atributa prikazati šifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u opadajućem redosledu po šifri lokacija.

(8 poena)

c) Prikazati sva osnovna sredstva amortizacione grupe „KOMPJUTERSKA OPREMA“ koja se nalaze u popisnoj listi za 2008 a nisu u popisnoj listi za 2007. godinu. (8 poena)

8. Napraviti model objekti-veze za deo informacionog sistema SPA centra. SPA centar nudi razne vrste usluga. Postoje pojedinačne usluge (bazen, sauna, đakuzi, fitnes, masaža, akupunktura ...) i paketi usluga. Paket usluga objedinjuje već postojeće pojedinačne usluge. Potrebno je voditi evidenciju korisnika usluga Centra (ID, ImePrezime, Adresa, KontaktTelefon). Takođe, potrebno je voditi evidenciju korišćenja usluga za svakog korisnika sa tačnim datumom korišćenja bilo da je pojedinačna usluga ili paket usluga. Modelovati cenovnik usluga tako da se prati istorija promene cena za svaku pojedinačnu uslugu. Paket usluga nema definisanu cenu već je samo definisan popust za svaku pojedinačnu uslugu koja je uključena u paket. ( 11 poena )

Page 13: Baze Zadaci

1

BAZE PODATAKA 11.10. 2008. godine 1. Data je relacija RasporedVozila (ŠifraGaraže, RegBroj, NazivGaraže, GaražnoMesto,

ŠifraTipaVozila, NazivTipaVozila) i sledeće funkcionalne zavisnosti: ŠifraGaraže, RegBroj -> NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila ŠifraGaraže -> NazivGaraže RegBroj -> ŠifraTipaVozila, NazivTipaVozila ŠifraTipaVozila -> NazivTipaVozila NazivTipaVozila -> ŠifraTipaVozila

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena ) 2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

HS

CG1

0,1

1,M

0,11,1

0,M

1,M

3,30,1

0,2

0,M

A1# A2B1# B2

H1

C1#

C2

G1

D1

F

S

1,M

F1E1

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, C, D, G, E.

(10 poena)

3. Navesti sve dodatne operacije relacione algebre koje su uvedene zbog postojanja nula vrednosti u bazi podataka i OBAVEZNO dati primere.

(10 poena) 4. Date su tabele R(P,A) i S(F,B). Uz pretpostavku da postoji referencijalno ograničenje: S.F je spoljni ključ koji se referencira na primarni R.P, napisati triger na nivou naredbe kojim se implementira dinamičko pravilo integriteta “on update default” i „on delete nullifies“. (10 poena) 5. Semantika i obrada ECA pravila.

(10 poena)

Page 14: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa ImePrezime.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema:

SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja ) KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva) TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub) ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati ) ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera) Napisati SQL:1999 naredbe kojima se: a) Prikazuje Prezime, Ime, GodineStaza, Naziv kluba za one trenere koji su zaposleni u sportskom društvu sa

nazivom «Atleta» u poslednjih 5 godina. Rezultat sortirati u opadajućem redosledu godina staža i rastućem prezimena.

(8 poena)

b) Prikazuje za sva sportska društva klubove koji imaju broj zaposlenih trenera izmedu 5 i 10, i koji su bili angažovani samo u matičnom klubu.

(8 poena)

c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesečne isplate trenerima u prethodnoj godini koji su angažovani van matičnog kluba. Kolona BrojKlubova prikazuje broj različitih klubova koji su isplatili honorar treneru u datom mesecu.

(8 poena) 8. Nacrtati dijagram objekti-veze za deo kadrovske evidencije u vazduhoplovnoj kompaniji. Potrebno je voditi evidenciju o zaposlenima sa sledećim zajedničkim atributima: JMBG, ImePrezime, GodinaRođenja. Svaki zaposleni je ili Avio-mehaničar ili Pilot ili Stjuardesa(Stjuard). Za svakog avio-mehaničara potrebno je znati datum dobijanja licence za određeni tip aviona (ŠifraTipaAviona, NazivTipaAviona). Jedan avio-mehaničar može imati licence za više 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 može biti dodeljen istom avionu više puta bez obzira na ulogu. Voditi evidenciju i o rasporedu stjuardesa (stjuarda) po avionima. Potrebno je omogućiti pamćenje poznavanja stranih jezika za svaku stjuardesu (stjuarda), moraju znati bar dva strana jezika. ( 11 poena )

Page 15: Baze Zadaci

1

BAZE PODATAKA 03.11. 2008. godine 1. Data je relacija ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime,

PeriodAngažovanja, ŠifraSektora, NazivSektora) i sledeće funkcionalne zavisnosti: ŠifraProjekta, JMBG -> PeriodAngažovanja, ŠifraSektora, NazivSektora,

NazivProjekta, ImePrezime ŠifraProjekta -> NazivProjekta JMBG -> ImePrezime, ŠifraSektora, NazivSektora ŠifraSektora -> NazivSektora NazivSektora -> ŠifraSektora

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena ) 2. Dat je model objekti-veze:

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.

(10 poena)

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

4. Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u? (10 poena) 5. Semantika i obrada ECA pravila.

(10 poena)

Page 16: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Napisati XPath ili XQuery kojim se prikazuju svi avioni koji su u vlasništvu kompanije koja ih je i

proizvela. (15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema:

ZAPOSLENI(SifraZap, Ime, Prezime, Mlb, DatRodj, Pol ,SifraProf) RADNO_MESTO(SifraRM, NazivRM, SifraProf) ANAGAZOVANJE(SifraZap, SifraRM, DatOd, DatDo, SifraRS) RADNI_STATUS(SifraRS, NazivRS) OBRAZOVNI_PROFIL(SifraProf, StepenStrSpreme, NazivProf) Pol in {’M’,’Z’} StepenStrSpreme in {’V’,’VI’,’VII’} NazivRS in {’probni rad’, ’pripravnicki staz’, ’ugovor na odredjeno vreme’, ’ugovor na neodredjeno vreme’, ’ugovor o delu’} Napisati SQL:1999 naredbe kojima se: a) Prikazuju svi podaci o zaposlenima (šifra, ime, prezime, matični broj, naziv obrazovnog profila ) za one

zaposlene koji imaju ‘V’ stepen stručne spreme i koji će u tekućoj ili narednoj godini steći pravo na odlazak u penziju po osnovu starosti(U tekućoj ili narednoj godini navršavaju Muškarci-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 angažovanja. (8 poena )

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

PROCENTUALNO) kojim se prikazuje po svim šiframa profila, broj osoba koje su zaposlene u 2007-oj, broj osoba koje su zaposlene u 2008-oj i opis uočenog trenda ‘RAST’,‘PAD’ ili ‘BEZ_PROMENA’.

(8 poena ) 8. Napraviti model objekti-veze za praćenje olimpijskog takmičenja gimnastičkog višeboja. Potrebno je voditi evidenciju o takmičarima sa sledećim osnovnim atributima: OlimpijskiBroj, PrezimeIme, GodinaRođenja, Pol. Svaki takmičar je iz jedne i samo jedne države za koju je potrebno znati Skraćeni naziv i Pun naziv države. Svaki takmičar vežba na više sprava (Šifra sprave, Naziv sprave). Unapred je određen Redosled vežbanja posmatranog takmičara na određenoj spravi. Svaki takmičar za svoju vežbu na određenoj spravi dobija po jednu ocenu od svakog postavljenog sudije. Potrebno je voditi evidenciju sudija sa osnovnim obeležjima kao što su ŠifraSudije, NazivSudije i država iz koje dolaze. Pored ovoga modelirati listu sudija za ocenjivanje vežbi na spravi, t.j. postavljanje jednog ili više sudija za svaku spravu.

Page 17: Baze Zadaci

3

( 11 poena )

Page 18: Baze Zadaci

1

BAZE PODATAKA 18.12. 2008. godine 1. Data je relacija Evrovizija (Izvođač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika) i sledeće funkcionalne zavisnosti: Izvođač, ŠifraDržaveOcenjivača -> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika ŠifraDržaveOcenjivača -> NazivDržaveOcenjivača Izvođač -> NazivPesme, ŠifraJezika, NazivJezika ŠifraJezika -> NazivJezika

Normalizovati datu relaciju direktnim korišćenjem BCNF (Objasniti postupak). ( 10 poena ) 2. Dat je model objekti-veze:

F

AB

G

E

C D

AB1

AB2

H

S

CG1

0,1

0,M

0,M0,1

1,1

0,M

0,7

1,M

0,M

0,M

A1# A2B1# B2

H1

C1#C2

G1

D1

F

S

1,M

F1E1

1,1

a) Transformisati prikazani model objekti-veze u relacioni model. b) Dati ODL naredbe za kreiranje dela sheme objektne baze za entitete A, B, D, G, H.

(10 poena)

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

4. Šta je Transakcija? Objasniti skup osobina koje transakcija mora da poseduje. (10 poena) 5. Objasniti i ilustrovati primerom vrste nasledjivanja u ODMG-u?

(10 poena)

Page 19: Baze Zadaci

2

6. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa ImePrezime.

(15 poena) NAPOMENA: NAREDNE ZADATKE NE RADE STUDENTI KOJI SU ZADOVOLJNI BROJEM OSVOJENIH POENA NA KOLOKVIJUMU. AKO RADE, UZIMA IM SE U OBZIR BROJ POENA SA OVOG ISPITA. 7. Data je relaciona shema:

SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja ) KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva) TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub) ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati ) ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera) Napisati SQL:1999 naredbe kojima se: a) Prikazuje Prezime, Ime, Naziv kluba za one trenere koji su zaposleni u sportskom društvu sa nazivom

«Atleta». Rezultat sortirati u opadajućem redosledu godina staža i rastućem prezimena. (8 poena)

b) Prikazuje za sva sportska društva klubove koji imaju više od 10 angažovanih trenera, koji imaju više od 5 godina radnog iskustva.

(8 poena)

c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesečne isplate trenerima u prethodnoj godini koji su angažovani van matičnog kluba. Kolona BrojKlubova prikazuje broj različitih klubova koji su isplatili honorar treneru u datom mesecu.

(8 poena) 8. Napraviti model objekti-veze za deo informacionog sistema Gradskog saobraćajnog preduzeća (GSP). Potrebno je voditi evidenciju o linijama GSP tako da je za svaku liniju potrebno znati početnu, krajnju i sve međustanice. Voditi računa o rednom broju stanice za svaku liniju polazeći od početne (redosled stanica). Vozilo u sistemu gradskog saobraćaja ima atribute: Registarski broj i Oznaka vozila. Vozilo može biti vlasništvo GSP sa obeležjima Naziv garaže i Parking mesto, dok ako je vozilo vlasništvo privatnog prevoznika onda se evidentiraju podaci o prevozniku (Šifra, Naziv, Mesto). Ispravno vozilo se svakoga dana raspoređuje na jednu od linija i zadaje se vreme svakog polaska u toku dana. Za svaki polazak pored vremena potrebno je omogućiti evidenciju realizacije polaska kao i napomene ukoliko je došlo do otkaza polaska. ( 11 poena )

Page 20: Baze Zadaci

Februar 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu. Zakreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli daprobate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

RasporedVozila (ŠifraGaraže, RegBroj, NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila)

funkcionalne zavisnosti:

ŠifraGaraže, RegBroj --> NazivGaraže, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozilaŠifraGaraže --> NazivGaražeRegBroj --> ŠifraTipaVozila, NazivTipaVozilaŠifraTipaVozila --> NazivTipaVozilaNazivTipaVozila --> ŠifraTipaVozila

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.Apostoji 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 složen 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:

ŠifraGaraže --> NazivGaraže(D)ŠifraTipaVozila --> NazivTipaVozila(D)NazivTipaVozila --> ŠifraTipaVozila(D)RegBroj --> NazivTipaVozila, ŠifraTipaVozila(D)ŠifraGaraže, RegBroj --> GaražnoMesto(D)(KK)

očigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlače projekcije sa onim determinantama koje nisukandidati za ključ, relacija se svodi na BCNF.

Garaža(ŠifraGaraže, NazivGaraže) jeste BCNFRasporedVozila2(ŠifraGaraže, RegBroj, GaražnoMesto, ŠifraTipaVozila, NazivTipaVozila) nije BCNF (4D, 1KK)

dalje se dekomponuje relacija RasporedVozila2

Vozilo(RegBroj, ŠifraTipaVozila, NazivTipaVozila) nije BCNF (3D, 1KK)RasporedVozila3(ŠifraGaraže, RegBroj, GaražnoMesto) jeste BCNF

dalje se dekomponuje relacija Vozilo

Vozilo2(RegBroj, ŠifraTipaVozila) jeste BCNFTipVozila(ŠifraTipaVozila, NazivTipaVozila) jeste BCNF

konačno:

Garaža(ŠifraGaraže, NazivGaraže)RasporedVozila(ŠifraGaraže, RegBroj, GaražnoMesto)Vozilo(RegBroj, ŠifraTipaVozila)

Page 21: Baze Zadaci

TipVozila(ŠifraTipaVozila, NazivTipaVozila)

2. zadataka)

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. zadatak1. Integritet entiteta (integritet ključa)

Ni jedan atribut koji je primarni ključ ili deo primarnog ključa neke bazne relacije ne može 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 ključa SK mora bitibilo jednaka nekoj vrednosti primarnog ključa iz R2 ili "nula vrednost"

∏SK(R1) ⊆ ∏PK(R2) ∪ {null}

4. zadatakSloženi konstruisani tipovi u objektno-relacionom bp su tip vrsta i tip kolekcija.

Page 22: Baze Zadaci

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 sledećom 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 više elemenata istog tipa. Tip kolekcije je određen vrstom kolekcije i tipom elementa kolekcije.SQL:1999 definiše 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. zadataka)

Graf prethođenja tranaskcija se sastoji od čvorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethođenje transakcija. Kaže se daTransakcija Ti prethodi transakciji Tj u izvršenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:

1. Oi prethodi Oj u S2. I Oi i Oj se odnose na isti element baze podataka3. Barem jedna od operacija Oi i Oj je upisivanje

Ako postoji ciklus u grafu tada izvršenje nije moguće učiniti 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 prethođenja:

Pošto na grafu nema ciklusa izvršenje jeste konflikt serijabilno!

S2

T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, već ovde je jasno da izvršenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)T1 prethodi T3 (operacije 4 i 7)

graf prethođenja:

Pošto na grafu ima ciklusa izvršenje nije konflikt serijabilno!

6. zadataka)

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

Page 23: Baze Zadaci

<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. zadataka)

select SifraZap, Ime, Prezime, Mlb, NazivProffrom 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, NazivProffrom RADNO_MESTO join OBRAZOVNI_PROFIL using(SifraProf) join ANGAZOVANJE using(SifraRM)where NazivProf like 'S%' and length(NazivProf)<=10 and DatDo is not nullgroup by SifraRM, NazivRM, NazivProfhaving count(*) > 5

c)

create view STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2006, BR_ZAP_2007, TREND, PROCENTUALNO) asselect SifraProf, NazivProf, sum(case when extract(year from datOd)=2006 then 1 else 0 end), sum(case when extract(year from datOd)=2007 then 1 else 0 end), case when sum(case when extract(year from datOd)=2006 then 1 else 0 end)>sum(case when extract(year from datOd)=2007 then 1 else 0 end) then 'PAD' when sum(case when extract(year from datOd)=2006 then 1 else 0 end)<sum(case when extract(year from datOd)=2007 then 1 else 0 end) then 'RAST' else 'BEZ_PROMENA' end , (sum(case when extract(year from datOd)=2007 then 1 else 0 end)/sum(case when extract(year from datOd)=2006 then 1 else 0 end))*100from OBRAZOVNI_PROFIL join RADNO_MESTO using(SifraProf) join ANGAZOVANJE using(SifraRM)group by SifraProf, NazivProf

8. zadatak

Page 24: Baze Zadaci
Page 25: Baze Zadaci

Mart 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu. Zakreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli daprobate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

Evrovizija (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika)

funkcionalne zavisnosti:

Izvodjač, ŠifraDržaveOcenjivača --> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezikaŠifraDržaveOcenjivača --> NazivDržaveOcenjivačaIzvodjač --> NazivPesme, ŠifraJezika, NazivJezikaŠifraJezika --> NazivJezika

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.Apostoji 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č, ŠifraDržaveOcenjivača --> BrojPoena(D)(KK)Izvodjač --> NazivPesme, ŠifraJezika, NazivJezika(D)ŠifraDržaveOcenjivača --> NazivDržaveOcenjivača(D)ŠifraJezika --> NazivJezika(D)

relacija se svodi na BCNF dekompozicijom kojom se iz relacije izvlače projekcije sa onim determinantama koje nisu kandidati za ključ

Pesma (Izvodjač, NazivPesme, ŠifraJezika)Ocena (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena)DržavaOcenjivač (ŠifraDržaveOcenjivača, NazivDržaveOcenjivača)Jezik (ŠifraJezika, NazivJezika)

u ovim relacijama sve determinante su kandidati za ključ tako da su relacije u Boyce-Codd normalnoj formi.

2. zadataka)

A (A1#, A2)

B (B1#, B2, A1#)

AB2 (A1#, B1#)

C (A1#,C1#, C2)

D (A1#, D1)

E (A1#, E1)

F (A1#, F1)

Page 26: Baze Zadaci

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. zadatakpravila integriteta za domene

svodi se na definisanje semantičkog domena

CREATE DOMAIN Kol INTEGER(Kol > 5000 AND Kol < 50000 AND MOD(Kol,50)=0);

pravila integriteta za atribute

mogu se definisati preko sledeće četvorke <naziv atributa, domen, ograničenje, akcija>

ATRIBUT DOMEN OGRANIČENJE

OCENA INTEGER OCENA > 5 AND OCENA <= 10

pravila integriteta za relacije

moguće je vezati vrednost jednog za vrednost drugog atributa u relaciji

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

pravila integriteta za bazu

moguće je skazati bilo kakvo složeno ograničenje, pa i ono koje povezuje atribute iz različitih relacija

CREATE INTEGRITY RULE Ocene_smerFORALL Student (IF Studen.ŠSmera = 01 THEN EXISTS Prijava (Prijava.Ocena > 7 AND Student.BrInd + Prijava.BrInd AND Prijava.ŠifPred = Predmet.ŠifPred AND Predmet.NazivPredmeta = "Matematika"));

4. zadatakSloženi konstruisani tipovi u objektno-relacionom bp su tip vrsta i tip kolekcija.

Tip vrsta

Page 27: Baze Zadaci

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 sledećom 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 više elemenata istog tipa. Tip kolekcije je određen vrstom kolekcije i tipom elementa kolekcije.SQL:1999 definiše 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. zadataka)

Graf prethođenja tranaskcija se sastoji od čvorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethođenje transakcija. Kaže se daTransakcija Ti prethodi transakciji Tj u izvršenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:

1. Oi prethodi Oj u S2. I Oi i Oj se odnose na isti element baze podataka3. Barem jedna od operacija Oi i Oj je upisivanje

Ako postoji ciklus u grafu tada izvršenje nije moguće učiniti 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 prethođenja:

Pošto na grafu nema ciklusa izvršenje jeste konflikt serijabilno!

S2

T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, već ovde je jasno da izvršenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)T1 prethodi T3 (operacije 4 i 7)

graf prethođenja:

Pošto na grafu ima ciklusa izvršenje nije konflikt serijabilno!

6. zadataka)

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

Page 28: Baze Zadaci

<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. zadataka)

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

b)

select Naslovfrom ALBUM join DNEVNA_PRODAJA using(SifAlbuma)where (Datum, BrojPrimeraka)in(select Datum, min(BrojPrimeraka)from DNEVNA_PRODAJAgroup by Datumhaving 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, ProsecanIznosPopusta) asselect PRODUKCIJSKA_KUCA.Naziv, NazivPravca, sum(case when Datum<DatumOdobravanjaPopusta then BrojPrimeraka else 0 end),

Page 29: Baze Zadaci

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

Page 30: Baze Zadaci

Maj 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu. Zakreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli daprobate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora)

funkcionalne zavisnosti:

ŠifraProjekta, JMBG --> PeriodAngažovanja, ŠifraSektora, NazivSektora, NazivProjekta, ImePrezimeŠifraProjekta --> NazivProjektaJMBG --> ImePrezime, ŠifraSektora, NazivSektoraŠifraSektora --> NazivSektoraNazivSektora --> ŠifraSektora

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.Apostoji 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 složen 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 --> PeriodAngažovanja(D)(KK)

očigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlače projekcije sa onim determinantama koje nisukandidati za ključ, relacija se svodi na BCNF.

Projekat(ŠifraProjekta, NazivProjekta) jeste BCNFProjektniTim2(ŠifraProjekta, JMBG, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora) nije BCNF (4D, 1KK)

dalje se dekomponuje relacija ProjektniTim2

Radnik(JMBG, ImePrezime, ŠifraSektora, NazivSektora) nije BCNF (3D, 1KK)ProjektniTim3(ŠifraProjekta, JMBG, PeriodAngažovanja) jeste BCNF

dalje se dekomponuje relacija Radnik

Radnik2(JMBG, ImePrezime, ŠifraSektora) jeste BCNFSektor(ŠifraSektora, NazivSektora) jeste BCNF

konačno:

Sektor(ŠifraSektora, NazivSektora)Radnik(JMBG, ImePrezime, ŠifraSektora)Projekat(ŠifraProjekta, NazivProjekta)

Page 31: Baze Zadaci

ProjektniTim(ŠifraProjekta, JMBG, PeriodAngažovanja)

2. zadataka)

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. zadatakpravila integriteta za domene

svodi se na definisanje semantičkog domena

CREATE DOMAIN Kol INTEGER(Kol > 5000 AND Kol < 50000 AND MOD(Kol,50)=0);

pravila integriteta za atribute

mogu se definisati preko sledeće četvorke <naziv atributa, domen, ograničenje, akcija>

ATRIBUT DOMEN OGRANIČENJE

OCENA INTEGER OCENA > 5 AND OCENA <= 10

pravila integriteta za relacije

Page 32: Baze Zadaci

moguće je vezati vrednost jednog za vrednost drugog atributa u relaciji

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

pravila integriteta za bazu

moguće je skazati bilo kakvo složeno ograničenje, pa i ono koje povezuje atribute iz različitih relacija

CREATE INTEGRITY RULE Ocene_smerFORALL Student (IF Studen.ŠSmera = 01 THEN EXISTS Prijava (Prijava.Ocena > 7 AND Student.BrInd + Prijava.BrInd AND Prijava.ŠifPred = Predmet.ŠifPred AND Predmet.NazivPredmeta = "Matematika"));

4. zadatakSpoljno spajanje se koristi kako bi se u rezultat spajanja uključili i oni redovi koji ne zadovoljavaju uslov spajanja.

Za ilustraciju ćemo koristiti sledeće tabele:

Odeljenje

ŠifraOdeljenja NazivOdeljenja

1 Uprava

2 Računski centar

3 Proizvodnja

Radnik

ŠifraRadnika ImePrezime ŠifraOdeljenja

1000 Pera Perić 1

1001 Marko Marković 1

1002 Žika Žikić 2

1003 Laza Lazić 2

1004 Petar Petrović

Levo spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa leve strane JOIN klauzule tako što se praznim redom proširuje tabela sa desnestrane

Odeljenje LEFT OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

Desno spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa desne strane JOIN klauzule tako što se praznim redom proširuje tabela sa levestrane

Odelenje RIGHT OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

1004 Petar Petrović

Centralno spoljno spajanje

omogućuje uključivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajuća strana je popunjenapraznim poljima

Odelenje FULL OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

Page 33: Baze Zadaci

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

1004 Petar Petrović

5. zadataka)

Graf prethođenja tranaskcija se sastoji od čvorova koji predstavljaju transakcije i usmerenih grana koje prikazuju prethođenje transakcija. Kaže se daTransakcija Ti prethodi transakciji Tj u izvršenju S ako postoji operacija Oi transakcije Ti i operacija Oj transakcije Tj tako da je:

1. Oi prethodi Oj u S2. I Oi i Oj se odnose na isti element baze podataka3. Barem jedna od operacija Oi i Oj je upisivanje

Ako postoji ciklus u grafu tada izvršenje nije moguće učiniti 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 prethođenja:

Pošto na grafu nema ciklusa izvršenje jeste konflikt serijabilno!

S2

T2 prethodi T3 (operacije 1 i 6) T3 prethodi T2 (operacije 6 i 8, već ovde je jasno da izvršenje nije konflikt serijabilno) T2 prethodi T1 (operacije 2 i 4)T1 prethodi T3 (operacije 4 i 7)

graf prethođenja:

Pošto na grafu ima ciklusa izvršenje nije konflikt serijabilno!

6. zadataka)

<?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)

Page 34: Baze Zadaci

<?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. zadataka)

select Naslov, Naziv, Tiraz, Cenafrom ALBUM join PRODUKCIJSKA_KUCA using(SifProdukcije)where Tiraz > 50000 or (Tiraz < 50000 and SajamskiPopust > 0.10)

b)

select Naslovfrom ALBUM join DNEVNA_PRODAJA using(SifAlbuma)where (Datum, BrojPrimeraka)in(select Datum, min(BrojPrimeraka)from DNEVNA_PRODAJAgroup by Datumhaving 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, ProsecanIznosPopusta) asselect 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

Page 35: Baze Zadaci
Page 36: Baze Zadaci

Jun 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu. Zakreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli daprobate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora)

funkcionalne zavisnosti:

ŠifraProjekta, JMBG --> PeriodAngažovanja, ŠifraSektora, NazivSektora, NazivProjekta, ImePrezimeŠifraProjekta --> NazivProjektaJMBG --> ImePrezime, ŠifraSektora, NazivSektoraŠifraSektora --> NazivSektoraNazivSektora --> ŠifraSektora

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.Apostoji 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 složen 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 --> PeriodAngažovanja(D)(KK)

očigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlače projekcije sa onim determinantama koje nisukandidati za ključ, relacija se svodi na BCNF.

Projekat(ŠifraProjekta, NazivProjekta) jeste BCNFProjektniTim2(ŠifraProjekta, JMBG, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora) nije BCNF (4D, 1KK)

dalje se dekomponuje relacija ProjektniTim2

Radnik(JMBG, ImePrezime, ŠifraSektora, NazivSektora) nije BCNF (3D, 1KK)ProjektniTim3(ŠifraProjekta, JMBG, PeriodAngažovanja) jeste BCNF

dalje se dekomponuje relacija Radnik

Radnik2(JMBG, ImePrezime, ŠifraSektora) jeste BCNFSektor(ŠifraSektora, NazivSektora) jeste BCNF

konačno:

Sektor(ŠifraSektora, NazivSektora)Radnik(JMBG, ImePrezime, ŠifraSektora)Projekat(ŠifraProjekta, NazivProjekta)

Page 37: Baze Zadaci

ProjektniTim(ŠifraProjekta, JMBG, PeriodAngažovanja)

2. zadatakA (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. zadatakJednostavnost korišćenja:

poglede definišu administratori baze i stavljaju ih na uvid korisnicima

Sigurnost podataka:

pogled predstavlja moćan mehanizam kontrole pristupa podacima

Performanse:

pogled se čuva u kompajliranom obliku

Nezavisnost podataka:

pošto korisnik radi sa pogledom, promene u bazi ne zahtevaju promenu korisničkog programa vec samo promenu definicije pogleda

4. zadataka)

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 xfrom x in Projektiwhere x.iniciran_od_osobe in x.ima_istrazivace

Page 38: Baze Zadaci

5. zadatakKod vremenskog obeležavanja transakcija, transakcije na početku izvršavanja dobiju redni broj, tako da se kasnije zna koja je transakcija starija.Konflikt nastaje kada transakcija hoće da čita neki slog koji je mladja transakcija vec ažurirala, ili hoće da ažurira slog koji je mladja transakcija vecažurirala ili videla. Konflikti se razrešavaju ponovnim startovanjem starije transakcije.

postoje dva identifikatora koji se zadaju svakom objektu baze podataka:

RMAX - najveća identifikacija transakcije koja je pročitala objekatUMAX - najveća identifikacija transakcije koja je ažurirala objekat

čitanje:

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

ažuriranje:

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

6. zadataka)

<?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"/>

Page 39: Baze Zadaci

</Model>

c)

XPath

//Avion[@Proizvodjac=@Vlasnik]

XQuery

for $x in doc("podB.xml")/Model/Avionwhere $x/@Proizvodjac = $x/@Vlasnikreturn $x

7. zadataka)

select SIFIST, IMEIST, DATRODJ, DATZAP, PLATA, SIFINST, SRUKOVfrom ISTRAZIVAC join UCESCE using(SIFIST)where extract(year from current_date)-extract(year from DATZAP) = 5group by SIFIST, IMEIST, DATRODJ, DATZAP, PLATA, SIFINST, SRUKOVhaving 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 godina", 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) asselect NAZIV, IMEIST, SIFIST, DATZAPfrom ISTRAZIVAC join UCESCE using(SIFIST) join INSTITUT using(SIFINST)group by NAZIV, IMEIST, SIFIST, DATZAPhaving count(SIFIST) > 10and SIFIST in (select distinct SRUKOV from ISTRAZIVAC)

8. zadatak

Page 40: Baze Zadaci

Septembar 2008, rešeni rok iz predmeta "Bazepodataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003dijagram (.vsd) ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu naodgovarajuću šemu. Za kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditXhttp://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upitisu provereni, prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQLdump" da bi mogli da probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

Evrovizija (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika)

funkcionalne zavisnosti:

Izvodjač, ŠifraDržaveOcenjivača --> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezikaŠifraDržaveOcenjivača --> NazivDržaveOcenjivačaIzvodjač --> NazivPesme, ŠifraJezika, NazivJezikaŠifraJezika --> NazivJezika

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svakuvrednost 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 podskupaatributa R.A

determinanta:

determinanta je bilo koji prost ili slozen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.

determinante:

Izvodjač, ŠifraDržaveOcenjivača --> BrojPoena(D)(KK)Izvodjač --> NazivPesme, ŠifraJezika, NazivJezika(D)ŠifraDržaveOcenjivača --> NazivDržaveOcenjivača(D)ŠifraJezika --> NazivJezika(D)

relacija se svodi na BCNF dekompozicijom kojom se iz relacije izvlače projekcije sa onim determinantama koje nisu kandidati za ključ

Pesma (Izvodjač, NazivPesme, ŠifraJezika)Ocena (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena)DržavaOcenjivač (ŠifraDržaveOcenjivača, NazivDržaveOcenjivača)Jezik (ŠifraJezika, NazivJezika)

u ovim relacijama sve determinante su kandidati za ključ tako da su relacije u Boyce-Codd normalnoj formi.

2. zadataka)

A (A1#, A2)

B (B1#, B2, A1#)

Page 41: Baze Zadaci

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. zadatakQBE je upitni jezik koji predstavlja implementaciju relacionog računa domena, preko specifične "dvodimenzione" sintakse, koja je vrlobliska korisniku jer se preko nje direktno, u skeletu tabele predstavljene na ekranu, zadaje primer odgovora koji korisnik želi.

naziv relacije atributi

operacije nad celim n-torakama oznake promenjivih, konstanti, uslova i operacija nad atributima

operacije

P (print)D (delete)U (update)I (insert)

uslovi koje treba da ispune atributi navode se u kolonama tog atrubuta. Ako su uslovi u istom redu, vezani su logičkim operatorom i(AND) a ako su u različitim redovima vezani su logičkim operatorm ili (OR).

Promenjiva u QBE je niz karkatera koji počinje sa _. Služi za spajanje tabela.

Page 42: Baze Zadaci

4. zadatakU ODMGu postoje dve vrste nasleđivanja: nasleđivanje ponašanja i nasleđivanje stanja.

nasleđivanje ponašanja

Za nasleđivanje ponašanja 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. interfejs može naslediti drugi interfejs (ili više njih)2. klasa može naslediti interfejs (ili više njih)3. interfejs ne može naslediti klasu4. klasa ne može naslediti klasu

nasleđivanje stanja

Za nasleđivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podređena klasa nasleđuje celokupno stanje i ponašanjeklase koju proširuje. Klasa može naslediti samo jednu klasu extends nasleđivanjem.

na primer:

class Osoba { ...};

class Radnik extends Osoba{ ...};

5. zadatakTransakcija je osnovna logička 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 izvršavaju nad bazom po principu "sve ili ništa". Ili će se sve aktivnosti izvršiti 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 izvršenja drugim transakcijama

D (Durability - Trajnost)

promene koje izvrši jedna transakcija moraju biti stalne

6. zadataka)

<?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">

Page 43: Baze Zadaci

<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")/portfoliowhere $x/stock/name["zysmergy inc"]return $x

7. zadataka)

select LokacijaIDfrom Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID)where TipLokacije = 'Administrativni objekti' and extract(year from DatumPopisa) = '2008'group by LokacijaIDhaving sum(PopisanaKol) = 0

b)

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

c)

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

Page 44: Baze Zadaci

PopisnaKomisija join PopisnaLista using(KomisijaID) join StavkaPopisneListe using(ListaID) join Lokacija using(LokacijaID) join OsnovnoSredstvo using(InventarniBroj)group by LokacijaID, GodinaPopisa,PredsednikKomisijehaving (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

Page 45: Baze Zadaci

Oktobar 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu.Za kreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti suprovereni, prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bimogli da probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com

1. zadatakrelacija:

UčesnikTrke (ŠifraTrke, OlimpijskiBroj, NazivTrke, RBStaze, ImePrezimeTrkača, ŠifraDržave, NazivDržave)

funkcionalne zavisnosti:

ŠifraTrke, OlimpijskiBroj --> RBStaze, ŠifraDržave, NazivDržave, NazivTrke, ImePrezimeTrkačaŠifraTrke --> NazivTrkeOlimpijskiBroj --> ImePrezimeTrkača, ŠifraDržave, NazivDržaveŠifraDržave --> NazivDržave

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 --> ImePrezimeTrkača, ŠifraDržave, NazivDržave(D)ŠifraDržave --> NazivDržave(D)

Očigledno relacija nije u Boyce-Codd normalnoj formi, pa je potrebno relaciju dekomponovati, tako da se dobiju relacije u kojima su kandidati zaključ one relacije koje su determinante u polaznoj relaciji:

Trkač(OlimpijskiBroj,ŠifraDržave)Država(ŠifraDržave, NazivDržave)Trka(ŠifraTrke, NazivTrke)MestoUTrci(ŠifraTrke, OlimpijskiBroj, RBStaze)

2. zadataka)

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;

Page 46: Baze Zadaci

relationship set<A> BA2 inverse A :: AB2; attribute set<C> Cs;

};

class C {

attribute string C1;

};

class D extends A{

attribute string D1; relationship set<H> DH inverse H :: HD;

};

class G (extent Gs key G1#){

attribute string G1#; attribute string G2; relationship set<H> Gh inverse H :: HG;

};

class H {

attribute string H1; relationship B HB inverse B :: BH; relationship D HD inverse D :: DH; relationship G HG inverse G :: GH;

};

3. zadatakSpoljno spajanje se koristi kako bi se u rezultat spajanja uključili i oni redovi koji ne zadovoljavaju uslov spajanja.

Za ilustraciju ćemo koristiti sledeće tabele:

Odeljenje

ŠifraOdeljenja NazivOdeljenja

1 Uprava

2 Računski centar

3 Proizvodnja

Radnik

ŠifraRadnika ImePrezime ŠifraOdeljenja

1000 Pera Perić 1

1001 Marko Marković 1

1002 Žika Žikić 2

1003 Laza Lazić 2

1004 Petar Petrović

Levo spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa leve strane JOIN klauzule tako što se praznim redom proširuje tabela sa desnestrane

Odeljenje LEFT OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

Desno spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa desne strane JOIN klauzule tako što se praznim redom proširuje tabela sa levestrane

Odelenje RIGHT OUTER JOIN Radnik USING(ŠifraOdeljenja)

Page 47: Baze Zadaci

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

1004 Petar Petrović

Centralno spoljno spajanje

omogućuje uključivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajuća strana je popunjenapraznim poljima

Odelenje FULL OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

1004 Petar Petrović

4. zadatakSloženi 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 sledećom 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 više elemenata istog tipa. Tip kolekcije je određen vrstom kolekcije i tipom elementa kolekcije.SQL:1999 definiše 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. zadatakKod vremenskog obeležavanja transakcija, transakcije na početku izvršavanja dobiju redni broj, tako da se kasnije zna koja je transakcija starija.Konflikt nastaje kada transakcija hoće da čita neki slog koji je mladja transakcija vec ažurirala, ili hoće da ažurira slog koji je mladja transakcija vecažurirala ili videla. Konflikti se razrešavaju ponovnim startovanjem starije transakcije.

postoje dva identifikatora koji se zadaju svakom objektu baze podataka:

RMAX - najveća identifikacija transakcije koja je pročitala objekatUMAX - najveća identifikacija transakcije koja je ažurirala objekat

čitanje:

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

Page 48: Baze Zadaci

restart T;}

ažuriranje:

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

6. zadataka)

<?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>

Page 49: Baze Zadaci

</model>

c)

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

7. zadataka)

select LokacijaIDfrom Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID)where extract(year from DatumPopisa) = 2007 and TipLokacije = 'Proizvodni pogon'group by LokacijaIDhaving 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, AmortizacionaGrupaorder by LokacijaID desc

c)

select distinct Nazivfrom 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

Page 50: Baze Zadaci

Novembar 2008, rešeni rok iz predmeta "Baze podataka"

fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQL dump baze (.sql), visio 2003 dijagram (.vsd)ukoliko postoje takvi fajlovi vezani za zadatke.

XML: za sve fajlove je provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema, xml fajl je validiran u odnosu na odgovarajuću šemu. Zakreiranje fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je XML editor EditX http://www.editix.com/

SQL: baza je napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi. Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi mogli daprobate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQLyog www.webyog.com

1. zadatakrelacija:

ProjektniTim (ŠifraProjekta, JMBG, NazivProjekta, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora)

funkcionalne zavisnosti:

ŠifraProjekta, JMBG --> PeriodAngažovanja, ŠifraSektora, NazivSektora, NazivProjekta, ImePrezimeŠifraProjekta --> NazivProjektaJMBG --> ImePrezime, ŠifraSektora, NazivSektoraŠifraSektora --> NazivSektoraNazivSektora --> ŠifraSektora

definicije:

fukcionalna zavisnost:

u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.Apostoji 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 složen 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 --> PeriodAngažovanja(D)(KK)

očigledno je da relacija nije u BC normalnoj formi. Dekompozicijom pri kojoj se iz relacije izvlače projekcije sa onim determinantama koje nisukandidati za ključ, relacija se svodi na BCNF.

Projekat(ŠifraProjekta, NazivProjekta) jeste BCNFProjektniTim2(ŠifraProjekta, JMBG, ImePrezime, PeriodAngažovanja, ŠifraSektora, NazivSektora) nije BCNF (4D, 1KK)

dalje se dekomponuje relacija ProjektniTim2

Radnik(JMBG, ImePrezime, ŠifraSektora, NazivSektora) nije BCNF (3D, 1KK)ProjektniTim3(ŠifraProjekta, JMBG, PeriodAngažovanja) jeste BCNF

dalje se dekomponuje relacija Radnik

Radnik2(JMBG, ImePrezime, ŠifraSektora) jeste BCNFSektor(ŠifraSektora, NazivSektora) jeste BCNF

konačno:

Sektor(ŠifraSektora, NazivSektora)Radnik(JMBG, ImePrezime, ŠifraSektora)Projekat(ŠifraProjekta, NazivProjekta)

Page 51: Baze Zadaci

ProjektniTim(ŠifraProjekta, JMBG, PeriodAngažovanja)

2. zadataka)

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. zadatakSpoljno spajanje se koristi kako bi se u rezultat spajanja uključili i oni redovi koji ne zadovoljavaju uslov spajanja.

Za ilustraciju ćemo koristiti sledeće tabele:

Odeljenje

ŠifraOdeljenja NazivOdeljenja

1 Uprava

2 Računski centar

3 Proizvodnja

Radnik

ŠifraRadnika ImePrezime ŠifraOdeljenja

1000 Pera Perić 1

1001 Marko Marković 1

1002 Žika Žikić 2

Page 52: Baze Zadaci

1003 Laza Lazić 2

1004 Petar Petrović

Levo spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa leve strane JOIN klauzule tako što se praznim redom proširuje tabela sa desnestrane

Odeljenje LEFT OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

Desno spoljno spajanje

omogućuje uključivanje u rezultujuću tabelu svih redova sa desne strane JOIN klauzule tako što se praznim redom proširuje tabela sa levestrane

Odelenje RIGHT OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

1004 Petar Petrović

Centralno spoljno spajanje

omogućuje uključivanje u rezultat svih redova leve i desne tabele, a tamo gde uslov spajanja nije ispunjen odgovrajuća strana je popunjenapraznim poljima

Odelenje FULL OUTER JOIN Radnik USING(ŠifraOdeljenja)

ŠifraOdeljenja NazivOdeljenja ŠifraRadnika ImePrezime ŠifraOdeljenja

1 Uprava 1000 Pera Perić 1

1 Uprava 1001 Marko Marković 1

2 Računski centar 1002 Žika Žikić 2

2 Računski centar 1003 Laza Lazić 2

3 Proizvodnja

1004 Petar Petrović

4. zadatakU ODMGu postoje dve vrste nasleđivanja: nasleđivanje ponašanja i nasleđivanje stanja.

nasleđivanje ponašanja

Za nasleđivanje ponašanja 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. interfejs može naslediti drugi interfejs (ili više njih)2. klasa može naslediti interfejs (ili više njih)3. interfejs ne može naslediti klasu4. klasa ne može naslediti klasu

nasleđivanje stanja

Za nasleđivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podređena klasa nasleđuje celokupno stanje i ponašanje klase koju

Page 53: Baze Zadaci

proširuje. Klasa može naslediti samo jednu klasu extends nasleđivanjem.

na primer:

class Osoba { ...};

class Radnik extends Osoba{ ...};

5. zadatakEvent-Condition-Action

Semantika ECA pravila:

Svako pravilo se donosi na određeni događaj, vrši proveru uslova po nastanku događaja i izvršava definisanu akciju ako je uslov zadovoljen.Izuzetno je moguće formirati pravilo koje se izvršava bezuslovno.

Generalno razlikujemo primitivne i složene događaje.

Primitivni doga]aji su:

Ažuriranje podatakaPrikaz podatakaVremeAplikativno definisan događaj

Složeni događaji se formiraju kombinovanjem primitivnih i prethodno definisanih složenih događaja. Kao operatori za kombinovanje se mogu koristitilogički operatori (AND, OR, NOT), sekvence događaja, vremenske kompozicije...

Obrada ECA pravila:

a) Trenutan

Prouzrokuje prekid izvršavanja transakcije odmah po identfikovanju događaja za koji postoji definisano ECA-pravilo.

a) Odložen

Izrvšavanje pravila se odlaže do završetka transakcije koja je proizvela događaj.

a) Razdvojen

Pravilo postaje sasvim nova transakcija koja se izvršava nezavisno od polazne.

6. zadataka)

<?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>

Page 54: Baze Zadaci

<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/Avionwhere $x/@Proizvodjac = $x/@Vlasnikreturn $x

7. zadataka)

select SifraZap, Ime, Prezime, Mlb, NazivProffrom 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, NazivProffrom RADNO_MESTO join OBRAZOVNI_PROFIL using(SifraProf)where SifraRM not in (select distinct SifraRM from ANGAZOVANJE)

c)

create view STATISTIKA(SIFRA_PROFILA, NAZIV_PROFILA, BR_ZAP_2007, BR_ZAP_2008, TREND) asselect SifraProf, NazivProf, sum(case when extract(year from datOd)=2007 then 1 else 0 end), sum(case when extract(year from datOd)=2008 then 1 else 0 end), case when sum(case when extract(year from datOd)=2007 then 1 else 0 end)>sum(case when extract(year from datOd)=2008 then 1 else 0 end) then 'PAD' when sum(case when extract(year from datOd)=2006 then 1 else 0 end)<sum(case when extract(year from datOd)=2007 then 1 else 0 end) then 'RAST' else 'BEZ_PROMENA' end

Page 55: Baze Zadaci

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

8. zadatak

Page 56: Baze Zadaci

www.fonforum.org 1

Zadaci PMOV 1. Napraviti model objekti-veze za deo informacionog sistema Elektro-privrednog sistema. Potrebno je voditi evidenciju o poslovnim jedinicama EPS-a sa sledećim osnovnim atributima: ŠifraPJ, Naziv, Adresa, MatičniBroj. Poslovna jedinica može biti: proizvođač struje ili elektrodistribucija ili rudnik. Proizvođač struje se može klasifikovati na hidroelektrane, termoelektrane i sisteme vetrenjača. Proizvođač struje ima osnovno obeležje maksimalnu snagu, a pored toga potrebno je beležiti i dnevnu proizvodnju u KW (kilovatima). Za hidrocentrale potrebno je pamtiti hidropotencijal, za system vetrenjača broj vetrenjača, a za termoelektranu dnevnu isporuku uglja iz svakog rudnika. Za svaku elektrodistribuciju treba voditi evidenciju o dnevnoj isporuci struje u KW (kilovatima) od strane proizvođača 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 sledećim zajedničkim atributima: JMBG, ImePrezime, GodinaRođenja. Svaki zaposleni je ili Avio-mehaničar ili Pilot ili Stjuardesa(Stjuard). Za svakog avio-mehaničara potrebno je znati datum dobijanja licence za određeni tip aviona (ŠifraTipaAviona, NazivTipaAviona). Jedan aviomehaničar može imati licence za više 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 može biti dodeljen istom avionu više puta bez obzira na ulogu. Voditi evidenciju i o rasporedu stjuardesa (stjuarda) po avionima. Potrebno je omogućiti pamćenje 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 sledećim osnovnim atributima: PublikacijaID, Naziv, BrojPrimeraka. Publikacija može biti: knjiga ili časopis ili dnevne novine. Knjiga ima osnovna obeležja redni broj izdanja i godinu izdanja, a pored toga 3 potrebno je beležiti i sve autore. Za časopis potrebno je pamtiti broj, mesec i kratak sadržaj, 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 izdavaču. Za svaku publikaciju obezbediti evidentiranje datuma zaduženja i datuma razduženja od strane člana biblioteke. 4. Napraviti model objekti-veze za deo informacionog sistema Svetskog prvenstva u fudbalu. Potrebno je voditi evidenciju o reprezentacijama učesnicama takmičenja sa osnovnim atributima ŠifraDržave, NazivDržave, kao i o njenim igračima sa sledećim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godište. Svaka reprezentacija je raspoređena u jednu i samo jednu kvalifikacionu grupu. Omogućiti beleženje grada u kojem se igrala utakmica. Potrebno je modelovati utakmice, gde se tačno zna koja je reprezentacija u ulozi domaćina a koja u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih golova domaće i gostujuće reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi takmičenja se odigrala (kvalifikacije u grupi, četvrtfinale, polufinale, finale). Za svakog igrača je potrebno voditi statistiku učinka na svakoj odigranoj utakmici, gde učinak 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 pojedinačne usluge (bazen, sauna, đakuzi, fitnes, masaža, akupunktura ...) i paketi usluga. Paket usluga objedinjuje već postojeće pojedinačne usluge. Potrebno je voditi evidenciju korisnika usluga Centra (ID, ImePrezime, Adresa, KontaktTelefon). Takođe, potrebno je voditi evidenciju korišćenja usluga za svakog korisnika sa tačnim datumom korišćenja bilo da je pojedinačna usluga ili paket usluga. Modelovati cenovnik usluga tako da se prati istorija promene cena za svaku pojedinačnu uslugu. Paket usluga nema definisanu cenu već je samo definisan popust za svaku pojedinačnu uslugu koja je uključena u paket. 6. Napraviti model objekti-veze za deo informacionog sistema taksi udruženja. Potrebno je voditi evidenciju o taksi vozačima sa osnovnim atributima Broj, GradskiBroj, ImePrezime, DatumRodj. Omogućiti beleženje podataka o gradovima i o ulicama u gradovima. Za svakog taksi vozača je potrebno evidentirati jednu i samo jednu klasu vozila koje poseduje (KlasaVozilaID, NazivKlaseVozila). Potrebno je modelovati Vožnju za koju se zna polazna adresa (Ulica i broj zgrade), taksi vozač koji je dodeljen vožnji, datum prijema, vreme prijema, vreme dodele, za koliko minuta stiže taksi vozač i status. U modelu obezbediti da stranka može izraziti želju za jednom ili više klasa vozila za svoju vožnju.

Page 57: Baze Zadaci

www.fonforum.org 2

7. Nacrtati dijagram objekti-veze za evidenciju osnovnih podataka o leku, za potrebe apotekarske ustanove. Potrebno je voditi evidenciju o svim lekovima sa sledećim osnovnim atributima: Komercijalni naziv, Hemijski naziv, Doziranje, Dejstvo, Neželjeni efekti. Svaki lek se koristi za lečenje najmanje jedne vrste indikacija (bolesti). S druge strane, za svaki lek potrebno je dati kontraindikacije (u kojim slučajevima se ne sme koristiti) kojih može biti više. Svaki lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi jedan i samo jedan proizvođač. Lek se pakuje u više oblika (npr. tableta, sirup, injekcija, prašak itd.). Za svaku vrstu pakovanja leka potrebno je voditi evidenciju o količini i sastavu. Lek može a ne mora imati zamene, a takođe lek može biti zamena drugim lekovima iz iste grupe. 8. Napraviti model objekti-veze za zadati verbalni opis. U cipelgradu žive cipelići i čizmići. I za cipeliće i za čizmiće može se reći da su obućići. Cipelići mogu biti papučići ili nanulići ili opančići. Čizmići se dele na cokuliće i gojzeriće. Cokulići mogu da se druže sa svim cipelićima osim sa papučićima. Nanulić može ali ne mora da se druži sa najviše jednim papučićem, dok jedan papučić može da se druži sa više nanulića. Gojzerići su dovoljni sami sebi tako da se druže međusobno. Kada se udruže cokulići, opančići i nanulići onda se to naziva srpčići. 9. Napraviti model objekti-veze za praćenje olimpijskog takmičenja gimnastičkog višeboja. Potrebno je voditi evidenciju o takmičarima sa sledećim osnovnim atributima: OlimpijskiBroj, PrezimeIme, GodinaRođenja, Pol. Svaki takmičar je iz jedne i samo jedne države za koju je potrebno znati Skraćeni naziv i Pun naziv države. Svaki takmičar vežba na više sprava (Šifra sprave, Naziv sprave). Unapred je određen Redosled vežbanja posmatranog takmičara na određenoj spravi. Svaki takmičar za svoju vežbu na određenoj spravi dobija po jednu ocenu od svakog postavljenog sudije. Potrebno je voditi evidenciju sudija sa osnovnim obeležjima kao što su ŠifraSudije, NazivSudije i država iz koje dolaze. Pored ovoga modelirati listu sudija za ocenjivanje vežbi na spravi, t.j. postavljanje jednog ili više sudija za svaku spravu. 10. Napraviti model objekti-veze za deo informacionog sistema Gradskog saobraćajnog preduzeća (GSP). Potrebno je voditi evidenciju o linijama GSP tako da je za svaku liniju potrebno znati početnu, krajnju i sve međustanice. Voditi računa o rednom broju stanice za svaku liniju polazeći od početne (redosled stanica). Vozilo u sistemu gradskog saobraćaja ima atribute: Registarski broj i Oznaka vozila. Vozilo može biti vlasništvo GSP sa obeležjima Naziv garaže i Parking mesto, dok ako je vozilo vlasništvo privatnog prevoznika onda se evidentiraju podaci o prevozniku (Šifra, Naziv, Mesto). Ispravno vozilo se svakoga dana raspoređuje na jednu od linija i zadaje se vreme svakog polaska u toku dana. Za svaki polazak pored vremena potrebno je omogućiti evidenciju realizacije polaska kao i napomene ukoliko je došlo do otkaza polaska. 11. Nacrtati dijagram objekti-veze za deo sistema praćenja avionskog saobraćaja opisan sledećim tekstom: „Avionska karta za jednu standardnu avio-liniju može biti sastavljena od više kupona. Jedna linija može da uključi više letova na relaciji izmedju mesta polaska i mesta krajnjeg odredišta. Svaki avion obično ima nekoliko letova u toku dana (let je identifikovan preko datuma i vremena poletanja aviona). Karta sadrži podatke o avionskoj liniji, prezimenu i imenu putnika, mestu polazišta, mestu krajnjeg odredišta, datumu izdavanja, roku važenja i ceni. Kuponi karte sadrže identične podatke kao i karta, kao i podatke o pojedinačnim letovima izmedju polazišta i odredišta: mesto poletanja, mesto sletanja, broj leta, klasa sedišta, datum i vreme poletanja”. 12. Napraviti model objekti-veze za deo informacionog sistema Evropskog prvenstva u košarci. Potrebno je voditi evidenciju o reprezentacijama učesnicama takmičenja sa osnovnim atributima ŠifraDržave, NazivDržave, kao i o njenim igračima sa sledećim osnovnim atributima: BrojNaDresu, ImePrezime, Pozicija, Godište. Svaka reprezentacija je raspoređena u jednu i samo jednu kvalifikacionu grupu. Sve utakmice jedne kvalifikacione grupe se igraju u samo jednom gradu. Potrebno je modelovati utakmice, gde se tačno zna koja je reprezentacija u ulozi domaćina a koja u ulozi gosta. Za svaku utakmicu evidentirati broj postignutih poena domaće i gostujuće reprezentacije. Za svaku utakmicu je potrebno znati i u kojoj fazi takmičenja se odigrala (kvalifikacije u grupi, baraž, četvrtfinale, polufinale, finale ...). Za svakog igrača je potrebno voditi statistiku učinka na svakoj odigranoj utakmici, gde učinak 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 pretraživanje po nazivu filma, žanru, režiseru, glumcima, scenaristi i muzici. Voditi evidenciju o članu video kluba (osnovni atributi: JMBG, Ime, Prezime, Status). Video klub poseduje više kaseta (kopija) istog filma. Potrebno je obezbediti praćenje istorijata izdavanja i vraćanja svake kasete. Jedan član kluba može dnevno zadužiti više kaseta.

Page 58: Baze Zadaci

www.fonforum.org 3

14. Nacrtati dijagram objekti-veze za praćenje 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 beleže zubi nad kojima je rađeno, vrsta intervencije kao i svi zubari koji su učestvovali u intervenciji. Zatim, potrebno je voditi evidenciju o zakazanim pregledima imajući u vidu da u ordiniciji ima više zubara i da pacijent može zakazati termin kod bilo kog zubara. 15. Nacrtati modelobjekti-veze za jednu turističku agenciju sa sledećim opisom: Agencija organizuje razne tipove aranžmana (letovanja, zimovanja, ekskurzije, poslovne itd.). Potrebno je za svaki aranžman voditi podatke o jednoj krajnjoj destinaciji (mestu) kao i o svim prolaznim mestima koja se posećuju. Za svako prolazno mesto u aranžmanu treba dati sadržaj posete sa satnicom. Svaki aranžman se realizuje u većem broju termina, gde se vodi evidencija o datumu polaska, datumu povratka, cenu aranžmana. Za svaku realizaciju aranžmana angažuje se jedno ili više vozila istog ili različitog tipa. 16. Napraviti model objekti-veze za deo informacionog sistema banaka. Potrebno je voditi podatke o svim bankama u našoj zemlji (šifra banke, naziv banke, sedište, godina osnivanja, vlasnički odnos). Svaka banka je jednog i samo jednog tipa (komercijalna, kreditna, izvozna itd.). Jedna banka može preuzeti više drugih banaka, s druge strane može a ne mora biti preuzeta od najviše jedne banke. Za svaku banku se na kraju godine evidentira godišnji profit. Ukoliko je banka sa većinskim stranim vlasništvom, potrebno je evidentirati datum licence, a ukoliko je banka sa većinskim domaćim vlasništvom onda se vodi evidencija UkupneAktive i UkupnogDuga. Banka sa većinskim domaćim vlasništvom nalazi se u jednom i samo jednom stanju (likvidna, u stečaju, u likvidaciji, likvidirana, preuzeta itd.) koje se kroz vreme može menjati. 17. Potrebno je napraviti model objekti-veze na osnovu sledeceg opisa: » U okviru manifestacije Fashion Week biće odrzano više revija na kojima će kreatori prikazati svoje najnovije kolekcije. Tim povodom na održanom kastingu izabran je veći broj manekena iz različitih modnih agencija. Na pojednim revijama u svojstvu manekena pojaviće se i specijalni gosti, tj. poznate ličnosti iz javnog života. Za modnu reviju treba voditi evidenciju o broju, nazivu revije, datumu i vremenu održavanja i mestu održavanja. Za svakog manekena treba evidentirati pored šifre i imena, i konfekcijski broj. Maneken može učestvovati na više modnih revija noseći određene 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 sledećeg opisa. Zahteva se da telefon ima mogućnost kreiranja grupa (atributi: ŠifraGrupe, NazivGrupe), svakoj grupi pripada jedan ili više brojeva telefona kontakt osobe, s druge strane broj telefona kontakt osobe pripada jednoj i samo jednoj grupi. Takođe, svaka grupa može a ne mora imati prikljuèenu muziku (ŠifraMuzike, NazivMuzike) koja se aktivira kada zove pozivalac iz posmatrane grupe, muzika može biti prikljuèena u više grupa. Sledeći zahtev je da model podržava definisanje situacija (npr. raspoloživ, na sastanku, rekreacija, odmara se). Za svaki par grupa-situacija treba definisati da li se aktivira muzika ili vibracija i definiše se jedna ili više akcija određenog tipa akcije, akcija može biti povezana sa više parova grupa-situacija. Tip akcije (atributi: ŠifraTipaAkcije, OpisTipaAkcije) može imati sledeæa pojavljivanja: Prebaci na elektronsku sekretaricu provajdera, Prebaci na sekretaricu u kancelariji, Pošalji SMS pozivaocu, Pošalji email na definisanu adresu i slièno. Konkretna akcija određenog 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 sledećim osnovnim atributima: EDBroj, ImePrezime, Adresa, PoštReon. Svaki pretplatnik je iz jednog i samo jednog mesta. Pretplatniku je dodeljen jedan i samo jedan Tarifni stav (koji ima atribut NazivTS sa mogućim vrednostima 'zeleni', 'plavi', 'crveni'). Tarifni stav određuje kolika je cena više (cenaVT) a kolika je cena manje tarife (cenaMT). Treba imati u vidu da se cene tarifa menjaju vremenom pa je potrebno obezbediti praćenje istorije menjanja cena tarifa. Za svakog pretplatnika se svakog meseca evidentira mesečni utrošak struje gde su najvažnija obeležja DatumČitanja, NovoStanjeVT, NovoStanjeMT, DatumOd, DatumDo. Takođe, za svakog pretplatnika se svakog meseca pravi obračun utroška struje, gde se mora znati datum obračuna, za koji mesec i godinu, utrošak VT, utrošak MT, fiksni deo u KW. Potrebno zabeležiti po kojem se tarifnom stavu vršio obračun (onaj tarifni stav koji je bio važeći u trenutku obračuna).

Page 59: Baze Zadaci

www.fonforum.org 4

20. Napraviti model objekti-veze za deo informacionog sistema Republičke 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 može biti komercijalna ili politička. Ako se radi o političkoj reklami potrebno je evidentirati koju političku partiju reklamira (ŠifraPartije, NazivPartije). Ukoliko se radi o komercijalnoj reklami onda je potrebno zabeležiti na koju se granu privrede odnosi kao I kompaniju koja je reklamu naručila (ŠifraKompanije, Naziv, Sedište). Potrebno je voditi evidenciju svakog prikazivanja reklame na bilo kojoj televiziji. U toku dana moguće je da se ista reklama prikazuje više puta na istoj televiziji. 21. Napraviti model objekti-veze za deo informacionog sistema muškog teniskog turnira. Potrebno je voditi evidenciju o teniserima koji učestvuju na turniru. Osnovni atributi tenisera su šifra tenisera, ime i prezime tenisera, rang na ATP listi, datum rođenja. Teniser je iz jedne i samo jedne države (šifra države, naziv države). Obezbediti evidenciju mečeva između 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 najviše 3 seta. Set ima sledeće karakteristike: Broj osvojenih gemova crvenog igrača, Broj osvojenih gemova plavog igrača. Meč se odigrava na određenom terenu (broj terena, naziv terena) i meč odgovara jednoj i samo jednoj fazi takmičenja. Takođe, potrebno je napraviti deo modela koji bi obezbedio vođenje statistike o teniseru. Za svakog tenisera na svakom meču obezbediti pamćenje ostvarene vrednosti za sve tipove događaja (npr. procenat prvog ubačenog servisa, procenat drugog ubačenog servisa, as, dupla greška itd.). Lista tipova događaja se može proširivati.

Page 60: Baze Zadaci

1

Page 61: Baze Zadaci

2

Page 62: Baze Zadaci

3

Page 63: Baze Zadaci

4

Page 64: Baze Zadaci

5

Page 65: Baze Zadaci

6

Page 66: Baze Zadaci

7

Page 67: Baze Zadaci

8

Page 68: Baze Zadaci

9

Page 69: Baze Zadaci

10

Page 70: Baze Zadaci

11

Page 71: Baze Zadaci

12

Page 72: Baze Zadaci

13

Page 73: Baze Zadaci

14

Page 74: Baze Zadaci

15

Lek

Nacrtati dijagram objekti-veze za evidenciju osnovnih podataka o leku,.com za potrebe apotekarske ustanove. Potrebno je voditi evidenciju o svim

lekovima sa sledećim osnovnim atributima: Komercijalni naziv, Hemijski naziv, Doziranje, Dejstvo, Neželjeni efekti. Svaki lek se koristi za

lečenje najmanje jedne vrste indikacija (bolesti). S druge strane, za svaki lek potrebno je dati kontraindikacije (u kojim slučajevima se ne sme

koristiti) kojih može biti više. Svaki lek pripada samo jednoj primarnoj grupi lekova (npr. antibiotici, analgetici, antipiretici itd.). Lek proizvodi

jedan i samo jedan proizvođač. Lek se pakuje u više oblika (npr. tableta, sirup, injekcija, prašak, itd.). Za svaku vrstu pakovanja leka potrebno je

voditi evidenciju o količini i sastavu. Lek se može a ne mora imati zamene, a takođe lek može biti zamena drugim lekovima iz iste grupe.

Page 75: Baze Zadaci

16

Page 76: Baze Zadaci

1. Dat je relacioni model: APARTMAN(ApartmanID , BrojSoba, BrojSpavacihSoba, BrojKupatila, VrstaID) VRSTA_APARTMANA(VrstaID , NazivVrste) GOST(GostID , Ime, Prezime, DatumRodjenja, Pol) REZERVACIJA_APARTMANA(ApartmanID, GostID, DatumOd, DatumDo , StatusID) STATUS_REZERVACIJE(StatusID , NazivStatusa)

Pol in (‘m’, ‘z’) NazivStatusa in (‘Privremena’, ‘Potvrdjena’, ‘Otkaz ana’, ‘Realizovana’) a) Napisati DDL naredbe za kreiranje tabela: GOST, STATUS_REZERVACIJE i

REZERVACIJA_APARTMANA datog modela. Obavezno uključiti i definicije svih ograničenja.

(7 poena) CREATE TABLE "GOST" ( "GOSTID" NUMBER, "IME" VARCHAR2(150), "PREZIME" VARCHAR2(200), "DATUMRODJENJA" DATE, "POL" VARCHAR2(10), CONSTRAINT "GOST_PK" PRIMARY KEY ("GOSTID"), CONSTRAINT "GOST_C01" CHECK (pol in ('m', 'z')) ) CREATE TABLE "STATUS_REZERVACIJE" ( "STATUSID" NUMBER NOT NULL, "NAZIVSTATUSA" VARCHAR2(300), CONSTRAINT "STATUS_REZERVACIJE_PK" PRIMARY KEY (" STATUSID")

CONSTRAINT "STATUS_REZERVACIJE_C01" CHECK (nazivsta tusa in (‘Privremena’, ‘Potvrdjena’, ‘Otkazana’, ‘Realizova na’))

) CREATE TABLE "REZERVACIJA_APARTMANA" ( "APARTMANID" NUMBER , "GOSTID" NUMBER, "DATUMOD" DATE, "DATUMDO" DATE, "STATUSID" NUMBER, CONSTRAINT "REZERVACIJA_APARTMANA_PK" PRIMARY KEY ("DATUMDO", "DATUMOD", "GOSTID", "APARTMANID"), CONSTRAINT "REZERVACIJA_APARTMANA_FK" FOREIGN KEY ("STATUSID") REFERENCES "STATUS_REZERVACIJE" ("STATUSID"), CONSTRAINT "APARTMAN_FK" FOREIGN KEY ("APARTMANID ") REFERENCES "APARTMAN" ("APARTMANID"), CONSTRAINT "GOST_FK" FOREIGN KEY ("GOSTID") REFERENCES "GOST" ("GOSTID") ) b) Prikazati šifru, ime i prezime svih različitih gostiju koji imaju potvrñene rezervacije u

januaru tekuće godine. Rezultat sortirati u opadajućem 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;

Page 77: Baze Zadaci

KARDINALNE GREŠKE: Upotreba group by ili group by + having klauzule (umesto order by). TIPIČNE GREŠKE: Izostavljanje distinct klauzule. c) Sve još uvek nerealizovane rezervacije za apartmane vrste „Duplex“ nagrañuju se

produžetkom boravka u trajanju od dva dana. Nagrañuju se samo rezervacije duže od nedelju dana. Napisati naredbu kojom se navedeni zahtev realizuje u bazi podataka.

(8 poena) update rezervacija_apartmana set datumdo = datumdo + 2 where apartmanid in (select apartmanid

from apartman join vrsta_apartmana using( vrstaid )

where nazivvrste = 'Duplex' ) and statusid in (select statusid

from status_rezervacije where nazivstatusa <> 'Realizovana' )

and datumdo - datumod >7; NAPOMENA: Moguće je koristiti samo jedan podupit (svi ili većina uslova u njemu), ALI samo ako je uslov definisan preko kompletnog primarnog ključa!!!! Npr. …. where (apartmanid,gostid,datumod,datumdo) in (select apartmanid, gostid,datumod,datumdo from ………) KARDINALNE GREŠKE: Nekorišćenje naredbe UPDATE, već select, alter table, alter update table i slično. Automatski 0 poena. TIPIČNE (KRUPNE) GREŠKE: Definisanje uslova nad podupitom (iz napomene) samo preko dela primarnog ključa (samo apartmanid, samo gostid, itd.) ili preko statusid. Upotreba FROM klauzule u UPDATE naredbi (?). Upotreba operatora „=“ umesto „in“ (očigledno je da svi podupiti potencijalno vraćaju više vrednosti).

d) Kreirati pogled PREGLED_VRSTA_APARTMANA(VRSTA_ID, NAZIV_VRSTE, UKUPNO, REALIZOVANO, PROSECNO_TRAJANJE) kojim se za svaku vrstu apartmana prikazuje šifra, naziv, ukupan broj rezervacija, realizovan broj rezervacija i prosečno trajanje rezervacije za tu vrstu apartmana. U rezultatu je potrebno prikazati samo podatke o vrstama apartmana kod kojih je prosečno trajanje rezervacije duže od opšteg prosečnog trajanja rezervacije (prosečnog trajanja svih rezervacija, bez obzira na vrstu apartmana).

(8 poena) create or replace view PREGLED_VRSTA_APARTMANA( VRSTA_ID, NAZIV_VRSTE, UKUPNO, REALIZOVANO, PROSECNO_TRAJANJE) as select vrstaid , nazivvrste , count( * ), sum(case nazivstatusa when 'Realizovana' then 1 else 0 end), avg( datumdo - datumod ) from vrsta_apartmana join apartman using( vrstaid ) join rezervacija_apartmana using ( apartmanid ) join status_rezervacije using( statusid ) group by vrstaid , nazivvrste having avg( datumdo - datumod ) > (select avg( datumdo - datumod ) from rezervacija_apartmana ) ; KARDINALNE GREŠKE: Definisanje uslova u where klauzuli, umesto u having.

Page 78: Baze Zadaci

TIPIČNE (KRUPNE) GREŠKE: Nekorišćenje podupita u having klauzuli. Izostavljanje grupisanja ili loše grupisanje. Upotreba podupita u okviru count, sum i avg funkcija (koji nemaju nikakve veze sa ostatkom upita). Upotreba dodeljenog naziva kolone umesto SQL koda. Npr. .......... having prosecno_trajanje > (select avg( datumdo - datumod ) from rezervacija_apartmana ) ;

Page 79: Baze Zadaci

Baze podataka - priprema za kolokvijum 2012/13 (by Stepke) -

Predgovor: pripreme za kolokvijum su održane 05.06.2013. (držao ih je Srđa 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 obično odnose na UPDATE ili VIEW. 1. Dat je relacioni model (italic nazivi u relacionom modelu predstavljaju spoljne ključeve) 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 uključiti i definicije svih ograničenja. Rešenje: 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')));

Page 80: Baze Zadaci

CREATE TABLE RASPORED( CENTARID NUBMER(7), UCIONICAID NUBMER(7), PROGRAMID NUBMER(7), KURSID NUBMER(7), PREDAVACID NUBMER(7), DATUM_i_VREME TIMESTAMP, CONSTRAINT RASPORED_PK PRIMARY KEY (CENTARID, UCIONICAID, PROGRAMID, KURSID, PREDAVACID), CONSTRAINT RASPORED_FK1 FOREIGN KEY (CENTARID, UCIONICAID) REFERENCES UCIONICA(CENTARID, UCIONICAID), CONSTRAINT RASPORED_FK2 FOREIGN KEY (PROGRAMRID, KURSID) REFERENCES KURS(PROGRAMID, KURSID), CONSTRAINT RASPORED_FK3 FOREIGN KEY (PREDAVACID) REFERENCES PREDAVAC(PREDAVACID)); b) Prikazati sve podatke o Oracle kursevima koji imaju stranog predavača. Rešenje: SELECT k.* FROM KURS k JOIN RASPORED R ON (k.PROGRAMID = R.PROGRAMID AND k.KURSID = R.KURSID) JOIN PREDAVAC P ON (R.PREDAVACID = P.PREDAVACID) JOIN DRZAVA D ON (P.DRZID = D.DRZID) WHERE D.NAZIV <> 'SRBIJA' AND k.NAZIV_KURSA IN ('ORACLE SQL', 'ORACLE PL/SQL'); c) Prikazati naziv, datum početka i datum završetka, kao i ukupnu cenu programa (= sumi cena kurseva u programu) onih programa koji su održani u 2008-oj godini i koji nisu skuplji od 800 EUR. Rešenje: SELECT PK.NAZIV_PROGRAMA, PK.DATUM_POCETKA, PK.DATUM_ZAVRSETKA, SUM(K.CENA) FROM PROGRAM_KURSA PK JOIN KURS K ON (PK.PROGRAMID = K.PROGRAMID) WHERE (EXTRACT(YEAR FROM PK.DATUM_POCETKA) = 2008) AND (EXTRACT(YEAR FROM PK.DATUM_ZAVRSETKA) = 2008) GROUP BY PK.NAZIV_PROGRAMA, PK.DATUM_POCETKA, PK.DATUM_ZAVRSETKA HAVING SUM(K.CENA) < 800; Napomena: u GROUP BY moraju da se nađu sve kolone iz SELECT. Obrnuto ne važi. d) Prikazati naziv kursa, sertifikat, cenu i cenu sa popustom. Cena sa popustom se formira tako što se za kurseve koji će se održati u učionici sa 5, 10 i 15 mesta odobrava popust od 5%, 10% i 15% respektivno. Za sve ostale kurseve odobreni popust iznosi 2%.

Rešenje: SELECT K.NAZIV_KURS, K.SERTIFIKAT, K.CENA, (CASE U.UK_BR_MESTA WHEN 5 THEN K.CENA*0.95 WHEN 10 THEN K.CENA*0.9 WHEN 15 THEN K.CENA*0.85 ELSE K.CENA*0.98 END) AS CENA_SA_POPUSTOM FROM KURS K JOIN RASPORED R ON (K.PROGRAMID = R.PROGRAMID AND K.KURSID = R.KURSID) JOIN UCIONICA U ON (R.CENTARID = U.CENTARID AND R.UCIONICAID = U.UCIONICAID);

Page 81: Baze Zadaci

2. Data je relaciona shema (italic nazivi u relacionoj shemi predstavljaju spoljne ključeve): 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 uključiti i definicije svih ograničenja. Rešenje: Srđa Bjeladinović je preskočio ovu stavku jer je slična kao u 1. zadatku pod a) b) Prikazuje Prezime, Ime, GodinaStaza, Naziv kluba za one trenere koji su zaposleni u sportskom društvu 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 matičnom klubu. Rezultat sortirati u opadajućem redosledu godina staža i rastućem prezimena. Rešenje: 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) Povećava iznos isplate za 50% svim trenerima koji su stariji od 40 godina, a njihov matični klub pripada sportskom društvu čiji naziv počinje sa A. Rešenje: 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%') );

Page 82: Baze Zadaci

d) Kreira pogled HONORAR (Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesečne isplate trenerima u tekućoj godini. Kolona BrojKlubova prikazuje broj različitih klubova koji su isplatili honorar treneru u datom mesecu. Rešenje: 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);

Page 83: Baze Zadaci

b) Prikazati naziv pice, veličinu pice, datum i vreme narudžbine, za sve pice naručene u poslednja tri dana. Prikazati podatke samo za pice koje među svojim sastojcima sadrže mocarelu ili gorgonzolu i čiji je prečnik veći od 30 cm. Rezultat sortirati u rastućem redosledu naziva pice i opadajućem redosledu datuma i vremena narudžbine.

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 povećati cenu za 10% svim picama koje sadrže bar dve vrste sira (tj. imaju

bar dva sastojka čija je vrsta sastojka "Sir") i čija cena posle povećanja neće biti veća 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 veličini, prečnika 32 cm. Cene za druge veličine pice izračunavaju se na osnovu cene standardne pice, proporcionalno prečniku pice. Kreirati pogled OBRAČUNCENA(PICAID, NAZIVPICE, NAZIVVELICINE, CENA, BRNARUDZBI,VAUCER) kojim se za SVAKU PICU KOJA POSTOJI U PONUDI prikazuju šifra pice, naziv pice, naziv veličine, obračunata cena pice za tu veličinu i ukupan broj narudzbina pice u toj veličini. Pogled prikazuje podatke samo za pice naručene u poslednjih sat vremena, a čija veličina nije "Standard". U koloni VAUCER se prikazuje vrednost "DA" ukoliko je broj narudžbina veći od 5, a vrednost "NE" u suprotnom.

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

BRNARUDZBI,VAUCER) as

select picaid, nazivpice, nazivvel as nazivvelicine, cena/32*precnik as cena,

sum(case when (sysdate-datumvreme)*24<1 and nazivvel <> 'Standard' then 1 else 0 end) as

brnarudzbi,

case when sum(case when (sysdate-datumvreme)*24<1 and nazivvel <> 'Standard' then 1 else 0

end)>5 then 'DA' else 'NE' end as vaucer

from pica left join narudzbina using (picaid) join velicina using (velid)

group by picaid, nazivpice, nazivvel, cena/32*precnik;

Page 84: Baze Zadaci

b) Napisati SQL upit kojim se prikazuju naziv seminara i period održavanja seminara (datume početka i kraja seminara) za seminare koji su održani u poslednje tri godine (računajući od današnjeg datuma), kojima je početak bio u oktobru mesecu, a na kojima su učestvovali istraživači iz instituta koji se nalaze u Beogradu. Rezultat sortirati od najranije ka najkasnije održanom 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 povećava plata za 20% svim istraživačima koji su imali više od dvadeset učešća na seminarima i barem dve različite uloge na njima, a mlađi 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 istraživača, ime istraživača, broj učešća na seminarima u ulozi prezentera, broj učešća na seminarima u drugim ulogama, ukupan broj učešća istraživača na seminarima i status. U koloni STATUS potrebno je prikazati vrednost “ispod proseka” ukoliko je ukupan broj učešća konkretnog istraživača manji od prosečnog broja učešća. U suprotnom prikazati “iznad proseka”. Pogledom obuhvatiti sve istraživače, bez obzira da li su imali učešće 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

Page 85: Baze Zadaci

www.fonforum.org 1

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 sledeći zahtevi: a) Prikazati sve podatke o izdatim polisama osiguranja vozila (naziv tipa osiguranja = “OSIGURANJE VOZILA”) u

tekućem 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 veću od 30.000 dinara, a angažovani 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.

Page 86: Baze Zadaci

www.fonforum.org 2

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 igračima 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) .

Page 87: Baze Zadaci

www.fonforum.org 3

b) kreira pogled DnevniRasporedPolazaka (BrojLinije, TipVozila, NazivPolazneStanice, NazivDolazneStanice, UkupanBrojVozila) kojim se prikazuje planirani dnevni izlazak vozila za tekuci datum. c) prikazuje sve podatke o liniji, dan i broj polazaka, za liniju koja je imala najmanje polazaka iz skupa maksimalno realizovanih linija po danima u mesecu Januaru tekuce godine. Maksimalno realizovana linija za neki konkretan dan je ona koja ima nejveci broj realizovanih polazaka. d) daje pregled po kvartalima, pa po tipovima vozila, ukupan broj planiranih polazaka, broj uspesnih polazaka, broj otkazanih polazaka i broj polazaka sa kasnjenjem za 2002. godinu. 8. Data je relaciona shema :

TIP_KOMPONENTE (TIPID, NAZIV, OPIS) ATRIBUTI_TIPA(TIPID, ATRIBUTID,NAZIV, DOMEN, OBAVEZAN) KOMPONENTA(KOMPID, SERIJSKIBROJ, TIPKOMPONENTE) ATRIBUTI_KOMPONENTE(KOMPID, ATRIBUTID,VREDNOST) VEZA(NADR_KOMPID, PODR_KOMPID) SKLOP(KOMPONENTAID, NAZIV)

Napisati SQL:1999 naredbe kojima se: a) Prikazuju sve komponente i nazivi i vrednosti njihovih obaveznih atributa koje pripadaju tipu komponente sa nazivom “AAA”. b) Dati prosečne, minimalne i maksimalne vrednosti svih atributa sa domenom “INTEGER” za sve tipove komponenti. c) Kreirati pogled POGRESNI_ATRIBUTI(KOMPID, ATRIBUTID, NAZIV_ATRIBUTA, GRESKA) kojim se prikazuju svi pogrešno uneti atributi za svaku komponentu. Ukoliko je komponenti pridru`en atribut koji nije definisan za tip komponente kojem pripada komponenta u polje GRESKA upisati ‘N/A’. Ukoliko komponenti nije pridružen obavazan atribut u polje GRESKA upisati ‘OBAVEZAN’. d) Ubaciti u relaciju SKLOP sve “primarne” komponente koje se ne nalaze u relaciji. Primarne komponente su one koje nisu ugradjene ni u jedan sklop. 9. Data je relaciona shema :

KNJIGA (KNJIGA-ID, NAZIV, GOD_IZDANJA, BROJ_AUTORA, BROJ_PRIMERAKA) PRIMERAK_KNJIGE (KNJIGA-ID,EVIDENCIONI-BROJ, STATUS) AUTOR(AUTOR-ID, IME) NAPISAO(KNJIGA-ID, AUTOR-ID)

- Napisati SQL:1999 naredbe kojima se: (a) Za sve autore prikazuje broj knjiga koje su napisali. Rezultat sortirati po broju knjiga. (b) Prikazuju nazivi knjiga koje je napisao neparan broj autora i kojih ima u većem broju primeraka (podatak o broju primeraka koristiti iz relacije PRIMERAK_KNJIGE, podatke o broju autora koristiti iz relacije NAPISAO). (c) Proverava da li je vrednost atributa BROJ_AUTORA relacije KNJIGA jednaka broju n-torki relacije NAPISAO. Ako je vrednost atributa ispravna upit treba da prikaže naziv knjige i tekst “Ispravan broj autora”, a u suprotnom naziv knjige i tekst “Neispravan broj autora”. 10. Data je relaciona shema :

HOTEL(HOTELID, NAZIV, ADRESA, GRAD, KLASA) TIPSOBE(TIPSOBEID, NAZIV, OPIS) SOBA (HOTELID, BROJSOBE, TIPSOBE, STATUS) HOTEL_TIPSOBE (HOTELID,TIPSOBEID, UKBROJSOBA, CENA) REZERVACIJA(HOTELID,RBR, DATUMOD, DATUMDO, TIPSOBEID, STATUS, BROJSOBE)

Napisati SQL:1999 naredbe kojima se: a) Prikazati sledeće podatke o kapacitetima hotela (nazivHotela, nazivTipaSobe, brojSoba I cenaSobe) za hotele klase “3 zvezdice” koji imaju bar 2 (dve) jednokrevetne sobe. Rezultat upita sortirati po opadajućem redosledu “nazivaTipaSobe” a u okviru njih u rastućem redosledu cena sobe. b) Kreirati pogled kojim se za sve gradove prikazuju broj hotela po kategorijama. Pogled sadrži sledeće atribute: nazivGrada, klasaHotela, ukupanBrojHotela, ukupanBrojSoba. c) Na osnovu podatka o sobama (relacija SOBA) ažurirati kapacitete svih hotela (atribut “UKBROJSOBA” relacije “HOTEL_TIPSOBE”).

Page 88: Baze Zadaci

www.fonforum.org 4

11. Data je relaciona shema: DOBAVLJAC(DOB, IMED, STATUS, GRAD) KUPAC(KUP, IMEK, GRAD) PROIZVOD(PRZ, IMEP, BOJA, TEZINA) ISPORUKA(DOB, PRZ, KUP, DATUM, KOLICINA)

Napisati SQL naredbe kojima se: a) prikazuju imena kupaca i primljene količine proizvoda žute boje za isporuke u 2000. godini. b) kreira pogled RAZMENA sa atributima IMED, GRADD, IMEK, GRADK kojima se prikazuje naziv dobavljača, grad dobavljača, naziv kupca i grad kupca, za one dobavljače I kupce koji su imali robnu razmenu u tekućoj godini a da nisu iz istog grada. c) prikazati imena, gradove i količine za one dobavljače koji su isporučili vi{e od 100 komada proizvoda ‘Philips TV 51’ u prvom kvartalu tekuće godine. Rezultat prikazati u opadajućem redosledu količina. d) Napisati program u C (izuzetno u pseudo kodu) kojim se dobavljačima koji su imali vi{e od 100 isporuka u prvom kvartalu tekuće godine postavlja vrednost atributa STATUS na “VIS”. (Napomena: Relacioni sistem podr`ava samo upite nad jednom tabelom.) 12. Dat je relacioni model:

KLINIKA (KLINIKAID, NAZIV, ADRESA, GRAD) DOKTOR (DOKTORID, POL, IME, SPECIJALNOST, RADNI_STAZ) RADI_NA_KLINICI (DOKTORID, KLINIKAID, BR_SATI) DETE (DOKTORID, DETEID, IME, POL, STAROST, RAZRED)

- Napisati SQL naredbe kojima se: (a) Prikazuju svi podaci o doktorima koji rade na većem broju klinika a koji imaju radni staž veći od 10 godina. (b) Prikazuju Ime doktora, broj dece muškog pola, broj dece ženskog pola i ukupan broj dece za svakog doktora čija je specijalnost “OFTAMOLOG” (c) Kreira pogled PROSEK_NA_KLINICI sa atributima Klinika, Naziv, Min_Sati, Prosecni_Sati, Max_sati kojima se prikazuje ID klinike, naziv klinike i minimalni, prose~ni i maksimalni broj sati angažovanja doktora koji rade isključivo na tim klinikama. 13. Data je relaciona shema:

PROJEKAT (SIFP,NAZP,BUDŽET,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 tekućoj godini napunili 10 godina radnog staža a angažovani su na bar 4

projekta. b) prikazuje starosna struktura radnika po gradovima u kojima rade (broj radnika mladjih od 20 god, broj radnika izmedju

20 i 50 god. i broj radnika starijih od 50 godina). c) kreira pogled RUKOVODILAC (NazivPreduzeća, ImePrezimeRukovodioca, DatumZaposlenja, Plata) kojim se

prikazuju za sva preduzeća svi rukovodioci kojima ime i prezime počinje na slovo ‘M' a završava na ‘Ć’ i imaju platu veću od 45.000 dinara, a bar na jednom projektu kojim rukovodi ima bar 30 angažovanih radnika.

14. Data je relaciona shema :

AERODROM(AEROID, NAZIV, DRZAVA, MESTO) LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO) LET(LINIJAID,DATUMiVREME, AVIONID) AVION (AVIONID, OZNAKA, TIPAVIONA, BROJ_SEDISTA) REZERVACIJA(LINIJAID,DATUMiVREME, RBR, STATUS)

STATUS in {‘OK’, ‘OTKAZAN’} Napisati SQL:1999 naredbe kojima se: a) Prikazuju svi podaci o avionima koji imaju više od 200 sedišta, na svim letovima 05.10.2004. godine osim na letovima

za “NEW YORK” i “LONDON”. b) Prikazuju svi direktni letovi iz ŠVAJCARSKE za ŠPANIJU: datum, vreme, broj linije, naziv polaznog aerodroma,

naziv odredišnog aerodroma sortirano po datumu i vremenu polaska za sve letove u drugom kvartalu tekuće godine.

Page 89: Baze Zadaci

www.fonforum.org 5

c) Kreira pogled REALIZACIJA kojim se prikazuje ukupna realizacija po svim linijama u tekućoj godini. Prikazuju se BrojLinije, BrojRealizovanihLetova, UkupanBrojPutnika, UkupniKapaciteti, ProsečnaPopunjenostLeta.

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 sledeće 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 rastućem redosledu ceneJednokrevetneSobe.

b) Prikazati sledeće 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 opadajućem redosledu “nazivaTipaSobe” a u okviru njih u rastućem redosledu cena sobe.

c) Kreirati pogled kojim se za sve gradove prikazuje broj hotela po kategorijama. Pogled sadrži sledeće 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 isplaćenim zaradama (naziv tipa isplate je ‘ZARADE’) zaposlenima (fizičko lice sa statusom

‘ZAPOSLEN’) čije ime počinje na slovo ‘C’. Rezultat sortirati po prezimenu i imenu zaposlenog. b) Prikazuje jmbg, prezime, ime , UkDavanja, UkBruto, UkNeto, BrojIsplata za sva fizička lica čiji je ukupan bruto iznos

(UkBruto) veći od 500.000,00 dinara. UkDavanja predstavlja neto iznos svih obaveza, a UkBruto čini neto iznos uvećan za iznos obračunatih obaveza koje ulaze u bruto.

c) Kreira pogled PORESKA_PRIJAVA (tip, jmbg, prezime, ime, neto, osnovica, porez, pio, zdravstvo, nezaposlenost) kojim se za svako fizičko lice daje matični broj, prezime i ime fizičkog lica, ukupan isplaćeni neto iznos, osnovica je zbir osnovica na koju je računat samo porez, kao i ukupne iznose pojedinih obaveza porez, pio, zdravstvo, nezaposlenost. Atribut tip treba da prikazuje ‘RADNIK’ ako je status fizičkog lica 'ZAPOSLEN’ ili ’PENZIONER’, a ‘TRECA LICA’ u svim ostalim slučajevima. Poreska prijava treba da sadrži podatke samo za 2003. godinu.

17. Data je relaciona shema:

PONUDA(PonudaID, Datum, Naziv_preduzeća,Telefon, Period_otplate, Gotovinski_popust, KonkursID) STAVKA_PONUDE(PonudaID,Rb, Proizvođač, 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 preduzeća, naziv proizvođača opreme,

ponuđenu cenu opreme, naziv opreme i period garancije) za sve ponude u tekućoj godini onih preduzeća koja odobravaju period otplate veći od godinu dana ili odobravaju gotovinski popust od bar 5%. Period otplate je izražen u mesecima.

b) Prikazati šifru ponude, naziv preduzeća i uslove plaćanja za ona preduzeća koja za opremu tipa ‘KOMPJUTERSKA OPREMA’ nude proizvode više različitih proizvođača.

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 količina 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

Page 90: Baze Zadaci

www.fonforum.org 6

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 duže od 20 dana. Rezultat sortirati od najkasnijeg do najranijeg datuma ponude.

b) Prikazati šifru ponude i naziv preduzeća koje je poslalo ponudu, pri čemu se u ponudi za opremu tipa ‘KOMPJUTERSKA OPREMA’ nude proizvodi više različitih proizvođača, a cena te opreme je između 15 000 i 80 000 (bez uračunatog 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, matični broj, naziv obrazovnog profila ) za one zaposlene koji

imaju bar ‘VI’ stepen stručne spreme i koji neće u tekućoj ili narednoj godini steći pravo na odlazak u penziju po osnovu starosti(U tekućoj ili narednoj godini navršavaju Muškarci-65, Žene-58).

b) Prikazuju šifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome je bilo angažovano 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 uočenog trenda ‘RAST’,‘PAD’ ili ‘BEZ_PROMENA’ i procentualno izražena razlika između ove dve godine. ILI a) Prikazuju svi podaci o zaposlenima (šifra, ime, prezime, matični broj, naziv obrazovnog profila ) za one zaposlene koji imaju ‘V’ stepen stručne spreme i koji su više od 6 meseci na probnom radu. b) Prikazuju šifra, naziv radnog mesta i naziv obrazovnog profila potrebnog za radno mesto na kome je bila najveća fluktuacija radnika. Fluktuacija radnog mesta je definisana preko broja angažovanja kod kojih je poznat datum odlaska (DatDo), tj. ne računaju se tekuća angažovanja 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 uočenog trenda ‘RAST’,‘PAD’ ili ‘BEZ_PROMENA’ i procentualno izražena razlika između ove dve godine. ILI a) Prikazuju svi podaci o zaposlenima (šifra, ime, prezime, matični broj, naziv obrazovnog profila ) za one zaposlene koji imaju ‘IV’ stepen stručne 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 tačno 5. Fluktuacija radnog mesta je definisana preko broja angažovanja kod kojih je poznat datum odlaska (DatDo), tj. ne računaju se tekuća angažovanja zaposlenih na tom radnom mestu. Prikazati samo one nazive obrazovnih profila koji počinju sa ‘S’ i koji nisu duži 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 uočenog trenda ‘RAST’,‘PAD’ ili ‘BEZ_PROMENA’ i procentualno izražena razlika između 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)

Page 91: Baze Zadaci

www.fonforum.org 7

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

TipLokacije in {‘PROIZVODNI POGON‘,‘ADMINISTRATIVNI OBJEKTI‘, ‘POMOĆNI OBJEKTI‘} AmortiazacionaGrupa in { ‘GRAĐEVINSKI OBJEKTI’, ‘OPREMA’ , ‘AUTOMOBILI’, ‘KOMPJUTERSKA OPREMA’ } PopisanaKolicina in {0,1} Napisati SQL:1999 naredbe kojima se: a) Prikazati šifre lokacija koje su tipa 'PROIZVODNI POGON' i na kojima prema popisu iz 2004 nema popisanog manjka

(popisana količina je za svaku stavku na toj lokaciji jednaka jedan). b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama ukupnu nabavnu vrednost osnovnih sredstava,

ukupnu otpisanu vrednost i broj sredstava koja su potpuno otpisala vrednost. Od atributa prikazati šifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u opadajućem redosledu po šifri lokacija.

c) Prikazati radnike koji su bili predsednici popisnih komisija u poslednje dve godine na lokacijama koje su u toj godini važile za lokacije sa najmanjom ukupnom nabavnom vrednošću osnovnih sredstava.

ILI a) Prikazuju šifre lokacija koje su tipa ’PROIZVODNI POGON' i na kojima prema popisu iz 2007. ima manjka (popisana količina za bar jednu stavku na toj lokaciji je jednaka nuli). b) Prikazati po lokacijama i u okviru njih po amortizacionim grupama najmanju nabavnu vrednost osnovnih sredstava. Od atributa prikazati šifre lokacija, nazive lokacija i nazive amortizacionih grupa. Prikazati u opadajućem redosledu po šifri lokacija. c) Prikazati sva osnovna sredstva amortizacione grupe „KOMPJUTERSKA OPREMA“ koja se nalaze u popisnoj listi za 2008 a nisu u popisnoj listi za 2007. godinu. 20. Data je relaciona shema:

IZDAVAC(SifIzdavaca,Naziv,BrojHale) KNJIGA(SifKnjige,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifVrsteLit) DNEVNA_PRODAJA(SifKnjige,Datum,BrojPrimeraka) VRSTA_LITERATURE(SifVrsteLit,NazivVrsteLit) AUTOR(SifAutora,ImePrezime,Drzava) NAPISAO(SifAutora,SifKnjige)

Napisati SQL:1999 naredbe kojima se: a) prikazuju svi podaci o knjigama koje spadaju u vrstu 'STRUCNA LITERATURA', koje je napisalo više autora, od

kojih je jedan profesor ‘Petrovic’. b) od tekućeg datuma, pa do kraja sajma odobrava (ažurira) popust od 20% za najslabije prodavano izdanje izdavačke

kuće “Narodna knjiga“. Najslabije prodavana knjiga je ona sa najmanjim procentualnim odnosom ukupnog broja prodatih primeraka i tiraža.

c) kreira pogled KNJIGE_NA_POPUSTU sa kolonama (NazivIzdavaca, NazivVrsteLiterature, UkBrProdPrimeraka, UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIznosPopusta) kojima se prikazuje po izdavacima na sajmu i za njih po tipovima literature ukupan broj prodatih primeraka, ukupan prihod od prodaje, ukupna suma koju je izdavac izgubio na ime odobrenog popusta i prosecan procenat popusta. Vršiti prikaz podataka samo za knjige koje su na popustu.

21. Data je relaciona shema:

IZDAVAC(SifIzdavaca,Naziv,BrojHale) KNJIGA(SifKnjige,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifVrsteLit, SifIzdavaca) DNEVNA_PRODAJA(SifKnjige,Datum,BrojPrimeraka) VRSTA_LITERATURE(SifVrsteLit,NazivVrsteLit) AUTOR(SifAutora,ImePrezime,Drzava) NAPISAO(SifAutora,SifKnjige)

Napisati SQL:1999 naredbe kojima se: a) Prikazuju podaci o knjigama: naslov, ime i prezime autora, cena, cena sa popustom (ukoliko ga ima, inače prikazati punu cenu), naziv izdavača i broj hale, za sve knjige koje nisu na popustu ili im je odobren popust tekućeg dana. b) Prikazuje najprodavanija knjiga iz skupa najslabije prodavanih knjiga po danima. c) Kreira pogled KNJIGE_NA_POPUSTU sa kolonama (NazivIzdavaca, NazivVrsteLiterature, UkBrProdPrimerakaBezPopusta, UkBrProdPrimSaPopustom, UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIznosPopusta) kojima se prikazuje za sve izdavace na sajmu, po svim tipovima literature naziv izdavaca, naziv

Page 92: Baze Zadaci

www.fonforum.org 8

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‘, ‘POMOĆNI OBJEKTI‘} AmortiazacionaGrupa in { ‘GRAĐEVINSKI 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 količina 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

važile za lokacije sa najvećom ukupnom nabavnom vrednošću 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, prosečan procenat otpisane vrednosti (procentualni odnos otpisane i nabavne vrednosti) i ukupna sadašnja vrednost sredstava (razlika nabavne i otpisane) koja nisu pronađena na odgovarajućoj lokaciji.

23. Data je relaciona shema:

BIOSKOP(BioskopID,NazivBioskopa) SALA(BioskopID,SalaID,BrojMesta) FILM(FilmID,NazivFilma,ImeRezisera,Trajanje,Država,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 početka od 12:00 do 18:00h, a posećenost veća 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 američke produkcije ili koprodukcije: ukupan broj posetilaca, ukupan prihod ostvaren od prodaje ulaznica i najveći procenat posećenosti projekcije od svih flmova te produkcije. Ukoliko je u pitanju američki film u polju produkcija prikazati 'Sjedinjene američke države'. Ukoliko je u pitanju koprodukcija, u polju produkcija prikazati 'Koprodukcija'(atribut država je oblika USA, USA/FRA/GB, ESP/USA, i sl). produkcija uk_br_posetilaca uk_ostvareni_prihod max_posecenost Sjedinjene američke države Koprodukcija 24. Data je relaciona shema:

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

Page 93: Baze Zadaci

www.fonforum.org 9

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

Napisati SQL:1999 naredbe kojima se: a) Prikazuje naziv bioskopa, naziv sale, naziv filma, i ime režisera za film koji je otvorio FEST 2005.(Pretpostavlja se da je u najranijem terminu na dan otvaranja festivala bila samo jedna projekcija). b) Povećava cena ulaznica za sve projekcije FEST-a 2006 u salama bioskopa ‘Sava Centar’, u terminima od 20 časova pa do ponoći, za sve nagrađene filmove. Za projekcije u velikoj sali, cene karata treba povećati za 150 dinara,a za projekcije u maloj sali za 100 dinara. (Nazivi sala su ‘VELIKA SALA’ i ‘MALA SALA’, respektivno). c) Prikazati podatke o filmu za koji je registrovana najmanja posećenost iz skupa najgledanijih filmova po danima festivala FEST-2004. 25. Data je relaciona shema:

SEZONA ( NAZIV_SEZONE , DATOD , DATDO) PREDSTAVA (PREDID, NAZIV, TIP) REPERTOAR (PREDID, DATUMIVREME, STATUS) GLUMAC (GLUMID, IME, PREZIME) POSTAVA (PREDID, GLUMID, NAZIV_SEZONE, ULOGA)

Vrednosti atributa STATUS mogu biti “PLANIRANA”, “ODIGRANA” ili ”OTKAZANA”. Napisati SQL:1999 naredbe kojima se: a) Prikazati sve glumce koji u sezoni “2006/2007” nisu igrali u predstavi “Mnogo buke ni oko čega”. b) Prikazati nazive svih predstava koje su u sezoni “2005/2006” odigrane tačno jedanput. c) Kreirati pogled kojim se prikazuje NAZIV PREDSTAVE, UKUPAN BROJ ODIGRANIH PREDSTAVA, UKUPAN BROJ OTKAZANIH PREDSTAVA koje su najviše puta odigrane do tekućeg datuma, a procenat otkazanih u odnosu na ukupan broj predstava je manji od 10 procenata. ILI a) Prikazati naziv, datum i vreme održavanja svih drama koje se nalaze na repertoaru u junu tekuće godine. Rezultat

sortirati u rastućem redosledu datuma i vremena održavanja. b) Prikazati naziv predstave koja u sezoni 2009/2010 ima najviše glumaca u svojoj postavi. c) Kreirati pogled REALIZACIJA_REPERTOARA_KOMED(GODINA,BR_ODIGRANIH_KOMEDIJA,

BR_OTKAZANIH_KOMEDIJA,PROCENAT_USPESNOSTI) kojim se za svaku kalendarsku godinu (ne sezonu !!!) prikazuje broj odigranih komedija, broj otkazanih komedija i odnos broja odigranih komedija i ukupnog broja komedija predviđenog repertoarom. Prikazati podatke samo za one godine u kojima je repertoarom bilo predviđeno bar 20 prikazivanja komedija. Procenat uspešnosti zaokružiti na dve decimale.

26. Data je relaciona shema: SEZONA ( NAZIV_SEZONE , DATOD , DATDO) PREDSTAVA (PREDID, NAZIV, TIP) REPERTOAR (PREDID, DATUMIVREME, STATUS) GLUMAC (GLUMID, IME, PREZIME) POSTAVA (PREDID, GLUMID, NAZIV_SEZONE, ULOGA) STATUS in (’ODIGRANA’, ’OTKAZANA’) TIP in (’KOMEDIJA’, ’DRAMA’, ’TRAGEDIJA’)

Napisati SQL:1999 naredbe kojima se: d) Prikazati prezime i ime glumaca, kao i naziv sezone u kojoj su, u predstavi „Svici“, igrali ulogu čiji naziv počinje

slovom O. Rezultat sortirati u opadajućem redosledu naziva sezone i rastućem redosledu prezimena glumca. e) Prikazuju šifra i naziv predstave koja se u tekućoj godini najmanje puta nalazi na repertoaru. f) Kreira pogled PREGLED_GLUMACA(GLUMACID, PREZIME, IME, BROJ_PREDSTAVA_08_09,

BROJ_PREDSTAVA_09_10) kojim se za svakog glumca prikazuju šifra, prezime, ime, broj predstava u čijim postavama je bio u sezoni „2008/2009“ i broj predstava u čijim postavama je bio u sezoni „2009/2010“. U obzir uzeti samo glumce koji su u svojoj karijeri bili u postavama više od 20 različitih predstava i kod kojih je broj komedija u čijim postavama su bili u sezoni „2009/2010“ veći od broja komedija u čijim postavama su bili u sezoni „2008/2009“.

27. Data je relaciona shema:

SPORTSKO_DRUSTVO (SifraDrustva, Naziv, Adresa, DatumOsnivanja ) KLUB (SifraKluba, Naziv, Adresa, DatumOsnivanja, SifraDrustva)

Page 94: Baze Zadaci

www.fonforum.org 10

TRENER (SifraTrenera, Ime, Prezime, DatumZaposlenja, MaticniKlub) ANGAZOVANJE (SifraKluba, SifraTrenera , Datum, BrojSati ) ISPLATA ( SifraIsplate, Datum, Iznos, SifraKluba, SifraTrenera)

Napisati SQL:1999 naredbe kojima se: a) Prikazuje Prezime, Ime, GodineStaza, Naziv kluba za one trenere koji su zaposleni u sportskom društvu sa nazivom «Atleta» u poslednjih 5 godina. Rezultat sortirati u opadajućem redosledu godina staža i rastućem prezimena. b) Prikazuje za sva sportska društva klubove koji imaju broj zaposlenih trenera izmedu 5 i 10, i koji su bili angažovani samo u matičnom klubu. c) Kreira pogled HONORARI(Prezime, Ime, BrojKlubova, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesečne isplate trenerima u prethodnoj godini koji su angažovani van matičnog kluba. Kolona BrojKlubova prikazuje broj različitih klubova koji su isplatili honorar treneru u datom mesecu. 28. Data je relaciona shema:

LEKAR ( SifraLekara, Ime, Prezime, DatumZaposlenja, MaticniCentar) ANGAZOVANJE (SifraCentra , SifraOrdinacije, SifraLekara , Datum, BrojSati) MEDICINSKI CENTAR (SifraCentra, Naziv, Adresa, DatumOsnivanja) ORDINACIJA (SifraCentra, SifraOrdinacije, Naziv, Adresa, DatumOsnivanja) ISPLATA ( SifraIsplate, Datum, Iznos, SifraCentra , SifraOrdinacije, SifraLekara)

Napisati SQL:1999 naredbe kojima se: a) Prikazuje Prezime, Ime, GodineStaza, Naziv ordinacije za one lekare koji su zaposleni u centru sa nazivom «Medicus» i koji su bili anagažovani u poslednjih 5 godina. Rezultat sortirati u rastućem redosledu godina staža i opadajućem imena. b) Prikazuje za sve medicinske centre ordinacije koje imaju broj zaposlenih lekara manje od 5 a koji su bili anagažovani samo u svom matičnom centru. c) Kreira pogled HONORARI(Prezime, Ime, BrojCentara, Mesec, UkupnaMesecnaIsplata) kojim se prikazuju mesečne isplate lekarima u tekućoj godini koji su angažovani van matičnog centra. Kolona BrojCentara prikazuje broj različitih ordinacija koje su isplatile honorar lekarima u prošlom mesecu. 29. Data je relaciona shema:

SEMINAR (SIFSEM,NAZS,BUDZET,RUKOVODILAC_S) UCESCE (SIFIST, SIFSEM) ISTRAZIVAC (SIFIST,IMEIST,DATRODJ,DATZAP,PLATA,SIFINST, SRUKOV) INSTITUT (SIFINST, NAZIV,GRAD)

Napisati SQL:1999 naredbe kojima se: a) prikazuju svi podaci o istraživačima koji su u tekućoj godini napunili tačno 5 godina radnog staža a učestvovali su na više od 60 seminara. b) prikazuje starosna struktura istraživača po gradovima u kojima rade (broj istraživača mlađih od 22 god, broj istraživača između 20 i 45 god. i broj istraživača starijih od 50 godina). c) kreira pogled RUKOVODILAC (NazivInstituta, ImeIstraživača, SifraIstraživača, DatumZaposlenja) kojim se prikazuje za sve institute imena rukovodilaca koji su učestvovali na više od 10 seminara u tekućoj godini. 30. Data je relaciona shema:

PRODUKCIJSKA_KUCA(SifProdukcije,Naziv,BrojHale) ALBUM(SifAlbuma,Naslov,Tiraz,Cena,SajamskiPopust, DatumOdobravanjaPopusta, SifPravca, SifProdukcije) DNEVNA_PRODAJA(SifAlbuma,Datum,BrojPrimeraka) MUZICKI_PRAVAC(SifPravca,NazivPravca) KOMPOZITOR(SifKompozitora,ImePrezime,Drzava) KOMPONOVAO(SifKompozitora,SifAlbuma)

Napisati SQL:1999 naredbe kojima se: a) Prikazuju podaci o albumima: naslov albuma, naziv produkcijske kuće, tiraž i cena za sve albume kojima je tiraž veći od 50.000 ili da im je tiraž manji od 50.000 ali popust veći od 10%. ILI a) Prikazuju podaci o albumima: naslov, ime i prezime kompozitora, cena, cena sa popustom (ukoliko ga ima, inače prikazati punu cenu), naziv produkcijske kuće i broj hale, za sve albume koje nisu na popustu ili im je odobren popust tekućeg dana. b) Prikazuje najprodavaniji album iz skupa najslabije prodavanih albuma po danima.

Page 95: Baze Zadaci

www.fonforum.org 11

c) Kreira pogled ALBUMI_NA_POPUSTU sa kolonama (NazivProdukcijskeKuce, NazivPravca, UkBrProdPrimerakaBezPopusta, UkBrProdPrimSaPopustom, UkPrihodOdProdaje, UkOdobrenPopust, ProsecanIznosPopusta) kojima se prikazuje za sve produkcijske kuće na sajmu, po svim muzičkim pravcima naziv produkcijske kuće, naziv muzičkog pravca, broj prodatih albuma bez popusta, broj prodatih albuma sa popustom, ukupan prihod od prodaje (sa i bez popusta), ukupna suma koju je produkcijska kuća izgubila na ime odobrenog popusta i prosečan 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 kuće i broj hale, za sve softvere kojima je popust odobren u tekućem mesecu i da naziv softvera sadrži frazu ERP.

b) Prikazuje naziv i ime softverske kuće 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 kuće iz Srbije koje izlažu na sajmu, po svim tipovima softvera, naziv softverske kuće, 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 kuća izgubila na ime odobrenog popusta i prosečan 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 sledeći 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 veću od 100 m2 kategorija stana je LUX, u suprotnom je STANDARD.

b) Prikazuju svi podaci o onim izvodjačima koji su bili angažovani 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 uočen trend promene prihoda u 2008-oj u odnosu na 2007-mu godinu. Moguće vrednosti trenda su: ‘RAST’, ‘PAD’, ‘BEZ PROMENE’. Prihod se računa 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 sledeći zahtevi:

a) Prikazati ime i prezime, kao i naziv tima, svih napadača starijih od 28 godina koji su trenutno angažovani u timu čiji naziv počinje samoglasnikom. Rezultat sortirati u opadajućem redosledu prezimena napadača.

Page 96: Baze Zadaci

www.fonforum.org 12

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 angažovanja 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, nerešenih 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 domaćin u tekućoj godini.

ILI a) Prikazati ime, prezime, datum rođenja 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 počeo karijeru, kao i koliko je godina

proveo u tom klubu (obratiti pažnju na to da fudbaler može i sada igrati u klubu u kom je počeo karijeru). ILI a) Prikazati sve podatke o fudbalerima koji su mlađi od 25 godina, koji su u tim Real Madrida došli u toku tekuće godine.

Rezultat sortirati u rastućem redosledu pozicije na kojoj fudbaler igra i opadajućem redosledu imena fudbalera. b) Prikazati timove (timid i naziv tima) koji imaju više od 3 napadača koji su u klubu duže 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 napadača, prezime, ime, naziv tima, ukupan broj postignutih golova, prosečan broj postignutih golova po utakmici, procenat šuteva koji su išli u okvir gola (u odnosu na ukupan broj šuteva), kao i procenat realizacije, tj. koji je procenat od ukupnog broja šuteva rezultirao golom.

Page 97: Baze Zadaci

www.fonforum.org 1

XML zadaci

1. Za dati model objekti-veze:

Katalog

Stavka kataloga

RBr# Cena1,m

Artikal

SifraArtikla# Naziv

1,1 0,m

SifraKataloga# Datum

a) Napisati XML model zapisan pomoću XML šeme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML šemi. c) Napisati XQuery kojim se prikazuju svi katalozi koji sadrže artikal „Laptop“ i čija je prosečna cena artikla

(tj. stavki kataloga) manja od 50 000.

2. Za dati model objekti-veze:

Faktura

SifraFakture# Iznos

Stavka fakture

1,mRBr# Kolicina

Proizvod

SifraProizvoda# Naziv

1,1 0,m

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Napisati XQuery kojim se prikazuju sve fakture koje sadrže proizvod „Notebook“ i čiji je iznos veći od

45000. d) Napisati XQuery kojim se prikazuju sve fakture koje sadrže proizvod „Chipsy“ i čiji je iznos manji od

50000.

3.

STUDENTKURS1,M 1,1

BRIND# ImePrezimeSifraKursa# NazivKursa

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa ImePrezime.

Page 98: Baze Zadaci

www.fonforum.org 2

4. Za dati relacioni model:

Dobavljač (SifraDob, NazivDob, AdresaDob)

Narudžbenica (BrojNarDob, SifraDob)

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

a) napraviti XML šemu b) dati primer ekstenzije relacija datog relacionog modela i primer XML dokumenta na osnovu napravljene

XML šeme c) napisati XQuery kojim se prikazuju sve narudžbenice kod kojima se nalaze naručeni i proizvod "A" i

proizvod "B" od dobavljača "XYZ"

5. Za dati model objekti-veze:

Račun

SifraRačuna# UkupniIznos

Stavka računa

1,mRBr# Cena

Proizvod

SifraProizvoda# Naziv

1,1 0,m

a) Napisati XML model zapisan pomoću XML šeme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML šemi. c) Napisati XQuery kojim se prikazuju svi računi koji sadrže proizvod „Coca-Cola“ i čiji je ukupni iznos veći

od 30 000.

6. Za dati model objekti-veze:

Narudžbenica

Stavka

narudžbenice

1,m

Dobavljač1,1 0,m

SifraNarudzbenice# UkupniIznos

RBr#Naziv

proizvoda

SifraDobavljaca# NazivDobavljaca

a) Napisati XML model zapisan pomoću XML šeme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML šemi. c) Napisati XQuery kojim se prikazuju sve narudžbenice poslate dobavljaču „XYZ“ čiji je ukupni iznos

manji od 55 000. d) Napisati XQuery kojim se prikazuju sve narudžbenice poslate dobavljaču „ABC Trade“ čiji je ukupni

iznos veći od 500 000.

Page 99: Baze Zadaci

www.fonforum.org 3

7. Za dati model objekti-veze:

Geografski entitet

Grad Region

S

Pripada

0,1

ID# Naziv

BrojStanovnika Površina

1,1 0,m

a) Napisati XML model zapisan pomoću XML šeme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML šemi. c) Napisati XQuery kojim se prikazuju svi gradovi sa više od 50000 stanovnika koji pripadaju regionu

Šumadije.

8. Dat je DTD koji prikazuje učešće studenata na projektima. <!DOCTYPE SP [

<!ELEMENT SP (Projekat*)>

<!ELEMENT Projekat (Naslov, Student+)>

<!ATTLIST Projekat ProjNum ID>

<!ELEMENT Naslov (#PCDATA)>

<!ELEMENT Student>

<!ATTLIST Student BrInd ID Ime CDATA> ]>

a) Napraviti UML dijagram klasa ili model objekti-veze kojim se najbolje prikazuje dati DTD. b) Napisati primer XML dokumenta koji je validan u skladu sa datim DTD-om. c) Napisati XPath izraz kojim se prikazuju svi projekti u kojima učestvuje bar jedan student sa imenom "Marko".

9. Za dati model objekti-veze:

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

Page 100: Baze Zadaci

www.fonforum.org 4

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

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje jedinstvenosti za vrednost atributa ImePrezime. 12. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje 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 posmatrajući dati dokument kao templejt uz sledeće 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 sadrže deonice (stocks) kompanije „zysmergy inc.“.

Page 101: Baze Zadaci

www.fonforum.org 5

14. Za dati model objekti-veze:

a) Napisati XML model zapisan pomoću XML Sheme, kojim se najbolje odslikava dati PMOV. b) Napisati primer validnog XML dokumenta koji sadrži sve elemente date u XML shemi. c) Definisati XML Schema ograničenje 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 sadrži sve elemente date u XML shemi. c) Napisati XQuery naredbu kojom se prikazuje ukupan broj projekcija u sali „Rita Hayworth“.