Professional Documents
Culture Documents
SSSSSSSSSSSSSSSSSSSQQQQQ
SSSSSSSSSSSSSSSSSSSQQQQQ
Redovni studiji
Smjer: „Poslovna informatika“
Predmet
Tema
(Auto kuća)
Predmetni nastavnik
Prof. dr Zoran Ž. Avramović, dipl.inž.elek.
Student
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.
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
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
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.
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
2.2.2 Dobavljač
2.2.3 Kupci
13
2.2.4 Prodaja
2.2.5 Radnik
2.2.6 RadnoMjesto
2.2.7 Servis
14
2.2.8 Serviser
2.2.9 TipMotora
2.2.10 TipVozila
2.2.11 Transmisija
15
2.2.12 Vozilo
2.2.13 VrstaServisa
16
3. 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
18
4.1.2 DROP TABLE
Komanda namijenjena brisanju neželjene tabele.
Drop Table PrimjerKreiranjaTabele;
19
INSERT INTO Radnik
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
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
Pomoću funkcije COUNT prebrojaćemo sve MarkeVozila koja se nalaze u tabeli Vozilo.
SELECT COUNT (MarkaVozila)
AS [Broj Vozila]
FROM Vozilo
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
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
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.
24
Slika 39: Unija
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
25
SUM
Ovaj primjer nam prikazuje sumu cijena svih prodatih automobila. Ovdje nisam dao specifični
naziv novoj koloni.
SELECT SUM (Cijena)
FROM Prodaja
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
GROUP BY – primjer 2
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
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
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
4.3.13 CONVERT
Prikaz konverzije datuma iz formata date u format varchar.
Select CONVERT (varchar, DatumProdaje, 104)+'.' AS DatumProdaje
FROM Prodaja
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
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]
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
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
31
4.3.19 DISTINKCIJA
Prikazuju se redovi bez ponavljanja.
SELECT DISTINCT Adresa
From Kupci
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
RIGHT JOIN
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.
33
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
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';
Ova procedura nam daje maksimalnu, minimalnu i prosječnu cijenu prodanih automobila.
35
BEGIN
SELECT
@min=MIN(Prodaja.Cijena),
@max=MAX(Prodaja.Cijena),
@avg=AVG(Prodaja.Cijena) FROM Prodaja
END
36
KORIŠTENJE POGLEDA
SELECT * FROM vw_Dobavljac_i_Vozilo_3
WHERE Dobavljac='Tomic'
ORDER BY Boja
BRISANJE POGLEDA
Drop view vw_Dobavljac_i_Vozilo_3
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
KORIŠTENJE POGLEDA
SELECT * FROM view_radno_mjesto_radnika
WHERE Ime ='Perica'
37
4.6 KREIRANJE TRIGERA
Zatim sam napravio trigger koji sve podatke iz jedne tabele postavlja u drugu.
CREATE TRIGGER tr_Radnik on Radnik
AFTER DELETE
AS
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
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
select dbo.AdresaKupaca(1)
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.
Napravio sam transakciju, koja kada je pokrenemo umanjuje platu radniku za određeni iznos, a
drugom radniku ju povećava.
Begin try
Begin transaction
commit transaction
print 'Transaction Committed'
end try
begin catch
ROLLBACK TRANSACTION
PRINT'Transaction Rolled back'
End catch
40
5.2 KORIŠTENJE SKUPOVNIH OPERATORA
Urađeno u prošlom seminarskom radu, ali sam ponovio opet na različitom primjeru.
except
intersect
select Grad
from Radnik
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
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
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.
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.
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.
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
Prednosti i nedostaci:
45
Slika 79: Diferencijalna bezbjedonosna kopija
46
Slika 80: File backup
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:
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.
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.
48
Kreiranje indeksa nad tabelom “Radnik”
create index IX_Radnik_Zarada
on Radnik (Zarada ASC)
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:
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
Proces je sljedeći:
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.
52
Slika 89: Pristup tabelama
5.7.2 PRIMJER 2
Prvo sam kreirao login Vojo2 sa odgovarajućim parametrima.
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.
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:
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.
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
57
Slika 96: ER dijagram dobijen uz pomoć PowerDesigner-a
Š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.
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.
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.
59
Slika 98: Nemogućnost brisanja tabele od strane VojoLogin-a
Jedna šema može sadržati objekte koji su u vlasništvu više korisnika jedne baze podataka.
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.
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
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
63
Slika 103: Snapshot agent status
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
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
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