Professional Documents
Culture Documents
Projekt 17. Aerodrom - M.Jusuf
Projekt 17. Aerodrom - M.Jusuf
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
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)
Zadaci:
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 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
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.
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:
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.
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
12
Finalna tabela MJESTO
13
9. FORWARD BP-A NA LIVE SEVER
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.
14
Slika 5 – Forward Engineer, Options
15
U sljedećem koraku dobijamo uvid na SQL skriptu koja će se izvršiti.
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.
17
Korak 3 je odabri sheme koju želimo exportovati:
18
Korak 5 je odabir objekata koje želimo reverse engineerat:
19
Korak 7 je prikaz rezultata:
Slika 11 – Results
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:
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.
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';
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.
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
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';
26
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `FK_orders_customers_idx` (`customerNumber` 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.
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.
34
3.Modifikovati upit iz zadatka 1 tako da prikazuje samo podatke o radnicima koji u polju
jobTitleimaju string “Sales.“
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'.
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
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;
5.Napisati SQL upit koji će u tabeli t_payments naći prosjek kolone amount gdje je
customerNumber = 124
45
8.Napisati SQL upiti koji u tabeli t_paymens izbroji broj redova kolone amount gdje je
customerNumber=124;
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.
47
VJEŽBA 5 : UPITI NAD BAZOM „AERODROM“
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“.
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“.
49