Baze podataka
Sadrˇ
zaj
1
UVOD U BAZE PODATAKA
3
1.1
Osnovni pojmovi vezani uz baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.1.1
Baza podataka, DBMS, model podataka . . . . . . . . . . . . . . . . . . . . . . .
3
1.1.2
Ciljevi koji se nastoje posti´
ci koriˇ
stenjem baza podataka . . . . . . . . . . . . . .
4
1.1.3
Arhitektura baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.1.4
Jezici za rad s bazama podataka . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.1.5
Poznati softverski paketi za rad s bazama podataka
. . . . . . . . . . . . . . . .
6
1.2
ˇ
Zivotni ciklus baze podataka
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.1
Analiza potreba
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.2.2
Modeliranje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.3
Implementacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2.4
Testiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2.5
Odrˇ
zavanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2
MODELIRANJE PODATAKA
9
2.1
Modeliranje entiteta i veza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.1
Entiteti i atributi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.2
Veze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.3
Prikaz ER-sheme pomo´
cu dijagrama . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.1.4
Sloˇ
zenije veze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2
Relacijski model
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.2.1
Relacija, atribut, n-torka, kljuˇ
c . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.2.2
Pretvaranje ER-sheme u relacijsku . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.2.3
Usporedba relacijskog modela s mreˇ
znim i hijerarhijskim . . . . . . . . . . . . . .
15
2.3
Normalizacija relacijske sheme
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.1
Funkcionalna ovisnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.2
Druga normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.3.3
Tre´
ca normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.3.4
Boyce-Codd-ova normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.3.5
Viˇ
seznaˇ
cna ovisnost i ˇ
cetvrta normalna forma . . . . . . . . . . . . . . . . . . . .
19
2.3.6
Razlozi zbog kojih se moˇ
ze odustati od normalizacije . . . . . . . . . . . . . . . .
20
3
JEZICI ZA RELACIJSKE BAZE PODATAKA
21
3.1
Relacijska algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.1.1
Skupovni operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.1.2
Selekcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.3
Projekcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.1.4
Kartezijev produkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.5
Prirodni spoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.6
Theta-spoj
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.1.7
Dijeljenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.1.8
Vanjski spoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2
Relacijski raˇ
cun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.1
Raˇ
cun orijentiran na n-torke
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.2
Raˇ
cun orijentiran na domene . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
1
2
SADR ˇ
ZAJ
3.3
Jezik SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3.1
Postavljanje upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3.2
Aˇ
zuriranje relacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4
Optimizacija upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4.1
Odnos izmedu relacijske algebre i raˇ
cuna . . . . . . . . . . . . . . . . . . . . . . .
32
3.4.2
Osnovna pravila za optimizaciju
. . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4
FIZI ˇ
CKA GRADA BAZE PODATAKA
35
4.1
Elementi fiziˇ
cke grade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.1
Vanjska memorija raˇ
cunala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.2
Datoteke
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.3
Smjeˇ
staj datoteke u vanjskoj memoriji . . . . . . . . . . . . . . . . . . . . . . . .
36
4.1.4
Pointeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.1.5
Fiziˇ
cka grada cijele baze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2
Pristup na osnovu primarnog kljuˇ
ca
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.1
Jednostavna datoteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2.2
Hash datoteka
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2.3
Datoteka s indeksom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.4
B-stablo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.3
Pristup na osnovu drugih podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.1
Invertirana datoteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.2
Viˇ
sestruke vezane liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.3.3
Podijeljena hash funkcija
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5
IMPLEMENTACIJA RELACIJSKIH OPERACIJA
47
5.1
Implementacija prirodnog spoja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.1.1
Algoritam ugnijeˇ
zdenih petlji . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.1.2
Algoritam zasnovan na sortiranju i saˇ
zimanju . . . . . . . . . . . . . . . . . . . .
48
5.1.3
Algoritam zasnovan na indeksu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.1.4
Algoritam zasnovan na hash funkciji i razvrstavanju . . . . . . . . . . . . . . . .
49
5.2
Implementacija selekcije, projekcije i ostalih operacija
. . . . . . . . . . . . . . . . . . .
50
5.2.1
Implementacija selecije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
5.2.2
Implementacija projekcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
5.2.3
Implementacija ostalih operacija. . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.3
Optimalno izvrednjavanje algebarskog izraza
. . . . . . . . . . . . . . . . . . . . . . . .
51
6
INTEGRITET I SIGURNOST PODATAKA
53
6.1
ˇ
Cuvanje integriteta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.1.1
Ograniˇ
cenja kojima se ˇ
cuva integritet domene . . . . . . . . . . . . . . . . . . . .
53
6.1.2
Ograniˇ
cenja kojima se ˇ
cuva integritet unutar relacije . . . . . . . . . . . . . . . .
53
6.1.3
Ograniˇ
cenja kojima se ˇ
cuva referencijalni integritet . . . . . . . . . . . . . . . . .
54
6.2
Istovremeni pristup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
6.2.1
Transakcije i serijalizabilnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
6.2.2
Lokoti i zakljuˇ
cavanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
6.2.3
Dvofazni protokol zakljuˇ
cavanja . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
6.2.4
Vremenski ˇ
zigovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
6.3
Oporavak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
6.3.1
Rezervna kopija baze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3.2
ˇ
Zurnal datoteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3.3
Neutralizacija jedne transakcije . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.3.4
Ponovno uspostavljanje baze
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.4
Zaˇ
stita od neovlaˇ
stenog pristupa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.4.1
Identifikacija korisnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.4.2
Pogledi kao mehanizam zaˇ
stite . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.4.3
Ovlaˇ
stenja
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60

4
1. UVOD U BAZE PODATAKA
1.1.2
Ciljevi koji se nastoje posti´
ci koriˇ
stenjem baza podataka
Spomenuli smo da baze podataka predstavljaju viˇ
su razinu rada s podacima u odnosu na klasiˇ
cne
programske jezike. Ta viˇ
sa razina rada oˇ
cituje se u tome ˇ
sto tehnologija baza podataka nastoji (i u
velikoj mjeri uspijeva) ispuniti sljede´
ce ciljeve.
Fiziˇ
cka nezavisnost podataka.
Razdvaja se logiˇ
cka definicija baze od njene stvarne fiziˇ
cke grade.
Znaˇ
ci, ako se fiziˇ
cka grada promijeni (na primjer, podaci se prepiˇ
su u druge datoteke na drugim
diskovima), to ne´
ce zahtijevati promjene u postoje´
cim aplikacijama.
Logiˇ
cka nezavisnost podataka.
Razdvaja se globalna logiˇ
cka definicija cijele baze podataka od
lokalne logiˇ
cke definicije za jednu aplikaciju. Znaˇ
ci, ako se logiˇ
cka definicija promijeni (na primjer
uvede se novi zapis ili veza), to ne´
ce zahtijevati promjene u postoje´
cim aplikacijama. Lokalna
logiˇ
cka definicija obiˇ
cno se svodi na izdvajanje samo nekih elemenata iz globalne definicije, uz
neke jednostavne transformacije tih elemenata.
Fleksibilnost pristupa podacima.
U starijim mreˇ
znim i hijerarhijskim bazama, staze pristupanja
podacima bile su unaprijed definirane, dakle korisnik je mogao pretraˇ
zivati podatke jedino onim
redoslijedom koji je bio predviden u vrijeme projektiranja i implementiranja baze. Danas se
zahtijeva da korisnik moˇ
ze slobodno prebirati po podacima, te po svom nahodenju uspostavljati
veze medu podacima. Ovom zahtjevu zaista zadovoljavaju jedino relacijske baze.
Istovremeni pristup do podataka.
Baza mora omogu´
citi da ve´
ci broj korisnika istovremeno koristi
iste podatke. Pritom ti korisnici ne smiju ometati jedan drugoga, te svaki od njih treba imati
dojam da sam radi s bazom.
ˇ
Cuvanje integriteta.
Nastoji se automatski saˇ
cuvati korektnost i konzistencija podataka, i to u
situaciji kad postoje greˇ
ske u aplikacijama, te konfliktne istrovremene aktivnosti korisnika.
Mogu´
cnost oporavka nakon kvara.
Mora postojati pouzdana zaˇ
stita baze u sluˇ
caju kvara hard-
vera ili greˇ
saka u radu sistemskog softvera.
Zaˇ
stita od neovlaˇ
stenog koriˇ
stenja.
Mora postojati mogu´
cnost da se korisnicima ograniˇ
ce prava
koriˇ
stenja baze, dakle da se svakom korisniku reguliraju ovlaˇ
stenja ˇ
sto on smije a ˇ
sto ne smije
raditi s podacima.
Zadovoljavaju´
ca brzina pristupa.
Operacije s podacima moraju se odvijati dovoljno brzo, u skladu
s potrebama odredene aplikacije. Na brzinu pristupa moˇ
ze se utjecati odabirom pogodnih fiziˇ
ckih
struktura podataka, te izborom pogodnih algoritama za pretraˇ
zivanje.
Mogu´
cnost podeˇ
savanja i kontrole.
Velika baza zahtijeva stalnu brigu: pra´
cenje performansi, mi-
jenjanje parametara u fiziˇ
ckoj gradi, rutinsko pohranjivanje rezervnih kopija podataka, reguliranje
ovlaˇ
stenja korisnika. Takoder, svrha baze se vremenom mijenja, pa povremeno treba podesiti i
logiˇ
cku strukturu. Ovakvi poslovi moraju se obavljati centralizirano. Odgovorna osoba zove
se
administrator
baze podataka. Administratoru trebaju stajati na raspolaganju razni alati i
pomagala.
1.1.3
Arhitektura baze podataka
Arhitektura baze podataka sastoji se od tri “sloja” i suˇ
celja medu slojevima, kao ˇ
sto je prikazano na
Slici 1.1. Rijeˇ
c je o tri razine apstrakcije
Fiziˇ
cka razina
odnosi se na fiziˇ
cki prikaz i raspored podataka na jedinicama vanjske memorije. To je
aspekt kojeg vide samo sistemski programeri (oni koji su razvili DBMS). Sama fiziˇ
cka razina moˇ
ze
se dalje podijeliti na viˇ
se pod-razina apstrakcije, od sasvim konkretnih staza i cilindara na disku,
do ve´
c donekle apstraktnih pojmova datoteke i zapisa kakve susre´
cemo u klasiˇ
cnim programskim
jezicima.
Raspored pohranjivanja
opisuje kako se elementi logiˇ
cke definicije baze preslikavaju
na fiziˇ
cke uredaje.
Globalna logiˇ
cka razina
odnosi se na logiˇ
cku strukturu cijele baze. To je aspekt kojeg vidi projek-
tant baze odnosno njen administrator. Zapis logiˇ
cke definicije naziva se
shema
(engleski takoder
schema). Shema je tekst ili dijagram koji definira logiˇ
cku strukturu baze, i u skladu je sa zadanim
1.1. OSNOVNI POJMOVI VEZANI UZ BAZE PODATAKA
5
modelom. Dakle imenuju se i definiraju svi tipovi podataka i veze medu tim tipovima, u skladu
s pravilima koriˇ
stenog modela. Takoder, shema uvodi i ograniˇ
cenja kojim se ˇ
cuva integritet
podataka.
Lokalna logiˇ
cka razina
odnosi se na logiˇ
cku predodˇ
zbu o dijelu baze kojeg koristi pojedina aplikacija.
To je aspekt kojeg vidi korisnik ili aplikacijski programer. Zapis jedne lokalne logiˇ
cke definicije
zove se
pogled
(engleski view) ili pod-shema. To je tekst ili dijagram kojim se imenuju i definiraju
svi lokalni tipovi podataka i veze medu tim tipovima, opet u skladu s pravilima koriˇ
stenog modela.
Takoder, pogled zadaje preslikavanje kojim se iz globalnih podataka i veza izvode lokalni.
Aplikacijski
program 1
Aplikacijski
program 2
Aplikacijski
program 3
6
?
6
?
6
?
Pogled 1
Pogled 2
Pogled 3
@
@
I
@
@
R
6
?
Shema
6
?
Raspored
pohranjivanja
@
@
I
@
@
R
Datoteke
Datoteke
Lokalna
logiˇ
cka
razina
Globalna
logiˇ
cka
razina
Fiziˇ
cka
razina
Slika 1.1: Arhitektura baze podataka
Za stvaranje baze podataka potrebno je zadati samo shemu i poglede. DBMS tada automatski
generira potrebni raspored pohranjivanja i fiziˇ
cku bazu. Administrator moˇ
ze samo donekle utjecati na
fiziˇ
cku gradu baze, podeˇ
savanjem njemu dostupnih parametara.
Programi i korisnici ne pristupaju izravno fiziˇ
ckoj bazi, ve´
c dobivaju ili pohranjuju podatke posred-
stvom DBMS-a. Komunikacija programa odnosno korisnika s DBMS-om obavlja se na lokalnoj logiˇ
ckoj
razini.
1.1.4
Jezici za rad s bazama podataka
Komunikacija korisnika odnosno aplikacijskog programa i DBMS-a odvija se pomo´
cu posebnih jezika.
Ti jezici tradicionalno se dijele na sljede´
ce kategorije.
Jezik za opis podataka
(Data Description Language - DDL). Sluˇ
zi projektantu baze ili administra-
toru u svrhu zapisivanja sheme ili pogleda. Dakle tim jezikom definiramo podatke i veze medu
podacima, i to na logiˇ
ckoj razini. Koji puta postoji posebna varijanta jezika za shemu, a posebna
za poglede. Naredbe DDL obiˇ
cno podsije´
caju na naredbe za definiranje sloˇ
zenih tipova podataka
u jezicima poput COBOL, PL/I, C, Pascal.
Jezik za manipuliranje podacima
(Data Manipulation Language - DML). Sluˇ
zi programeru za
uspostavljanje veze izmedu aplikacijskog programa i baze. Naredbe DML omogu´
cuju “manevri-
ranje” po bazi, te jednostavne operacije kao ˇ
sto su upis, promjena, brisanje ili ˇ
citanje zapisa. U
nekim softverskim paketima, DML je zapravo biblioteka potprograma: “naredba” u DML svodi
se na poziv potprograma. U drugim paketima zaista se radi o posebnom jeziku: programer tada
piˇ
se program u kojem su izmijeˇ
sane naredbe dvaju jezika, pa takav program treba prevoditi s
dva prevodioca (DML-precompiler, obiˇ
cni compiler).

1.2. ˇ
ZIVOTNI CIKLUS BAZE PODATAKA
7
Proizvodaˇ
c
Produkt
Operacijski sustav
Jezici
IBM Corporation
DB2
Linux, UNIX (razni),
SQL,
MS Windows NT/2000/XP,
COBOL,
VMS, MVS, VM, OS/400
Java, . . .
Oracle Corporation
Oracle
MS Windows (razni),
SQL,
Mac OS, UNIX (razni),
Java i
Linux i drugi
drugi
IBM Corporation
Informix
UNIX (razni), Linux,
SQL,
(prije : Informix
MS Windows NT/2000/XP
Java i
Software Inc.)
drugi
Microsoft
MS SQL Server
MS Windows NT/2000/XP
SQL,
C++, . . .
MySQL AB
MySQL
Linux, UNIX (razni),
SQL,
MS Windows (razni), Mac OS
C, PHP, . . .
Sybase Inc.
Sybase
MS Windows NT/2000, OS/2,
SQL,
SQL Server
Mac, UNIX (razni), UNIXWare
COBOL, . . .
Hewlett Packard Co.
Allbase/SQL
UNIX (HP-UX)
SQL,
4GL, C, . . .
Cincom
Supra
MS Windows NT/2000, Linux,
SQL,
Systems Inc.
UNIX (razni), VMS, MVS, VM
COBOL, . . .
Microsoft Corporation
MS Access
MS Windows (razni)
Access
Basic,
SQL
Tabelarni prikaz 1.1: Poznati softverski paketi za rad s bazama podataka
1.2.2
Modeliranje podataka
Razliˇ
citi pogledi na podatke, otkriveni u fazi analize, sintetiziraju se u jednu cjelinu - globalnu shemu.
Precizno se utvrduju tipovi podataka. Shema se dalje dotjeruje (“normalizira”) tako da zadovolji neke
zahtjeve kvalitete. Takoder, shema se prilagodava ograniˇ
cenjima koje postavlja zadani model podataka,
te se dodatno modificira da bi bolje mogla udovoljiti zahtjevima na performanse. Na kraju se iz sheme
izvode pogledi (pod-sheme) za pojedine aplikacije (grupe korisnika).
1.2.3
Implementacija
Na osnovu sheme i pod-shema, te uz pomo´
c dostupnog DBMS-a, fiziˇ
cki se realizira baza podataka
na raˇ
cunalu. U DBMS-u obiˇ
cno postoje parametri kojima se moˇ
ze utjecati na fiziˇ
cku organizaciju
baze. Parametri se podeˇ
savaju tako da se osigura efikasan rad najvaˇ
znijih transakcija. Razvija se skup
programa koji realiziraju pojedine transakcije te pokrivaju potrebe raznih aplikacija. Baza se inicijalno
puni podacima.
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti