You are on page 1of 71

PANEVROPSKI UNIVERZITET APEIRON

FAKULTET POSLOVNE INFORMATIKE

Redovni studiji
Smjer: „Poslovna informatika“

Predmet

“RDBMS I CASE ALATI”

Tema
(Auto kuća)

Predmetni nastavnik
Prof. dr Zoran Ž. Avramović, dipl.inž.elek.

Student

Vojin Babić 5-15/RPI-S

Banja Luka, decembar, 2018.


SADRŽAJ
1. UVOD __________________________________________________________________ 5
2. Tipovi podataka __________________________________________________________ 6
2.1 TABELE I VRSTE PODATAKA KORIŠTENE U BAZI PODATAKA AUTO KUĆA8
2.1.1 Boja _____________________________________________________________ 8
2.1.2 Dobavljač ________________________________________________________ 8
2.1.3 Kupci ____________________________________________________________ 8
2.1.4 Prodaja __________________________________________________________ 9
2.1.5 Radnik ___________________________________________________________ 9
2.1.6 Radno Mjesto ____________________________________________________ 10
2.1.7 Servis___________________________________________________________ 10
2.1.8 Serviser _________________________________________________________ 10
2.1.9 Tip motora_______________________________________________________ 11
2.1.10 Tip Vozila _______________________________________________________ 11
2.1.11 Transmisija ______________________________________________________ 11
2.1.12 Vozilo __________________________________________________________ 12
2.1.13 Vrsta servisa _____________________________________________________ 12
2.2 UNOS PODATAKA U TABELE ________________________________________ 13
2.2.1 Boja ____________________________________________________________ 13
2.2.2 Dobavljač _______________________________________________________ 13
2.2.3 Kupci ___________________________________________________________ 13
2.2.4 Prodaja _________________________________________________________ 14
2.2.5 Radnik __________________________________________________________ 14
2.2.6 RadnoMjesto _____________________________________________________ 14
2.2.7 Servis___________________________________________________________ 14
2.2.8 Serviser _________________________________________________________ 15
2.2.9 TipMotora _______________________________________________________ 15
2.2.10 TipVozila _______________________________________________________ 15
2.2.11 Transmisija ______________________________________________________ 15
2.2.12 Vozilo __________________________________________________________ 16
2.2.13 VrstaServisa _____________________________________________________ 16
3. ER DIAGRAM __________________________________________________________ 17
4. SQL UPITI _____________________________________________________________ 18
4.1 DDL ili Data Definition Language________________________________________ 18
4.1.1 CREATE TABLE ________________________________________________ 18
4.1.2 DROP TABLE ___________________________________________________ 19
4.1.3 ALTER TABLE _________________________________________________ 19
4.2 DML – DATA MANIPULATION LANGUAGE ____________________________ 19
4.2.1 INSERT ________________________________________________________ 19
4.2.2 UPDATE _______________________________________________________ 20
4.2.3 DELETE ________________________________________________________ 21
4.3 FUNKCIJE __________________________________________________________ 22
4.3.1 Funkcija ROUND ________________________________________________ 22
4.3.2 FUNKCIJA AVG ________________________________________________ 23
4.3.3 FUNKCIJA COUNT _____________________________________________ 23
4.3.4 RAZLIKA ______________________________________________________ 24
4.3.5 PROSJEK ______________________________________________________ 24
4.3.6 UNIJA _________________________________________________________ 24
4.3.7 MAX, MIN I SUM _______________________________________________ 25
4.3.8 GROUP BY _____________________________________________________ 26
4.3.9 HAVING _______________________________________________________ 27
4.3.10 SUBSTRING I STRING __________________________________________ 27
4.3.11 SUBSTRING + STRING __________________________________________ 28
4.3.12 UPPER _________________________________________________________ 29
4.3.13 CONVERT______________________________________________________ 29
4.3.14 DATEPART_____________________________________________________ 30
4.3.15 DATEADD ______________________________________________________ 30
4.3.16 ISNUMERIC ____________________________________________________ 30
4.3.17 PROJEKCIJA ___________________________________________________ 31
4.3.18 RESTRIKCIJA __________________________________________________ 31
4.3.19 DISTINKCIJA __________________________________________________ 32
4.3.20 SPAJANJE______________________________________________________ 32
4.4 KREIRANJE PROCEDURE – primjer 1___________________________________ 35
4.5 KREIRANJE POGLEDA (VIEW-a) ______________________________________ 36
4.6 KREIRANJE TRIGERA _______________________________________________ 38
4.7 UDF _______________________________________________________________ 38
5. RDBMS ZADACI _______________________________________________________ 40
5.1 KORIŠTENJE TRANSAKCIJA (COMMIT I ROLLBACK) ___________________ 40
5.2 KORIŠTENJE SKUPOVNIH OPERATORA _______________________________ 41
5.2.1 RAZLIKA (except) _______________________________________________ 41
5.2.2 PROSJEK (intersect) _____________________________________________ 41
5.2.3 UNIJA (union) ___________________________________________________ 42
5.3 KREIRANJE TRIGERA _______________________________________________ 42
5.4 BACKUP BAZE PODATAKA __________________________________________ 43
5.5.1 Potpuna bezbjedonosna kopija _____________________________________ 44
5.5.2 Diferencijalna bezbjedonosna kopija ________________________________ 45
5.5.3 Djelimična bezbjedonosna kopija (engl. Partial backup) ________________ 46
5.5.4 Pravljenje rezervnih kopija datoteka (engl. File backup) ________________ 46
5.5 USPOSTAVLJANJE INDEKSA _________________________________________ 48
5.6 KORIŠTENJE USER, ROLES I BEZBJEDNOSTI __________________________ 50
5.7.1 PRIMJER 1 _____________________________________________________ 50
5.7.2 PRIMJER 2 _____________________________________________________ 53
5.7 CASE ALAT – POWERDESIGNER _____________________________________ 56
5.8 CONCEPT DATABASE SHEMAS ______________________________________ 58
5.9 REPLIKACIJA_______________________________________________________ 60
5.9.1 MERGE REPLIKACIJA __________________________________________ 61
5.9.2 TRANSAKCIONALNA REPLIKACIJA _____________________________ 63
5.9.3 SNAPSHOT REPLIKACIJA ______________________________________ 64
ZAKLJUČAK _______________________________________________________________ 67
LITERATURA ______________________________________________________________ 68
POPIS TABELA I SLIKA _____________________________________________________ 69
1. UVOD

Baza podataka predstavlja skup međusobno povezanih podataka, koji su pohranjeni u


spoljašnjoj memoriji kompjutera, te su dostupni korisnicima i odgovarajućim programima.
Programi pomoću kojih se upravlja ili ispituje neka baza podataka zovu se sistemi upravljanja
bazom podataka ili SUPB.

Tema mog seminarskog rada je da se kreira baza podataka pod nazivom Auto kuća.
Pomoću nje je moguće voditi evidenciju o radnicima, kupcima, prodanim automobilima,
dobavljačima, tipu servisa kao i serviserima, evidenciji radnih mjesta, ali i o samim
karakteristikama jednog automobila (boja, transmisija, tip motora, tip vozila), itd.

5
2. Tipovi podataka

Prilikom kreiranja baze podataka, potrebno je znati sa kakvim ćemo podacima raditi, tj.
da li će to biti datum, decimalni broj, cijeli broj i slično. Ako postavimo manju vrijednost od
potrebne, podatak nećemo moći smjestiti u potpunosti, te će doći do gubitka dijela podatka, a ako
postavimo prevelik broj, onda će sama baza biti spora, jer koristimo nepotreban prostor.

Tabela 1

6
Tabela 2

7
2.1 TABELE I VRSTE PODATAKA KORIŠTENE U BAZI PODATAKA AUTO KUĆA

2.1.1 Boja

Slika 1: Boja

U ovoj tabeli primarni ključ je IDBoja, tip podatka je int, te je neophodno unijeti
vrijednost podatka. Kolona BojaAutomobila – korišten je tip podatka varchar, te je ograničen na
50 znakova.

2.1.2 Dobavljač

Slika 2: Dobavljač

U ovoj tabeli primarni ključ je IDDobavljač, tip podataka je int, te je neophodno unijeti
vrijednost podatka, ne smije ostati prazna kolona. Kolona dobavljac moze sadrzati maksimalno
100 znakova i ne smije ostati prazna. Ostale kolone smiju ostati neispunjene, one takođe sadrže
tip podatka varchar sa određenim maksimalnim vrijednostima. U kolonu telefon se može unijeti
maksimalno 15 znakova.

2.1.3 Kupci

Slika 3: Kupci

Primarni ključ u ovoj tabeli je IDKupac, tip podatka je int, i ne smije ostati neispunjen.
Kolone: ime, prezime i JMBG koriste varchar i char tip podatka, ne smiju ostati neispunjene. U

8
kolonu ime moguće je unijeti maksimalno 25 znakova, a u kolonu prezime 35, sto je dovoljno. U
JMBG, naravno, maksimalno je moguće unijeti 13 znakova. Ostale kolone: grad, adresa i broj
telefona mogu ostati neispunjene, tj. nije obavezno unijeti podatke.

2.1.4 Prodaja

Slika 4: Prodaja

Primarni ključ je IDProdaja, tip podatka je int. IDKupac i IDRadnik su strani ključevi.
Kolona DatumProdaje koristi tip podatka date. Kolona Cijena, tip podatka je numeric. Nijedna
kolona ne smije ostati neispunjena.

2.1.5 Radnik

Slika 5: Radnik

Primarni ključ je IDRadnik, tip podatka je int, i polje u koloni ne smije ostati prazno.
Ime, adresa, RadnoMjesto i prezime koriste tip podatka varchar i moraju se ispuniti.
KontaktTelefon, JMBG i Kvalifikacija koriste tip podatka char i mogu biti izostavljena prilikom
unosa podataka.

9
2.1.6 Radno Mjesto

Slika 6: RadnoMjesto

Primarni ključ je IDRadnoMjesto, tip podatka je int. Kolona RadnoMjesto za tip podatka
koristi varchar(50) te se mora ispuniti prilikom unosa.

2.1.7 Servis

Slika 7: Servis

Primarni ključ je IDServis, tip podatka je int, te se mora ispuniti prilikom unosa
podataka. IDServiser i IDVrsta Servisa predstavljaju strane ključeve, a tip podatka je int. Kolona
Datum, tip podatka je date, a kolona Cijena je numerički tip podatka. Nijedna kolona ne smije
ostati prazna.

2.1.8 Serviser

Slika 8: Serviser

Primarni ključ je IDServiser, tip podatka je int. Adresa, prezime i ime koriste tip podatka
varchar. Sva 3 imaju NULL i moraju se ispuniti. Adresa, KontaktTelefon i Kvalifikacija mogu
ostati neispunjene.

10
2.1.9 Tip motora

Slika 9: TipMotora

Primarni ključ je IDTipMotora, tip podatka je int, dok TipMotora za tip podatka koristi
varchar i ograničen je na maksimum 50 znakova. Obje kolone imaju NULL, moraju se ispuniti.

2.1.10 Tip Vozila

Slika 10: TipVozila

Primarni ključ je IDTipVozila, tip podatka je int, dok TipVozila za tip podatka koristi
varchar i ograničen je na maksimum 50 znakova. Obje kolone imaju Null, moraju se ispuniti.

2.1.11 Transmisija

Slika 11: Transmisija

Primarni ključ je IDTransmisija, tip podatka je int, dok VrstaTransmisije za tip podatka
koristi varchar i ograničen je na maksimum 50 znakova. Obje kolone imaju NULL, moraju se
ispuniti.

11
2.1.12 Vozilo

Slika 12: Vozilo

U ovoj tabeli primarni ključ je IDVozilo, tip podatka je int. Ostale kolone,
IDProdaja,IDservis, IDTipMotora, IDTransmisija, IDDobavljac, IDBoja i IDTipVozila
predstavljaju strane ključeve, i naravno za tip podatka koriste int. IDProdaja i IDServis mogu
ostati neispunjene, jer nisu sva auta prodana i servisirana. Kolona DatumProizvodnje, tip podatka
je date, MarkaVozila, tip podatka je varchar. Sve kolone se moraju ispuniti prilikom unošenja
podataka.

2.1.13 Vrsta servisa

Slika 13: VrstaServisa

Primarni ključ je IDVrstaServisa, tip podatka je int, dok VrstaServisa za tip podatka
koristi varchar. Obje kolone imaju NULL, moraju se ispuniti.

12
2.2 UNOS PODATAKA U TABELE

2.2.1 Boja

Slika 14: Boja

2.2.2 Dobavljač

Slika 15: Dobavljač

2.2.3 Kupci

Slika 16: Kupci

13
2.2.4 Prodaja

Slika 17: Prodaja

2.2.5 Radnik

Slika 18: Radnik

2.2.6 RadnoMjesto

Slika 19: RadnoMjesto

2.2.7 Servis

Slika 20: Servis

14
2.2.8 Serviser

Slika 21: Serviser

2.2.9 TipMotora

Slika 22: TipMotora

2.2.10 TipVozila

Slika 23: TipVozila

2.2.11 Transmisija

Slika 24: Transmisija

15
2.2.12 Vozilo

Slika 25: Vozilo

2.2.13 VrstaServisa

Slika 26: VrstaServisa

16
3. ER DIAGRAM

Slika 27: ER DIAGRAM

17
4. SQL UPITI

SQL predstavlja programski jezik koji služi za manipulaciju, kreiranje i organizaciju baza
podataka. SQL podržava dve osnovne funkcije,a to su:

 DDL ili Data definition language – predstavlja dio SQL i služi za defnisanje neke
određene strukture podataka
 DML ili Data manipulation language – predstavlja dio SQL koji je namijenjen
manipulaciji podataka

4.1 DDL ili Data Definition Language


4.1.1 CREATE TABLE
Komanda namijenjena kreiranju nove tabele, tj. njenom definisanju. Podaci se ne unose.
create table PrimjerKreiranjaTabele
(
ID_Osoba int not null,
Ime varchar(25) not null,
Prezime varchar(35) not null,
Grad varchar(35) not null,
Pol char(1) null
Primary Key (ID_Osoba)
);

Slika 28: Kreiranje tabele

18
4.1.2 DROP TABLE
Komanda namijenjena brisanju neželjene tabele.
Drop Table PrimjerKreiranjaTabele;

4.1.3 ALTER TABLE


Komanda namijenjena mijenjaju tabele, dodavanje željenih kolona sa određenim podacima.
Alter table PrimjerKreiranjaTabele add JMBG char (13) null

Slika 29: Alter table

4.2 DML – DATA MANIPULATION LANGUAGE


4.2.1 INSERT
Upisivanje određenih vrijednosti ili novog sloga u tabelu je moguće pomoću komande insert ili
opcije “Edit Top 200 rows”. Najvažnije je ispuniti one kolone u kojima nije dozvoljen NULL, jer
će SQL tada izbaciti grešku.

19
INSERT INTO Radnik

Values ('5', 'Marko', 'Markovic', 'SSS' , 'stolar', '1123554111023', '063223112' , 'Pere


Krece bb', '1300' )

Slika 30: Insert

4.2.2 UPDATE
Promjena određenih podataka u tabeli, u ovom slučaju ime osobe pod rednim brojem 5.
Prethodni podatak vidljiv u slici iznad. Prvo navodimo ime tabele u kojoj se vrši izmjena, a zatim
komandom SET vršimo izmjenu vrijednosti atributa „Ime“. Na kraju uvodimo restrikciju, jer
želimo da izmijenimo samo radnika pod rednim brojem 5, a ne ostale.
Update Radnik
SET Ime='Vila', Prezime='Vilic'
Where IDRadnik=5

20
Slika 31: Update

4.2.3 DELETE
Brisanje vrijednosti iz tabele Radnik koju smo prethodno unijeli. Veoma je važno da se koristi
restrikcija, jer ako je ne koristimo izbrisali bismo sve vrijednosti u tabeli.
Delete from Radnik
Where IDRadnik=5

21
Slika 32: Delete

4.3 FUNKCIJE

4.3.1 Funkcija ROUND


Pomoću ove funkcije prikazuju se svi automobili koji su prodani za cijenu veću od 19000 eura.
SELECT IDVozilo, ROUND (Cijena,0)
AS Cijena
From Prodaja
Where Cijena>19000

Slika 33: Funkcija ROUND

22
4.3.2 FUNKCIJA AVG
Pomoću funkcije AVG prikazujemo prosječnu cijenu prodanog automobila uzimajući u obzir
samo automobile čija je vrijednost veća od 20000.
SELECT AVG (Cijena)
AS [Prosječna Cijena]
From Prodaja
Where Cijena>20000

Slika 34: Funkcija AVG

4.3.3 FUNKCIJA COUNT


Pomoću ove funkcije prebrojaćemo sve marke vozila koje se nalaze u našoj bazi.
Select MarkaVozila from Vozilo

Slika 35: Funkcija COUNT

Pomoću funkcije COUNT prebrojaćemo sve MarkeVozila koja se nalaze u tabeli Vozilo.
SELECT COUNT (MarkaVozila)
AS [Broj Vozila]
FROM Vozilo

Slika 36: Funkcija COUNT-2

23
4.3.4 RAZLIKA
Koristi se kada želimo prikazati podatke koji su prisutni u jednoj tabeli, ane nalaze se u drugoj.
SELECT IDServiser FROM Serviser
EXCEPT
SELECT IDServiser FROM Servis

Slika 37: Razlika

4.3.5 PROSJEK
Koristi se kada želimo prikazati podatke koji se nalaze u obje kolone u obje tabele.
SELECT IDServiser FROM Serviser
INTERSECT
SELECT IDServis FROM Servis

Slika 38: Prosjek

4.3.6 UNIJA

Služi za prikazivanje podataka više različitih kolona iz više tabela u jednoj, ali one moraju biti
istog imena, tj. naziva.

SELECT Prezime, Ime, Adresa, JMBG FROM Radnik


UNION
SELECT Prezime, Ime, Adresa, JMBG FROM Kupci
ORDER BY Prezime

24
Slika 39: Unija

4.3.7 MAX, MIN I SUM


MAX

Prikazuje najveću prodajnu cijenu automobila.


SELECT MAX (CIJENA)
FROM Prodaja

Slika 40: MAX

MIN

Prikazuje najmanju vrijednost u određenoj koloni. U ovom slučaju to je najmanja vrijednost, tj.
najmanju prodajnu cijenu automobila.
SELECT MIN (CIJENA)
FROM Prodaja

Slika 41: MIN

25
SUM

Ovaj primjer nam prikazuje sumu cijena svih prodatih automobila. Ovdje nisam dao specifični
naziv novoj koloni.
SELECT SUM (Cijena)
FROM Prodaja

Slika 42: SUM

4.3.8 GROUP BY
Prikazuje cijenu prodatog automobila i radnika koji je to ostvario.
Select Prodaja.Cijena, Radnik.ime
AS Radnik
From Prodaja
Join Radnik ON Prodaja.IDRadnik=Radnik.IDRadnik

Slika 43: Group by

GROUP BY – primjer 2

Prikazuje maksimalnu prodajnu cijenu koju je ostvario radnik, tj. radnici.


Select max(Prodaja.Cijena)
As Cijena,
Radnik.ime
AS Radnik
From Prodaja
Join Radnik ON Prodaja.IDRadnik=Radnik.IDRadnik
Group By Radnik.ime

26
Slika 44: Group by - 2

4.3.9 HAVING
Ovu funkciju koristimo ako želimo da dodamo određeno ograničenje, u ovom slučaju je to
prodajna cijena >20000. Vidimo da je 4. radnik koji je prodao automobil za 17.000 ne nalazi u
tabeli.
Select max(Prodaja.Cijena)
As Cijena,
Radnik.ime
AS Radnik
From Prodaja
Join Radnik ON Prodaja.IDRadnik=Radnik.IDRadnik
Group By Radnik.ime
Having max(Prodaja.Cijena) >= 20000

Slika 45: Having

4.3.10 SUBSTRING I STRING


SUBSTRING

Pomoću ove funkcije prikazuje se broj telefona, tj njegove prve 3 cifre.


Select
Substring (BrojTelefona, 1,3)
AS Pozivni
From Kupci

27
Slika 46: Substring

Pomoću substring funkcije izabrati kolone Grad i Telefon i prikazati ga kao Pozivni (prve 3
brojke).
Select Grad,
Substring (telefon, 1, 3)
AS Pozivni
From Kupac

Slika 47: Substring-2

4.3.11 SUBSTRING + STRING


Na pozivni broj dodati 00381 za drzavu, u ovom slučaju – Srbija.
Select '00381'+ Substring (BrojTelefona, 1,3)
AS Pozivni
From Kupci
WHERE Drzava='Srbija'

28
Slika 48: Substring+string

4.3.12 UPPER
Ovom funkcijom kolonu Ime i kolonu Prezime iz tabele Radnik predstavlja velikim slovima.
SELECT
UPPER(Ime)
AS IME,
UPPER(Prezime)
AS PREZIME
FROM Radnik

Slika 49: Upper

4.3.13 CONVERT
Prikaz konverzije datuma iz formata date u format varchar.
Select CONVERT (varchar, DatumProdaje, 104)+'.' AS DatumProdaje
FROM Prodaja

Slika 50: Convert

29
4.3.14 DATEPART
Funkcijom DATEPART, raščlanjujemo u posebne kolone dan, mjesec i godinu.
SELECT
DATEPART (DAY,'2010-09-10') as Dan,
DATEPART (MONTH,'2010-09-10') as Mjesec,
DATEPART (year,'2010-09-10') as Godina

Slika 51: Datepart

4.3.15 DATEADD
Pomoću ove funkcije možemo vidjeti tačno vrijeme, dan, mjesec ili godinu u narednom periodu.
SELECT DATEADD(DD, 7, GETDATE()) AS [SLJEDECA SEDMICA]

SELECT DATEADD(MM, 6, GETDATE()) AS [6 mjeseci unaprijed]

SELECT DATEADD(YY, 1, GETDATE()) AS [SLJEDECA GODINA]

Slika 52: DateADD

4.3.16 ISNUMERIC
Pokazuje koji podaci u tabeli su numeričke vrijednosti.
Select
isnumeric (Ime) as Ime,
isnumeric (Prezime) as Prezime,
isnumeric (JMBG) as JMBG,
isnumeric (Adresa) as Adresa
From Kupci

30
Slika 53: ISNUMERIC

4.3.17 PROJEKCIJA
Koristeći Projekciju prikazati Prezime, Ime, JMBG i BrojTelefona iz tabele Kupci.
SELECT Prezime, Ime, JMBG, BrojTelefona
FROM Kupci

Slika 54: Projekcija

4.3.18 RESTRIKCIJA
Prikazati MarkuVozila, DatumProizvodnje i Boju. IDBoje mora biti =3.
SELECT DatumProizvodnje, IDBoja, MarkaVozila
FROM Vozilo
WHERE IDBoja=3
ORDER BY DatumProizvodnje

Slika 55: Restrikcija

31
4.3.19 DISTINKCIJA
Prikazuju se redovi bez ponavljanja.
SELECT DISTINCT Adresa
From Kupci

Slika 56: Distinkcija

4.3.20 SPAJANJE
LEFT JOIN
SELECT Vozilo.MarkaVozila, Vozilo.DatumProizvodnje, Transmisija.VrstaTransmisije AS
VrstaTransmisije
FROM Vozilo Vozilo
LEFT JOIN Transmisija Transmisija ON Vozilo.IDTipMotora=Transmisija.IDTransmisija
WHERE Transmisija.IDTransmisija IN (2)

ORDER BY DatumProizvodnje

Slika 57: Left join

RIGHT JOIN

Prikazuje podatke iz tabele Vozilo, kolona markaVozila i iz tabele TipVozila sa istoimenom


kolonom.
Select Vozilo.MarkaVozila, TipVozila.TipVozila
AS TipVozila
From Vozilo
Right Join TipVozila ON Vozilo.IDTipVozila=TipVozila.IDTipVozila
Order by TipVozila.IDTipVozila

32
Slika 58: Right join

FULL JOIN

Dobijamo isti rezultat kao i kod Right join, jer nema podataka koji se nalaze u lijevoj, a
ne nalaze u desnoj koloni.

Select Vozilo.MarkaVozila, TipVozila.TipVozila


AS TipVozila
From Vozilo
FULL Join TipVozila ON Vozilo.IDTipVozila=TipVozila.IDTipVozila
Order by TipVozila.IDTipVozila

Slika 59: Full join

33
INNER JOIN

Join spaja određene vrijednosti iz 2 tabele sa odgovarajućim podacima. Iz tabele Vozilo


sam uzeo kolone DatumProizvodnje, MarkaVozila, a iz tabele Servis datum kada je izvršen
servis.
Select Vozilo.DatumProizvodnje, Vozilo.MarkaVozila, Servis.Datum
AS Servis
From Vozilo
inner Join Servis ON Vozilo.IDVozilo=Servis.IDServis
Order by Vozilo.DatumProizvodnje

Slika 60: Inner join

KORIŠTENJE “IN”

Potrebno je prikazati kolone Ime, Prezime, JMBG, Grad, Adresu i Drzavu odakle je
kupac u ovom slucaju uslov je BIH. Sortirati prema Imenu Kupca.
SELECT Ime, Prezime, JMBG, Grad, Adresa, Drzava
FROM Kupci
WHERE Drzava IN ( 'BIH')
Order by Kupci.Ime

Slika 61: “IN”

34
4.4 KREIRANJE PROCEDURE – primjer 1

Procedura se sastoji od ulaznih parametara, mi kao korisnici joj dajemo podatke za njeno
izvršavanje. Ti podaci mogu biti različitih tipova (varchar, date, int…), ali takođe mogu imati i
izlazne vrijednosti, a završavaju se na riječ “output”.

U ovom primjeru ću pokazati kako pomoću procedure dodati red u tabeli SERVISER,
izvršavanje same procedure i njen rezultat.
CREATE PROCEDURE NoviServiser(
@IDServiser int,
@Ime varchar (25),
@Prezime varchar(35),
@Kvalifikacija char(3),
@Adresa varchar(100),
@KontaktTelefon char(15)
)
AS
BEGIN
INSERT INTO Serviser(IDServiser, Ime, Prezime, Kvalifikacija, Adresa, KontaktTelefon)
VALUES (@IDServiser, @Ime, @Prezime, @Kvalifikacija, @Adresa, @KontaktTelefon);
END

/**/
execute NoviServiser '6', 'Janko', 'Stanic', 'VKV', 'Pere Malog 33', '065231313';

Slika 62: Procedura - 1

KREIRANJE PROCEDURE – primjer 2

Ova procedura nam daje maksimalnu, minimalnu i prosječnu cijenu prodanih automobila.

CREATE PROCEDURE [dbo].[MinMaxAvg_Prodaja_Cijena]

@min int output,


@max int output,
@avg int output
AS

35
BEGIN
SELECT
@min=MIN(Prodaja.Cijena),
@max=MAX(Prodaja.Cijena),
@avg=AVG(Prodaja.Cijena) FROM Prodaja
END

Slika 63: Procedura - 2

4.5 KREIRANJE POGLEDA (VIEW-a)


CREATE view vw_Dobavljac_i_Vozilo_3 as
SELECT Dobavljac.Dobavljac as Dobavljac, Vozilo.MarkaVozila as MarkaVozila,
Vozilo.DatumProizvodnje as DatumProizvodnje, Boja.BojaAutomobila as Boja
FROM Vozilo as Vozilo
JOIN Dobavljac Dobavljac ON Vozilo.IDDobavljac = Dobavljac.IDDobavljac
JOIN Boja Boja ON Vozilo.IDBoja = Boja.IDBoja

Slika 64: Pogled(view) - 1

36
KORIŠTENJE POGLEDA
SELECT * FROM vw_Dobavljac_i_Vozilo_3
WHERE Dobavljac='Tomic'
ORDER BY Boja

Slika 65: Koristenje pogleda

BRISANJE POGLEDA
Drop view vw_Dobavljac_i_Vozilo_3

Slika 66: Brisanje pogleda

KREIRANJE POGLEDA 2
Create view view_radno_mjesto_radnika as
Select
Radnik.Ime,
Radnik.Prezime,
RadnoMjesto.RadnoMjesto AS [Radno Mjesto],
Radnik.Grad,
Radnik.Adresa
FROM Radnik
JOIN RadnoMjesto ON Radnik.IDRadnoMjesto=Radnomjesto.IDRadnoMjesto

Slika 67: Pogled(view) - 2

KORIŠTENJE POGLEDA
SELECT * FROM view_radno_mjesto_radnika
WHERE Ime ='Perica'

Slika 68: Korištenje pogleda - 2

37
4.6 KREIRANJE TRIGERA

Prvo sam kreirao dodatnu tabelu:


CREATE TABLE Radnik2 (

IDRadnik int not null,


IDRadnomjesto int not null,
Ime varchar(25) not null,
Prezime varchar(35) not null,
Kvalifikacija char(5) null,
RadnoMjesto varchar(50) null,
JMBG char(13) null,
KontaktTelefon char(15) null,
Adresa varchar(100) null,
Zarada decimal(18,0) null,
Primary Key(IDRadnik) )

Zatim sam napravio trigger koji sve podatke iz jedne tabele postavlja u drugu.
CREATE TRIGGER tr_Radnik on Radnik
AFTER DELETE
AS

DECLARE @IDRadnik int


DECLARE @IDRadnoMjesto int
DECLARE @Ime varchar
DECLARE @Prezime varchar
DECLARE @Kvalifikacija char
DECLARE @JMBG char
DECLARE @KontaktTelefon char
DECLARE @Adresa varchar
DECLARE @Zarada decimal

SELECT @IDRadnik=Radnik.IDRadnik,@IDRadnoMjesto=Radnik.IDRadnoMjesto,
@Ime=Radnik.Ime,
@Prezime=Radnik.Prezime,@Kvalifikacija=Radnik.Kvalifikacija,@JMBG=Radnik.JMBG,
@KontaktTelefon=Radnik.KontaktTelefon,
@Adresa=Radnik.Adresa, @Zarada=Radnik.Zarada

FROM deleted Radnik


INSERT into Radnik2

VALUES (@IDRadnik, @IDRadnoMjesto, @Ime, @Prezime, @Kvalifikacija,@JMBG,


@KontaktTelefon, @Adresa, @Zarada)
end
go

4.7 UDF
Create function dbo.AdresaKupaca(@IDKupac int)
returns varchar(100)
as
BEGIN

38
declare @Adresa varchar(100)
select @adresa = Adresa from Kupci
where IDKupac = @IDKupac

return @adresa
end

IZVRŠAVANJE UDF-a
select *, dbo.AdresaKupaca(IDKupac) from Kupci

Slika 69: UDF

Ako želimo pojedinačnog adresu kupca ukucamo sljedeću komandu:

select dbo.AdresaKupaca(1)

Slika 70: UDF

39
5. RDBMS ZADACI

Većinu zadataka sam odradio na prošlom predmetu jer sam dobio iste od Vas. U nastavku ću
odraditi one koje nisam obuhvatio prošlim seminarskim radom, a dio su predmeta RDBMS.

5.1 KORIŠTENJE TRANSAKCIJA (COMMIT I ROLLBACK)

Napravio sam transakciju, koja kada je pokrenemo umanjuje platu radniku za određeni iznos, a
drugom radniku ju povećava.
Begin try
Begin transaction

UPDATE Radnik set zarada = zarada - 200 where IDRadnik = 1


UPDATE Radnik set zarada = zarada + 400 where IDRadnik = 2

commit transaction
print 'Transaction Committed'

end try
begin catch
ROLLBACK TRANSACTION
PRINT'Transaction Rolled back'
End catch

Slika 71: Izgled tabele prije korištenja transakcije

Slika 72: Izgled tabele nakon korištenja transakcije

40
5.2 KORIŠTENJE SKUPOVNIH OPERATORA

Urađeno u prošlom seminarskom radu, ali sam ponovio opet na različitom primjeru.

5.2.1 RAZLIKA (except)


Koristi se kada želimo prikazati podatke koji su prisutni u jednoj tabeli, a ne nalaze se u drugoj.
U mom slučaju prikazani su radnici iz tabele „Radnik“, a nisu prikazani kupci iz tabele „Kupci“.
select Ime, Prezime
from Radnik

except

select Ime, Prezime


from Kupci

Slika 73: Razlika (except)

5.2.2 PROSJEK (intersect)


Koristi se kada želimo prikazati podatke koji se nalaze u obje kolone u obje tabele. U mom
slučaju prikazani su gradovi iz kojih su i kupci i radnici.
select Grad
from Kupci

intersect

select Grad
from Radnik

Slika 74: Prosjek (intersect)

41
5.2.3 UNIJA (union)

Služi za prikazivanje podataka više različitih kolona iz više tabela u jednoj, ali one moraju biti
istog imena, tj. naziva. U mom slučaju objedinio sam kupce i radnike u istu tabelu.
select Ime, Prezime
from Kupci

union

select Ime, Prezime


from Radnik

Slika 75: Unija (union)

5.3 KREIRANJE TRIGERA

Prvo kreiramo dodatnu tabelu


CREATE TABLE DodatnaTabela2
(
IDDodatnaTabela int,
Ime varchar,
Prezime varchar
)

42
Slika 76: Dodatna tabela

Zatim ću napraviti triger koji sve podatke predstavlja iz jedne tabele u drugu.
USE [Auto_Kuca2]
GO
/****** Object: Trigger [dbo].[ad_DodatnaTabela] Script Date: 27.11.2018 11:30:06
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[ad_DodatnaTabela] ON [dbo].[DodatnaTabela]
AFTER DELETE
AS

DECLARE @ID int


DECLARE @Ime varchar (50)
DECLARE @Prezime varchar (50)

SELECT @ID=d.IDDodatnaTabela, @Ime=d.Ime, @Prezime=d.Prezime


FROM deleted d
INSERT INTO DodatnaTabela2
VALUES (@ID, @Ime, @Prezime )
end
go

Slika 77: Izvšen trigger

5.4 BACKUP BAZE PODATAKA

Bezbjedonosne kopije baza podataka je potrebno raditi redovno, kako bi se osigurali da uvijek
imamo sigurnosnu kopiju, ako dođe do određenih problema u našoj bazi podataka. Ako je
slučajno obrišemo ili se ošteti medij gdje su poohranjeni dijelovi baze podataka. U tom slučaju
nije potreban “oporavak” svih naših podataka, već samo onih koji su se nalazili na oštećenom
mediju.

Postoji nekoliko vrsta bezbjedonosnih kopija:

1) Potpuna bezbjedonosna kopija (engl. Full file backup)


2) Diferencijalna bezbjedonosna kopija (engl. Differential file backup)
3) Djelimična bezbjedonosna kopija (engl. Partial backup)
4) Pravljenje rezervnih kopija datoteka (engl. File backup)

43
5.5.1 Potpuna bezbjedonosna kopija
Kopira sve objekte i podatke koje želimo da sačuvamo. Broj potpunih bezbjedonosnih kopija
zavisi o samoj veličini baze, te broju datoteka.

Neke od prednosti i nedostataka su sljedeće:

 Korištenje ove vrste backup-a može doprinijeti povećanju brzine oporavka, tako što će
se samo oporaviti oštećene datoteke, bez potrebe da se oporavi cjelokupna baza
podataka.
 Ako dođe do oštećenja samo jednog fizčkog medijuma, to može cijelu bazu učiniti
nepopravljivom.

Kako se radi full backup, možemo vidjeti u nastavku:

 Desni klik na našu bazu podataka


 Tasks -> backup
 Izaberemo full kao opciju
 U mom slučaju folder gdje se snima, je default folder od MSSQL-a (može se mijenjati
naravno)
 Kliknemo na ADD i na kraju OK

Slika 78: Full backup

44
Ili korištenjem jednostavnog Query-a
BACKUP DATABASE Auto_Kuca2 TO DISK = C:\Program Files\Microsoft
SQLServer\MSSQL11.MSSQLSERVER\MSSQL\Backup\Auto_Kuca2.bak
GO

5.5.2 Diferencijalna bezbjedonosna kopija


Upotrebom ove vrste backup-a čuvaju se samo oni podaci koji su izmijenjeni od zadnje potpune
bezbjedonosne kopije samih podataka. Ova kopija zahtijeva manje vremena od potpune i
zauzima dosta manje resursa.

Prednosti i nedostaci:

 Kraće vrijeme izvršavanja, kao i mogućnost da se kopiraju promjene u podacima u


kojima mi to želimo.
 Ako je obim datoteka manji od cjelokupnog broja datoteka, onda će ova kopija da
zauzima manje resursa od diferencijalne bezbjedonosne kopije.
 Ako dođe do oštećenja dijela baze, pomoću ove bezbjedonosne kopije, moguće je vratiti
podatke sa datoteka koje su oštećene, kao i promjena koje su se desile od zadnje izrade
potpune bezbjedonosne kopije.

Kako se radi diferencijalni backup, možemo vidjeti u nastavku:


 Desni klik na našu bazu podataka
 Tasks -> backup
 Izaberemo differential kao opciju
 U mom slučaju folder gdje se snima, je default folder od MSSQL-a (može se mijenjati
naravno)
 Kliknemo na ADD i na kraju OK

Ili korištenjem jednostavnog Query-a


BACKUP DATABASE Auto_Kuca2 TO DISK = ‘C:\Program Files\Microsoft
SQLServer\MSSQL11.MSSQLSERVER\MSSQL\Backup\Auto_Kuca2.bak’ WITH DIFFERENTIAL
GO

45
Slika 79: Diferencijalna bezbjedonosna kopija

5.5.3 Djelimična bezbjedonosna kopija (engl. Partial backup)


Ova vrsta backup-a omogućava kopiranje određenog dijela baze, bez potrebeza njenim
cjelokupnim kopiranjem. Omogućava da se napravi rezervna kopija “primary” filegroup, svih
datoteka koje se čitaju i pišu (engl. Read-Write).

Koristi se jednostavan Query:


BACKUP DATABASE TestBackup READ_WRITE_FILEGROUPS
TO DISK = ‘C:\Program Files\Microsoft
SQLServer\MSSQL11.MSSQLSERVER\MSSQL\Backup\Auto_Kuca2.bak’
GO

5.5.4 Pravljenje rezervnih kopija datoteka (engl. File backup)


Ova vrsta bezbjedonosne kopije omogućava da samostalno kopiramo svaku datoteku, umjesto
kopiranja cjelokupne baze podataka. Jedan od razloga je taj, ako posjedujemo veoma velike
datoteke, te ih moramo bekapovati pojedinačno, zbog njihove veličine. U većini slučajeva,
imamo samo jednu datoteku, tako da se ova opcija ne koristi tako često.

46
Slika 80: File backup

Kako se radi File backup, možemo vidjeti u nastavku:


 Desni klik na našu bazu podataka
 Tasks -> backup
 Izaberemo differential ili full kao opciju
 Selektujemo Files and filegroups
 Odaberemo odgovarajuću datoteku
 U mom slučaju folder gdje se snima, je default folder od MSSQL-a (može se mijenjati
naravno)
 Kliknemo na ADD i na kraju OK

Koristi se jednostavan Query:


BACKUP DATABASE TestBackup FILE = 'ReportServer'
TO DISK = ‘C:\Program Files\Microsoft
SQLServer\MSSQL11.MSSQLSERVER\MSSQL\Backup\ReportServer.bak’
GO

47
5.5 USPOSTAVLJANJE INDEKSA

Indekse koristimo kako bismo što brže došli do rezultata koje smo postavili korištenjem upita
upita (query). Indekse je moguće kreirati nad tabelama. Indeksi su slični indeksima koje možemo
pronaći u knjigama.

Kratko poređenje:

 Ako nemamo indeks, a zadatak nam je da lociramo određeno poglavlje u knjizi,


moraćemo pregledati svaku stranicu od početka knjige,
 Sa druge strane, ako koristimo indekse, potražićemo redni broj poglavlja u knjizi
korištenjem indeksa, te ćemo direktno pristupiti poglavlju.

Na sljedećoj slici vidimo tabelu „Radnik“, sa njihovim podacima kao i mjesečnom zaradom. U
ovom slučaju tabela ne sadrži prevelik broj podataka, pa se ne treba toliko dugo čekati na
izvršenje upita. U slučaju da ona ima nekoliko stotina ili hiljada podataka, onda će trebati
određeno vrijeme kako bismo pronašli željene rezultate.

Slika 81: Tabela radnik

Prije nego što pristupim kreiranju indeksa, jednostavnim upitom želim da vidim koji broj radnika
ima platu iznad 1000 KM, a koji ispod 2000 KM. Kako bismo dobili željene rezultate „query
engine“ mora da provjeri svaki red i kolonu, tj. cijelu tabelu, što dovodi do drastičnog smanjenja
performansi, naročito ako tabela sadrži veliki broj podataka.

select * from Radnik

where zarada >500 and zarada <1200

Slika 82: Zarada radnika

48
Kreiranje indeksa nad tabelom “Radnik”
create index IX_Radnik_Zarada
on Radnik (Zarada ASC)

Slika 83: Index nad tabelom Radnik

Kreiranje indeksa nad tabelom “Kupci”

select * from Kupci

where Drzava = 'BIH'

create index IX_Kupci_Drzava


on Kupci (Drzava ASC)

Slika 84: Index nad tabelom Kupci

49
5.6 KORIŠTENJE USER, ROLES I BEZBJEDNOSTI

5.7.1 PRIMJER 1
Prvo sam kreirao novi login na nivou servera, izabrao SQL autentikaciju sa sljedećim
parametrima:

 Login name: VojoLogin


 Password: testlogin
 Serverroles: public (nemogućnost pristupa bazi podataka)

Slika 85: User – VojoLogin

Naravno nakon kreiranja logina na nivou servera, login nije imao pristup bazi podataka Auto
Kuća.

50
Slika 86: Greška prilikom pristupa bazi podataka zbog restrikcija samom loginu

Kreiranjem USER-a sa sljedećim parametrima naš VojoUser će imati određene mogućnosti.

Proces je sljedeći:

1) Auto_Kuca2 –> Security –> Users –> New user


2) User name: VojoUser
3) Login name: Klik na tri tačkice –> Browse –> izaberemo [VojoLogin]

Slika 87: Kreiranje user-a

51
Naš testni korisnik će imati mogućnost, tj ROLES (dataredaer i data writed) znači da čita i piše u
bazu podataka, tj Read/Write, kao i da kreira i koristi ALTER opciju u bazi podataka
(ddladmin). Nakon podešavanja rola vidimo da user sada uspješno može pristupiti tabelama,
uskladištenim procedurama.

Slika 88: Mogućnosti user-a

52
Slika 89: Pristup tabelama

5.7.2 PRIMJER 2
Prvo sam kreirao login Vojo2 sa odgovarajućim parametrima.

 Login name: Vojo2


 Password: vojo2
 Serverroles: public

53
Slika 90: Login Vojo2 na nivou servera

Zatim sam kreirao user Vojo2, uloga db_backupoperator i jedino čemu ovaj user može da
pristupi jesu uskladištene procedure, pogledi. Samo ih može gledati, ne može ih mijenjati,
pokretati niti brisati.

Slika 91: User – Vojo2 sa restrikcijama

Kreiranje logina i usera je od izuzetnog značaja kada je potrebno ograničiti pristup određenim
podacima u bazi podataka. Na primjer ako u našoj firmi imamo osobu koja je zadužena samo za

54
određeni dio posla, a to je na primjer unos nekih podataka, nema potrebe da ona ima mogućnost
kao na primjer vršenja backup-a baze. Zato se tim osobama uvode ograničenja.

U svom slučaju, kreirao sam 2 usera na nivou servera, svaki sa određenim karakteristikama.
TestUser koji je naš imaginarni korisnik, ima mogućnost da selektuje pojedinačne tabele, ali
nema mogućnost brisanja ili dodavanja novih.

Slika 92: User – TestUser sa restrikcijama prema bazi podataka Auto Kuca

55
5.7 CASE ALAT – POWERDESIGNER

Case alati dovode do povećanja produktivnosti prilikom izrade nekog softvera. Ciljevi primjene
Case alata su:

 Kraće vrijeme izrade softvera


 Povećanje samog kvaliteta softvera
 Unapređenje performansi
 Povećava se produktivnost projektanata

U nastavku ću objasniti na koji način sam koristio PowerDesigner i kako sam uradio reverzni
inžinjering te napravio ER dijagram iz postojeće baze.

Slika 93: Početni prozor u kreiranju ER diagrama pomoću PowerDesigner-a

Zatim sam pomoću buttona File –> Reverse Engineer -> Database pristupio ka odabiru moje
baze i konfigurisanja podešavanja.

56
Slika 94: Izbor baze (Auto Kuća) i odabir objekata

Slika 95: Podešavanje opcija

57
Slika 96: ER dijagram dobijen uz pomoć PowerDesigner-a

5.8 CONCEPT DATABASE SHEMAS

Šeme omogućuju jednostavnije korištenje sigurnosti, rezervnih kopija, kao i samo upravljanje
bazama podataka, tako što dopuštaju da se objekti same baze podataka logički grupišu u jednu
cjelinu. Na primjer, hotelski sistem se može razvrstati u sljedeće logičke jedinice,a to su:

 Sobe
 Bar
 Restoran
 Pribor za kuhinju

Ovi entiteti se mogu čuvati kao odvojene fizičke jedinice, ali korištenjem schema mogu
predstavljati kombinaciju tri entiteta u jednoj bazi podataka. Šeme pomažu da se upravlja
entitetima nezavisno jedni od drugih, ali i dalje objektima omogućuju da rade zajedno.

Prvo pristupamo kreiranju scheme

 Ime: TestSchema
 Vlasnik scheme: VojoLogin
 Permission: VojoLogin

58
Slika 97: Kreiranje scheme

Ustanovili smo da sistem administrator u ovom slucaju VOJIN\EC posjeduje sve mogućnosti,
mijenjanja, dodavanja pa čak i brisanja baze podataka.

Sa druge strane VojoLogin kojem je dodijeljena rola "public" ne može se konektovati na bazu
podataka, ako joj to administrator ne omogući.

Zatim pristupamo kreiranju dvije tabele, TestSchema.TabelaTest i TabelaTest

Pošto smo prethodno omogućili VojoLogin da ima rolu ddl.admina to mu omogućuje da kreira
tabele u bazi podataka. Nakon kreiranja obične tabele, TestSchema.TabelaTest, osvježavanjem
baze u sistem administrator instanci vidimo da se i tu pojavila istoimenatabela.

Zatim sam kreirao tabelu u svojoj originalnoj bazi, gdje je sistem administrator VOJIN\EC sa
imenom TabelTest i osvježavanjem instance VojoLogin pojavila se i TabelaTest.

Ukidanjem pojedinih rola, tacnije ddladmin-a VojoLoginu onemogućuje mu se dalje kreiranje


tabela kao i brisanje istih, ali ostaje mu mogućnost da obriše TestSchema.Tabelatest čiji je
vlasnik što možemo vidjeti na sljedećoj slici.

59
Slika 98: Nemogućnost brisanja tabele od strane VojoLogin-a

Prednosti korištenja schema su:

 Vlasništvo nad objektima u šemama je prenosivo, korištenjem ALTER komande.

 Jedna šema može sadržati objekte koji su u vlasništvu više korisnika jedne baze podataka.

 Dozvolama na shemama se može upravljati, korištenjem GRANT dozvole.

5.9 REPLIKACIJA

Replikacija predstavlja skup tehnologija koje služe za distribuciju i kopiranje podataka iz jedne u
drugu bazu podataka te sinhronizaciju između njih radi održavanja konzistentnosti.

60
Prvo sam pristupio kreiranju distributora i publishera. Za distributora sam izabrao server
VOJIN\EC, te sam prošao kroz navedene korake i uspješno postavio server kao distributor.
Snapshotfolder gdje će se nalaziti svi podaci o publikacijama je folder \\VOJIN\ReplData.

Slika 99: Konfigurisanje servera VOJIN\EC kao distributor

5.9.1 MERGE REPLIKACIJA


Merge replikacija se obično koristi u okruženjima server-klijent. Dizajnirana je uglavnom za
mobilne aplikacije. Ova replikacija podrazumijeva:

 Višestruki pretplatnici (engl. subscribers) mogu vršiti ažuriranje podataka u različito


vrijeme, te predstavljati te promjene izdavaču (engl. publisher) i ostalim pretplatnicima.
 Pretplatnici trebaju primati podatke, vršiti promjen izvan mreže, a na kraju sinhronizovati
izvršene promjene sa izdavačem i ostalim pretplatnicima.

Pristupio sam kreiranju publikacije Merge. Prvo je potrebno kreirati publikaciju na serveru koji
je distributor,a to je VOJIN\EC, a zatim na drugom serveru VOJIN\SQLEXPRESS izvršiti
subskripciju. U ovoj publikaciji izabrani artikli/tabele su

 Prodaja
 Radnik
 RadnoMjesto
 Servis

61
Slika 100: Merge publikacija – izabrani artikli/tabele

Slika 101: Snapshot agent status

62
5.9.2 TRANSAKCIONALNA REPLIKACIJA
Ova vrsta replikacije se koristi u server-server okruženjima. Poenta je da se uvode inkrementalne
ili postepene promjene na pretplatnike (engl. subscribers) za vrijeme njihovog izvršavanja.

Isto kao u slučaju sa Merge replikacijom, kreirao sam i transakcionalnu replikaciju. Artikli/tabele
koje sam izabrao su:

 TipMotora
 TipVozila
 Transmisija
 VrstaServisa

Slika 102: Transakcionalna publikacija – izabrani artikli/tabele

63
Slika 103: Snapshot agent status

5.9.3 SNAPSHOT REPLIKACIJA


Snapshot replikacija vrši distribuciju podataka onim redoslijedom kojim se oni pojavljuju, te ne
prati ažur. podataka. Kada se desi sinhronizacija, cjelokupni snapshot se šalje pretplatnicima.
Korištenje ove vrste replikacije je najpogodnije kada se:

 Podaci rijetko mijenjaju


 Prihvatljivo je posjedovati zastarjele kopije podataka.
 Kopiraju se male količine podataka

Prvo sam kreirao snapshot publikaciju kao u prošla 2 slučaja, a zatim izvršio subskripciju sa
drugog servera. Artikli/tabele koje sam izabrao su: Tabela Vozilo.

64
Slika 104: Snapshot publikacija – izabrani artikli/tabele

Slika 105: Snapshot agent status

65
Slika 106: Replication monitor

66
ZAKLJUČAK

Veoma je bitno naglasiti, da su upravo baze podataka važna stavka u svakoj ozbiljnoj
firmi. Pristupačnost i dostupnost samih baza podataka su uslovile da i one najmanje firme imaju
neku jednostavnu bazu podataka.

67
LITERATURA

Baze Podataka. (n.d.). Preuzeto Februar 1, 2018 sa


http://download.tutoriali.org/Tutorials/Baze_podataka/Baze_podataka_-
_Uvod_u_SQL.pdf

Petković, D. (2008). Retrieved Februar 1, 2018, from


http://www.usaqingshan.com/uploads/5/9/6/5/59657927/good_microsoft.sql.server.2008.
a.beginners.guide.4e.2008.pdf

Veinovic, M., & Simic, G. (2010). Preuzeto Februar 1, 2018 sa


https://singipedia.singidunum.ac.rs/preuzmi/40841-uvod-u-baze-podataka/801

w3schools. (n.d.). Preuzeto Februar 1, 2018 sa w3schools:


https://www.w3schools.com/sql/default.asp

68
POPIS TABELA I SLIKA

Tabela 1 ........................................................................................................................................... 6
Tabela 2 ........................................................................................................................................... 7

Slika 1: Boja.................................................................................................................................... 8
Slika 2: Dobavljač ........................................................................................................................... 8
Slika 3: Kupci ................................................................................................................................. 8
Slika 4: Prodaja ............................................................................................................................... 9
Slika 5: Radnik................................................................................................................................ 9
Slika 6: RadnoMjesto.................................................................................................................... 10
Slika 7: Servis ............................................................................................................................... 10
Slika 8: Serviser ............................................................................................................................ 10
Slika 9: TipMotora ........................................................................................................................ 11
Slika 10: TipVozila ....................................................................................................................... 11
Slika 11: Transmisija .................................................................................................................... 11
Slika 12: Vozilo ............................................................................................................................ 12
Slika 13: VrstaServisa ................................................................................................................... 12
Slika 14: Boja................................................................................................................................ 13
Slika 15: Dobavljač ....................................................................................................................... 13
Slika 16: Kupci ............................................................................................................................. 13
Slika 17: Prodaja ........................................................................................................................... 14
Slika 18: Radnik............................................................................................................................ 14
Slika 19: RadnoMjesto.................................................................................................................. 14
Slika 20: Servis ............................................................................................................................. 14
Slika 21: Serviser .......................................................................................................................... 15
Slika 22: TipMotora ...................................................................................................................... 15
Slika 23: TipVozila ....................................................................................................................... 15
Slika 24: Transmisija .................................................................................................................... 15
Slika 25: Vozilo ............................................................................................................................ 16
Slika 26: VrstaServisa ................................................................................................................... 16
Slika 27: ER DIAGRAM .............................................................................................................. 17
Slika 28: Kreiranje tabele.............................................................................................................. 18
Slika 29: Alter table ...................................................................................................................... 19
Slika 30: Insert .............................................................................................................................. 20
Slika 31: Update............................................................................................................................ 21
Slika 32: Delete ............................................................................................................................. 22
Slika 33: Funkcija ROUND .......................................................................................................... 22
Slika 34: Funkcija AVG................................................................................................................ 23
Slika 35: Funkcija COUNT .......................................................................................................... 23

69
Slika 36: Funkcija COUNT-2 ....................................................................................................... 23
Slika 37: Razlika ........................................................................................................................... 24
Slika 38: Prosjek ........................................................................................................................... 24
Slika 39: Unija .............................................................................................................................. 25
Slika 40: MAX .............................................................................................................................. 25
Slika 41: MIN ............................................................................................................................... 25
Slika 42: SUM............................................................................................................................... 26
Slika 43: Group by ........................................................................................................................ 26
Slika 44: Group by - 2 ................................................................................................................... 27
Slika 45: Having ........................................................................................................................... 27
Slika 46: Substring ........................................................................................................................ 28
Slika 47: Substring-2..................................................................................................................... 28
Slika 48: Substring+string ............................................................................................................ 29
Slika 49: Upper ............................................................................................................................. 29
Slika 50: Convert .......................................................................................................................... 29
Slika 51: Datepart ......................................................................................................................... 30
Slika 52: DateADD ....................................................................................................................... 30
Slika 53: ISNUMERIC ................................................................................................................. 31
Slika 54: Projekcija ....................................................................................................................... 31
Slika 55: Restrikcija ...................................................................................................................... 31
Slika 56: Distinkcija...................................................................................................................... 32
Slika 57: Left join ......................................................................................................................... 32
Slika 58: Right join ....................................................................................................................... 33
Slika 59: Full join.......................................................................................................................... 33
Slika 60: Inner join........................................................................................................................ 34
Slika 61: “IN” ............................................................................................................................... 34
Slika 62: Procedura - 1 .................................................................................................................. 35
Slika 63: Procedura - 2 .................................................................................................................. 36
Slika 64: Pogled(view) - 1 ............................................................................................................ 36
Slika 65: Koristenje pogleda ......................................................................................................... 37
Slika 66: Brisanje pogleda ............................................................................................................ 37
Slika 67: Pogled(view) - 2 ............................................................................................................ 37
Slika 68: Korištenje pogleda - 2.................................................................................................... 37
Slika 69: UDF ............................................................................................................................... 39
Slika 70: UDF ............................................................................................................................... 39
Slika 71: Izgled tabele prije korištenja transakcije ....................................................................... 40
Slika 72: Izgled tabele nakon korištenja transakcije ..................................................................... 40
Slika 73: Razlika (except) ............................................................................................................. 41
Slika 74: Prosjek (intersect) .......................................................................................................... 41
Slika 75: Unija (union).................................................................................................................. 42

70
Slika 76: Dodatna tabela ............................................................................................................... 43
Slika 77: Izvšen trigger ................................................................................................................. 43
Slika 78: Full backup .................................................................................................................... 44
Slika 79: Diferencijalna bezbjedonosna kopija............................................................................. 46
Slika 80: File backup .................................................................................................................... 47
Slika 81: Tabela radnik ................................................................................................................. 48
Slika 82: Zarada radnika ............................................................................................................... 48
Slika 83: Index nad tabelom Radnik ............................................................................................. 49
Slika 84: Index nad tabelom Kupci ............................................................................................... 49
Slika 85: User – VojoLogin .......................................................................................................... 50
Slika 86: Greška prilikom pristupa bazi podataka zbog restrikcija samom loginu....................... 51
Slika 87: Kreiranje user-a ............................................................................................................. 51
Slika 88: Mogućnosti user-a ......................................................................................................... 52
Slika 89: Pristup tabelama ............................................................................................................ 53
Slika 90: Login Vojo2 na nivou servera ....................................................................................... 54
Slika 91: User – Vojo2 sa restrikcijama ....................................................................................... 54
Slika 92: User – TestUser sa restrikcijama prema bazi podataka Auto Kuca .............................. 55
Slika 93: Početni prozor u kreiranju ER diagrama pomoću PowerDesigner-a ............................. 56
Slika 94: Izbor baze (Auto Kuća) i odabir objekata ..................................................................... 57
Slika 95: Podešavanje opcija ........................................................................................................ 57
Slika 96: ER dijagram dobijen uz pomoć PowerDesigner-a ........................................................ 58
Slika 97: Kreiranje scheme ........................................................................................................... 59
Slika 98: Nemogućnost brisanja tabele od strane VojoLogin-a.................................................... 60

71

You might also like