Professional Documents
Culture Documents
Roko Labrovi
Varadin, 2014.
SVEUILITE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
VARADIN
Roko Labrovi
Redoviti student
Broj indeksa: 40021/11-R
Smjer: Informacijski sustavi
Preddiplomski studij
Mentor:
Prof. dr. sc. Kornelije Rabuzin
Sadraj
1. UVOD ......................................................................................................................................... 1
2. OPIS BAZE PODATAKA ZA POTREBE VETERINARSKE STANICE ......................... 2
3. IZRADA BAZE PODATAKA ................................................................................................. 4
3.1. TABLICE ............................................................................................................................. 4
3.2. ERA MODEL..................................................................................................................... 10
3.3. UNOS PODATAKA .......................................................................................................... 10
3.4. UPITI.................................................................................................................................. 18
3.5. POGLEDI ........................................................................................................................... 21
3.6. OKIDAI ........................................................................................................................... 23
4. ZAKLJUAK .......................................................................................................................... 26
LITERATURA ............................................................................................................................ 27
1. Uvod
Potrebno je osmisliti i realizirati bazu podataka koja moe unikovito posluiti za potrebe
knjinice. Svi samo u procesu kolovanja kad tad morali postati korisnikom neke od knjinice
kako bi pribavili potrebnu literaturu. Na taj nain moemo analizirati kako svaka knjinica
raspolae s znatnom koliinom literature, te da pojedine literature ima u nekoliko primjera npr.
nekoliko primjeraka iste knjige, kako su knjige rasporeene abecedno prema policama, odnosno
autorima zatim kako bi posudili odreenu knjigu moramo biti i lan knjinice itd. Ovim
projektom izraditi u potrebnu bazu podataka za potrebu knjinice.
Pri izradi baze koja e omoguavati developeru razvoj takve aplikacije, prvi korak bi bio
kreiranje potrebnih tablica (TABLE), odnosno relacija koje e u bazi imati odreene odnose.
Primjerice, raun e sadravati vie artikla, a artikl e se nalaziti na vie rauna. U tom sluaju e
biti potrebno dodati novu tablicu stavka rauna.
Bolji pregled baze podataka omoguit e ERA model, koji se sastoji od entiteta (tablice),
veza i atributa (stupci u tablicama).
Nakon kreiranih tablica, u bazu e obavezno biti potrebno unijeti skup polaznih
podataka. U svrhu projekta, podaci e biti izmiljeni.
Nad uneenim podacima je potrebno izvriti vie kombinacija upita (QUERY). Upiti su
bitna komponenta svake baze podataka. Upiti e omoguiti traenje, unaanje, te mijenjanje
podataka iz baze podataka.
Pretraivanje baze e uvelike olakati pogledi (VIEW). Pogledi su virtualne relacije koje
nastaju kao rezultat nekog upita. Jedan primjer gdje bi pogled mogao biti koristan je kod nabave,
ako bi se zahtijevao naziv i koliina prodane robe po datumima. Time bi se mogli prikupiti
podaci o robi koja je najprodavanija, pa i samim time najpotrebnija i via po prioritetu za
naruivanje.
Takoer vaan dio baze podataka za knjinicu bili bi okidai (TRIGGER). Okidai su objekti u
bazi podataka koji izvravaju odreene akcije kao odgovor na dogaaj koji ih je pokrenuo. Za
bazu knjinice bi npr. bio potreban okida koji sprjeava posudbu knjige ako korisnik kod sebe
ve ima podignute 4 knjige.
Kod izrade baze podataka za potrebe veterinarske stanice bit e koriteni:
Nakon opisanih glavnih funkcionalnosti kojima baza podataka u ovom sluaju mora pruati
potporu, potrebno je krenuti u korake izrade same baze.
3.1. Tablice
Tablice e se kreirati na sljedei nain:
1. Upisivanje SQL naredbi ukljuujui kljune izraze CREATE TABLE u SQL Executoru
unutar alata MicroOLAP Database Designer for PostgreSQL
2. Pomou odabira "Reverse Engineer PostgreSQL Database" omoguavanje se generiranje
modela baze
knjiga
CREATE TABLE "knjiga" (
"knjiga_id" SERIAL NOT NULL,
-ifra knjige
"izdavac_id" int4,
-ifra izdavaa
"godina" int4,
-Godina izdanja
"broj_stranica" int4,
-Broj stranica
"datum_uvodenja" int4,
"isbn" varchar(20),
-ISBN knjige
PRIMARY KEY("knjiga_id")
);
Svaka knjiga ima svoj jedinstveni ID. Naziv djela je sadran u relaciji Djelo kojoj se pristupa
preko atribua djelo_id. Slino vrijedi i za izdavaa knjige. Knjiga je verzija nekog djela od
nekog izdavaa.
izdavac
CREATE TABLE "izdavac" (
"izdavac_id" SERIAL NOT NULL,
-ifra izdavaca
"naziv" varchar(20),
-Naziv izdavaa
PRIMARY KEY("izdavac_id")
);
djelo
CREATE TABLE "djelo" (
"djelo_id" SERIAL NOT NULL,
-ifra djela
"naziv" varchar(20),
-Naziv djela
"kratki_sadrzaj" varchar(20),
PRIMARY KEY("izdavac_id")
);
uvez
CREATE TABLE "uvez" (
"uvez_id" SERIAL NOT NULL,
-ifra uveza
"vrsta" varchar(10),
PRIMARY KEY("uvez_id")
);
autor
CREATE TABLE "autor" (
"autor_id" SERIAL NOT NULL,
-ifra autora
"ime" varchar(20),
-Ime autora
"prezime" varchar(20),
-Prezime autora
PRIMARY KEY("autor_id")
);
zanr
CREATE TABLE "zanr" (
"zanr_id" int4 NOT NULL,
-ifra autora
-ifra djela
Svako djelo moe pripadati jednom ili vie anrova, koja su brojano prikazani na sljedei nain:
1. Kriminalistika
2. Horror
3. Znanstvena fantastika
4. Roman
5. Filozofija
polica
CREATE TABLE "polica" (
"polica_id" SERIAL NOT NULL,
-ifra police
"naziv" varchar(20),
-Naziv police
PRIMARY KEY("polica_id")
);
predmet
CREATE TABLE "polica" (
"predmet_id" SERIAL NOT NULL,
-ifra police
"knjiga_id" varchar(20),
-ifra knjige
"Polica_id" varchar(20),
-ifra police
PRIMARY KEY("polica_id")
);
Knjinica ima vie verzija iste knjige, a svaka verzija moe imati jedan ili vie primjeraka,
odnosno predmeta. Relacija Predmet sadri podatke o tome gdje je fiziki smjetena odreeni
predmet.
knjiznica
CREATE TABLE "knjiznica" (
"knjiznica_id" SERIAL NOT NULL,
-ifra knjinice
"naziv" varchar(30),
-Naziv knjinice
"adresa" varchar(30),
-Adresa knjinice
"postanski_broj" int4,
-Potanski broj
"godina_otvaranja" int4,
-Godina otvorenja
"vlasnik" varchar(30),
-Vlasnik
"broj_telefona" varchar(30),
-Broj telefona
"email" varchar(30),
-Email adresa
PRIMARY KEY("knjiznica_id"));
mjesto
CREATE TABLE "mjesto" (
"postanski_broj" SERIAL NOT NULL,
-Potanski broj
"naziv" varchar(30),
-Naziv mjesta
PRIMARY KEY("postanski_broj")
);
korisnik
CREATE TABLE "korisnik" (
"korisnik_id" SERIAL NOT NULL,
-ifra korisnika
"ime" varchar(20),
-Ime korisnika
"prezime" varchar(30),
-Prezime korisnika
"adresa" varchar(30),
-Adresa korisnika
"postanski_broj" int4,
-Potanski broj
"broj_telefona" varchar(20),
-Broj telefona
"datum_uclanjenja" date,
-Datum ulanjenja
"datum_placanja_clanarine" date,
PRIMARY KEY("korisnik_id")
);
posudjena_knjiga
CREATE TABLE "posudjena_knjiga" (
"predmet_id" int4 NOT NULL,
-ifra predmeta
-ifra korisnika
"datum_posudbe" date,
-Datum posudbe
"datum_povratka" date,
-Datum povratka
PRIMARY KEY("predmet_id","korisnik_id")
);
rezervacija
CREATE TABLE "rezervacija" (
"predmet_id" int4 NOT NULL,
-ifra predmeta
-ifra korisnika
"datum_rezervacije" date,
-Datum rezervacije
PRIMARY KEY("predmet_id","korisnik_id")
);
10
-- izdavac
insert into izdavac values
(default, 'Algoritam'),
(default, 'Alfa'),
(default, 'Differo'),
(default, 'Mozaik knjiga'),
(default, 'Profil'),
(default, 'Verbum');
11
12
-- Artikl autor
insert into autor values
(default, 'Dubravka', 'Ugrei'),
(default, 'Miroslav', 'Krlea'),
(default, 'Tin', 'Ujevi'),
(default, 'Ivana', 'Brli-Maurani'),
(default, 'Filip', 'ovagovi'),
(default, 'Dragutin', 'Tadijanovi'),
(default, 'Mile', 'Budak'),
(default, 'Luko', 'Paljetak'),
(default, 'Ivan', 'Gunduli'),
(default, 'Borivoj', 'Radakovi');
13
-- autor_djelo
insert into autor_djelo values
(1, 1),
(1, 2),
(2, 3),
(2, 4),
(3, 5),
(3, 6),
(3, 7),
(4, 8),
(5, 9),
(5, 10),
(5, 11),
(5, 12),
(6, 13),
(7, 14),
(7, 15),
(7, 16),
(8, 17),
(9, 18),
(10, 19),
(10, 20);
-- zanr
insert into zanr values
(default, 'Kriminalistika'),
(default, 'Horror'),
(default, 'Znanstvena fantastika'),
(default, 'Roman'),
(default, 'Filozofija');
15
-- mjesto i knjiznica
insert into mjesto values
(42000, 'Varazdin');
insert into knjiznica values
(default, 'Gradska knjiznica Hobist', 'Frankopanska 2', '042-333-467',
'info@hobist.hr', 1994, 'Vlasnik 1', 42000),
(default, 'Gradska knjiznica Hobist 2', 'Pavlinska 5', '023-555-436',
'info@hobist2.hr', 2000, 'Vlasnik 1', 42000);
-- korisnik
insert into korisnik values
(default, 'Pero', 'Peric', 'Adresa 1', '0976672314', '2002-03-04',
'2002-03-04'),
(default, 'Marko', 'Maric', 'Adresa 2', '0918987765', '2000-10-05',
'2000-10-05'),
(default, 'Ante', 'Antic', 'Adresa 3', '0993345644', '2012-04-12',
'2012-04-12'),
(default, 'Roko', 'Rokic', 'Adresa 4', '0955671423', '2013-06-22',
'2013-06-22');
16
-- predmet
insert into predmet values
(default, 1,1),
(default, 2,1),
(default, 3,1),
(default, 4,1),
(default, 5,1),
(default, 6,2),
(default, 7,2),
(default, 8,2),
(default, 9,2),
(default, 10,2),
(default, 11,3),
(default, 12,3),
(default, 13,3),
(default, 14,3),
(default, 15,3),
(default, 16,4),
(default, 17,4),
(default, 18,4),
(default, 19,4),
(default, 20,4);
17
-- rezervacija
insert into rezervacija values
(5,1);
3.4. Upiti
Nakon uneenih podataka u tablice, potrebno je dohvatiti te podatke koristei upite. U
sluaju baze podataka za knjinicu, izlazni podaci koji su rezultat nekog upita esto mogu sluiti
kao izvjee ili izvor za obrazac.
Nekoliko primjera upita e biti kreirani koritenjem izraza SELECT u SQL Executoru.
Ako elimo vidjeti koliko je koji korisnik posudio knjiga upit ce glasiti:
select ime as "Ime", prezime as "Prezime",
count(posudjena_knjiga.predmet_id) as "Broj posudjenih knjiga "
from korisnik
join posudjena_knjiga on korisnik.korisnik_id =
posudjena_knjiga.korisnik_id
join predmet on posudjena_knjiga.predmet_id = predmet.predmet_id
group by 1,2;
18
19
20
3.5. Pogledi
Koritenje baze podataka veterinarske stanice i razvijanje desktop aplikacije koja e
koristiti bazu e uvelike olakati pogledi. Primjerice, s ERA modela baze je vidljivo da tablica
"knjiga" ima previe vanjskih kljueva za jasnu evidenciju i detaljniji pregled. Naime, ako se
jednostavnim upitom dohvate svi podaci s odgovarajuim atributima iz te tablice, rezultat e biti
sami brojevi koji korisniku ne predstavljaju vanost. U ovom sluaju je potrebno kreirati pogled
koji e kao rezultat upita vratiti naziv knjige, godina izdanja, datum_uvodenja, isbna, uvez,
polica, izdavac.
create view knjiga_polica as
select
knjiga.naziv as "Knjiga",
godina as "Godina",
polica.naziv as "Polica",
izdavac.naziv as "Izdavac",
vrsta as "Uvez"
from izdavac
join knjiga on knjiga.izdavac_id = izdavac.izdavac_id
join uvez on knjiga.uvez_id = uvez.uvez_id
join predmet on knjiga.knjiga_id = predmet.knjiga_id
join polica on predmet.polica_id = polica.polica_id;
Pogled bi takoer mogao biti koristan kako bi korisnik moga vidjeti koji autor je napisako
koje djeli i na kojoj polici se knjiga tog djela nalazi.
create view autor_djelo_zanr as
select ime as "Ime autora", prezime as "Prezime autora", djelo.naziv
as "Djelo", zanr.naziv as "Zanr"
from autor
join autor_djelo on autor.autor_id = autor_djelo.autor_id
join djelo on autor_djelo.djelo_id = djelo.djelo_id
join djelo_zanr on djelo_zanr.djelo_id = djelo.djelo_id
join zanr on djelo_zanr.zanr_id = zanr.zanr_id;
22
3.6. Okidai
Okidai e biti od velike vanosti u sluaju auriranja nekih podataka u bazi ili
sprjeavanja unosa podataka u tablicu tamo gdje to ne bi bilo doputeno. Takoer mogu sluiti
kao ispis odreene poruke prilikom unosa u bazu.
U nastavku e okidai biti kreirani u SQL Executoru, a testirani u komandnom modu
SQL Shell (psql).
1. Okida - auriranje podataka o zalihama robe nakon primljene robe, tj. nakon unosa u
tablicu "artikl_primke"
23
24
Slika 3.6.3. Zabrana podizanje knjige ukoliko korisnik nije platio lanarinu
25
4. Zakljuak
Baza podataka za potrebe knjiare je vaan dio desktop aplikacije koju e koristiti
zaposlenici knjiare. Funkcionalnosti koje e imati aplikacija e biti potpora knjinici prilikom
nabave knjiga, evidenciji istih, te evidenciji korisnika, itd. Dakle, osnovna svrha izrade baze
podataka u ovom projektu je bila omoguavanje desktop aplikaciji u postizanju njenih
funkcionalnosti. Koristei reverzno inenjerstvo je na temelju kreiranih tablica generiran ERA
model koji omoguuje bolji pregled svih tablica zajedno sa pripadajuim atributima, te veza
izmeu tablica.Upiti kao bitna komponenta svake baze podatka su omoguili traenje, unaanje i
mijenjanje uneenih podataka. Takoer su neophodan dio pogleda koji su se pokazali korisnima
u svrhu bolje preglednosti podataka. Implementacija okidaa u bazi je omoguila evidenciju
posuenih knjiga, kao i naplata lanarine.
26
Literatura
1. http://www.postgresql.org/docs/
dostupno 23.1.2014.
2. http://www.postgresql.org/docs/9.2/static/plpgsql.html
dostupno 23.1.2014.
27