You are on page 1of 49

BOSNA I HERCEGOVINA

FEDERACIJA BOSNE I HERCEGOVINE


TUZLANSKI KANTON
JAVNA USTANOVA MJEŠOVITA SREDNJA
ELEKTROTEHNIČKA ŠKOLA TUZLA

Projekat 17. – Aerodrom

Profesorica: Minina Horozić


Radio: Jusuf Muratović Razred: IVT1
Stručno zvanje: Tehničar Računarstva

1
Sadržaj
1. ANALIZA POTREBA......................................................................................................................3
1.1 TEKST ZADATKA.....................................................................................................................3
1.2 TEOR.-sIJA.............................................................................................................................4
1.2.1 Osnovne komponente....................................................................................................4
1.2.2 Entiteti............................................................................................................................4
1.2.3 Atributi............................................................................................................................4
1.2.4 Veze................................................................................................................................4
2. ENTITETI I ATRIBUTI.....................................................................................................................6
3. DIJAGRAM OBJEKTI VEZE.............................................................................................................7
4. OPIS OBJEKATA............................................................................................................................7
5. PREVOĐENJE OBJEKATA..............................................................................................................8
6. PREVOĐENJE VEZA.......................................................................................................................9
7. RELACIONA ŠEMA......................................................................................................................10
8. SKRIPTA ZA KREIRANJE BAZE.....................................................................................................11
9. FORWARD BP-A NA LIVE SEVER.................................................................................................14
10. REVERSE ENGINEER.................................................................................................................17
11. SYNCHRONIZE MODEL WITH DATABASE.................................................................................20
11.1 SKRIPTA NASTALA IZVRŠAVANJEM SINHRONIZACIJE........................................................24
12. PRILOG 1..................................................................................................................................25

2
1. ANALIZA POTREBA

1.1 TEKST ZADATKA


Potrebno je osmisliti i realizirati bazu podataka koja može učinkovito poslužiti
za potrebe praćenja povijesti događaja unutar mobilne mreže, vezano za svakog
pojedinog “Pre-paid” korisnika. U fazi analize, utvrđeno je da poslužitelj (provider)
dobiva veliku količinu podataka u obliku tekstualnih datoteka koje dolaze s raznih
mrežnih elemenata, te se isti podaci trebaju efikasno učitati u radnu bazu podataka.
Poslužitelj razlikuje podatke o povijesti poziva i uplata na račun svojih PPS (Pre-Paid
Service) korisnika, te podatke o trenutnom stanju korisničkih računa. Osnovni
zahtjevi korisnika su slijedeći:

 imati uvid u povijest poziva(tko (calling party) je koga (called party) zvao, kada, koliko
dugo je trajao razgovor (dialog duration), koliko dugo je trebalo da se veza uspostavi(call
setup time), cijena razgovora(call charge)) i uplata (tko je kada I koliko novca uplatio
(recharge) na svoj račun)

 temeljem prijave poslužitelju i povijesti poziva i uplata treba ažurirati evidenciju


korisnika (naziv, broj telefona, datum otvaranja računa, datum zadnje uplate, stanje
računa, trajanje računa (mjeri se od dana zadnje uplate ili otvaranja računa), “friends”
broj, ...)

Zadaci:

1. Napraviti ER dijagram (entity-relationship diagram) dijagram sa svim bitnim


elementima.
2. Napraviti relacijski model
3. Dati kraći tekstualni opis odabranog rješenja uz osvrt na evetualne specifičnosti,
pretpostavke ili ograničenja u modelu.
4. Napraviti SQL naredbe za kreiranje baze podataka koja odgovara relacijskom modelu.
5. Napraviti SQL naredbe kojima se baza puni podacima za potrebe testiranja.
6. Napraviti primjer SQL upita za koje se očekuje da će biti najčešće upotrebljavani od
strane korisnika baze podataka (prema zahtijevima u opisu zadatka), opisati ih riječima
(koja je svrha upita?) i dati konkretni primjer rezultata kakav se dobije takvim upitom.

3
1.2 TEORIJA
1.2.1 Osnovne komponente
ERA je skraćenica od eng. Entity Relationship Attribute, što u prijevodu znači entiteti, veze i
atributi. Upravo to su osnovne komponente koje sačinjavaju svaki ER model. Veze povezuju
entitete, a entiteti su opisani atributima.

1.2.2 Entiteti
Za entitet se može reći da je skup objekata iz stvarnog svijeta o kojemu se spremaju podaci u
bazu. Entitet sadržava objekte kao što su živa bića (npr. osobe, studenti, životinje...),
zemljopisna odredišta (npr. gradovi, države...) ili bilo koje druge objekte s kojima se susrećemo i
potrebni su za bazu podataka (npr. vozila, zgrade, knjige...).
Razlikujemo slabe i jake entitete. Za razliku od jakih, slabi entiteti ovise o jakom entitetu kako bi
se mogli identificirati. Slabi entiteti nastaju zbog toga što nije moguće na drugačiji način
implementirati vezu više-više. Primarni ključ slabih entiteta sastavljen je od vanjskih ključeva
koji sudjeluju u vezi više-više. Primjer slabog entiteta je žanr filmova, jednoznačno je određen
dvokomponentnim primarnim ključem koji se sastoji od žanra i filma. Žanr filmova ovisi o jakim
entitetima žanr i film.

1.2.3 Atributi
Atributi su podaci kojima želimo opisati entitete. Svaki entitet ima pripadajući skup atributa
kojima želimo opisati isti. Razlikujemo identifikacijske i opisne atribute. Identifikacijski atributi
jednoznačno određuju svaku instancu entiteta, to su primarni ključevi. Opisni atributi služe za
detaljniji opis instance entiteta. Opisni i identifikacijski atributi mogu biti sastavljeni od jednog ili
više atributa.

1.2.4 Veze
Veze povezuju entitete i obično su opisane glagolom. Dijele se prema stupnju i kardinalnosti.
Stupanj veze određuje se brojem entiteta koji sudjeluju u njoj, a kardinalitetom se određuje
broj instanci jednog entiteta koji može biti povezan sa jednom instancom drugog entiteta.
Prema stupnju se razlikuju unarne, binarne, ternarne i n-arne veze. Kardinalnost može biti
jedan-jedan, jedan-više i više-više.
Primjer na slici Slika 1 prikazuje unarnu vezu kardinalnosti jedan-jedan. Unarna veza koristi se
kada je entitet povezan sa samim sobom. Na primjeru na slici ispod, osoba je u braku sa
osobom, pa se entitet osoba referencira na samog sebe. Kardinalnost na slici ispod je jedan-
jedan što znači da osoba može biti u braku sa najviše jednom osobom (ravna crtica na krajevima
veze). Kružić na vezi označava opcionalnost, što znači da osoba može, a i ne mora biti u braku sa
nekom osobom.

4
Slika 1 – Unarna veza, kardinalnost 1-1

Slika 2 prikazuje binarnu vezu sa jedan-više kardinalitetom. To je binarna veza jer u njoj
sudjeluju dva entiteta. Kardinalnost jedan više se označava ravnom crticom na strani 'jedan' i
znakom više na strani 'više'. Primjer prikazuje binarnu vezu u kojoj zaposlenik može izdati nula
ili više (opcionalnost) računa, a račun obavezno mora biti izdan od strane jednog zaposlenika

Slika 2-Binarna veza, kardinalnost 1-N

Slika 3 prikazuje ternarnu vezu koja je implementirana dodavanjem nove tablice i tri binarne
veze. U primjeru na slici u ternarnoj vezi sudjeluju entiteti liječnik, pacijent i lijek. Ternarna veza
se (isto kao i veza više-više) prikazuje posebnom tablicom u kojoj se nalaze primarni ključevi
svih entiteta koji sudjeluju u vezi. Liječnik može izdati nula ili više recepata, pacijentu može biti
izdano nula ili više recepata i jedan lijek može biti prepisan na nula ili više recepata. Recept
obavezno mora imati jednog liječnika, jednog pacijenta i jedan lijek.

5
Slika 3 – Ternarna veza realizirana kao 3 binarne veze

2. ENTITETI I ATRIBUTI
Modeliranje entiteta i veza zahtijeva da se svijet promatra preko tri kategorije:
 Entiteti: objekti ili događaji koji su nam od interesa
 Veze: odnosi među entitetima koji su nam od interesa
 atributi: svojstva entiteta i veza koja su nam od interesa
Entiteti našeg zadatka jesu:
a) Putnik
b) Rezervacija
c) Let
d) Mjesto
e) Avion
f) Kompanija
Atributi entiteta:
a) ID,ime,prezime,JMBG
b) ID,vrijeme polaska,vrijeme dolaska
c) ID,datum polaska,datum dolaska,polaziste,cijena,destinacija
d) ID,naziv
e) ID,oznaka,broj sjedista,dolet
f) ID,naziv,sjediste

6
3. DIJAGRAM OBJEKTI VEZE
.

4. OPIS OBJEKATA
Objekat Putnik
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Ime VARCHAR(50) DA NE
Prezime VARCHAR(50) DA NE
JMBG INT DA NE

Objekat Let
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Datum polaska DATE DA NE
Datum dolaska DATE DA NE
Polaziste VARCHAR(50) DA NE
Cijena FLOAT DA NE

Objekat Rezervacija

7
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Vrijeme polaska TIME DA NE
Vrijeme dolaska TIME DA NE

Objekat Mjesto
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Naziv VARCHAR(50) DA NE

Objekat Avion
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Oznaka VARCHAR(50) DA NE
Broj sjedista INT DA NE
Dolet INT DA NE

Objekat Kompanija
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Naziv VARCHAR(50) DA NE
Sjediste VARCHAR(50) DA NE

5. PREVOĐENJE OBJEKATA
U ovom koraku prevodimo objekte u tabele. To radimo tako što svaki atribut objkekta postaje
kolona u tabeli, a identifikator postaje primarni ključ.

Tabela Putnik
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Ime VARCHAR(50) DA NE
Prezime VARCHAR(50) DA NE
JMBG INT DA NE

Tabela Let
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Datum polaska DATE DA NE
Datum dolaska DATE DA NE
Polaziste VARCHAR(50) DA NE

8
Cijena FLOAT DA NE

Tabela Rezervacija
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Vrijeme polaska TIME DA NE
Vrijeme dolaska TIME DA NE

Tabela Mjesto
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Naziv VARCHAR(50) DA NE

Tabela Avion
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Oznaka VARCHAR(50) DA NE
Broj sjedista INT DA NE
Dolet INT DA NE

Tabela Kompanija
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
Naziv VARCHAR(50) DA NE
Sjediste VARCHAR(50) DA NE

6. PREVOĐENJE VEZA

U ovom koraku identifikujemo veze iz dijagrama.

Veza Rezervacija-Putnik
S obzirom da je veza između tabele REZERVACIJA i PUTNIK N:M, primjenjujemo sljedeće pravilo:

9
Svaka N:M tip veze postaje nova relaciona tabela, atributi tipa veze postaju atributi nove
relacione tabele, primarni ključ nove relacione tabele je složen od primarnih ključeva objekata
koji učestvuju u vezi.

Novonastala tabela će izgledati ovako:

Naziv kolone Tip podatka Obavezno polje Primarni ključ Opis


ID INT DA DA Primarni ključ
ID_putnik INT DA NE Strani ključ
ID_rezervacija INT DA NE Strani ključ

Veza REZERVACIJA – LET


S obzirom da je veza imeđu tabele LET i REZERVACIJA 1:M, primjenjujemo sljedeće pravilo:

Svako 1:N tip veze gdje je strana N totalna (svaki primjerak objekta na strani n je povezan sa
jednim objektom na strani 1) ne prevodi se u novu relaciju nego se primarni ključ objekta sa
strane 1 umeće kao atribut u relacionu tabelu na strani N. Ovaj atribut postaje strani ključ
relacione tabele na strani N. Svi eventualni atributi veze postaju atributi relacije na strani N.
Novonastala tabela će izgledati ovako:

Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis


ID INT DA DA Primarni ključ
ID_let INT DA NE Strani ključ
Vrijeme polaska TIME DA NE
Vrijeme dolaska TIME DA NE

Veza LET – MJESTO


S obzirom da je veza imeđu tabele MJESTO i LET 1:M, primjenjujemo sljedeće pravilo:

Svako 1:N tip veze gdje je strana N totalna (svaki primjerak objekta na strani n je povezan sa
jednim objektom na strani 1) ne prevodi se u novu relaciju nego se primarni ključ objekta sa
strane 1 umeće kao atribut u relacionu tabelu na strani N. Ovaj atribut postaje strani ključ
relacione tabele na strani N. Svi eventualni atributi veze postaju atributi relacije na strani N.
Novonastala tabela će izgledati ovako:
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
ID_mjesto INT DA NE Strani ključ
Datum polaska DATE DA NE
Datum dolaska DATE DA NE
Polaziste VARCHAR(50) DA NE
Cijena FLOAT DA NE

10
Veza AVION - LET
S obzirom da je veza imeđu tabele AVION i LET 1:M, primjenjujemo sljedeće pravilo:

Svako 1:N tip veze gdje je strana N totalna (svaki primjerak objekta na strani n je povezan sa
jednim objektom na strani 1) ne prevodi se u novu relaciju nego se primarni ključ objekta sa
strane 1 umeće kao atribut u relacionu tabelu na strani N. Ovaj atribut postaje strani ključ
relacione tabele na strani N. Svi eventualni atributi veze postaju atributi relacije na strani N.
Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis
ID INT DA DA Primarni ključ
ID_avion INT DA NE Strani ključ
Datum polaska DATE DA NE
Datum dolaska DATE DA NE
Polaziste VARCHAR(50) DA NE
Cijena FLOAT DA NE

Veza AVION-KOMPANIJA
S obzirom da je veza imeđu tabele AVION i KOMPANIJA 1:M, primjenjujemo sljedeće pravilo:

Svako 1:N tip veze gdje je strana N totalna (svaki primjerak objekta na strani n je povezan sa
jednim objektom na strani 1) ne prevodi se u novu relaciju nego se primarni ključ objekta sa
strane 1 umeće kao atribut u relacionu tabelu na strani N. Ovaj atribut postaje strani ključ
relacione tabele na strani N. Svi eventualni atributi veze postaju atributi relacije na strani N.

Naziv atributa Tip podatka Obavezno polje Primarni ključ Opis


ID INT DA DA Primarni ključ
ID_avion INT DA NE Strani ključ
Naziv VARCHAR(50) DA NE
Sjediste VARCHAR(50) DA NE

7. RELACIONA ŠEMA
Relacionu šemu sam napravio pomoću MySQL Workbencha. Tabele u konačnici izgledaju ovako,
te veze između njih.

11
Finalna tabela PUTNIK

Finalna tabela REZERVACIJA

Finalna tabela LET

12
Finalna tabela MJESTO

Finalna tabela AVION

Finalna tabela KOMPANIJA

13
9. FORWARD BP-A NA LIVE SEVER

Forward engineering koristim da bi exportovali dizajn nase sheme na MySQL server.


Selektujemo model koji želimo forwardovati i zatim odabiremo Database, Forward Engineer
meni iz glavnog menija.

Prvi korak čitavog procesa jeste ustvari konektovanje na MySQL server da bi kreirali novu
shemu baze podataka. Zatim ili koristimo već prethodno pohranjene konekcije ili unosimo
parametre nove.

Slika 4 – Forward Engineer, Connection Options

U sljedećem koraku biramo opcije koje želimo primjeniti prilikom forwarda.

14
Slika 5 – Forward Engineer, Options

Zatim biramo sve objekte koje želimo da forwardujemo.

Slika 6 – Forward Engineer, Select Objects

15
U sljedećem koraku dobijamo uvid na SQL skriptu koja će se izvršiti.

Slika 8 – Forward Engineer, Review SQL Script

I posljednji korak jeste samo izvršavanje skripte.

Slika 9 – Forward Engineer,Commit progress

16
10. REVERSE ENGINEER
Sa MySQL Workbenchom, moguće je reverse-engineerat bazu podataka koristeći MySQL create
script ili konektovanjem na MySQL server i importovanjem jedne ili više baza podataka.
Da bi izvršili reverse-engineer baze podataka, idemo na Database i zatim na Reverse Engineer u
meniju. Nakon toga nam iskaće skočni prozor Reverse Engineer Database wizarda.

Korak 1 su postavke konekcije:

Slika 5- Connetion Options

Korak 2 je povezivanje sa bazom podataka:

Slika 6 – Connect to DBMS

17
Korak 3 je odabri sheme koju želimo exportovati:

Slika 7 – Select Schemata

Korak 4 je fetchanje informacija o objektima baze podataka:

Slika 8 – Fetch Object Info

18
Korak 5 je odabir objekata koje želimo reverse engineerat:

Slika 9 – Select Objects

Ja sam odabrao sve objekte da se importuju.

Korak 6 je izvršavanje reverse engineera:

Slika 10 – Reverse Engineer

19
Korak 7 je prikaz rezultata:

Slika 11 – Results

Izvršavanjem reverse-engineera smo povukli schemu sa live servera na na naš workbench.

11. SYNCHRONIZE MODEL WITH DATABASE

Sinhronizacija baze podataka je proces uspostavljanja konzistentnosti podataka između dvije ili
više baza podataka, automatski kopirajući promjene naprijed i nazad. Harmonizacija podataka
vremenom bi se trebala izvršavati u kontinuitetu. Pullanjem podataka sa izvora(mastera) baze
podataka na destinaciju(slave) je najčešće korišteni slučaj.

20
Korak 1 je podešavanje konekcije:

Korak 2 je konektovanje na bazu podataka:

21
Korak 3 je odabir Scheme:

Korak 5 je odabir promjena koje želimo da se izvrše. U mom slučaju ja sam odabrao da sve
promjene koje su se desile na schemi ata da se izvrše promjene i na izvoru(masteru) odnosno
Live Database Serveru.

Korak 6 je pregled skripte koja je kreirana uslijed promjena na bazi podataka:

22
11.1 SKRIPTA NASTALA IZVRŠAVANJEM SINHRONIZACIJE
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

ALTER TABLE `jmu`.`povijest poziva` ADD COLUMN `synchronization_test` VARCHAR(45) NULL


DEFAULT NULL AFTER `callCharge` ;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Označeni dio skripte izvršava promjenu tabele povijest poziva u bazi podataka jmu, gdje dodaje
kolonu synchronization_test.

Korak 7 je izvršavanje sinhronizacije:

23
Ovdje možemo da vidimo prikaz liste tabela i kolona prije i poslije sinhronizacije. Možemo da
vidimo novu kolonu synchonization_test nastala nakon sinhronizacije.

24
12. PRILOG 1

Učitani podaci u tabeli t_employees nakon učitavanja skripte load_classicmodels.sql.

ER Dijagram sa vezama između tabela.

25
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

ALTER TABLE `jmu`.`t_customers`


ADD CONSTRAINT `FK_customers_employees`
FOREIGN KEY (`salesRepEmployeeNumber` )
REFERENCES `jmu`.`t_employees` (`employeeNumber` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_customers_employees_idx` (`salesRepEmployeeNumber` ASC) ;

ALTER TABLE `jmu`.`t_employees`


ADD CONSTRAINT `FK_employees_offices`
FOREIGN KEY (`officeCode` )
REFERENCES `jmu`.`t_offices` (`officeCode` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_employees_offices_idx` (`officeCode` ASC) ;

ALTER TABLE `jmu`.`t_orderdetails`


ADD CONSTRAINT `FK_orderDetails_orders`
FOREIGN KEY (`orderNumber` )
REFERENCES `jmu`.`t_orders` (`orderNumber` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
ADD CONSTRAINT `FK_orderDetails_products`
FOREIGN KEY (`productCode` )
REFERENCES `jmu`.`t_products` (`productCode` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_orderDetails_orders_idx` (`orderNumber` ASC)
, ADD INDEX `FK_orderDetails_products_idx` (`productCode` ASC) ;

ALTER TABLE `jmu`.`t_orders`


ADD CONSTRAINT `FK_orders_customers`
FOREIGN KEY (`customerNumber` )
REFERENCES `jmu`.`t_customers` (`customerNumber` )

26
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_orders_customers_idx` (`customerNumber` ASC) ;

ALTER TABLE `jmu`.`t_payments`


ADD CONSTRAINT `FK_payment_customer`
FOREIGN KEY (`customerNumber` )
REFERENCES `jmu`.`t_customers` (`customerNumber` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_payment_customer_idx` (`customerNumber` ASC) ;

ALTER TABLE `jmu`.`t_products`


ADD CONSTRAINT `FK_products_productLines`
FOREIGN KEY (`productLine` )
REFERENCES `jmu`.`t_productlines` (`productLine` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_products_productLines_idx` (`productLine` ASC) ;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

27
Modul 3

Vježba 1.

1. Iz tabele Customers selektovati kolone contactLastName i contactFirstName. Ispisati sve


redove.

2. Modifikovati prethodnu naredbu tako da se izlista samo 10 prvih slogova.

3. Naredbu 1 modifikovati tako da se ispišu slogovi počevši od 11-og pa onda 15 narednih.

4. Modifikovati naredbu 1 dodavanjem odredbe za sortiranje po koloni contactLastName.


28
5. Modifikovati prethodnu naredbu tako da sortiranje bude po koloni contactLastName, a
zatim i koloni contactFirstName.

6. Napisati naredbu kojom se iz tabele Orders ispisuju samo jedinstvene vrijednosti u


koloni status.

7. Iz tabele orders ispisati orderNumber, orderDate, customerNumber sortirane po polju


orderDate u rastućem redoslijedu.

29
8. Iz tabele orders ispisati orderNumber, orderDate, customerNumber sortirane po polju
orderDate u rastućem redoslijedu.

9. Ispisati sve kolone iz tabele Order samo ako je vrijednost kolone status=“shipped“
(isporučeno). Sortirati ih po orderDate.

30
10. Ispisati sve podatke iz tabele Order koje se odnose na kupca sa brojem 114
(CustomerNumber). Sortirati po polju shippedDate.

11. Iz tabele employees ispisati samo one slogove kod kojih kolona jobTitle ima vrijednost
'SalesRep'.

12. Iz tabele Orders izlistati sve narudžbe koje pripremaju kupcu broj 124.

13. Modifikovati prethodni upit tako da se ispisuju samo narudžbe navedenog korisnika u
statusu 'Shipped'.

14. Iz tabele Orders izlistati sve narudžbe koje u polju comments imaju neki podatak.

31
15. Iz tabele Employees izlistati podatke o svim radnicima koji u polju JobTitle imaju niz
karaktera 'Sale' bilo gdje u polju.

16. Iz tabele Employees izlistati podatke o radnicima kod kojih je u polju officeCode 2,3 ili 4.
Uraditi na dva načina.

32
17. Iz tabele employees izlistati podatke o radnicima kod kojih je u polju extension na
drugom mjestu karakter „1“.

18. Iz tabele employees izlistati podatke o radnicima kod kojih polje extension završava
karakterom „1“.

19. Iz tabele Employees izlistati podatke o radnicima kod kojih je u polju extension na
drugom mjestu karakter „1“ i koje završava karakterom „1“.

20. Iz tabele Offices ispisati podatke o kancelarijama koje nisu iz USA (koristiti polje Country)

33
Vježba 2

1.Iz tabele offices ispisati city i phone, a iz tabele Employees ispisati kolone lastName i
firstName. Sortirati po poljima lastName i firstName.

2. Modifikovati prethodni upit tako da se ispisuju podaci o radnicima iz kancelarije koja je iz


Tokija (city = Tokyo).

34
3.Modifikovati upit iz zadatka 1 tako da prikazuje samo podatke o radnicima koji u polju
jobTitleimaju string “Sales.“

4.Modifikovati upit iz zadatka 1 tako da se ispisuju podaci o radnicima iz kancelarije koja je iz


Tokija (city = Tokyo) i da prikazuje samo podatke o radnicima koji u polju jobTitle imaju string
“Sale”.

35
5.Povezati tabele productsi productLines. Iz tabele products ispisati productName,
productVendor, productDescription i quantityInStock, a iz tabele ProductLinesispisati
textDescription.

6.Modifikovati upit iz prethodnog zadatka tako da se selektuju samo proizvodi (products) koji u
polju productDesription imaju string ‘model’ i proizvodne linije (ProductLines) koje u polju
textDescription imaju riječ „CAR.“

36
7.Povezati tabele orderDetails, productsi productLines. Napraviti upit koji prikazuje iz tabele
orderDetails: orderNumberi quantityOrdered, iz tabele productsproductName i iz tabele
ProductLinespolje textDescription.

8.Modifikovati prethodni upit tako da pokazuje samo stavke kod kojih je naručena količina
(quantityOrdered) veća od 60 a ime proizvoda (productName) sadrži string “Porsche”. Definisati
sortiranje po koloni productName.

37
9.Upit iz zadatka 7 proširiti povezivanjem tabele orders. Iz ove tabele prikazati orderDate,
customerNumberi status, a iz preostale 3 iste kolone kao u upitu 7. Sortirati podatke po koloni
customerNumber.

10. Modifikovati upit iz prethodnog zadatka tako da prikazuje podatke samo o kupcu čiji je broj
112. Iz liste kolona izbrisati customerNumber.

38
11. Modifikovati upit iz prethodnog zadatka tako da prikazuje podatke o narudžbama
napravljenim poslije 1.8.2003.12.Modifikovati upit iz zadatka 9 tako što povezujemo i tabelu
customers. Iz ove tabele prikazati kolonecontactLastName i contactFirstName.Sortirati po istim
kolonama.

12. Modifikovati upit iz zadatka 9 tako što povezujemo i tabelu customers. Iz ove tabele
prikazati kolone contactLastName i contactFirstName.Sortirati po istim kolonama

39
13.Modifikovati upit iz zadatka 12 tako da prikazuje samo narudžbe u statusu 'On Hold'.

14.Povezati tabele customers, orders i payments. Prikazati kolone: Customers-


>customerNumber, contactLastname, contactFirstname, orders ->orderNumber,
orderDate,status, payment->paymentDate, amount.Sortirati poi menu i prezimenu kupca.

40
15.Modifikovati prethodni upit tako da prikazuje samo plaćanja izvršena poslije 1.12.2004 i ona
kod kojih je iznos veći od 50000, a za narudžbe u status “Cancelled”.

41
Vježba 3

1. Napiši upit koji će prikazati tekući datum

2. Napiši upit koji će ispisati tekući dan

3. Napiši upit koji će iz tabele payments ispisati sve postojeće kolone i dadati novu koja se
računa kao amount uvećan za PDV (amount*1.17). Kolonu nazvati total_amount.

4. Napiši upit koji će iz tabele orderDetails ispisati sve postojeće kolone i dadati novu koja
se računa kao priceEach uvećan za PDV (priceEach*1.17). Kolonu nazvati total_
priceEach.

42
5. Napiši upit koji iz tabele offices kreira novu kolonu koju čine kolone officeCode, city i
phone, razdvojene zarezom. Novu kolonu nazvati
office. Npr: 1, San Francisco, +1 650 219 4782

6. Napiši upit koji iz tabele employees kreira novu kolonu koju čine kolone lastname,
firstname i email, razdvojene zarezom. Novu kolonu nazvati employee. Npr: Murphy,
Diane, dmurphy@classicmodelcars.com

7. Napiši upit koji proširuje prethodni upit kolonom koja prikazuje broj karaktera nove
kolone.

43
8. Napiši upit koji prikazuje orderNumber i dan kada je roba isporučena (shippedDate).
Kolonu nazvati shippedDay. Podatke čitati iz tabele Orders

9. Napiši upit koji prikazuje orderNumber i mjesec kada je roba isporučena (shippedDate).
Kolon u nazvati shippedMonth. Podatke čitati iz tabele Orders

10. Napiši upit koji iz tabele employee sispisuje kolone lastname i firstname, ali tako da je
lastname ispisano velikim slovima, a firstname malim slovima.

44
VJEŽBA 4:

1.Napisati SQL upit koji će u tabeli t_payments naći maximalnu vrijednost kolone amount?

2.Napisati SQL upit koji će u tabeli t_payments naći minimalnu vrijednost kolone amount?

3.Napisati SQL upit koji će u tabeli t_payments naći sumu vrijednosti kolone amount gdje je
customerNumber = 103;

4.Napisati upit koji će prebrojati sve proizvode iz tabele products.

5.Napisati SQL upit koji će u tabeli t_payments naći prosjek kolone amount gdje je
customerNumber = 124

6.Naći ukupan broj naručenih proizvoda( quantityOrdered) iz tabele OrderDetails.

7.Naći prosječnu cijenu svih proizvoda iz tabele products

45
8.Napisati SQL upiti koji u tabeli t_paymens izbroji broj redova kolone amount gdje je
customerNumber=124;

9.Napisati naziv najeftinijeg proizvoda iz tabele products

10.Napoisati naziv najskupljeg proizvoda iz tabele products.

11.Napisati upit koji će izlistati koliko je kupaca u svakoj zemlji, grupisati po zemljama.

12.Napisati upit koji će izlistati broj kupaca za svaku zemlju iz koje dolaze, sortirati u
opadajućem redoslijedu , ali uključiti samo one zemlje sa više od 5 kupaca.

U tabeli customers nemamo više od 5 kupaca koji dolaze iz iste


zemlje.
46
13.Napraviti upit koji će omogućiti ispis imena i prezimena zaposlenika koji je registrovao više
od 10 narudžbi.

47
VJEŽBA 5 : UPITI NAD BAZOM „AERODROM“

1. Napisati imena aviokompanija iz tabele kompanija koje imaju sjediste u Aziji.

2. Napisati letove iz tabele let koji imaju cijenu manju od 150.

3. Napisati sve letove iz tabele let koji će letjeti u 2020. godini i sorirati ih u opadajućem
redoslijedu po cijeni.

4. Napisati oznake aviona iz tabele avion koji imaju broj sjedišta veći od 300.

48
5. Iz tabele mjesto ispisati sve destinacije koje počinju slovom „B“.

6. Iz tabele putnik ispisati sve putnike koji se prezivaju Muratović.

7. Iz tabele rezervacija ispisati sve letove koji polijeću između ponoći i 10h.

8. Napisati sve nazive kompanija iz istoimene tabele koje u nazivu imaju „Air“.

9. Sortirati destinacije po nazivu.

10. Ispisati putnike čije ime počinje sa A.

11. Napisati sve kompanije koje imaju sjedište u Europi.

49

You might also like