Professional Documents
Culture Documents
podataka
Gordana Pavlovic-Lazetic
Sadr
zaj
0 Uvod
Relaciona tehnologija
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
14
18
19
20
21
22
24
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
28
29
31
35
37
38
41
47
II
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
52
52
54
55
56
i
SADRZAJ
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
62
63
63
64
68
70
73
74
76
79
81
82
85
86
87
90
91
93
103
105
108
4 Pogledi
4.1 Definisanje pogleda . . . . . . . . . . . . . . . . .
4.1.1 Kreiranje pogleda . . . . . . . . . . . . .
4.1.2 Eksplicitno imenovanje kolona pogleda . .
4.1.3 Kreiranje pogleda nad drugim pogledima
4.1.4 Uklanjanje pogleda . . . . . . . . . . . .
4.2 Pretrazivanje pogleda . . . . . . . . . . . . . . .
4.3 Azuriranje, unosenje i brisanje nad pogledima .
4.4 Prednosti pogleda . . . . . . . . . . . . . . . . .
4.5 Novi pristup pogledima . . . . . . . . . . . . . .
4.5.1 Unija, presek, razlika . . . . . . . . . . .
4.5.2 Restrikcija . . . . . . . . . . . . . . . . .
4.5.3 Projekcija . . . . . . . . . . . . . . . . .
4.5.4 Prirodno spajanje . . . . . . . . . . . . .
4.6 Pitanja i zadaci . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
111
111
114
115
115
115
116
119
120
121
122
122
123
123
5 Standardi SQL-a
5.1 Standardni jezik baza podataka
5.1.1 Definisanje podataka .
5.1.2 Manipulisanje podacima
5.1.3 Aplikativni SQL . . . .
5.2 Pitanja i zadaci . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125
127
127
131
134
136
3.3
3.4
3.5
3.6
3.7
3.2.3 Indeksi . . . . . . . . . . . . . . . . .
3.2.4 Pogledi . . . . . . . . . . . . . . . . .
Manipulisanje podacima . . . . . . . . . . . .
3.3.1 Pretrazivanje . . . . . . . . . . . . . .
3.3.2 Jednorelacioni upiti . . . . . . . . . .
3.3.3 Upiti spajanja . . . . . . . . . . . . .
3.3.4 Podupiti . . . . . . . . . . . . . . . . .
3.3.5 Korelisani podupiti . . . . . . . . . . .
3.3.6 Egzistencijalni kvantifikator . . . . . .
3.3.7 Agregatne funkcije . . . . . . . . . . .
3.3.8 Operator grupisanja . . . . . . . . . .
3.3.9 Puni upitni blok . . . . . . . . . . . .
SQL2
. . . .
. . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SADRZAJ
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
137
137
137
138
140
141
142
143
145
7 Optimizacija upita
7.1 Katalog . . . . . . . . . . . . .
7.2 Sistematski pristup optimizaciji
7.3 Optimizacija u SYSTEM R . .
7.4 Optimizacija u INGRES-u . . .
7.5 Pitanja i zadaci . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
147
147
149
154
156
158
III
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Logi
cko projektovanje
160
8 Teorija zavisnosti
8.1 Funkcionalne zavisnosti i dekompozicija .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
162
162
165
168
170
173
175
177
178
9 Normalne forme
9.1 Druga normalna forma . . . .
9.2 Treca normalna forma . . . .
9.3 Boyce-Codd normalna forma
9.4 Dobre i lose dekompozicije . .
9.5 Cetvrta
normalna forma . . .
9.6 Peta normalna forma . . . . .
9.7 Pitanja i zadaci . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
180
180
183
187
189
190
191
192
10 Semanti
cko modeliranje
10.1 Prosireni relacioni model RM/T
10.1.1 Strukturni deo modela . .
10.1.2 Integritetni deo modela .
10.1.3 RM/T katalog . . . . . .
10.1.4 Manipulativni deo modela
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
195
199
200
201
202
203
.
.
.
.
.
.
.
SADRZAJ
iv
10.2 Prosireni model entiteta i odnosa (PMEO) .
10.3 Strukturni deo PMEO . . . . . . . . . . . .
10.3.1 Primer logickog projektovanja . . .
10.4 Semanticki model baze podataka . . . . . .
10.5 Pitanja i zadaci . . . . . . . . . . . . . . . .
IV
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Fizi
cka organizacija podataka
.
.
.
.
.
204
205
210
213
214
216
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
218
220
223
228
229
231
233
235
238
238
12 Indeksna organizacija
12.1 Efikasnost izvrsavanja jednorelacionih upita . .
12.1.1 Pretrazivanje . . . . . . . . . . . . . . .
12.1.2 Azuriranje, unosenje i brisanje . . . . .
12.2 Izvrsavanje viserelacionih upita . . . . . . . . .
12.3 Struktura indeksa . . . . . . . . . . . . . . . . .
12.3.1 Pretrazivanje indeksa . . . . . . . . . .
12.3.2 Unosenje u indeks, brisanje i azuriranje
12.4 Pitanja i zadaci . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
240
241
241
242
244
244
247
248
251
13 Direktna organizacija
13.1 Funkcija direktnog pristupa . . . . . . .
13.2 Resavanje kolizije posebno ulancavanje
13.3 Resavanje kolizije otvoreno adresiranje
13.4 Efikasnost izvrsavanja operacija . . . . .
13.5 Pitanja i zadaci . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
253
255
256
260
265
267
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Upravljanje transakcijama
269
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
271
271
273
274
276
278
SADRZAJ
VI
. .
. .
od
. .
. . .
. . .
pada
. . .
. . . . .
. . . . .
sistema
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
286
288
289
291
294
295
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
297
297
300
301
305
305
306
308
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
309
309
311
313
315
316
320
322
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
323
326
326
327
327
329
333
336
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
337
339
339
344
348
348
350
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
357
Uvod
Tradicionalni pristup razvoju programskih sistema za cuvanje i obradu podataka,
do pojave baza podataka krajem sezdesetih godina, bio je u sustini ad hoc: polazeci
od definicije aplikacije, kreirala bi se datoteka ili skup datoteka podataka potrebnih
CITAOCI.
Nekonzistentnost podataka. Zbog ponavljanja istih podataka u raznim datotekama, moze se dogoditi da se promena vrednosti primercima istog podatka ne izvede dosledno, tj. da se jednom primerku istog podatka vrednost
promeni (namerno ili nenamerno), a da se to ne ucini sa ostalim primercima
tog podatka. Na primer, adresa istog citaoca moze da bude razlicito zapisana
u datotekama CITAOCI
i REVERSI, sto ce proizvesti nekonzistentnost (nekorektnost) podataka.
Programi za obradu podataka zavise od nacina struktuiranja podataka. Tako
ce ti programi biti razliciti u slucajevima razlicite organizacije datoteka
(sekvencijalna, indeks-sekvencijalna, direktna, indeksirana, itd). Zato promena strukture podataka zahteva promenu programa.
Obrada podataka je skupa, s obzirom na nekonzistentnost i zavisnost programa od organizacije podataka.
1
0 Uvod
Koriscenje istih podataka od strane veceg broja korisnika je otezano. Na
primer, istovremeni pokusaj dva ili vise korisnika da promene sadrzaj datoteke
REVERSI zavrsice se, u mnogim slucajevima, pamcenjem promena samo
onog korisnika koji je poslednji zavrsio rad sa datotekom. Ostali korisnici ni
na koji nacin nece biti obavesteni o tome da njihove promene nisu upamcene.
U drugim slucajevima visekorisnickog pristupa podacima smestenim u sistem
datoteka, kada se pristup vrsi istoj kopiji datoteke, moguci su i tezi primeri
narusavanja korektnosti podataka.
Neadekvatna realizacija oporavka od pada sistema. U slucaju pada sistema
(npr. nestanka elektricnog napajanja), aktivni poslovi nemaju mogucnost
ponistavanja svojih delimicnih izvrsenja (ako su ona deo jedinstvene logicke
celine), a cesto, po uspostavljanju sistema, ni evidenciju o svom delimicnom
izvrsenju. Na primer, ako bi svim citaocima trebalo produziti (na reversu)
rok zaduzenja za po 10 dana, i ako bi usred izvrsavanja tog posla doslo do
pada sistema, po uspostavljanju rada ne bi postojala informacija o tome koji
su reversi obradeni
a koji jos nisu.
0 Uvod
sa bazama, kao i raznorodni korisnici baza podataka (od krajnjih korisnika, preko
aplikativnih programera do administratora baza podataka).
U razvoju sistema baza podataka moze se uociti nekoliko generacija SUBP, koje
su ili koegzistirale na trzistu ili smenjivale jedna drugu. Fundamentalna razlika
sistema ovih generacija je razlika u modelu podataka, koja se u impleizmedu
mentaciji odgovarajucih SUBP reflektuje na efikasnost pristupa podacima i obrade
podataka, produktivnost korisnika, funkcionalnost sistema i podrsku raznovrsnim
aplikacijama. Tako se u prve dve generacije svrstavaju tzv. mrezni (CODASYL)
ili veceg broja radnji nad bazom podataka, pri cemu obezbeduje
uslov da podaci i
odnosi medu njima, posle zavrsetka transakcije, korektno odrazavaju realnost koja
0 Uvod
Deo I
Relaciona tehnologija
odreduje
njegovo mesto u arhitekturi sistema baza podataka. Relacioni model
se definise preko tri bitne komponente modela; to su strukturni, manipulativni
i integritetni deo modela. Strukturni i integritetni deo relacionog modela
izlazu se detaljno u ovoj glavi, dok je manipulativni deo samo naznacen.
Zbog znacaja i kompleksnosti manipulativnih formalizama relacionog modela,
njihovo razmatranje izdvojeno je u posebnu, drugu glavu.
U glavi 2, Manipulativni formalizmi relacionog modela, izlazu se dva
osnovna formalizma za manipulisanje podacima u relacionom modelu, relaciona algebra i relacioni racun. S obzirom na znacajna odstupanja postojecih
relacionih implementacija od osnovnih postavki relacionog modela, pre svega
u upitnim jezicima, aktuelizovano je istrazivanje implikacija manipulativnih
formalizama relacionog modela na razvoj novih sistema.
O modelima podataka
pogledi (podmodeli)
(spoljasnje sheme,
spoljasnji nivo)
@
I
@
model podataka
(konceptualna shema,
logicki nivo)
6
strukture podataka, procedure
oblast
PISAC
ime
br naslova
drzava
IZDAVAC
naziv
status
drzava
10
medu
se moze definisati kao odnos
tipova entiteta IZDAVAC
i KNJIGA, dok se AUTOR moze definisati kao
izmedu
tipova entiteta PISAC i KNJIGA. Ti odnosi se mogu posmatrati i
odnos izmedu
kao apstraktni tipovi entiteta u modelu (sa svojim svojstvima). Svojstva odnosa
IZDAVASTVO
i AUTOR mogu se prikazati slikom 1.3. Redni broj mogao bi da
oznacava da je dati pisac naveden kao prvi (drugi, treci, itd.) autor date knjige.
IZDAVASTVO
KNJIGA
godina
tiraz
IZDAVAC
AUTOR
PISAC
redni broj
KNJIGA
11
IZDAVAC
?
KNJIGA
DBD
NAME = IZDAVASTVO
2
3
SEGM
FIELD
NAME = IZDAVAC,
NAME = (I SIF, SEQ),
BYTES=44
BYTES=2, START=1
12
FIELD
FIELD
FIELD
NAME = NAZIV,
NAME = STATUS,
NAME = DRZAVA,
7
8
9
10
SEGM
FIELD
FIELD
FIELD
NAME
NAME
NAME
NAME
=
=
=
=
BYTES=20, START=3
BYTES=2, START=23
BYTES=20, START=25
BYTES=52
START=1
START=3
START=43
jer se entitet tipa KNJIGA definise u okviru roditeljskog entiteta tipa IZDAVAC
(uslov koji je u relacionom modelu poznat kao referencijalni integritet).
Manipulisanje podacima u hijerarhijskom modelu je u znatnoj meri procedu
ralno i podrazumeva precizno navodenje
hijerarhijskog puta ka trazenom segmentu.
Tako bi, na primer, zahtev za nalazenjem prve knjige romana izdavaca Prosveta
morao da sadrzi i precizno uputstvo kako se do odgovarajuceg segmenta o toj knjizi
dolazi, i pojednostavljenom sintaksom jezika za manipulisanje podacima sistema
IMS izrazio bi se u obliku
GET UNIQUE
(redosled navodenja
entiteta je veoma bitan i mora da odgovara redosledu roditelj
dete iz definisane funkcionalne veze).
Ovakav iskaz ne moze se zadavati interaktivno, vec iskljucivo iz programa na
programskom jeziku opste namene (npr. COBOL, PL/I).
tipovima entiteta IZDAVAC
i KNJIGA ne postoji funkcioU slucaju da medu
nalna veza, hijerarhijski model pokazuje svoje slabosti (jer ne moze da definise vise
od jednog tipa roditelja za jedan tip entiteta). Mrezni model dopusta da jedan
tip deteta moze imati veci broj roditeljskih tipova entiteta u okviru razlicitih (imenovanih) funkcionalnih veza. Svaki tip entiteta domen funkcionalne veze zove
se tip clana te funkcionalne veze, a kodomen funkcionalne veze tip vlasnika te
funkcionalne veze. Tako se nas primer u mreznom modelu moze izraziti pomocu
KNJIGA i veznog tipa entiteta IZDAVASTVO,
(slika 1.5).
IZDAJE:
IZDAVASTVO
IZDAVAC
U mreznom SUBP IDMS definicija baze ukljucuje naziv baze, definiciju tipa
entiteta za svaki tip entiteta (u IDMS terminologiji slog, RECORD) i definiciju
imenovanog tipa veze za svaki tip veze (u terminologiji IDMS skup, SET).
Manipulisanje podacima u mreznim sistemima, slicno hijerarhijskim, proceduralno je orijentisano i izvrsava se paketno operacijama umetnutim u programski
13
IZDAVAC
KNJIGA
IZDAJE SE
?
IZDAJE
?
IZDAVASTVO
cizno navodenje
puta kojim se pristupa pojedinom slogu, ukljucujuci navodenje
skupa, vlasnika skupa, prvog, sledeceg, poslednjeg clana skupa za datog vlasnika,
itd. Tako bi se zahtev za nalazenjem prve knjige romana izdavaca Prosveta
prethodna dva koraka sve dok se ne dode do primerka sloga KNJIGA koji je roman.
Izrazen pojednostavljenom sintaksom, ovaj zahtev ima sledeci oblik:
MOVE Prosveta TO NAZIV IN IZDAVAC
FIND IZDAVAC
FIND FIRST IZDAVASTVO WITHIN IZDAJE
PERFORM
FIND OWNER WITHIN IZDAJE SE
GET KNJIGA
IF OBLAST IN KNJIGA = roman
izdati NASLOV teku
ceg sloga KNJIGA;
iza
ci iz PERFORM petlje
END-IF
FIND NEXT IZDAVASTVO WITHIN IZDAJE
END-PERFORM
Hijerarhijski i mrezni model ne ostvaruju nezavisnost nivoa predstavljanja podataka ANSI arhitekture. Na logickom nivou prisutna je velika kolicina informacija
o fizickoj reprezentaciji i grupisanju podataka. Nasuprot njima, relacioni model po njima na jedinstven
dataka na logickom nivou predstavlja i entitete i odnose medu
nacin relacijama tabelarnog izgleda. Jezik za definisanje podataka i manipulisanje
podacima je neproceduralan i ne ukljucuje informaciju o putu kojim se fizicki pristupa podacima. Tako bi se entiteti i odnosi iz prethodnog primera u relacionom
modelu prikazali pomocu tri tabele:
KNJIGA
IZDAVAC
14
Redosled navodenja
relacija u FROM liniji je nebitan jer sve relacije imaju
1.2
Dva osnovna tipa objekata koji karakterisu strukturu relacionog modela su domen
i relacija. Domen je skup vrednosti istog tipa, kao sto je skup naslova knjiga, skup
15
sadrzaja, jer se neke njene n-torke1 tokom zivota relacije brisu, neke se dodaju
a neke se menjaju.
Ako se umesto skupa indeksa domena {1, 2, . . . , n} uzme proizvoljni skup (razlicitih) imenovanih indeksa {A1 , A2 , . . . , An }, onda je svaki element vi n-torke
relacije R karakterisan ne samo domenom Di vec i indeksom Ai . Razliciti imenovani indeksi Ai (i = 1, 2, . . . , n) zovu se atributi relacije R i oznacavaju razlicite
je iz konteksta jasno kojoj relaciji pripada neka n-torka, ili kada to nije od zna
caja,
n-torka
ce se jednostavno zvati torka; pri tome se za dimenziju torke uzima stepen odgovaraju
ce
relacije.
2 U daljem tekstu parovi termina relacija/tabela, atribut/kolona i n-torka/vrsta upotrebljava
ce
se kao sinonimi; uobi
cajeno je da se u razmatranju samog relacionog modela upotrebljavaju prve
komponente ovih parova, a u kontekstu implementacija relacionog modela druge.
16
ukljucuju poredenje.
Vecina upitnih jezika, kao sto je SQL, ne poznaje semanticki
aspekt domena, pa je moguce, na primer, postavljati upite kojima se porede naslovi
knjiga sa imenima drzava (kao niske simbola).
Sva naredna razmatranja bice ilustrovana jednom aproksimacijom izdavacke
relacione baze sa sledecom shemom:
P
I
K
KP
KI
(P
(I
(K
(K
(K
SIF,
SIF,
SIF,
SIF,
SIF,
redom. Relacija KP predstavlja apstraktni tip entiteta AUTOR, tj. odnos izmedu
tipova entiteta KNJIGA i PISAC, dok relacija KI predstavlja apstraktni tip entiteta
tipova entiteta KNJIGA i IZDAVAC.
IZDAVASTVO,
tj. odnos izmedu
17
P SIF
p1
p2
p3
p4
p5
IME
c
B.Copi
M.Benson
sic
B.Sljivi
c-Sim
D.Maksimovic
C.J.Date
BR NASLOVA
2
1
1
2
1
DRZAVA
Jugoslavija
Engleska
Jugoslavija
Jugoslavija
Amerika
I SIF
i1
i2
i3
i4
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
STATUS
30
20
10
30
DRZAVA
Jugoslavija
Amerika
Jugoslavija
Jugoslavija
K SIF
k1
k2
k3
k4
k5
k6
NASLOV
Osma ofanziva
Nemam vise vremena
Pionirska trilogija
Srpskohrvatsko-engleski recnik
An Introduction to Database Systems
Trazim pomilovanje
KP
K SIF
k1
k2
k3
k4
k4
k5
k6
P SIF
p1
p4
p1
p2
p3
p5
p4
R BROJ
1
1
1
1
2
1
1
KI
K SIF
k1
k2
k3
k4
k5
k6
k6
I SIF
i1
i1
i1
i1
i2
i3
i4
IZDANJE
2
2
1
2
4
1
3
3 Stvarni
GODINA
1965
1974
1975
1979
1986
1966
1988
OBLAST
roman
poezija
roman
leksikografija
racunarstvo
poezija
TIRAZ
10000
7000
10000
10000
5000
3000
5000
sadr
zaj uklju
cio bi samo simbole iz dopustenog skupa.
18
1.3
Manipulativni deo relacionog modela predstavlja formalizam za definisanje relacionog izraza opsteg oblika, cija je vrednost proizvoljni podskup skupa podataka iz
baze.
Definicija relacionog modela ukljucuje dva formalna jezika za rad sa relacijama,
koja imaju trazeno svojstvo: jedan algebarski u sustini relaciona algebra, i drugi,
zasnovan na predikatskom racunu prvog reda relacioni racun ([14]). Dokazana je
ekvivalentnost ovih formalizama u pogledu izrazajne moci ([17]). Sami formalizmi
kao i skica dokaza njihove ekvivalentnosti bice izlozeni u sledecoj glavi. Da bismo
ilustrovali mogucnosti ovih formalizama, ovde cemo samo neformalno uvesti pojam
relacione algebre.
Relaciona algebra je skup operacija nad relacijama. Relacioni izraz u relacionoj
vaznijim
algebri sastoji se od niza operacija nad odgovarajucim relacijama. Medu
operacijama relacione algebre su projekcija, restrikcija i prirodno spajanje (slika
1.6, [27]):
neka je X podskup skupa atributa relacije R; projekcija R[X] relacije R na
atribute X je relacija koja sadrzi (samo) kolone relacije R koje odgovaraju
atributima X (v. i tacku 2.1.1);
restrikcija R[X = x], za x dom(X), jeste relacija koja sadrzi (samo) n-torke
relacije R cija je vrednost skupa atributa X jednaka x (v. i tacku 2.1.1);
prirodno spajanje R S je dopisivanje torki relacije S na torke relacije R
ako imaju iste vrednosti na zajednickim atributima, uz eliminaciju po jednog
atributa iz svakog para zajednickih atributa (v. i tacku 2.1.2).
Mada se operacije relacione algebre definisu nad relacijama, one se primenjuju i
na pojedinacne n-torke, jer su i n-torke (jednoclane) relacije; na primer, projekcija
n-torke (v1 , v2 , . . . , vn ) na prva dva atributa (A1 , A2 ) je (v1 , v2 , . . . , vn )[A1 A2 ] =
(v1 , v2 ) (v. i tacke 2.1.1, 2.1.2).
Specificni sistemi relacionih baza podataka (krace relacioni sistemi) implementiraju manipulativni deo relacionog modela relacionim jezicima za definisanje
podataka i manipulisanje podacima, specificne sintakse. Da bi jezik za definisanje
podataka bio relacioni, mora da ima konstrukcije za definisanje osnovnih koncepata
strukture relacionog modela (ali i pravila integriteta, opstih i eventualno posebnih,
v. odeljak 1.4). Da bi jezik za manipulisanje podacima bio relacioni, mora da
bude relaciono kompletan, tj. da ima izrazajnu moc bar kolika je izrazajna moc
relacionog racuna ili relacione algebre. Osim toga, jezik za manipulisanje podacima
jednog relacionog sistema mora da ima jos neka svojstva. Naime, formalizam relacionog modela ima mogucnost pretrazivanja podataka, tj. pronalazenja podataka
koji predstavljaju vrednost relacionog izraza. Pored ove mogucnosti, relacioni jezik
treba da omoguci i azuriranje podataka u najsirem smislu, tj. unosenje novih i
brisanje i izmenu postojecih podataka u bazi. Zahtev za pretrazivanjem zove se
upit, dok se zahtev za azuriranjem zove radnja.
19
restrikcija
prirodno spajanje
HH
*
6
H
j
a1 b1
b1 c1
a1 b1 c1
a2 b1
b2 c2
a2 b1 c1
a3 b2
b3 c3
a3 b2 c2
1.3.1
Nedostaju
ce vrednosti
poredenju
vrednosti atributa n-torki, a rezultat tog poredenja
moze biti tacan,
netacan ili mozda, potrebno je za svaku operaciju relacione algebre definisati vise
od jedne operacije u prosirenom modelu. Pored toga, i ostali koncepti relacionog
20
1.4
U integritetni deo relacionog modela spadaju uslovi koje treba da zadovolje podaci
u bazi da bi stanje baze bilo valjano. Pri svakom azuriranju baze podataka sistem
za upravljanje bazom podataka proverava eksplicitno ili implicitno zadate uslove
status jugoslovenskih izdavaca mora biti manji ili jednak 30 (veza izmedu
specificnih vrednosti atributa n-torki jedne relacije);
tiraz izdanja izdavaca Prosveta ne moze biti manji od 5000 (veza izmedu
specificnih vrednosti atributa n-torki dve relacije).
Druga vrsta specificnih uslova integriteta su logicke veze koje postoje izmedu
atributa jedne relacije. Na primer,
21
1.4.1
Primarni klju
c
a) X funkcionalno odreduje
sve atribute relacije R, tj. X Ai za i = 1, 2, . . . , n;
b) nijedan pravi podskup od X nema tu osobinu, tj. za svaki pravi podskup
X 0 X postoji 1 j n tako da X 0 6 Aj .
Nadkljuc je svaki skup atributa za koji vazi samo svojstvo a).
Na primer, atribut I SIF je kljuc relacije I.
Svaka relacija ima bar jedan kljuc, jer u svakoj relaciji R(A1 , A2 , . . . , An ) vazi
funkcionalna zavisnost {A1 , A2 , . . . , An } Ai , za svako 1 i n. Dakle, skup
22
1.4.2
Strani klju
c
23
24
starih i novih
tabele, u svakom trenutku, i koja ne mogu izraziti odnos izmedu
vrednosti kolona pri azuriranju, kakav je bio prethodni primer ogranicenja pri
azuriranju kolone STATUS. Ova druga mogucnost u DB2 UDB sistemu ostvarena
je kroz opstiji koncept koncept trigera kojima je posvecena sledeca tacka.
1.4.3
Trigeri
Svi dosad pomenuti oblici uslova integriteta ukljucuju, eksplicitno ili implicitno,
pored tvrdenja,
i akciju koju sistem preduzima u slucaju da tvrdenje
nije tacno.
Na primer, kod specificnih uslova integriteta koji se odnose na strukturu domena,
pokusaj da se unese vrednost atributa koja nije iz odgovarajuceg domena odbija
se. To odbijanje da se registruje vrednost predstavlja akciju koja se preduzima u
slucaju da uslov integriteta nije zadovoljen. Pokusaj da se izbrise n-torka iz jedne
relacije, sa vrednoscu primarnog kljuca koja postoji kao vrednost stranog kljuca
n-torke zavisne relacije, odbija se, ili proizvodi kaskadno brisanje odgovarajucih
n-torki iz zavisne relacije, odnosno postavljanje markera nedostajucih vrednosti
stranog kljuca u odgovarajuce n-torke zavisnih relacija (o ovim efektima brisanja
bice vise reci u odeljku o SQL podrsci brisanju).
Opstija forma uslova integriteta, kojom se moze zadati proizvoljna akcija u
25
26
Primer 1.2 Zahtev da pri promeni statusa izdavaca (atribut STATUS tabele I),
novi status mora biti veci od starog, inace se promena ne izvrsava vec se izdaje
poruka o gresci, moze biti realizovan sledecim trigerom u sistemu DB2:
CREATE TRIGGER N STATUS
NO CASCADE BEFORE UPDATE OF STATUS ON I
REFERENCING NEW AS NI OLD AS OI
FOR EACH ROW MODE DB2SQL
WHEN (NI.STATUS < OI.STATUS)
SIGNAL SQLSTATE 85000 (Novi status manji od starog)
(triger se aktivira pre izvrsenja operacije azuriranja BEFORE a triger procedura
ne proizvodi aktiviranje drugih trigera NO CASCADE; kod greske niskovna
1.5
Pitanja i zadaci
27
normalizovana relacija
relacijska shema
shema relacione baze podataka
3. Cime
je predstavljen manipulativni deo relacionog modela?
je to relaciona kompletnost?
4. Sta
5. Objasniti razlicite vrste uslova integriteta. Kako se one predstavljaju u relacionom modelu?
6. Definisati sledece pojmove:
funkcionalna zavisnost
primarni kljuc
nadkljuc
strani kljuc
integritet entiteta
referencijalni integritet
triger
uslov i procedura trigera
Manipulativni formalizmi
relacionog modela
Kao sto je vec pomenuto u odeljku 1.3, formalizmi za manipulisanje podacima, koji
su sastavni deo relacionog modela, jesu relaciona algebra i relacioni racun. Upitni
jezici u sastavu SUBP imaju svoj osnov u jednom od ova dva formalizma, ili u
njihovoj kombinaciji.
Skup svojstava koja treba da podrzi svaki upitni jezik bice u sledecem odeljku
prikazan kroz formalizam relacione algebre, jer je ovaj formalizam, u odnosu na
relacioni racun, jednostavniji za razumevanje pri prvom susretu sa pojmovima, i
olaksava objasnjenje koncepata kao sto su, na primer, uslovi integriteta, mehanizmi
autorizacije ili algoritmi azuriranja pogleda. Uprkos pogodnosti relacione algebre
u prezentaciji i razjasnjavanju koncepata, relacioni racun pokazuje prednosti u implementaciji koncepata kroz relacioni upitni jezik. Zato ce u odeljku 2.2 biti izlozen
i formalizam relacionog racuna.
2.1
Relaciona algebra
Prema originalnoj Codd-ovoj definiciji, relacionu algebru cini skup od devet operacija nad relacijama, izabranih tako da se njihovim komponovanjem moze pristupiti svakom podatku u bazi. Kompozicija operacija zajedno sa relacijama na koje
se primenjuju obrazuje relacioni izraz u relacionoj algebri ili izraz relacione algebre.
Vrednost takvog izraza je uvek relacija. Operacije relacione algebre su relacioni
analogoni skupovnih operacija unije, preseka, razlike i Dekartovog proizvoda, kao i
specificne relacione operacije: unarne projekcija i restrikcija, i binarne prirodno
spajanje, slobodno spajanje i relaciono deljenje.
Upotrebljena notacija za operacije relacione algebre je jedna od mogucih notacija i koristi se za ilustrovanje elemenata i koncepata formalizma. Skup operacija
treba interpretirati kao jednu definiciju moci koju svaki relacioni jezik mora da
poseduje.
28
29
Osnovne operacije relacione algebre bice definisane na sledecim dvema (apstraktnim) relacijama: R(A1 , A2 , . . . , An ), S(B1 , B2 , . . . , Bm ).
2.1.1
Unarne operacije
30
Pokazuje se da je relaciona projekcija algebarski analogon egzistencijalnog kvantifikatora koji se primenjuje u relacionom racunu. Intuitivno, ako za relaciju
R(X, Y ) sa dva disjunktna podskupa skupa atributa X, Y vazi da je x R[X],
onda u relaciji R postoji n-torka r takva da je r[X] = x.
Restrikcija.
Neformalno govoreci, operacijom restrikcije biraju se n-torke (u
celosti) zadate relacije koje zadovoljavaju logicki izraz naveden u oznaci operacije.
Poredenja
Ai Aj , Ai a zovu se termi poredenja.
Relacioni logicki izraz je:
term poredenja;
NOT (relacioni logicki izraz);
(relacioni logicki izraz) AND (relacioni logicki izraz);
(relacioni logicki izraz) OR (relacioni logicki izraz).
Neka je P relacioni logicki izraz. Tada se izrazu P moze pridruziti preslikavanje
koje svaku vrstu relacije R preslikava u tacno ili netacno. Operacija restrikcije (ili
prosirene -restrikcije, [19]) relacije R po relacionom logickom izrazu3 P obelezava
se sa R[P ] i definise se na sledeci nacin:
R[P ] = {x | x R i P (x)}.
Primer 2.2 Rezultat restrikcije relacije K po uslovu OBLAST = roman, u oznaci
K[OBLAST = roman], jeste relacija sa istom shemom kao i relacija K, i sa dve
trojke:
K SIF
k1
k3
NASLOV
Osma ofanziva
Pionirska trilogija
OBLAST
roman
roman
2.1.2
31
Binarne operacije
DRZAVA
Jugoslavija
Engleska
Amerika
Pod istim uslovima kao i za operaciju unije, definisu se operacije preseka i razlike
na sledeci nacin:
R S = {t | t R i t S} (presek),
R \ S = {t | t R i t
/ S} (razlika).
Dekartov proizvod relacija R1 i R2 sa po n1 , n2 atributa, redom, jeste
relacija R1 R2 sa n1 + n2 atributa cije su vrste dobijene dopisivanjem vrsta
32
relacije R2 na vrste relacije R1 . Ako je t1 = (t11 , . . . , t1n1 ) proizvoljna n1 torka relacije R1 a t2 = (t21 , . . . , t2n2 ) proizvoljna n2 -torka relacije R2 , tada je
(t1 , t2 ) = (t11 , t12 , . . . , t1n1 , t21 , t22 , . . . , t2n2 ) odgovarajuca n1 + n2 -torka relacije R1 R2 .
Dekartov proizvod k relacija (k > 2) R1 , R2 , . . . , Rk definise se kao (R1 R2
Rk1 ) Rk . Ova operacija se uglavnom uvodi iz koncepcijskih razloga, a
veoma retko zaista i izvrsava, s obzirom na velicinu relacije (broj i duzinu vrsta)
koju proizvodi kao rezultat.
Primer 2.4 Rezultat Dekartovog proizvoda relacija K i I je sledeca relacija sa 7
atributa i 24 sedmorke:
K SIF
k1
k1
k1
k1
k2
k2
k2
k2
...
k6
NASLOV
Osma ofan.
Osma ofan.
Osma ofan.
Osma ofan.
Nemam v.v.
Nemam v.v.
Nemam v.v.
Nemam v.v.
...
Trazim pom.
OBLAST
roman
roman
roman
roman
poezija
poezija
poezija
poezija
...
poezija
I SIF
i1
i2
i3
i4
i1
i2
i3
i4
...
i4
NAZIV
Prosveta
Addison. . .
Decje. . .
Matica. . .
Prosveta
Addison. . .
Decje. . .
Matica. . .
...
Matica. . .
STAT.
30
20
10
30
30
20
10
30
...
30
DRZAVA
Jugoslav.
Amerika
Jugoslav.
Jugoslav.
Jugoslav.
Amerika
Jugoslav.
Jugoslav.
...
Jugoslav.
33
IME
c
B.Copi
c
B.Copi
c
B.Copi
S.
B.S.
S.
B.S.
S.
B.S.
D.Maks.
D.Maks.
D.Maks.
C.J.Date
BR N.
2
2
2
1
1
1
2
2
2
1
DRZAVA
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Jugoslav.
Amerika
I SIF
i1
i3
i4
i1
i3
i4
i1
i3
i4
i2
NAZIV
Prosveta
Decje novine
Matica srpska
Prosveta
Decje novine
Matica srpska
Prosveta
Decje novine
Matica srpska
Addison Wesley
STATUS
30
10
30
30
10
30
30
10
30
20
34
ca,
Primer 2.6 Neka je TEMP relacija koja sadrzi sve sifre knjiga Branka Copi
tj.
c]) KP) [ K SIF] = TEMP K SIF
((P[IME = B.Copi
k1
k3
(o mogucnosti dodeljivanja vrednosti relacionog izraza nekoj relaciji bice reci na
kraju izlaganja o relacionoj algebri).
35
2.1.3
Pro
sirena relaciona algebra
( S)
= i ({}S)
= , za svaki neprazni skup S i nedostajucu vrednost
istog tipa, .
Da bi se definisao logicki izraz u ovoj trovalentnoj logici, potrebno je definisati
i odgovarajuce (trovalentne) logicke operacije, koje se zadaju sledecim tablicama:
AND
T
F
T
T
F
F
F
F
F
OR
T
F
T
T
T
T
F
T
F
NOT
T
F
F
T
prosirena poredenja.
Pri tom, on treba da ima istinitosnu vrednost ako i samo
ako su ispunjena sledeca dva uslova:
svako pojavljivanje nedostajuce vrednosti u izrazu moze se zameniti odre
denom
vrednoscu iz odgovarajuceg domena tako da izraz dobije vrednost T;
svako pojavljivanje nedostajuce vrednosti u izrazu moze se zameniti odre
denom
vrednoscu iz odgovarajuceg domena tako da izraz dobije vrednost F.4
4 Uo
ceno
36
Na primer, ( =a)
= (a je vrednost iz nekog domena; kada se kao argument
poredenja
zameni sa a, vrednost poredenja
postaje T; kada se zameni sa b, za
b 6= a, vrednost poredenja
postaje F).
Proizvoljni upit sa zadatim logickim izrazom sada se interpretira kao naci
sve podatke za koje se zna da je vrednost logickog izraza tacno (a ne naci sve
podatke za koje je vrednost logickog izraza tacno ), pa ne moraju da vaze sve
tautologije dvovalentne logike.
Razlike u definiciji prosirenih logickih izraza u trovalentnoj logici (u odnosu
na odgovarajucu definiciju onih u dvovalentnoj logici) reflektuju se i na razlike u definiciji operacija prosirene relacione algebre. Naime, za svaku operaciju
relacione algebre, s obzirom da u svoju definiciju ukljucuje neku od prosirenih
relacija (poredenje,
pripadnost skupu, inkluzija), uvode se po dve nove operacije:
TACNA i MOZDA
operacija, ciji su rezultati, redom, skup podataka za koje
se zna da pripadaju rezultatu operacije, i skup podataka za koje se ne zna da li
Na primer, TACNA
restrikcija relacije R po relacijskoj operaciji na atributima
Ai i Aj , u oznaci R[Ai T Aj ], definise se kao
Slicno, MOZDA
restrikcija relacije R po logickom uslovu P , u oznaci R[P ], moze
se definisati na sledeci nacin:
R[P ] = {x | x R i (P ) = }.
Na primer, MOZDA
restrikcija relacije R po relacijskoj operaciji na atributima
Ai i Aj , u oznaci R[Ai Aj ], definise se kao
Uvodenje
nedostajuce vrednosti u relacioni model omogucuje i prosirenje operacija unije, preseka i razlike, sa unijski kompatibilnih relacija na relacije koje to
logike ([25]). Tako
ce neki logi
cki izraz, striktnom primenom prosirenih logi
ckih operacija, dobiti
vrednost , mada jedan od navedenih uslova nije ispunjen ([27]). Na primer, ako relacija R ima
samo jedan atribut, A, i jednu n-torku vrednost a, a relacija S dva atributa, B, A, i jednu
n-torku par (b, ), tada
ce prosireni logi
cki izraz (R.A=S.A)
AND (S.A=
0 a01 ), primenom
prosirenih logi
ckih operacija, dobiti vrednost ( AND = ), mada prema navedenim uslovima
izraz treba da ima vrednost F. Zbog ovakvih problema neki autori sugerisu da se u relacione sisteme
i ne uklju
cuju nedostaju
ce vrednosti, dok drugi preporu
cuju pa
zljivu preradu komponenti RSUBP,
posebno optimizatora, da bi se ovakvi problemi resili.
37
R S = R1 S1 , gde je R1 = R (C : )5 i S1 = (A : ) S.
Slicno se definisu i prosirene spoljasnje operacije preseka i razlike.
Spoljasnje slobodno spajanje relacija R, S definise se tako da rezultujuca relacija
sadrzi sve podatke tih relacija, cak i kada njihove projekcije na atribute spajanja
nisu jednake. Tako, za relacije R(A, B) i S(C, D) spoljasnje -spajanje po paru
=
=
=
R[BC]S,
R \ T [A, B],
S \ T [C, D].
2.2
Relacioni ra
cun
38
Na primer, zahtev za nalazenjem naslova knjiga koje je izdalo izdavacko preduzece Prosveta, mogao bi se, u terminima operacija relacione algebre, preciznim
navodenjem
redosleda izvrsavanja operacija, izraziti na sledeci nacin :
izvrsiti restrikciju relacije I po uslovu NAZIV=Prosveta;
projektovati medurezultat
na atribut NASLOV.
Isti zahtev bi se, manje proceduralnom notacijom relacionog racuna, izrazio
opisom sledecih svojstava rezultata:
naci naslove knjiga za koje postoje izdanja izdavaca ciji je naziv Prosveta.
Relacioni racun je baziran na predikatskom racunu prvog reda. Dve varijante
ovog racuna definisao je, kao i relacioni model, Edgar Codd; jedna je relacioni racun
n-torki, a druga relacioni racun domena.
2.2.1
Relacioni ra
cun n-torki
Kao sto relaciona algebra predstavlja skup operacija nad relacijama, kojima se moze
izgraditi izraz relacione algebre, tako relacioni racun n-torki predstavlja formalizam
za izgradnju relacionog izraza, izraza relacionog racuna.
Bitno svojstvo relacionog racuna n-torki predstavlja n-torna promenljiva. To
je promenljiva koja je definisana nad specificnom relacijom za koju je vezana, tj.
promenljiva koja kao svoje vrednosti uzima n-torke te relacije, i samo njih. Relacija
za koju je vezana n-torna promenljiva zove se i dijapazon te n-torne promenljive.
S obzirom da je relacioni racun formalni koncept, razne implementacije usvajaju
razlicite sintakse za opis njegovih konstrukcija, i nacin na koji se jednoj n-tornoj
promenljivoj dodeljuje njen dijapazon.
Jedna varijanta originalne Codd-ove definicije i sintakse izraza relacionog racuna
n-torki (alfa-izraza) moze se opisati sledecim elementima ([17], [64]).
Izraz relacionog racuna n-torki je oblika
{(t1 , t2 , . . . , tk ) : f },
pri cemu vazi:
1. Promenljive t1 , t2 , . . . , tk su n-torne promenljive (npr. r, s, t) ili indeksirane
n-torne promenljive (npr. r[1], s[3], t[2]), i njihov skup se zove ciljna lista.
39
poredenje
i-te komponente promenljive s sa j-tom komponentom promenljive
{(r[2], r[1]) : K(r) AND (s)(t) (KP(s) AND P(t) AND s[1] = r[1] AND
s[2] = t[1] AND t[4] = Jugoslavija)}
(naslovi i sifre knjiga ciji bar jedan autor ima jugoslovensko drzavljanstvo).
Jedna specificna sintaksa zadavanja izraza relacionog racuna n-torki, koja je
bliska sintaksi upitnih jezika zasnovanih na relacionom racunu, opisana je u [22] i
bice ovde ukratko prikazana.
Za deklaraciju n-torne promenljive i njeno vezivanje za relaciju, u ovoj sintaksi
koristi se iskaz oblika
40
<izraz>
::=
<ciljni-atributi>
<formula>
::=
::=
<poredenje>
::=
<ciljni-atributi>
| <ciljni-atributi> WHERE <formula>
<promenljiva>.<atribut>{,<promenljiva>.<atribut>}
<poredenje>
| (<formula>)
| NOT <formula>
| <formula> AND <formula>
| <formula> OR <formula>
| EXISTS <promenljiva> (<formula>)
| FORALL <promenljiva> (<formula>)
<promenljiva>.<atribut> (= | 6= | < | | > | )
(<promenljiva>.<atribut> | <konstanta> )
Primer 2.9 Izrazi relacionog racuna iz primera 2.8 u ovoj sintaksi imaju sledeci
oblik:
41
IS K
IS KP
IS P
k.NASLOV
k.NASLOV, k.K SIF WHERE EXISTS kp (EXISTS p (kp.K SIF = k.K SIF
AND kp.P SIF = p.P SIF AND p.DRZAVA = Jugoslavija))
(naslovi i sifre knjiga ciji bar jedan autor ima jugoslovensko drzavljanstvo).
2.2.2
Relacioni ra
cun domena
Relacioni racun domena lici na relacioni racun n-torki, s tim sto je promenljiva
tog racuna deklarisana nad domenom atributa (domenska promenljiva) a ne nad
relacijom.
Prema Codd-ovoj definiciji relacionog racuna, izraz relacionog racuna domena
ima oblik
{x1 x2 . . . xk | f },
pri cemu vazi:
1. x1 , x2 , . . . , xk su domenske promenljive;
2. f je formula relacionog racuna domena cije su slobodne promenljive upravo
promenljive x1 , x2 , . . . , xk ; pri tome se ta formula definise na isti nacin kao
i formula relacionog racuna n-torki, osim sto sada atom moze imati nesto
modifikovan oblik:
a1) ako je R relacija stepena n, a y1 , y2 , . . . , yn konstante ili domenske
promenljive nad domenima odgovarajucih atributa, onda je R(y1 y2 . . . yn )
atom; znacenje ovog atoma je da vrednosti od yi (za one yi koji su domenske
promenljive) moraju biti izabrane tako da y1 y2 . . . yn predstavlja n-torku
relacije R;
a2) ako su x, y domenske promenljive, a konstanta, a operacija
poredenja,
onda su xy i xa atomi; znacenje ovih atoma je da par vrednosti
42
denju. Ostali elementi sintakse formule (i izraza) relacionog racuna n-torki i relacionog racuna domena su isti.
Primer 2.11 Ako su KX, PX, IX, STATUSX, IMEX, NASLOVX domenske
promenljive deklarisane nad domenima atributa K SIF, P SIF, I SIF, STATUS,
IME, NASLOV, redom, onda izrazi relacionog racuna domena iz prethodnog
primera u ovoj sintaksi imaju sledeci oblik:
a) Naci sifru i status izdavaca ciji je naziv Prosveta:
IX, STATUSX, WHERE I( I SIF:IX, STATUS:STATUSX, NAZIV:Prosveta);
b) Naci imena pisaca jugoslovenskih drzavljana:
IMEX WHERE P( IME:IMEX, DRZAVA:Jugoslavija);
c) Naci ime i sifru autora Osme ofanzive:
IMEX, PX WHERE EXISTS KX
(K(K SIF: KX, NASLOV:Osma ofanziva) AND
KP(K SIF:KX, P SIF:PX) AND P(P SIF:PX, IME:IMEX)).
Relacioni racun domena je mehanizam ekvivalentan relacionom racunu n-torki,
u smislu da za svaki izraz relacionog racuna domena postoji izraz u relacionom
racunu n-torki koji ima istu vrednost, i obratno (dokaz u [64]). Osim toga, moze se
dokazati da je relaciona algebra ekvivalentna, u istom smislu, sa relacionim racunom
n-torki. Dokaz svodljivosti izraza relacione algebre na izraz relacionog racuna ntorki, izraza relacionog racuna n-torki na izraz relacionog racuna domena, a izraza
relacionog racuna domena na izraz relacione algebre, moze se naci, za razlicite
43
sintakse relacione algebre i relacionog racuna, u [64], [48]. Otuda sledi, posebno,
ekvivalentnost relacione algebre i relacionog racuna (u bilo kojoj od dve varijante).
Algoritam 1 (svodenje
izraza relacionog ra
cuna n-torki na izraz relacione
algebre)
Algoritamski koraci:
1. Za svaku n-tornu promenljivu izraza relacionog racuna, pretraziti odgo
varajucu relaciju, uz izvodenje
operacije restrikcije ako postoji uslov restrikcije nad tom relacijom.
2. Napraviti Dekartov proizvod relacija dobijenih u koraku 1.
3. Izvrsiti restrikciju Dekartovog proizvoda dobijenog u koraku 2 prema uslovu
Primer 2.12 Ilustrujmo rad algoritma 1 na izdavackoj bazi podataka. Upit naci
sifre i nazive jugoslovenskih izdavaca ciji je status veci od 10, i koji su 1979. godine
stampali sve knjige6 nekog inostranog pisca moze se preformulisati u upit naci
sifru i naziv svakog jugoslovenskog izdavaca ciji je status veci od 10, i za kojeg
postoji inostrani pisac takav da za svaku izdatu knjigu vazi sledece: ako je autor
knjige taj pisac, onda je tu knjigu 1979. godine izdao taj izdavac. Ovaj se upit
moze u relacionom racunu n-torki formulisati sledecim izrazom (o sistematicnoj
obradi implikacije ako onda v. tacku 3.3.6):
6 Sve knjige ovde zna
ci sve knjige o kojima postoji informacija u bazi, tj. primenjuje se
pretpostavka o zatvorenoj interpretaciji baze.
44
RANGE
RANGE
RANGE
RANGE
OF
OF
OF
OF
i
p
ki
kp
IS
IS
IS
IS
I
P
KI
KP
niz medurezultata,
tj. rezultat.
Posle koraka 1 pretrazena je kompletna relacija KP i sledeci delovi relacija I, P,
KI:
I
I SIF
i1
i4
NAZIV
Prosveta
Matica srpska
STATUS
30
30
DRZAVA
Jugoslavija
Jugoslavija
P SIF
p2
p5
IME
M.Benson
C.J.Date
BR NASLOVA
1
1
DRZAVA
Engleska
Amerika
KI
K SIF
k4
I SIF
i1
GODINA
1979
TIRAZ
10000
IZDANJE
2
NAZIV
Prosveta
Prosveta
Prosveta
Prosveta
Prosveta
Prosveta
Prosveta
..
.
...
...
...
...
...
...
...
...
..
.
i4
Matica s. . . .
P SIF
p2
p2
p2
p2
p2
p2
p2
..
.
IME
Benson
Benson
Benson
Benson
Benson
Benson
Benson
..
.
...
...
...
...
...
...
...
...
..
.
K SIF I SIF
k4
i1
k4
i1
k4
i1
k4
i1
k4
i1
k4
i1
k4
i1
..
..
.
.
...
...
...
...
...
...
...
...
..
.
K SIF P SIF
k1
p1
k2
p4
k3
p1
k4
p2
k4
p3
k5
p5
k6
p4
..
..
.
.
...
...
...
...
...
...
...
...
..
.
p5
Date
...
k4
...
k6
...
i1
p4
45
Korak 3 predstavlja restrikciju dobijenog Dekartovog proizvoda po uslovu spajanja relacija I, P, KI, KP. Uslov spajanja u ovom primeru je implikacija tipa: ako
su pisac (P) i autor knjige (KP) isti, onda ta knjiga treba da je izdanje (KI) izdavaca
I, tj. u terminima atributa n-torki,
P.P SIF = KP.P SIF KP.K SIF = KI.K SIF AND KI.I SIF = I.I SIF,
ili kako je zapisano u formulaciji upita:
kp.P SIF 6= p.P SIF OR (ki.K SIF = kp.K SIF AND ki.I SIF = i.I SIF).
Zato se posle koraka 3 dobija relacija Rez3 , u kojoj su prisutne sve 16-torke
koje zadovoljavaju prvi clan disjunkcije (pisac i autor knjige nisu isti), i sve 16torke koje zadovoljavaju drugi clan disjunkcije, tj. 16-torke kod kojih su pisac i
autor knjige isti a knjiga je u izdanju navedenog izdavaca. Dakle, relacija Rez3
dobija se iz relacije Rez2 izbacivanjem samo onih vrsta koje ne zadovoljavaju ni
jedan clan disjunkcije, tj. za koje vazi: P.P SIF = KP.P SIF AND (KP.K SIF 6=
KI.K SIF OR KI.I SIF 6= I.I SIF) (pisac i autor knjige su isti, ali knjiga nije u
izdanju izdavaca iz te 16-torke); vrste koje se u koraku 3 izbacuju su:
(i1, Prosveta, . . . , p5, Date,
. . . , k4, i1, . . . , k5, p5, . . . )
(i4, Matica S., . . . , p2, Benson, . . . , k4, i1, . . . , k4, p2, . . . )
(i4, Matica S., . . . , p5, Date,
. . . , k4, i1, . . . , k5, p5, . . . )
Relacija Rez3 ima 16 atributa i dvadeset pet 16-torki.
Posle prve primene koraka 4, koja odgovara primeni egzistencijalnog kvantifikatora na n-tornu promenljivu tabele KI (EXISTS ki), dobija se relacija REZ4
analogna relaciji REZ3 , samo bez atributa relacije KI:
REZ4 I SIF
i1
i1
..
.
i4
NAZIV
Prosveta
Prosveta
..
.
...
...
...
..
.
P SIF
p2
p2
..
.
Matica s. . . . p5
IME
Benson
Benson
..
.
...
...
...
..
.
K SIF
k1
k2
..
.
Date
. . . k6
P SIF
p1
p4
..
.
...
...
...
..
.
p4
...
REZ40 I SIF
i1
NAZIV
Prosveta
ST
30
DRZAVA
Jugoslavija
P SIF IME
BR N DRZAVA
p2
Benson 1
Engleska
46
Posle trece primene koraka 4, koja odgovara primeni egzistencijalnog kvantifikatora na n-tornu promenljivu tabele P (EXISTS p), dobija se relacija sa 4 atributa
i jednom cetvorkom:
REZ400 I SIF NAZIV STATUS DRZAVA
i1
Prosveta 30
Jugoslavija
Najzad, posle koraka 5 dobija se relacija sa dva (izlazna) atributa i jednim ure
denim
parom, koji predstavlja i jedini par vrednosti koje zadovoljavaju pocetni
upit:
REZ5 I SIF NAZIV
i1
Prosveta
Ovo je i krajnji rezultat (vrednost) polaznog izraza relacionog racuna. Redosled
izvrsavanja odgovarajucih operacija relacione algebre rezultuje sledecim izrazom
relacione algebre, dobijenim transformacijom izraza relacionog racuna:
((((( I[ DRZAVA = Jugoslavija AND STATUS > 10]
(P[ DRZAVA 6= Jugoslavija]) (KI[ GODINA = 1979]) KP
[ KP.P SIF 6= P.P SIF OR
(KI.K SIF = KP.K SIF AND KI.I SIF = I.I SIF)]
[ I.I SIF, NAZIV, STATUS, DRZAVA, P.P SIF, IME,
BR NASLOVA, DRZAVA, KP.K SIF, KP.P SIF, R BROJ]
KP
[ I.I SIF, I.NAZIV]
)
)
)
)
)
47
proizvoda nisu u mogucnosti da optimizuju istovremeno veci broj izraza (tj. iskaza),
pa je njihova produktivnost veca ako se vise aktivnosti upakuje u jedan jedini
izraz. To je i razlog zbog kojeg Codd preporucuje upotrebu logickog jezika
relacionog racuna, u odnosu na algebarski jezik relacionu algebru, kao osnove
za implementaciju upitnog jezika ([19]).
2.3
Pitanja i zadaci
projekcija
spoljasnja unija
restrikcija
Dekartov proizvod
relacioni racun
slobodno () spajanje
prirodno spajanje
n-torna promenljiva
relaciono deljenje
48
Deo II
izgradene
po modelu relacionog racuna (n-torki ili domena), jezike zasnovane na
relacionoj algebri, i SQL-olike jezike, koji ukljucuju konstrukcije kako relacione
algebre, tako i relacionog racuna.
Najveci broj implementacija relacionih upitnih jezika 80-tih godina 20. veka
bio je zasnovan na upitnom jeziku SQL (Structured Query Language), proizvoda
istrazivacke IBM laboratorije u San Hozeu (San Jose) u Kaliforniji. Bez obzira na
izvesne nedostatke i odstupanja od principa relacionog modela, aktuelni standard
SQL upitni jezik.
relacionog upitnog jezika je takode
onima
Gotovo svi komercijalni RSUBP proizvodi podrzavaju i SQL jezik. Medu
koji su razvijani kao SQL sistemi znacajniji su, na primer, SQL/DS, DB2, MRS,
Oracle, AIM/RDB, INFORMIX.
Vecina relacionih upitnih jezika ima svoju interaktivnu i aplikativnu varijantu.
Prva omogucuje postavljanje ad hoc upita nad relacionom bazom, dok druga omogucuje ugradnju upitnog jezika u maticni programski jezik i razvoj slozenih aplikacija
51
Glava 6, Upitni jezik QUEL, sadrzi prikaz osnovnih elemenata relacionog
upitnog jezika QUEL. Mada daleko manje prisutan od SQL-a, ovaj jezik predstavlja, po misljenju vecine strucnjaka, superiorniji upitni jezik od SQL-a po
nizu svojstava.
Najzad, glava 7, Optimizacija upita, posvecena je strategijama i tehnikama
optimizovanja izvrsavanja upita u relacionim upitnim jezicima.
Istorijat
Upitni jezik SQL predstavlja zavrsnu fazu evolucije klase jezika razvijene u IBM
istrazivackoj laboratoriji u San Hozeu, Kalifornija. Ovu evoluciju upitnih jezika
karakterise odstupanje od jezika relacione algebre i priblizavanje jezicima relacionog
racuna. Svi jezici ove klase su skupovno orijentisani, u znacajnoj meri neprocedu
ralni, i omogucuju zadavanje onoga sta se zeli dobiti, bez preciznog navodenja
nacina kako ce se zeljeni rezultat dobiti.
Prvi od jezika u ovoj klasi bio je upitni jezik SQUARE (Specifying QUeries
As Relational Expressions) ([9]), implementiran u prvom potpunom prototipskom
relacionom sistemu SYSTEM R ([4]). Sam SQUARE ima mogucnosti koje ne
d1 )
3.1 Istorijat
53
(t1 )1 R1 , . . . , (tk )k Rk :
obezbedivao
je samo tabelarni model podataka, nezavisan od jezika, definiciju
(engl. interface) ka slogovno orijentisanim
sheme, poglede i kursore za sumede
programskim jezicima.
Standard SQL-a koji je objavljen 1989, SQL/89, bio je siroko prihvacen na
54
Aktuelni standard SQL jezika je SQL/92 (SQL2, SQL-92) ili, pod punim
nazivom, Medunarodni
standardni jezik baza podataka (1992) (International
Standard Database Language SQL (1992), [39]). SQL2 je anticipatorni standard,
nove ugradene
tipove podataka
nivoe konzistentnosti transakcija
odlozenu proveru uslova integriteta
SQL dijagnostiku, itd.
SQL2 standardu posvecena je glava 5.
Za 1995. godinu planirano je bilo objavljivanje novog standarda SQL-a, SQL3,
kompatibilnog sa SQL2, ali obogacenog objektnim aspektom podataka (o objektnom modelu podataka bice reci u Dodatku), izracunljivo kompletnog (sa kontrolnim strukturama, bez potrebe ugnjezdenja u programske jezike opste namene). O
statusu pojedinih komponenti SQL3 standarda v. glavu 5.
U preostalom delu ove glave bice detaljno opisana sintaksa i semantika SQL-a.
Radi konkretizacije jezika i mogucnosti programiranja na njemu (bilo interaktivnog
ili aplikativnog), izlaganje ce se odnositi na jednu implementaciju SQL-a, za RSUBP
DB2 UDB (Universal Data Base) Verzija 5.2 (pod operativnim sistemima Windows
95, Windows NT, OS/2). Bez obzira na to, najveci deo razmatranja odnosi se na
SQL uopste, nezavisno od implementacije.
3.2
Definisanje podataka
Osnovni iskazi definisanja podataka u SQL-u su iskazi za kreiranje i iskazi za uklanjanje baznih tabela, indeksa i pogleda, kao i iskazi za izmenu strukture baznih
tabela i pogleda. Pored ovih objekata, novije verzije SQL-a (ukljucujuci i standard
SQL2, v. 5.1), podrzavaju koncept sheme, razlicit od koncepta relacijske sheme
kako je definisana relacionim modelom v. 1.2, a slican konceptu sheme relacione
baze podataka, kao i iskaze za definisanje, izmenu i uklanjanje sheme.
55
3.2.1
Shema
[
[
[
[
navodenju
objekta (npr. u SELECT iskazu) izostavi ime sheme, podrazumeva
se shema imenovana imenom korisnika koji taj iskaz zadaje. Ovo svojstvo bice
korisceno u svim primerima SQL-a.
Shema se moze i ukloniti iskazom oblika
DROP SCHEMA ime-sheme RESTRICT
pri cemu pravilo RESTRICT zabranjuje uklanjanje sheme ako ona sadrzi bilo koji
objekat baze podataka.
56
3.2.2
Bazne tabele
Iskaz kreiranja.
korisni
cki definisane tipove bazirane na ugradenim
SQL tipovima ([37]).
57
te kolone, navodenjem
opcije [CONSTRAINT ime] PRIMARY KEY.
U sistemu DB2, tabela ne mora imati definisan primarni kljuc (sto predstavlja
odstupanje od principa relacionog modela), ali je veoma pozeljno da ga ima jer on
obezbeduje
jedinstvenost vrsta.
Definicija stranog kljuca je oblika
[CONSTRAINT ime] FOREIGN KEY ( kolona {, kolona})
REFERENCES odnosna-tabela
[ON DELETE efekat] [ON UPDATE efekat]
gde je odnosna-tabela bazna tabela u kojoj ovde navedene kolone cine primarni
kljuc. Tabela u kojoj je definisan strani kljuc je zavisna od odnosne tabele. Ne
zahteva se postojanje indeksa po kolonama stranog kljuca, ali je to cesto pogodno iz
razloga performansi (npr. kod operacije spajanja nad primarnim i stranim kljucem
ili kod odrzavanja referencijalnog integriteta).
Strani kljuc koji se sastoji od jedne kolone moze se zadati i u samoj definiciji te
kolone, navodenjem
kompletne definicije stranog kljuca.
Pri brisanju (DELETE) vrsta iz odnosne tabele, moze se primeniti jedno od
sledecih pravila brisanja (tj. efekat u ON DELETE opciji moze biti sledeci):
NO ACTION: omogucuje brisanje vrste u odnosnoj tabeli samo ako ne postoji vrsta u zavisnoj tabeli koja zavisi od vrste koja se brise (tj. ako ne postoji
vrsta u zavisnoj tabeli cija je vrednost stranog kljuca jednaka vrednosti primarnog kljuca vrste koja se brise). U suprotnom, sistem odbija da izvrsi
brisanje iz odnosne tabele i javlja gresku. Ovo je i podrazumevani efekat koji
se primenjuje ukoliko se nista ne navede.
58
59
Ostali elementi iskaza za kreiranje tabele, drugi-parametri, odnose se na elemente fizicke reprezentacije bazne tabele (u sistemu DB2 takvi elementi su prostor
tabela u koji se tabela smesta i njegove karakteristike, prostor tabela u koji ce se
smestiti svaki buduci indeks nad tabelom, kao i prostor tabela u koji se smestaju
veliki objekti, itd; v. tacku 18.1.5 Fizicka reprezentacija podataka u sistemu
DB2).
Primer 3.1 Kreirati tabele K, I, KI sa strukturom opisanom u odeljku 1.2.
CREATE TABLE K
(K SIF
CHAR (5)
NOT NULL,
NASLOV
CHAR (50) NOT NULL WITH DEFAULT,
OBLAST
CHAR (20),
PRIMARY KEY
(K SIF))
CREATE TABLE I
(I SIF
CHAR (6)
NOT NULL,
NAZIV
CHAR (20) NOT NULL WITH DEFAULT,
STATUS
SMALLINT,
DRZAVA
CHAR (20) NOT NULL WITH DEFAULT,
PRIMARY KEY
(I SIF))
CREATE TABLE
KI
(K SIF
CHAR(5)
NOT NULL,
I SIF
CHAR(6)
NOT NULL,
IZDANJE
SMALLINT
NOT NULL,
GODINA
SMALLINT,
TIRAZ
INTEGER,
PRIMARY KEY
(K SIF, I SIF, IZDANJE),
FOREIGN KEY KSK (K SIF) REFERENCES K ON DELETE RESTRICT
ON UPDATE RESTRICT,
FOREIGN KEY ISK (I SIF) REFERENCES I ON DELETE CASCADE)
Efekat ovih iskaza je kreiranje novih, praznih baznih tabela koje se zovu xyz.K,
xyz.I, xyz.KI, redom; xyz je ime sheme u kojoj su kreirane ove tabele, ili ime
po kome je sistemu poznat korisnik koji zadaje CREATE TABLE iskaz. U okviru
sheme xyz (tj. korisnik xyz) moze se obracati ovim tabelama kvalifikovanim imenom
xyz.K (xyz.I, xyz.KI) ili nekvalifikovanim imenom K (I, KI), dok se iz ostalih shema
(tj. od strane ostalih korisnika) mora upotrebiti kvalifikovano ime.
Pokusaj da se brise vrsta u tabeli K sa vrednoscu k u koloni K SIF bice uspesan
samo kada u tabeli KI ne postoji vrsta sa istom vrednoscu k u koloni K SIF, jer
strani kljuc K SIF u tabeli KI ima pravilo brisanja DELETE RESTRICT. Slicno,
pokusaj da se vrednost k u koloni K SIF neke vrste promeni bice uspesan samo
ako u tabeli KI ne postoji vrsta sa vrednoscu k u koloni K SIF (ON UPDATE
RESTRICT).
Brisanje vrste u tabeli I sa vrednoscu i atributa I SIF proizvodi brisanje svih
vrsta u tabeli KI sa vrednoscu i kolone I SIF, jer strani kljuc I SIF u tabeli KI
60
ima pravilo brisanja DELETE CASCADE. Ovde se brisanje zavrsava jer nema
vise zavisnih tabela (tj. vrsta). Ako bi postojala tabela zavisna od tabele KI, tj.
od njene kolone I SIF, i na nju bi se primenilo pravilo brisanja definisano za njen
do zavisne
strani kljuc. Ovakvo kaskadno brisanje se zavrsava i u slucaju da se dode
tabele za koju je definisan strani kljuc sa pravilom brisanja DELETE SET NULL.
Za promenu vrednosti vrste tabele I na koloni I SIF vazi isto sto i za tabelu K i
kolonu K SIF (podrazumevano pravilo azuriranja NO ACTION ima isto dejstvo
kao i RESTRICT).
Iskaz izmene.
Postojeca bazna tabela moze se u svako doba promeniti dodavanjem novih kolona, dodavanjem ili uklanjanjem primarnog, stranog kljuca, ili
uslova ogranicenja u opstem slucaju, ili promenom fizickih parametara tabele. Iskaz
promene bazne tabele ima oblik
ALTER TABLE bazna-tabela
ADD ime-kolone tip-podataka [NOT NULL [WITH] DEFAULT [ vrednost]]
| ADD def-prim-kljuca
| ADD def-str-kljuca
| ADD uslov-ogranicenja
| DROP def-prim-kljuca
| DROP def-str-kljuca
| DROP uslov-ogranicenja
| drugi parametri
pri cemu svi uvedeni identifikatori (npr. vrednost, def-prim-kljuca, itd.), imaju isto
znacenje kao i u CREATE TABLE iskazu. Posebno, za novu dodatu kolonu vaze
iste mogucnosti kao i za definisanu kolonu u CREATE TABLE iskazu. Na primer,
ALTER TABLE KI
ADD CENA INTEGER
Ovaj iskaz dodaje kolonu CENA tabeli KI. Sve postojece vrste tabele KI
prosiruju se sestom kolonom koja uzima vrednost NULL (ili 0 u slucaju opcije
NOT NULL WITH DEFAULT). Opcija NOT NULL (bez kvalifikacije WITH DEFAULT) u ALTER iskazu nije dozvoljena.
Primarni kljuc se moze dodati ako tabela vec nema definisan primarni kljuc i
ako sve kolone koje se ukljucuju u primarni kljuc imaju svojstvo NOT NULL.
Pri uklanjanju primarnog kljuca (DROP PRIMARY KEY) definicije stranih
kljuceva koje su se prethodno odnosile na uklonjeni primarni kljuc ukidaju se automatski.
Iskazom ALTER TABLE ne moze se menjati tip podataka postojecih kolona
(osim duzine VARCHAR kolone), niti se mogu uklanjati postojece kolone.
Ako jedan ALTER TABLE iskaz sadrzi vise radnji dodavanja, uklanjanja
(kolona, primarnog, stranog kljuca, itd.) ili promene tabele, prvo se izvrsava radnja
dodavanja kolona, a ostale radnje se izvrsavaju u redosledu kojim su navedene.
61
3.2.3
Indeksi
62
sto su dugacki niskovni ili graficki tip promenljive duzine, veliki binarni objekti
itd).
Drugi-parametri odnose se na fizicke karakteristike indeksa, npr. prostor tabela
u koji se smesta indeks, ili da li je indeks grupisuci ili negrupisuci (v. odeljak 12).
Jedna od komponenti RSUBP-a, upravljac podacima (engl. data manager),
automatski odrzava jednom kreirani indeks, tako da on odslikava azuriranja bazne
tabele, sve dok se indeks ne ukloni.
U iskazu
CREATE INDEX XKIC ON KI (CENA)
opcija UNIQUE se ne navodi jer veci broj izdanja moze imati istu cenu.
Iskaz uklanjanja.
nevazecim i izgraduje
se ponovo pre sledeceg izvrsenja.
3.2.4
Pogledi
Pogledi su virtuelne tabele koje nisu predstavljene fizickim podacima, vec je njihova
definicija (u terminima drugih tabela) zapamcena u katalogu.
Iskaz za kreiranje pogleda u SQL-u je oblika:
CREATE VIEW ime-pogleda [( kolona {, kolona})]
AS puni upitni blok
[WITH CHECK OPTION]
Puni upitni blok pripada manipulativnom delu SQL-a (v. tacku 3.3.9), i zato
ce pogledi biti prikazani detaljnije u posebnoj glavi o pogledima. CHECK opcija se
odnosi na primenu ogranicenja navedenih u logickom izrazu WHERE linije upitnog
bloka, pri unosenju i izmeni podataka u pogledu. Na primer,
CREATE
AS SELECT
FROM
WHERE
VIEW JUGIZD
I SIF, NAZIV
I
DRZAVA=Jugoslavija
63
3.3
Manipulisanje podacima
3.3.1
Pretra
zivanje
64
NULL (NOT IN, NOT BETWEEN, NOT LIKE, IS NOT NULL); od kvantifikatora
dopusten je egzistencijalni kvantifikator. Moguca struktura logickog izraza bice
prikazana primerima koji slede. Svi primeri odnose se na tabele izdavacke baze
podataka opisane u odeljku 1.2 (o strukturnom delu relacionog modela).
Rezultat operacije koju definise SELECT upitni blok je tabela koja je izvedena
Rezultat:
I SIF STATUS
i2
20
Imena kolona mogu se (a nekad i moraju, kao sto ce biti pokazano) kvalifikovati
imenima tabela iz kojih poticu, pa se prethodni primer ekvivalentno zapisuje kao
SELECT I.I SIF, I.STATUS
FROM
I
WHERE I.DRZAVA=Amerika
SELECT iskaz ima mnogo opstiju strukturu i izrazajne mogucnosti. One ce
3.3.2
Jednorelacioni upiti
Dve osnovne klase jednorelacionih upita (upita nad jednom tabelom) jesu upiti nekvalifikovanog pretrazivanja, u kojima nema WHERE linije, pa se sve vrste tabele
kandiduju za rezultat, i upiti kvalifikovanog pretrazivanja, koji sadrze WHERE
liniju i kriterijum odabira vrsta.
Primer 3.3 (zadr
zavanje duplikata)
Naci sifre svih izdatih knjiga.
SELECT K SIF
FROM KI
ili, ekvivalentno:
SELECT ALL K SIF
FROM KI
Rezultat:
K SIF
k1
k2
k3
k4
k5
k6
k6
65
Rezultat izvrsavanja ovog upita sadrzi i duplikate (pa relacija rezultat nije skup,
suprotno definiciji relacije u relacionom modelu).
Primer 3.4 (eliminacija duplikata)
Rezultat:
K SIF
k1
k2
k3
k4
k5
k6
(ekvivalentno sa
I SIF
i1
i1
i1
i1
i2
i3
i4
IZDANJE
2
2
1
2
4
1
3
4
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
u
u
u
u
u
u
u
hiljadama=
hiljadama=
hiljadama=
hiljadama=
hiljadama=
hiljadama=
hiljadama=
5
10
7
10
10
5
3
5
66
Cetvrta
i peta kolona rezultujuce tabele sada ce imati naziv KOMENTAR,
TIRHILJ, redom.
Kao sto nekvalifikovani oblik SELECT iskaza omogucuje izbor kolona navedene
tabele, navodenje
logickog izraza u WHERE liniji tog iskaza omogucuje i izbor
samo onih vrsta za koje je vrednost tog izraza tacno. Sve opcije navedene uz
nekvalifikovano pretrazivanje u prethodnim primerima odnose se i na kvalifikovano
pretrazivanje. Osim toga, WHERE linija ovih upita moze da ukljuci i specificne
operacije, pa se razlikuju sledece podklase upita kvalifikovanog pretrazivanja.
Rezultat:
I SIF
i1
i4
Rezultat:
I SIF STATUS
i1
30
i2
20
i4
30
poredenja na razlicitost).
Primer 3.9 (IN)
Naci sifre izdavaca ciji je status 20 ili 30, kao i njihove statuse.
SELECT I SIF, STATUS
FROM
I
WHERE STATUS IN (20, 30)
67
Za dati sadrzaj tabele I (odeljak 1.2) ovaj upit ima isti rezultat kao i upit iz
prethodnog primera.
Relacijska operacija LIKE (odnosno NOT LIKE) omogucuje izbor vrednosti iz
date kolone (obavezno tipa CHAR(n)) na osnovu slicnosti (odnosno razlicitosti) sa
navedenim obrascem istog tipa.
Primer 3.10 (LIKE)
Naci sifre izdavaca iz drzava koje u imenu imaju bar jedno u, kao i te drzave.
SELECT I SIF, DRZAVA
FROM I
WHERE DRZAVA LIKE %u%
Rezultat:
I SIF DRZAVA
i1
Jugoslavija
i3
Jugoslavija
i4
Jugoslavija
Rezultat:
I SIF IZDANJE
i1
2
68
3.3.3
Upiti spajanja
Rezultat:
I SIF NAZIV
ST. DRZ.
P SIF IME
c
i1
Prosveta
30
Jugosl. p1
B.Copi
i1
Prosveta
30
Jugosl. p3
B.Simsic
i1
Prosveta
30
Jugosl. p4
D.Maksimovic
i2
Add.Wesley 20
Amer.
p5
C.J.Date
c
i3
D.novine
10
Jugosl. p1
B.Copi
sic
i3
D.novine
10
Jugosl. p3
B.Sim
i3
D.novine
10
Jugosl. p4
D.Maksimovic
c
i4
M.srpska
30
Jugosl. p1
B.Copi
i4
M.srpska
30
Jugosl. p3
B.Simsic
i4
M.srpska
30
Jugosl. p4
D.Maksimovic
(skracenja oznaka vrednosti su iz prostornih razloga)
BR N.
2
1
2
1
2
1
2
2
1
2
DRZ.
Jugosl.
Jugosl.
Jugosl.
Amer.
Jugosl.
Jugosl.
Jugosl.
Jugosl.
Jugosl.
Jugosl.
Primer 3.13 Naci sve parove sifara izdavaca/pisca iz iste drzave, pri cemu je status izdavaca veci od 20.
Rezultat:
I SIF P SIF
i1
p1
SELECT I.I SIF, P.P SIF
i1
p3
FROM I, P
i1
p4
WHERE I.DRZAVA = P.DRZAVA
i4
p1
AND I.STATUS > 20
i4
p3
i4
p4
69
PDRZAVA
Jugoslavija
Engleska
Amerika
70
i druge kopije i odabiraju oni parovi sa jednakom drzavom. Ove kopije potrebno
je razlicito imenovati (sto je omoguceno tzv. korelacionim imenom tabele u sintaksi
FROM linije), pri cemu se upit svodi na upit analogan prethodnom:5
Rezultat:
I SIF I SIF
i1
i1
i1
i3
i1
i4
i2
i2
i3
i1
i3
i3
i3
i4
i4
i1
i4
i3
i4
i4
Upotrebljeni oblik FROM linije identifikuje ime PRVI sa tabelom I, kao i ime
DRUGI sa istom tabelom. Nasuprot ovom koncepcijskom resenju, u realizaciji
ovakvog upita nije neophodno imati dve kopije iste tabele. Dovoljno je obezbediti
mehanizam za obracanje dvema vrstama tabele I istovremeno. Taj mehanizam su
dve n-torne promenljive (PRVI, DRUGI, u ovom slucaju), od kojih svaka, kao skup
mogucih vrednosti, ima skup vrsta tabele I, tj. u svakom trenutku izvrsavanja upita
ima kao svoju vrednost jednu vrstu te tabele (nezavisnu od vrednosti druge n-torne
promenljive).
Posto u prethodnom rezultatu ima suvisnih parova (npr. (i1, i1) kao i jedan od
parova (i1, i3), (i3, i1)), upit se moze dopuniti uslovom PRVI.I SIF < DRUGI.I SIF,
tj.
Rezultat:
SELECT PRVI.I SIF, DRUGI.I SIF
I SIF I SIF
FROM I PRVI, I DRUGI
i1
i3
WHERE PRVI.DRZAVA = DRUGI.DRZAVA AND
i1
i4
PRVI.I SIF < DRUGI.I SIF
i3
i4
Dopusteno je upotrebiti n-torne promenljive (korelaciono ime tabele) i u kontekstu u kome nisu neophodne. Njihova dosledna upotreba smatra se odrazom dobrog
stila. Stavi
se, kadgod n-torna promenljiva nije eksplicitno dodeljena tabeli, SQL
uvodi implicitnu n-tornu promenljivu sa istim imenom kao i ime tabele.
3.3.4
Podupiti
Cinjenica
da je rezultat izvrsavanja upitnog bloka nad tabelom opet tabela
omogucuje ugnjezdenje SELECT upitnih blokova.
5 Korelaciono ime tabele je nekvalifikovani identifikator; kolone u SELECT i WHERE linijama
kvalifikuju se korelacionim imenom tabele.
71
Podupit je SELECT upitni blok umetnut u logicki izraz WHERE linije drugog
SELECT upitnog bloka (ili iskaza azuriranja). Svojstvo ugnjezdenja SELECT upitnih blokova je osnovno svojstvo na kome je SQL utemeljen (Structured u nazivu
SQL ukazuje upravo na ovu vrstu struktuiranosti). Podupit se koristi za:
Rezultat:
NAZIV
Decje novine
Matica srpska
Iskaz se izvrsava prvo izvrsavanjem podupita koji vraca skup vrednosti sifara
izdavaca koji izdaju knjigu sa sifrom k6 (ovaj podupit izvrsava se samo jedanput pri
jednom izvrsavanju celog iskaza). Zatim se pretrazuje tabela I, i za svakog izdavaca
cija je sifra u izracunatom skupu izdaje se naziv tog izdavaca. U slucaju da izostane
eksplicitno kvalifikovanje imena (I SIF umesto I.I SIF i KI.I SIF), primenjuje se
implicitno kvalifikovanje imena (I.I SIF za kolonu I SIF ispred IN i KI.I SIF za
kolonu I SIF iza IN). Ovo je saglasno pravilu da se nekvalifikovano ime kolone
kvalifikuje imenom tabele (ili imenom n-torne promenljive) koja je navedena u
FROM liniji koja je najdirektnije deo istog upita ili podupita. Zato je prethodni
iskaz ekvivalentan sledecem iskazu (tj. ima identican rezultat kao i taj iskaz):
SELECT NAZIV
FROM
I
WHERE I SIF IN
(SELECT I SIF
FROM
KI
WHERE K SIF=k6)
Isti upit moze se formulisati i upotrebom operacije spajanja, bez podupita:
72
Rezultat:
NAZIV
Prosveta
73
3.3.5
Rezultat:
K SIF
k5
k6
k6
I SIF
i2
i3
i4
IZD.
4
1
3
GOD.
1986
1966
1988
TIRAZ
5000
3000
5000
Korelisani podupiti
Pored strukture upita u kojoj se podupit izvrsava samo jedanput pri jednom
izvrsavanju celog upita, moguca je struktura u kojoj podupit zavisi od tabele iz
FROM linije spoljasnjeg upita (tj. sadrzi n-tornu promenljivu koja odgovara ovoj
tabeli). Tada se podupit mora izvrsiti za svaku vrstu tabele iz spoljasnjeg upita,
da bi se utvrdilo da li se ta vrsta kvalifikuje za rezultat celog upita ili ne. Takav
podupit zove se korelisani podupit.
Primer 3.23 Isti upit kao u primeru 3.17 (naci nazive izdavaca koji izdaju knjigu
sa sifrom k6) moze se preformulisati tako da ukljuci korelisani podupit na sledeci
nacin:
74
U podupitu je neophodno eksplicitno kvalifikovati ime kolone I.I SIF da bi se razlikovalo od nekvalifikovanog imena kolone I SIF, koja ima implicitnu kvalifikaciju
KI.I SIF.
Ovaj iskaz se izvrsava na sledeci nacin: za svaku vrstu tabele I, i specificnu
vrednost Ix njene kolone I SIF (sifra izdavaca), izvrsava se podupit
(SELECT K SIF
FROM
KI
WHERE I SIF=Ix)
Ako pretrazeni skup sifara knjiga K SIF sadrzi sifru k6, posmatrana vrsta
3.3.6
Rezultat:
K SIF
k6
Egzistencijalni kvantifikator
75
Primer 3.25 Naci nazive izdavaca koji izdaju knjigu sa sifrom k3.
SELECT I.NAZIV
FROM
I
WHERE EXISTS
(SELECT *
FROM
KI
WHERE KI.I SIF=I.I SIF AND KI.K SIF=k3)
Ovaj iskaz nalazi nazive svih izdavaca za koje postoji vrsta u tabeli izdavastva
(KI) sa istom sifrom izdavaca i sifrom knjige k3. Na primer, prva vrsta tabele I ima
naziv izdavaca Prosveta i sifru izdavaca i1. U tabeli KI postoji vrsta sa sifrom
izdavaca i1 i sifrom knjige k3, pa je Prosveta jedan (i jedini) od naziva koji se
pojavljuju u rezultatu.
Egzistencijalni kvantifikator je mocan mehanizam SQL-a. Forma prethodnog
upita je samo preformulacija upita izrazenog bez egzistencijalnog kvantifikatora, jer
se svaki upit formulisan IN relacijskom operacijom moze formulisati i koriscenjem
EXISTS kvantifikatora. Da obratno ne vazi, sugerise sledeci primer.
ca.
Primer 3.26 Naci nazive izdavaca koji izdaju sve knjige Branka Copi
Ovaj upit je vec razmatran kao ilustracija operacije deljenja u relacionoj algebri
(odeljak 2.1). Pogledajmo sta on novo donosi kada je u pitanju SQL.
Prirodna formulacija upita ukljucila bi univerzalni kvantifikator za svaki
(FORALL), koji nije podrzan u SQL-u. Univerzalni kvantifikator se moze izraziti
negacijom egzistencijalnog kvantifikatora, tj.
(FORALL x)p(x) NOT (EXISTS x)(NOT(p(x))),
gde je x promenljiva, a p logicki izraz koji ukljucuje promenljivu x.
ca, postoji
Tako se izraz nazivi izdavaca takvih da, za svaku knjigu Branka Copi
76
ca moze
Sada se nalazenje naziva izdavaca koji su izdali sve knjige Branka Copi
izraziti sledecim SQL iskazom:
Rezultat:
SELECT I.NAZIV
FROM I
NAZIV
WHERE NOT EXISTS
Prosveta
(SELECT
FROM K BC
WHERE NOT EXISTS
(SELECT
FROM KI
WHERE KI.I SIF=I.I SIF AND KI.K SIF=K BC.K SIF))
Korisna sugestija je da se u izrazavanju komplikovanog upita, kakav je poslednji
od pseudo SQL iskaza koji ukljucuje FORALL kvantifikator, a zatim
primer, pode
izvrsi konverzija u pravi SQL upit koji ukljucuje NOT EXISTS kvantifikator umesto
univerzalnog kvantifikatora FORALL ([24]).
Druga korisna sugestija za formulaciju slozenih upita je da se, kadgod to odgo od implikacije, a da se ona zatim preformulise u logicki
vara prirodi upita, pode
izraz koji je korektan u SQL-u. Tako bi se prethodni primer prirodno formulisao
kao naci naziv izdavaca (npr. Ix) takvog da za svaku knjigu vazi implikacija: ako
c, onda je izdavac Ix izdao tu knjigu.
je autor knjige Branko Copi
Implikacija ako p onda q ekvivalentna je izrazu NOT (p) OR q, pa se
c ili je
implikacija iz naseg primera moze izraziti kao autor knjige nije Branko Copi
izdavac Ix izdao tu knjigu. Zajedno sa prethodnim razmatranjem kvantifikatora
FORALL, dobija se ekvivalencija izraza
FORALL x (IF p THEN q) NOT EXISTS x (NOT NOT p AND NOT q), tj.
FORALL x (IF p THEN q) NOT EXISTS x (p AND NOT q).
Zato ceo prethodni upit dobija formulaciju: Naci naziv izdavaca (npr. Ix)
c a koju nije
za kojeg vazi sledece: ne postoji knjiga ciji je autor Branko Copi
izdao izdavac Ix (ovo je upravo formulacija izrazena SQL-om). Opisani postupak
predstavlja sistematicni pristup obradi univerzalnog kvantifikatora i implikacije.
3.3.7
Agregatne funkcije
77
jni tip DIGITS, FLOAT, INTEGER, redom), preko opstih (npr. funkcija koja
vraca duzinu podatka u bajtovima LENGTH) i aritmetickih (ABS, TAN, SQRT,
TRUNC), do funkcija za obradu znakovnih podataka (npr. SUBSTR vraca podnisku niske, navedene duzine, od pozicije kao pocetka, ili POSSTR vraca poziciju
prvog pojavljivanja jedne niske u drugoj), kao i druge funkcije vezane za specificne
tipove odredenog
sistema (npr. TIME, YEAR, CHAR, DATE, DAY nad podacima tipa TIME, DATE, TIMESTAMP). Poziv skalarne funkcije moze se navesti
kao operand u izrazu odgovarajuceg tipa.
Primer 3.27 Izdati nazive izdavaca i nazive njihovih drzava prevedene na engleski
jezik.
Iskaz kojim se realizuje ovaj upit ilustrovace skalarnu funkciju SUBSTR i mogucnost SQL-a sistema DB2 u selektivnoj dodeli vrednosti skalarnom izrazu tabelerezultata.
Rezultat:
SELECT NAZIV,
NAZIV
DRZAVA ENG
CASE SUBSTR(DRZAVA,1,1)
WHEN J THEN Yugoslavia
Prosveta
Yugoslavia
WHEN A THEN USA
Addison Wesley USA
WHEN E THEN UK
Decje novine
Yugoslavia
END AS DRZAVA ENG
Matica Srpska
Yugoslavia
FROM I
Mada je SQL i bez agregatnih funkcija dovoljan za pretrazivanje svakog pojedinacnog podatka iz baze podataka (relaciono je kompletan), bez mehanizma
agregatnih funkcija on ne omogucuje izrazavanje prakticnih i cesto potrebnih upita
tipa Koliko ima izdavaca?
SQL podrzava agregatne funkcije COUNT, SUM, AVG, MAX i MIN6 , sa
sledecim znacenjem:
COUNT
SUM
AVG
MAX
MIN
78
Argument za funkcije SUM i AVG mora biti kolona brojevnih vrednosti. Argumentu moze da prethodi rezervisana rec DISTINCT, koja ukazuje na eliminaciju
duplikata u koloniargumentu pre primene funkcije, ili rezervisana rec ALL (sto se
i podrazumeva) kada se funkcija primenjuje na sve vrednosti u koloni, ukljucujuci
i duplikate.
Agregatna funkcija COUNT mora imati DISTINCT opciju ispred argumenta,
osim u svom specijalnom obliku COUNT() kojim se prebrojavaju vrste (a ne vrednosti kolone) koje zadovoljavaju zadati logicki uslov; ovaj oblik agregatne funkcije
Rezultat:
1
4
Rezultat:
1
2
Rezultat:
1
8000
79
Rezultat:
I SIF
i2
i3
3.3.8
Rezultat:
I SIF STATUS
i1
30
i2
20
i4
30
DRZAVA
Jugoslavija
Amerika
Jugoslavija
Operator grupisanja
koji preureduje
(logicki) tabelu iz FROM linije u particije ili grupe tako da unutar jedne grupe sve vrste imaju istu vrednost u koloni iz GROUP BY operatora.
vazi i da su sve vrste tabele sa istom vrednoscu kolone iz GROUP BY
Takode
operatora u jednoj grupi. Za potrebe grupisanja, sve NULL vrednosti u koloni iz
GROUP BY operatora tretiraju se kao jednake.
SELECT linija se sada primenjuje na svaku grupu, a ne na svaku vrstu tabele.
Primer 3.33 Za svaku izdatu knjigu, naci sifru knjige i ukupni tiraz u kome je
izdata.
SELECT K SIF, SUM(TIRAZ)
FROM KI
GROUP BY K SIF
Rezultat:
K SIF 2
k1
10000
k2
7000
k3
10000
k4
10000
k5
5000
k6
8000
80
Svaki izraz u SELECT liniji mora biti singlton (jednoclan skup) za svaku grupu,
tj. mora biti jedna od kolona iz GROUP BY operatora, konstanta ili agregatna
funkcija nad svim vrednostima neke kolone unutar te grupe. Precizirajmo sada
pravilo iz tacke 3.3.7: ukoliko se agregatna funkcija javlja u SELECT liniji upita u
kome se ne primenjuje GROUP BY operator na istom nivou ugnjezdenja, ta linija
ne sme da sadrzi ime kolone, konstantu ili izraz.
Ukoliko u SELECT upitnom bloku postoji WHERE linija, vrste koje ne zadovoljavaju logicki izraz iz WHERE linije eliminisu se pre bilo kakvog grupisanja.
Primer 3.34 Za svaku knjigu, naci sifru knjige i maksimalni tiraz izdanja te knjige,
iskljucujuci izdanja izdavaca sa sifrom i1.
SELECT K SIF, MAX(TIRAZ)
FROM KI
WHERE I SIF <> i1
GROUP BY K SIF
Rezultat:
K SIF 2
k5
5000
k6
5000
Rezultat:
K SIF
k6
81
SELECT K SIF
FROM K
WHERE 1 <
(SELECT COUNT (*)
FROM KI
WHERE K SIF=K.K SIF)
Zbog nedostataka ova dva operatora koji su izvan okvira ovog teksta, u literaturi
([24]) preporucuju se alternativne formulacije upita (koje ne koriste GROUP BY
HAVING konstrukcije).
3.3.9
Pored osnovnog oblika iskaza pretrazivanja SQL-a sa strukturom jednostavnog upitnog bloka koja ukljucuje sve dosad pomenute mogucnosti, iskaz pretrazivanja
moze imati i oblik punog upitnog bloka. Neformalno, puni upitni blok se dobija
primenom (0 ili vise) skupovnih operacija unije, preseka i/ili razlike na jednostavne
ili druge pune upitne blokove7 .
Mogucnost primene skupovnih operacija na upitne blokove posledica je cinjenice
da je rezultat izvrsavanja svakog upitnog bloka (izvedena) relacija tj. skup
skup vrsta. Operacije unije (UNION), preseka (INTERSECT) i razlike (EXCEPT)
u SQL-u se mogu primenjivati samo na unijski kompatibilne relacije (u smislu u
kome je unijska kompatibilnost uvedena u tacki 2.1.2). Ako su odgovajujuce kolone
Rezultat:
K SIF
k1
k3
k5
82
SELECT DRZAVA
FROM I
INTERSECT
SELECT DRZAVA
FROM P
Rezultat:
DRZAVA
Amerika
Jugoslavija
Ako se u ovom primeru operacija INTERSECT zada sa opcijom ALL (INTERSECT ALL), u rezultatu ce se dobiti i ponovljene vrednosti:
SELECT DRZAVA
FROM I
INTERSECT ALL
SELECT DRZAVA
FROM P
Rezultat:
DRZAVA
Amerika
Jugoslavija
Jugoslavija
Primer 3.38 Izdati nazive drzava u kojima su registrovani pisci ali ne i izdavaci.
SELECT DRZAVA
FROM P
EXCEPT
SELECT DRZAVA
FROM I
Rezultat:
DRZAVA
Engleska
Isti bi se rezultat dobio, u nasem primeru, i za operaciju EXCEPT ALL, zato sto
je u relacijama P i I jednak broj vrsta sa istim vrednostima atributa DRZAVA (po 1
3.3.10
Operator uredenja
i operator WITH
83
nostima izabranih kolona rezultujuce tabele (ORDER BY) i operator kojim se pretrazivanje punim upitnim blokom primenjuje nad imenovanom izvedenom tabelom
rezultatom izvrsavanja nekog punog upitnog bloka (WITH operator).
Uredenje
se moze zadati na isti nacin kao u CREATE INDEX iskazu. Osim
opadajuceg (DESC), moguc je i rastuci poredak (ASC) koji se i podrazumeva.
Kolone u ORDER BY liniji (moze ih biti vise) mogu se identifikovati i svojim rednim
brojevima (sleva nadesno u rezultujucoj tabeli) umesto imenima; ako je kolona
neimenovani skalarni izraz, ona se mora identifikovati svojim rednim brojem.
I SIF
i3
i2
i4
i1
i1
i1
i1
IZDANJE
1
4
3
2
2
1
2
4
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
Tiraz
u
u
u
u
u
u
u
hiljadama
hiljadama
hiljadama
hiljadama
hiljadama
hiljadama
hiljadama
=
=
=
=
=
=
=
5
3
5
5
7
10
10
10
84
da bi se dobilo uredenje
po vrednostima kolona rezultata pretrazivanja imenovane
izvedene tabele. U prethodnom primeru, na kraju SELECT iskaza mogao bi se
navesti operator ORDER BY NAZIV kako bi se dobili nazivi izdavaca knjiga Branka
ca uredeni
Copi
po abecednom redu.
3.3.11
85
Na
cin izvr
savanja SELECT iskaza
...
...
...
...
...
...
6. uredenjem
rezultata prethodnog koraka prema kolonama u ORDER BY liniji
dobiti konacni rezultat SELECT iskaza.
Ukoliko se u SELECT iskazu nalazi ugnjezden podupit, onda se sve (prisutne)
linije izvrsavaju navedenim redom u podupitu, pa zatim u spoljasnjem upitu.
Prethodni algoritam je samo konceptualan zato sto daje korektan rezultat, ali bi
njegovo striktno izvrsavanje bilo veoma neefikasno. Zbog toga se pristupa raznim
86
3.3.12
87
takva da je t = (a, c); primenom ekvivalencije (x)P (x) (x)P (x), interpretacija je ekvivalentna sledecoj: naci skup vrednosti a R[A], sa svojstvom da ne postoji vrednost c S za koju ne postoji n-torka t R takva
da je t = (a, c), sto se u SQL-u moze neposredno izraziti sledecim iskazom:
SELECT A
FROM R RX
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM R
WHERE R.B = S.C AND R.A = RX.A))
(slicno i za relaciju R sa n atributa, odnosno relaciju S sa m atributa).
Dakle, SQL je relaciono kompletan.
3.3.13
Uno
senje
Nove vrste se unose u tabelu iskazom INSERT cija sintaksa ima jedan od sledeca
dva oblika:
INSERT INTO ime-tabele [( ime-kolone {,ime-kolone})]
VALUES ( konstanta {,konstanta})
ili
INSERT INTO ime-tabele [( ime-kolone {,ime-kolone})]
puni upitni blok
Prvim oblikom INSERT iskaza u tabelu se upisuje pojedinacna vrsta sa navedenim konstantnim vrednostima u navedenim kolonama. Broj konstanti mora biti
jednak broju kolona, a pridruzivanje se vrsi u navedenom redosledu. U kolone koje
nisu navedene unose se NULL (odnosno podrazumevane) vrednosti ako kolona nije
definisana kao NOT NULL kolona; pod istim uslovom vrednost NULL moze se i
eksplicitno navesti kao konstanta.
Drugim oblikom INSERT iskaza u tabelu se upisuje jedna ili vise vrsta, koje
predstavljaju rezultat izvrsavanja punog upitnog bloka; pri tom i-ta kolona rezultata izvrsavanja punog upitnog bloka odgovara i-toj koloni u zapisu iskaza. Ako
je rezultat izvrsavanja punog upitnog bloka prazan, INSERT iskazom se ne dodaje
nijedna vrsta tabeli.
U oba slucaja, redosled u kome se kolone navode ne mora da odgovara redosledu
kolona u tabeli u koju se unosi. Ako se imena kolona ne navedu, vrednosti se
za
dodeljuju kolonama u redosledu definisanom tabelom. U oba slucaja, takode,
svaku vrstu koja se unosi mora biti obezbedena vrednost u svakoj NOT NULL
koloni koja nije podrzana DEFAULT opcijom.
88
KI KOPIJA:
K SIF I SIF
k1
i1
k2
i1
k3
i1
k4
i1
k5
i2
IZDANJE
2
2
1
2
4
GODINA
NULL
NULL
NULL
NULL
NULL
TIRAZ
10000
7000
10000
10000
5000
89
Tabeli se mogu dodati i vrste koje su rezultat operacije spajanja dve ili vise
tabela, kao sto pokazuje sledeci primer:
Primer 3.45 Kreirati tabelu IP DRZAVA sa kolonama I SIF, P SIF, DRZAVA i
uneti u tu tabelu sve parove sifara izdavaca i pisaca iz iste drzave, kao i odgovarajuce
drzave.
CREATE TABLE IP DRZAVA
(I SIF
CHAR(6) NOT NULL,
P SIF
CHAR(6) NOT NULL,
DRZAVA CHAR(20),
PRIMARY KEY (I SIF,P SIF));
INSERT INTO IP DRZAVA
SELECT I SIF, P SIF, I.DRZAVA
FROM
I, P
WHERE I.DRZAVA = P.DRZAVA
Za razliku od upita u primeru 3.12, navedeni par CREATE, INSERT iskaza
kreira trajnu (baznu) tabelu IP DRZAVA koja se moze pretraziti sledecim SELECT
iskazom:
SELECT *
FROM IP DRZAVA
Rezultat:
I SIF P SIF
i1
p1
i1
p3
i1
p4
i2
p5
i3
p1
i3
p3
i3
p4
i4
p1
i4
p3
i4
p4
DRZAVA
Jugoslavija
Jugoslavija
Jugoslavija
Amerika
Jugoslavija
Jugoslavija
Jugoslavija
Jugoslavija
Jugoslavija
Jugoslavija
90
3.3.14
A
zuriranje
91
3.3.15
Brisanje
92
Izvrsavanjem ovog iskaza iz tabele ime-tabele brisu se sve vrste te tabele koje
zadovoljavaju logicki izraz. Vrste se brisu u celosti (nije moguce izbrisati samo
neke vrednosti iz date vrste). Ako se WHERE linija ne navede, brisu se sve vrste
navedene tabele. Tabela moze biti i pogled, pri cemu se vrste brisu iz bazne tabele
nad kojom je pogled definisan.
Primer 3.50 Izbrisati iz tabele KI sva izdanja izdavaca i4.
DELETE FROM KI
WHERE I SIF=i4
Izvrsavanjem ovog iskaza iz tabele KI brise se jedna vrsta.
do greske, izvrsavanje iskaza se
Ako za vreme izvrsavanja DELETE iskaza dode
prekida. Sadrzaj tabele nece biti promenjen. Greska moze biti, na primer, rezultat
narusenog referencijalnog integriteta.
Ako tabela iz koje se brise ima primarni kljuc koji je strani kljuc drugih tabela,
DELETE iskaz se izvrsava prema navedenim pravilima brisanja u definiciji stranih
kljuceva zavisnih tabela. Operacija brisanja definisana DELETE iskazom ce biti
uspesna samo ako su pravila brisanja svih zavisnih tabela zadovoljena.
Pravila brisanja (DELETE RESTRICT, DELETE CASCADE, DELETE SET
NULL) opisana su u tacki 3.2.2. Na primer, ne moze se izbrisati knjiga iz tabele K
ako postoji izdanje te knjige u tabeli KI (jer je K SIF u tabeli KI strani kljuc sa
pravilom brisanja DELETE RESTRICT, a kolona K SIF je primarni kljuc u tabeli
K). S druge strane, moguce je obrisati izdavaca i3 iz tabele izdavaca I iskazom
DELETE FROM I
WHERE I SIF=i3
Izvrsavanjem ovog iskaza brisu se i sve vrste u tabeli KI koje se odnose na izdavaca
i3, jer strani kljuc I SIF u tabeli KI ima pravilo brisanja DELETE CASCADE.
Ovde se prenosenje brisanja zavrsava jer nema tabela koje, preko svog stranog
kljuca, zavise od tabele KI. Ako bi postojala tabela zavisna od tabele KI, tj. od
njene kolone I SIF, i na nju bi se primenilo pravilo brisanja definisano za njen strani
do zavisne tabele
kljuc. Prenosenje brisanja moze se zavrsiti i u slucaju da se dode
ciji strani kljuc ima pravilo brisanja DELETE SET NULL.
U logickom izrazu WHERE linije (kao i u slucaju UPDATE iskaza) moze se
naci i predikat koji ukljucuje (ugnjezdeni) puni upitni SELECT blok.
Korelisani podupit u a
zuriranju u brisanju.
U WHERE liniji DELETE
(UPDATE) iskaza moze se primeniti i korelisani podupit koji se izvrsava po jedan
put za svaku vrstu tabele iz DELETE (UPDATE) iskaza, da bi se odredilo da li se
ta vrsta brise (azurira) ili ne.
Primer 3.51 Izbrisati izdavace koji izdaju knjigu sa sifrom k3.
93
DELETE FROM I
WHERE k3 IN
(SELECT KI.K SIF
FROM
KI
WHERE KI.I SIF = I.I SIF)
3.4
Aplikativni SQL
Vecina SQL proizvoda podrzava dva vida izvrsavanja SQL iskaza: interaktivni
izvrsavanje samostalnih SQL iskaza preko on-line terminala, i aplikativni izvrsavanje SQL iskaza umetnutih u program na visem programskom jeziku, pri cemu se
SQL iskazi mogu izvrsavati naizmenicno sa iskazima programskog jezika. Program
na aplikativnom SQL-u prolazi kroz prekompiliranje kao prvu fazu svoje obrade.
Aplikativni SQL, dalje, moze da ukljuci dve vrste SQL iskaza:
staticke SQL iskaze koji vec u fazi pisanja programa imaju precizan oblik i
medusistema
(prema SUBP), nezavisno od SUBP kome ce medusistem
proslediti
korisnicki zahtev. Pri tome, nemoguce je koristiti specificnosti pojedinog sistema (u
ovom slucaju DB2), a svi upiti upuceni sistemu DB2 preko ODBC-a izvrsavaju se
dinamicki. S druge strane, direktni pozivi DB2 funkcija (CLI-sistem) su specificni
za DB2 sistem i koriste sve njegove mogucnosti (kao i aplikativni SQL), mada su
maksimalno usaglaseni sa ODBC pristupom (v. ??). Za razliku od programa na aplikativnom SQL-a koji mora da se prekompilira, kompilira, poveze sa bazom i najzad
izvrsi, DB2 CLI aplikacija ne mora ni da se prekompilira ni da se povezuje sa bazom;
ona koristi standardni skup funkcija za izvrsenje SQL iskaza u vreme izvrsenja programa. Na taj nacin DB2 CLI aplikacija postaje prenosivija u odnosu na aplikaciju u aplikativnom SQL-u (bar kada su razne DB2 platforme u pitanju), ali je
osnovna prednost aplikativnog SQL-a u tome sto moze da koristi staticki SQL i sto
je u znacajnoj meri standardizovan pa se moze koristiti (u manjoj ili vecoj meri) i
razlicitim SUBP-platformama.
medu
U slucaju da aplikacija zahteva prednosti oba mehanizma (DB2 CLI i aplikativnog SQL-a), moguce je koristiti staticki SQL unutar DB2 CLI aplikacije kreiranjem zapamcenih procedura napisanih na statickom SQL-u. Zapamcena procedura
94
se poziva iz DB2 CLI aplikacije i izvrsava se na serveru. Jednom napisanu zapamcenu proceduru moze da pozove bilo koja DB2 CLI ili ODBC aplikacija. Naime,
aplikacija moze biti projektovana tako da se izvrsava u dva dela jedan na klijentu
a drugi na serveru. Zapamcena procedura je deo koji se izvrsava na serveru, a
moze biti napisana i koriscenjem DB2 CLI funkcija. Zapamcene procedure imaju
niz prednosti, od smanjenja mreznog saobracaja pri prenosu podataka do koncepta
ucaurenja (v. A) koji povecava bezbednost podataka. O konceptu i implementaciji
direktnih poziva DB2 funkcija, ODBC standarda i zapamcenih procedura u sistemu
DB2 moze se vise detalja naci u prirucniku [?].
SQL kakav je opisan u prethodnim odeljcima odnosi se na interaktivni vid
izvrsavanja tzv. interaktivni SQL. U ovom i sledecem odeljku bice opisan aplikativni SQL i to staticki i dinamicki SQL, redom.
Potreba za umetanjem SQL-a u visi programski jezik javlja se zbog odsustva
kontrolnih struktura u upitnom jeziku, cesto neophodnih pri obradi podataka iz
baze podataka. Umetanjem (tzv. ugnjezdenjem) SQL-a u visi programski jezik
(tzv. maticni jezik engl. host language), kao sto su C, FORTRAN, COBOL,
PL/I, Pascal, Ada ili Assembler, dobija se aplikativni SQL, na kome se mogu pisati
kompleksni programi (aplikacije) za najraznovrsnije obrade. Osnovni princip svih
aplikativnih SQL jezika je princip dualnosti, prema kome se svaki interaktivni SQL
iskaz moze izraziti i u aplikativnom SQL-u, ali obratno ne vazi (sto i opravdava
95
obra
canje je oblika :V1 INDICATOR :V2.
96
akcija
97
navodenja
sledeceg WHENEVER iskaza.
Na primer, iskaz oblika
EXEC SQL WHENEVER SQLERROR CONTINUE
98
99
100
dok ima vrsta u rezultujucoj tabeli. Po izlasku iz petlje kursor se zatvara (CLOSE
X).
Ako je kursor X u jednom trenutku pozicioniran na neku vrstu (tekuca vrsta
kursora X, u oznaci CURRENT OF X), ta vrsta moze se azurirati ili izbrisati,
iskazima UPDATE ili DELETE CURRENT OF X. Sintaksa tih iskaza ilustrovana
je sledecim primerom:
EXEC SQL UPDATE I
SET STATUS = STATUS + :POVECANJE
WHERE CURRENT OF X
Jedan program moze imati veci broj deklaracija (razlicitih) tabela i kursora. Na
primer, povecanje statusa (za 10%) svim izdavacima koji su izdali knjigu sa sifrom
koja se nalazi u programskoj promenljivoj knjiga, moze se izraziti programskom
strukturom sledeceg oblika:
#include <stdio.h>
#include <stdlib.h>
101
102
u slucaju klijent/server RSUBP (v. 18). Pre pripreme i izvrsenja ovog programa
neophodno je da je takva baza kreirana.
Znacenje iskaza COMMIT je da se, u slucaju uspesnog izvrsenja jednog ili vise
SQL iskaza, promene koje ti iskazi prouzrokuju i koje su privremenog karaktera,
trajno upisu u bazu. Znacenje iskaza ROLLBACK je da se, u slucaju greske
u nekom koraku izvrsavanja jednog ili vise SQL iskaza, sve privremene promene
poniste. Greska u izvrsenju moze da nastane, na primer, zbog uslova prekoracenja.
Program moze zatim normalno da zavrsi sa radom, kao u prethodnom primeru
(exit(0)) u kome moduo greska obavlja i funkciju ROLLBACK-a, ili moze da
nastavi sa izvrsenjem sledece grupe svojih iskaza sledece transakcije (v. deo ??
Upravljanje transakcijama). Izvrsavanjem COMMIT odnosno ROLLBACK iskaza
zatvaraju se i svi otvoreni kursori.
3.5
103
Dinami
cki SQL
Kao sto je naglaseno u prethodnom odeljku, svaki ugnjezdeni staticki SQL iskaz u
u smislu da je poznat njegov tip (npr.
fazi prekompilacije sasvim je precizno odreden
SELECT, UPDATE, INSERT), i da su poznata imena tabela i kolona koje u njemu
ucestvuju; SQL iskaz se zamenjuje pozivom (u maticnom jeziku) odgovarajuce CLI
procedure, ali se izvrsavanjem programa taj poziv (pa dakle i sam SQL iskaz) ne
menja.
Za razliku od ovog, statickog SQL-a, u dinamickom SQL-u iskazi nisu poznati
u vreme pisanja aplikativnog programa i preciziraju se tek u fazi izvrsavanja programa. Takvi SQL iskazi, umesto da se eksplicitno navode u programu, zadaju
se u obliku niske znakova koja se dodeljuje maticnoj promenljivoj. SQL iskaz
se tada izgraduje
na osnovu podataka programa (npr. vrednost odgovarajuce
maticne promenljive moze da se dobije preko terminala). Kako vrednost maticne
promenljive moze da se menja u toku izvrsavanja programa, to i SQL iskaz dodeljen
moze da se menja u toku izvrsavanja programa.
toj maticnoj promenljivoj takode
Da bi dinamicki SQL iskaz mogao da se izvrsi, potrebno je pripremiti ga za
izvrsenje ugnjezdenim (statickim) iskazom PREPARE. Zatim se dinamicki iskaz
moze izvrsiti ugnjezdenim (statickim) iskazom EXECUTE.
Primer 3.52 Neka je V1 maticna promenljiva tipa niske znakova, koja je u programu dobila vrednost nisku znakova nekog izvrsnog SQL iskaza. Tada iskaz
EXEC SQL PREPARE
S1 FROM :V1
kreira izvrsni SQL iskaz cije je ime S1, od niske znakova kojom je iskaz zadat u
maticnoj promenljivoj V1. Posle provere uspesnosti izvrsenja PREPARE iskaza
moze se veci broj puta izvrsiti EXECUTE iskaz oblika
EXEC SQL EXECUTE S1
Dinamicki se mogu pripremiti i izvrsiti samo izvrsni SQL iskazi, i to najveci deo
njih (ne svi). Neki od tih iskaza su: ALTER, COMMIT, CREATE, DELETE,
DROP, INSERT, ROLLBACK, SELECT, SET, UPDATE. Potpuna lista ovih
iskaza moze se naci u [37].
Moguce je koristiti i ugnjezdeni (staticki) iskaz EXECUTE IMMEDIATE da bi
se u jednom koraku pripremio i izvrsio dinamicki SQL iskaz (primenjuje se obicno
kada je dinamicki SQL iskaz potrebno izvrsiti samo jedanput).
Primer 3.53 Ako vrednost maticne promenljive V1 jeste niska znakova DELETE
FROM KI WHERE K SIF = k1 , onda iskaz
EXEC SQL EXECUTE IMMEDIATE :V1
104
izvrsava DELETE iskaz nad tabelom KI, pri cemu se brisu sva izdanja knjige sa
sifrom k1.
Dinamicki SQL iskaz ne sme da sadrzi obracanja maticnim promenljivim.
Umesto toga mogu se koristiti oznake parametara. Oznaka parametra je znak
pitanja (?) i navodi se na mestu na kome bi se navela maticna promenljiva kada bi
iskaz bio staticki. U vreme izvrsavanja pripremljenog SQL iskaza, oznake parametara se zamenjuju tekucim vrednostima maticnih promenljivih (ili strukture) koje
se navode u EXECUTE iskazu.
Primer 3.54 Ako je vrednost maticne promenljive V1 niska znakova INSERT
INTO K VALUES (?, ?, ?), posle izvrsenja iskaza
EXEC SQL PREPARE K INSERT FROM :V1
moze se izvrsiti iskaz
EXEC SQL EXECUTE K INSERT USING :KSIFRA, :KNASLOV, :KOBLAST
KSIFRA, KNASLOV i KOBLAST su maticne promenljive (tipa CHAR(5),
CHAR(50), CHAR(20), redom) koje odgovaraju shemi tabele K, tj. atributima
K SIF, NASLOV, OBLAST, redom.
Kada se, koriscenjem EXECUTE ili EXECUTE IMMEDIATE iskaza, izvrsi neki
dinamicki SQL iskaz, uspesnost izvrsenja tog dinamickog SQL iskaza registruje se
u promenljivoj SQLCODE prostora SQLCA, i moze se ispitivati na isti nacin kao
i u statickom SQL-u.
izvrsnim SQL iskazima koji ne mogu da se izvrsavaju dinamicki nalaze
Medu
se, na primer, i sledeci iskazi:
CLOSE
DECLARE
EXECUTE
EXECUTE IMMEDIATE
FETCH
OPEN
PREPARE
WHENEVER
105
5. zatvaranje kursora.
Primer 3.55 Neka program pretrazuje sifre knjiga i sifre izdavaca iz tabele KI,
dinamickim izvrsavanjem SELECT iskaza oblika
SELECT K SIF, I SIF
FROM
KI
WHERE ...
Iskaz se cita sa terminala, pri cemu korisnik zadaje WHERE liniju. Neka je iskaz dodeljen maticnoj promenljivoj tipa niske znakova, KI NISKA. Izvrsenje dinamickog
iskaza realizovace se izvrsenjem sledecih statickih iskaza:
EXEC SQL PREPARE ISKAZ FROM :KI NISKA;
...
EXEC SQL DECLARE C1 CURSOR FOR ISKAZ;
...
EXEC SQL OPEN C1;
WHILE ...
{
...
EXEC SQL FETCH C1 INTO :K BR, :I BR;
...
}
...
EXEC SQL CLOSE C1;
Dinamicki SQL nudi potpunu fleksibilnost programiranja. U kompleksnom programu koji treba da izvrsava razlicite tipove i strukture SQL iskaza, tesko je (ili
cak nemoguce) modelirati sve te iskaze. Tada je pogodno koristiti dinamicki SQL.
Takav program je svaki program za interaktivno izvrsavanje SQL iskaza koji moze
da prihvati i izvrsi gotovo svaki SQL iskaz. Cena ove fleksibilnosti je dodatna
slozenost programiranja, kao i smanjena brzina izvrsavanja programa. Posebno je
slozeno dinamicko izvrsavanje SQL SELECT iskaza koji ima promenljivu SELECT
listu ([38]).
3.6
106
odredenom
objektu baze podataka korisniku se moze dodeliti eksplicitno ili implicitno. Za eksplicitnu dodelu koristi se SQL iskaz GRANT cija je sintaksa oblika
GRANT lista-prava ON objekat TO lista-korisnika
Na primer, jedno pravo nad bazom podataka je CONNECT (pristup bazi),
nad tabelom i indeksom ALTER (promena), DELETE (pravo brisanja slogova),
SELECT (pravo postavljanja upita).
Da bi se korisniku kome se dodeljuje pravo nad jednim objektom omogucilo da to
pravo prenese na treceg korisnika (prenosivo pravo), ono se mora dodeliti GRANT
iskazom sa opcijom WITH GRANT OPTION. Na primer, korisniku STUDENT
mogu se dodeliti prava citanja i unosa u tabelu tabela, sa pravom da ta prava
prenese, iskazom
GRANT SELECT, INSERT ON tabela TO USER STUDENT
WITH GRANT OPTION
Implicitno se dodela prava grupi korisnika vrsi dodelom nivoa autorizacije (npr.
korisnik sa najvisim nivoom autorizacije ima sva prava nad svim objektima baza),
izvrsavanjem nekih operacija (npr. operacija kreiranja baze podataka obezbeduje svim korisnicima prava povezivanja na tu bazu i kreiranja tabela u njoj), ili
izvodenjem
iz opstijeg prava (na primer, pravo azuriranja objekta implicira pravo
citanja vrednosti objekta).
Prethodno dodeljeno (implicitno ili eksplicitno) pravo nad pojedinim tipovima
objekata u bazi podataka moze se oduzeti korisniku SQL iskazom REVOKE oblika
REVOKE lista-prava ON objekat FROM lista-korisnika.
Na primer,
REVOKE SELECT, INSERT
107
108
SYSADM
(administrator
sistema)
DBADM
(administrator)
baze podataka)
SYSCTRL
(administrator
sistemskih resursa)
SYSMAINT
(administrator
odrzavanja sistema)
3.7
Pitanja i zadaci
109
operator grupisanja
interaktivni SQL
SELECT iskaz
aplikativni SQL
podupit
staticki SQL
korelisani podupit
dinamicki SQL
agregatna funkcija
kursor
110
oznaka parametra
dinamicki SQL
autorizacija
PREPARE iskaz
nivo autorizacije
EXECUTE iskaz
prenosivo pravo
Pogledi
U ovoj glavi bice predstavljene virtuelne relacije (tabele) pogledi, u obliku u
kome je njihovo definisanje i manipulisanje njima podrzano u SQL standardima i
aktuelnim implementacijama SQL-a. Jedan novi pristup pogledima, koji razresava
mnoge nelogicnosti u njihovom tretmanu u SQL-u, bice prikazan u poslednjem
odeljku ove glave ([27]).
4.1
4.1.1
Definisanje pogleda
Kreiranje pogleda
112
4 Pogledi
nad kojim je pogled IJUG definisan, tj. pod uslovom da se izmene odnose na sifru,
status ili drzavu jugoslovenskog izdavaca. Svaki upit pretrazivanja ili azuriranja
nad pogledom IJUG sistem konvertuje u ekvivalentni upit nad baznom tabelom I.
Na primer, iskaz
SELECT *
FROM
IJUG
WHERE STATUS > 20
SQL kompilator konvertuje u ekvivalentni iskaz nad tabelom I:
SELECT I SIF, STATUS, DRZAVA
FROM
I
WHERE STATUS > 20 AND DRZAVA = Jugoslavija
Konverzija se vrsi zdruzivanjem SELECT iskaza koji zadaje korisnik i SELECT
iskaza zapamcenog u katalogu pri definisanju pogleda. Iz kataloga se zakljucuje
da FROM IJUG zapravo znaci FROM I, da se svaki izbor iz IJUG mora dodatno
kvalifikovati poredenjem
DRZAVA = Jugoslavija u logickom izrazu WHERE linije,
a da SELECT znaci SELECT I SIF, STATUS, DRZAVA.
Slicno bi se izvrsio i iskaz unosenja, brisanja ili azuriranja nad tabelom pogledom IJUG.
Podupit u CREATE VIEW iskazu je puni upitni blok (v. 3.3.9) a ne SELECT
113
UPDATE IJUG
SET
DRZAVA = Srbija
WHERE I SIF=i1
izbacila bi iz pogleda azuriranu vrstu, a operacija
INSERT INTO IJUG(I SIF, STATUS, DRZAVA)
VALUES (i8, 10, Amerika)
unela bi, kroz pogled, vrstu u baznu tabelu I. Uneta vrsta ne bi ni bila
ukljucena u pogled IJUG.
Poslednje dve operacije ne bi mogle da se izvrse nad pogledom cija definicija ukljucuje CHECK opciju (npr. ako definicija pogleda IJUG ukljucuje WITH
CHECK OPTION). CHECK opcija se moze zadati samo ako je pogled takav da
se moze azurirati (v. 4.3). Ako je UPDATE operacija dozvoljena samo na nekim
kolonama, onda se i CHECK opcija primenjuje samo na te kolone.
Sistem DB2 podrzava i precizniji ali i opstiji oblik definisanja pogleda. Tako,
CHECK opcija moze da ima dva pojavljivanja: LOCAL i CASCADED (podrazumevano).
Ako je pogled V definisan sa opcijom WITH CASCADED CHECK OPTION,
onda on nasleduje
uslove kojima je definisan svaki pogled od koga zavisi (koji se
pojavljuje, neposredno ili posredno, u FROM liniji pogleda V). Osim toga, i pogledi
V2 V2
V2,V1
V3 V2
V2,V1
V4 V2, V4
V4,V3, V2,V1
V5 V2, V4
V4,V3, V2,V1
114
4 Pogledi
Dalje, kao sto SELECT iskaz moze da realizuje pretrazivanje punim upitnim
blokom nad imenovanom izvedenom tabelom rezultatom izvrsavanja nekog upitnog bloka (WITH operatorom), slicnu mogucnost ima i definicija pogleda: podupit
kojim se pogled definise moze se primeniti na izvedenu imenovanu tabelu. Tada je
sintaksa iskaza za definisanje pogleda oblika
CREATE VIEW pogled [( kolona{,kolona})]
AS WITH izvedena tabela podupit
[WITH CHECK OPTION]
Na primer, pogled kojim se iz tabele I izdvajaju jugoslovenski izdavaci ciji je
status>20,moze se definisati i sledecim iskazom:
CREATE VIEW ijugw
AS WITH ijug1 AS (SELECT I_SIF, STATUS, DRZAVA
FROM I
WHERE DRZAVA = Jugoslavija)
SELECT *
FROM ijug1
WHERE STATUS>20
WITH CHECK OPTION
4.1.2
U iskazu kojim se kreira pogled IJUG nisu eksplicitno imenovane kolone tog
115
Primer 4.2 Kreirati pogled koji prikazuje parove drzava takvih da izdavac iz prve
drzave izdaje knjigu pisca iz druge drzave (primer ujedno ilustruje i pogled definisan
nad vecim brojem baznih tabela).
CREATE VIEW PARDRZAVA (IDRZAVA, PDRZAVA)
AS SELECT DISTINCT I.DRZAVA, P.DRZAVA
FROM I, KI, KP, P
WHERE I.I SIF=KI.I SIF AND KI.K SIF=KP.K SIF AND KP.P SIF=P.P SIF
4.1.3
4.1.4
Uklanjanje pogleda
4.2
Pretra
zivanje pogleda
116
4 Pogledi
kada se, na primer, kolona pogleda koja je izvedena primenom agregatne funkcije
pretrazuje kao konvencionalna kolona.
Primer 4.3 Neka se nad prethodno definisanim pogledom KNJIGATIR (primer
4.1) izvrsi SELECT iskaz pretrazivanja
SELECT *
FROM
KNJIGATIR
WHERE UK TIRAZ > 7000
Primenom mehanizma konverzije dobio bi se SELECT iskaz koji ima sledecu nekorektnu formu u SQL-u:
SELECT K SIF, SUM(TIRAZ)
FROM
KI
WHERE SUM(TIRAZ) > 7000
GROUP BY K SIF
Ta forma je nekorektna jer se u WHERE liniji ne sme naci agregatna funkcija
(SUM). Odgovarajuci korektni iskaz imao bi oblik
SELECT K SIF, SUM(TIRAZ)
FROM
KI
GROUP BY K SIF
HAVING SUM(TIRAZ) > 7000
ali neki SQL kompilatori ne umeju da naprave takvu konverziju.
U sistemu DB2 moguce je pretrazivati sve poglede na isti nacin kao i bazne
tabele.
4.3
A
zuriranje, uno
senje i brisanje nad pogledima
117
pogleda, a ne iz neprilagodenosti
jezika ili sistema da to azuriranje realizuju. Na
primer, u pogledu PARDRZAVA nije jasno sta bi uopste znacilo izbrisati vrstu
(Jugoslavija, Jugoslavija) koja pripada tom pogledu, tj. ne postoji izmena baznih
tabela I, P koja ima tacno efekat brisanja para (Jugoslavija, Jugoslavija) i niceg
drugog. Slicno vazi i za azuriranje u uzem smislu i unosenje u ovaj pogled.
Upitni jezik SQL omogucuje azuriranje nekog podskupa skupa pogleda koji se
teorijski mogu azurirati. Taj podskup se opisuje na sledeci nacin.
Pogled koji se definise nad jednom baznom tabelom, eliminacijom nekih vrsta
i nekih kolona te tabele, naziva se pogledom koji je podskup vrsta i kolona. SQL
omogucuje azuriranje samo pogleda koji su podskupovi vrsta i kolona. Ranije
kreirani pogled IJUG upravo je takvog tipa pa je njegovo azuriranje u SQL-u
moguce. Medutim,
SQL namece i specificna ogranicenja da bi ovakvi pogledi mogli
da se azuriraju:
(a) Ako je kolona pogleda izvedena od izraza u kome se primenjuje skalarna
operacija, skalarna funkcija ili konstanta, onda INSERT operacije nad pogledom nisu dozvoljene, UPDATE operacije su dozvoljene samo na preostalim
kolonama, a operacije brisanja su dozvoljene. Na primer, nad pogledom
CREATE VIEW T U HILJ (K SIF, I SIF, IZDANJE, H TIRAZ)
AS
SELECT K SIF, I SIF, IZDANJE, TIRAZ/1000
FROM
KI
INSERT operacija nije dozvoljena, UPDATE operacija nije dozvoljena na
koloni H TIRAZ (kompilator ne poseduje znanje o tome kako bi se ta operacija odrazila na baznu kolonu TIRAZ), a DELETE operacija je dopustena
i izvrsava se brisanjem odgovarajuce vrste iz bazne tabele.
(b) Ako je kolona pogleda izvedena od agregatne funkcije, onda taj pogled ne
moze da se azurira; na primer, nad pogledom
CREATE VIEW UT (UK TIRAZ)
AS
SELECT SUM(TIRAZ)
FROM
KI
ocigledno nema smisla ni jedna od operacija INSERT, UPDATE, DELETE.
(c) Ako definicija pogleda ukljucuje GROUP BY ili HAVING operatore, pogled se
ne moze azurirati. Na primer, na pogled KNJIGATIR (primer 4.1) ne moze se
primeniti INSERT operacija, niti UPDATE operacija na koloni UK TIRAZ.
DELETE operacije i UPDATE operacija na koloni K SIF teorijski se mogu
izvrsiti tako da izbrisu ili izmene sve odgovarajuce vrste u baznoj tabeli KI,
ali SQL sistema DB2 ni te operacije ne dopusta.
118
4 Pogledi
119
4.4
Prednosti pogleda
120
4 Pogledi
pojednostavljena korisnicka predstava o bazi i manipulisanje njom; na primer,
pretrazivanje tabele PARDRZAVA je znatno jednostavnije od pretrazivanja
istih informacija iz pripadnih baznih tabela;
skrivanje podataka kao nacin kontrole ovlascenja; na primer, ne moze se prici
izdavacu i2 preko pogleda IJUG. Ako je skrivanje informacije o izdavacu i2
znacajno za neke grupe korisnika, najjednostavnije je to skrivanje ostvariti mehanizmom pogleda. Ubedljiv primer ovog aspekta pogleda je grupa
podatke o odredenom
licu.
4.5
U ovom odeljku bice izlozen jedan novi pristup pogledima ([27]), koji na formalan
i dosledan nacin tretira poglede kao imenovane izraze relacione algebre ili relacionog racuna. Iz ovog pristupa formalno logicki sledi niz svojstava pogleda koja se
odnose na mogucnost pretrazivanja i azuriranja pogleda, eliminisuci sasvim potrebu
za ad hoc pravilima u ovim domenima; takva pravila su inace karakteristicna za
sve standarde SQL-a, kao i za postojece implementacije (v. prethodne odeljke
ove glave). Ovaj pristup omogucuje i azuriranje znatno sire klase pogleda (npr.
pogleda definisanih nad vecim brojem tabela) nego sto je to slucaj sa prethodno
kako se relacioni izraz koji
izlozenim, klasicnim pristupom pogledima. Takode,
definise pogled zadaje relacionom algebrom ili relacionim racunom, pojmovi kao
sto su operatori grupisanja GROUP BY i HAVING ili opcija DISTINCT, karakteristicni za specificni (i u znatnoj meri manjkavi) upitni jezik SQL, ne ucestvuju vise
u razmatranju mogucnosti pretrazivanja i azuriranja pogleda.
Ovaj odeljak se odnosi na poglede kao koncept koji, u obliku u kome se izlaze,
nema podrsku SQL-a. Stoga ce i primeri i pravila biti izrazeni u terminima relacione
algebre kao formalizma koji je u direktnoj vezi (za razliku od SQL-a) sa relacionim
modelom.
Iskaz kreiranja pogleda ukljucuje ime pogleda i relacioni izraz. Imena kolona
pogleda nasleduju
se od rezultata relacionog izraza, s tim sto u relacionom izrazu
moze da ucestvuje (vise puta) i operacija prosirene relacione algebre za preimenovanje atributa, RENAME. Na primer (analogon primeru 4.2),
CREATE VIEW PARDRZAVA
((I RENAME DRZAVA AS IDRZAVA) * KI * KP *
(P RENAME DRZAVA AS PDRZAVA) ) [IDRZAVA, PDRZAVA]
Pogledi se pretrazuju ili konverzijom upita nad pogledom u upit nad baznom
tabelom, cija je restrikcija pojacana uslovima koji definisu sam pogled, ili materijalizacijom pogleda (kao privremene bazne tabele) i izvrsavanjem upita nad materijalizovanim pogledom.
Mehanizam azuriranja pogleda mora da zadovolji sledece osnovne principe.
121
4.5.1
122
4 Pogledi
4.5.2
Restrikcija
odreduje
restrikciju. Unosenje (brisanje, azuriranje) se izvrsava kao unosenje u
rezultat relacionog izraza R (brisanje iz R, azuriranje u R). Na primer, u pogled
definisan relacionim izrazom
I[DRZAVA = Jugoslavija],
moze se uneti cetvorka (i5, Mladost, 10, Jugoslavija), jer zadovoljava i strukturu
4.5.3
Projekcija
123
Ovaj relacioni izraz ukljucuje projekciju relacije, koja je rezultat prirodnog spajanja cetiri relacije, na atribute IDRZAVA, PDRZAVA. Ovi atributi ne ukljucuju
primarni kljuc relacije koja se projektuje, pa u pogled definisan ovom projekcijom,
prema prethodnom, nije dopusteno unosenje.
4.5.4
Prirodno spajanje
Novi pristup pogledima koji se u ovom odeljku izlaze ima za rezultat mogucnost
azuriranja svih pogleda koji su definisani operacijom prirodnog spajanja. Azuriranje
takvih pogleda moze da ima izvesne bocne efekte, ali ti bocni efekti obezbeduju
integritet azuriranog pogleda, tj. relacija nad kojima je pogled definisan.
Pretpostavimo, na primer, da tabela KI nema strani kljuc I SIF, i da je u tabeli
KI prisutna petorka (i5, k5, 1, 1990, 10000) koja se odnosi na izdavaca sa sifrom
i5 o kome ne postoji informacija u tabeli I. Neka je pogled definisan relacionim
izrazom
I KI
i neka se u pogled unosi osmorka (i5, Mladost, 20, Jugoslavija, k6, 2, 1995, 5000).
Ovo unosenje se realizuje kao unosenje cetvorke (i5, Mladost, 20, Jugoslavija) u
4.6
Pitanja i zadaci
je pogled?
1. Sta
2. Objasniti iskaz za definisanje pogleda u SQL-u.
3. Kako se izvrsava iskaz pretrazivanja pogleda u SQL-u?
4. Kada je neophodno eksplicitno imenovati kolone pogleda?
5. Koji se pogledi mogu azurirati u SQL-u?
6. Koje su prednosti pogleda?
124
4 Pogledi
SELECT *
FROM
V TIRAZ
WHERE K SIF > k3
UPDATE V TIRAZ
SET
TIRAZ = TIRAZ * 1.1
WHERE GODINA > 1990
Standardi SQL-a
Cilj standardizovanja jezika baza podataka je da obezbedi prenosivost definicija
baza podataka i aplikativnih programa medju implementacijama koje su saglasne sa
standardom. Za razmenu definicija baza podataka i pogleda specificnih za aplikaciju
moze se koristiti jezik za definisanje podataka. Jezik za manipulisanje bazama
podataka obezbedjuje operacije nad podacima koje omogucuju razmenu kompletnih
aplikacionih programa.
Od 1986. godine, kada je prvi put standardizovan (ANSI American National
Standard Institute, americki standard i ISO International Standard Organization,
medunarodni
standard), jezik baza podataka SQL je u neprestanom razvoju od
strane veceg broja organizacija za standardizaciju (ANSI, ISO, FIPS Federal Information Processing Standards for the US federal government, IEC International
Electrotechnical Commision, itd). Najnovija puna verzija standarda publikovana je
1992. godine, ANSI X3.135-1992 i ISO/IEC 9075:1992. Puni naziv ovog standarda
je Medunarodni
standardni jezik baza podataka (1992) (International Standard
Database Language SQL (1992) [?]), mada se srece i pod nazivom SQL2, SQL-92.
SQL2 znacajno prosiruje standarde iz 1986. i 1989. godine, ukljucenjem jezika
za manipulisanje shemom, tabela za informacije o shemama, novih olaksica za
dinamicko kreiranje SQL iskaza, novih tipova podataka i domena. Ostale novine
SQL2 standarda ukljucuju spoljasnje spajanje, kaskadno azuriranje i brisanje kod
referencijalnog integriteta, skupovnu algebru nad tabelama, nivoe konzistentnosti
transakcija, skrolovane kursore, odlozenu proveru uslova ogranicenja, i znacajno
prosirenje dijagnostike, tj. izvestavanje o izuzecima i greskama. SQL2 eliminise
veliki broj ogranicenja kako bi jezik postao sto fleksibilniji i neprotivurecniji ([?],
[?]). Detaljniji opis resenja ovog standarda izlozen je u sledecoj tacki.
Dalja prosirenja i poboljsanja SQL standarda su u razvoju, i odnose se na
promociju SQL-a u izracunljivo kompletan jezik za definisanje i upravljanje perzistentnim, kompleksnim objektima. Za 1995. godinu planirano je bilo objavljivanje
novog standarda SQL-a, SQL3, kompatibilnog sa SQL2, ali obogacenog objektnim aspektom podataka (o objektnom modelu podataka bice reci u Dodatku).
125
126
5 Standardi SQL-a
visestrukim nasledivanjem,
objekte kao njihove instance, metode, polimorfizam i
ucaurenje (enkapsulaciju). SQL3 je izracunljivo kompletan jezik (ima kontrolne
strukture i ne zahteva ugnjezdenja u programske jezike opste namene).
Razna svojstva ukljucena u predlog SQL3 standarda su u razlicitim fazama
razvoja, i imaju razlicite statuse. Godine 1993, ANSI i ISO komiteti za razvoj
odlucili su da razloze buduci razvoj SQL-a u visedelni standard. Ti delovi su:
I Opis strukture dokumenta.
II Jezgro specifikacije, ukljucujuci ATP i svojstva objektnog SQL-a.
III SQL/CLI (Call Level Interface): verzija zasnovana na elementima standarda
SQL2 bila je publikovana 1995. godine kao ISO/IEC 9075-3:1995. Dalji rad
na ovoj komponenti, koji treba da obezbedi podrsku novim svojstvima u
ostalim delovima SQL-a, u razvoju je.
IV SQL/PSM: specifikacija zapamcenih procedura (engl. Persistent Stored Modules). Ova komponenta ukljucuje sve aspekte izracunljive kompletnosti jezika
promenljive, iskaze dodele, grananja, iteracije, strukturu bloka, poziv
procedura i funkcija, obradu greske; posebno je znacajna za klijent/server
okruzenje. Jedna verzija ove komponente standardizovana je 1996. godine
(9075-4:1996).
V SQL/veznici: veznici za dinamicki SQL i ugnjezdeni SQL preuzeti su iz SQL2;
godine 1998. publikovan je standard veznika za objektne jezike (C++ i Java)
SQL/OLB, ANSI X3.135.101998.
VI SQL/XA: SQL specijalizacija popularnog XA interfejsa koji je razvio
globalnog upravljaca transakcijama i SQL upravljaca resurX/Open, izmedu
sima. Standardizuje pozive funkcija prema standardu distribuirane obrade
transakcija (Remote Database Access Part3:SQL, ISO/IEC 9579-3:1996,
Part2:SQL, ISO/IEC 9579-2:1998).
VII SQL za vremenske serije: SQL podprojekat za razvoj i poboljsanje mehanizama za upravljanje vremenskim serijama.
Godine 1993. odobren je novi ISO/IEC projekat za razvoj SQL biblioteke klasa
za multimedijalne aplikacije, tzv. SQL Multimedia (SQL/MM). Ideja je da se
specifikuju paketi definicije SQL apstraktnih tipova podataka (ATP) koriscenjem
svojstava SQL3, i da se stanardizuju posebne biblioteke klasa za nauku i tehniku,
obradu dokumenata i puno pretrazivanje tekstova, kao i metode za upravljanje
multimedijalnim objektima kao sto su slika, zvuk, animacija, muzika, video.
5.1
127
5.1.1
Definisanje podataka
Domen.
Novost u odnosu na prethodni standard SQL-a u pogledu definisanja
podataka jeste izvesna (prilicno slaba) podrska domenima, kao i podrska uslovima
integriteta domena.
Iskazi za kreiranje i uklanjanje domena su oblika
CREATE DOMAIN naziv-domena [AS] tip-podataka
[ podrazumevana-definicija ]
[ lista-definicija-ogranicenja-domena ]
128
5 Standardi SQL-a
DROP DOMAIN naziv-domena opcija
cije, uvodenje
i uklanjanje podrazumevane vrednosti (SET, DROP DEFAULT),
dodavanje i uklanjanje ogranicenja domena (ADD, DROP CONSTRAINT).
Osim ovih mogucnosti, definicija domena ne podrzava pravu semantiku domena
129
Bazna tabela.
Definicija bazne tabele (CREATE TABLE) je prosirena mogu
cnoscu navodenja
domena za atribute, kao i definicijom ogranicenja bazne tabele
koja, osim primarnog i stranog kljuca, moze da ukljuci i kandidate kljuceva (oblika
UNIQUE (lista-atributa), koji ne obavezuju na NOT NULL atribute) i provere
ogranicenja tabele (oblika CHECK(logicki-izraz)). Definicija stranog kljuca sada
moze da sadrzi, osim akcije pri brisanju, i akciju pri azuriranju koja moze biti NO
ACTION (slicno prethodnoj RESTRICT), CASCADE, SET DEFAULT ili SET
NULL.
Na primer, bazna tabela KI moze biti definisana u SQL2 sledecim CREATE
TABLE iskazom:
CREATE TABLE KI
(K SIF
K SIF
NOT NULL,
I SIF
I SIF
NOT NULL,
IZDANJE IZDANJE NOT NULL,
GODINA GODINA NULL,
TIRAZ
TIRAZ
0,
PRIMARY KEY (K SIF, I SIF, IZDANJE),
FOREIGN KEY (K SIF) REFERENCES K
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY (I SIF) REFERENCES I
ON DELETE CASCADE
ON UPDATE CASCADE,
CHECK (IZDANJE>0 AND IZDANJE<50 ))
Atribut K SIF definisan je nad domenom K SIF (dopustena su ista imena
atributa i domena), a slicno vazi i za ostale atribute; NULL odnosno 0 uz
definiciju atributa GODINA odnosno TIRAZ, oznacava podrazumevanu vrednost
(u slucaju da se vrednost atributa izostavi).
mogucnost definisanja perzistentnih (trajnih) i privremenih
Standard predvida
baznih tabela. Perzistentne bazne tabele su bazne tabele u uobicajenom znacenju.
Privremene (TEMPORARY) bazne tabele vezane su za jednu konekciju (prikljucenje) SQL-klijenta na SQL-server (u klijent-server okruzenju, v. 18) i materijalizuju
se tek pri izvrsenju funkcija koje se u toku te konekcije pozivaju iz programa na
maticnom jeziku (v. tacke 5.1.2 Manipulisanje podacima i 5.1.3 Aplikativni SQL).
Na pocetku konekcije privremene tabele su prazne, dok se na kraju konekcije njihov
sadrzaj opet brise. Na privremene tabele se, za razliku od trajnih baznih tabela,
ne primenjuje puna funkcionalnost RSUBP kontrola konkurentnosti, oporavak,
registrovanje u katalog, itd.
Izmena bazne tabele (ALTER TABLE) sada se moze odnositi kako na dodavanje tako i na uklanjanje atributa, kljuceva, podrazumevanih vrednosti i uslova
ogranicenja tabele.
Uklanjanje bazne tabele (DROP TABLE) moze da ukljuci i opciju (RESTRICT
130
5 Standardi SQL-a
ili CASCADE) koja ce zabraniti uklanjanje, odnosno preneti dejstvo uklanjanja ako
postoji pogled ili uslov ogranicenja definisan nad tom tabelom.
Op
sti uslov ograni
cenja.
ogranicenja je
131
{, definicija-domena} {, definicija-tabele}
{, definicija-pogleda} {, definicija-uslova-ogranicenja}
]
Shema se moze i ukloniti iskazom oblika
DROP SCHEMA ime-sheme
pri cemu se moze navesti i opcija (RESTRICT ili CASCADE) koja ce zabraniti
uklanjanje sheme ako ona sadrzi objekte baze podataka, odnosno implicitno izvrsiti
odgovarajuce DROP iskaze na objektima sadrzanim u shemi.
Ime svake tabele koja je komponenta kreirane sheme kvalifikuje se (eksplicitno
ili implicitno) imenom sheme.
5.1.2
Manipulisanje podacima
za navodenje
uslovne vrednosti, itd.
SQL2 podrzava relativno kompletnu dijagnostiku (informacije o izvrsenju
iskaza i eventualnim greskama). Manipulativni iskazi proizvode, osim vrednosti koda u celobrojnoj promenljivoj SQLCODE, i vrednost znakovnog tipa
u promenljivoj SQLSTATE, kao i informacije o uslovima izvrsenja u prostoru dijagnostike (engl. diagnostics area), koje se mogu dobiti operacijom
GET DIAGNOSTICS.
U FROM liniji SELECT iskaza moze da se pojavi i lista izvedenih tabela, tj.
lista tabela rezultata punih SELECT blokova; na primer, iskaz
SELECT P SIF, I SIF
FROM P, (SELECT *
FROM I
WHERE I STATUS > 10) AS DOBRIIZD
WHERE P.DRZAVA = DOBRIIZD.DRZAVA
izdaje parove sifara pisca i izdavaca iz iste drzave, pri cemu se uzimaju u obzir
samo dobri izdavaci sa statusom vecim od 10.
SQL2 podrzava dodelu imena izvedenoj koloni i izvedenoj tabeli, u SELECT
liniji odnosno u FROM liniji; na primer, iskaz
132
5 Standardi SQL-a
SELECT K SIF, I SIF, Tiraz u hilj.= AS KOM, TIRAZ/1000 AS TuH
FROM KI
.
.
.
proizvodi rezultattabelu sa cetiri kolone; prve dve su imenovane imenima
kolona tabele KI K SIF i I SIF, treca je imenovana KOM i ima konstantni
sadrzaj, dok je naziv cetvrte kolone TuH i ona sadrzi tiraze u hiljadama
primeraka (v. i prethodni primer).
SQL2 podrzava novu, eksplicitnu operaciju spajanja, koja ukljucuje sve vrste
spajanja Dekartov proizvod, prirodno, slobodno, unutrasnje, spoljasnje i
unijsko spajanje. Sintaksa ove operacije je
tabela-1 CROSS JOIN |
[NATURAL] [INNER | LEFT | RIGHT | FULL | UNION] JOIN
tabela-2
[ON logicki-izraz]
CROSS JOIN oznacava Dekartov proizvod, dok se unijsko spajanje (UNION
JOIN) odnosi na spoljasnju uniju (v. tacku 2.1.3 Prosirena relaciona algebra).
Opcija INNER odnosi se na unutrasnje (obicno) spajanje, kako prirodno tako
i slobodno. Opcije LEFT, RIGHT i FULL odnose se na levo, desno i puno
spoljasnje spajanje. Prirodno spajanje (NATURAL) vrsi se po jednakim vrednostima jednako imenovanih atributa navedenih tabela, i pri tom se ON opcija ne sme navesti, dok je u slucaju slobodnog ()-spajanja (NATURAL se
izostavlja) ON opcija obavezna i definise uslov spajanja. Na primer,
SELECT *
FROM
(I NATURAL JOIN KI)
Tabele tabela-1 i tabela-2 mogu biti i izvedene tabele u smislu iz prethodnih
paragrafa.
Sintaksa SQL2 omogucuje zapis TABLE T ekvivalentan SELECT bloku (SELECT FROM T ).
SQL2 podrzava, pored operacije UNION, i eksplicitne operacije preseka i
razlike, INTERSECT i EXCEPT. Operacija preseka je viseg prioriteta od operacija unije i razlike. Tabele argumenti ovih operacija moraju biti izvedene,
tj. zadate SELECT blokovima ili izrazima oblika TABLE tabela. Moguce je
eksplicirati redosled odgovarajucih kolona u tabelama operandima.
U SQL2 moguce je koristiti ugnjezdene pune SELECT upitne blokove za
predstavljanje skalarnih vrednosti; to je ucinjeno, na primer, u SELECT liniji
sledeceg iskaza:
133
134
5 Standardi SQL-a
Konekcija se moze ostvariti i implicitno, pozivom (sa klijenta) procedure na
serveru, pri cemu se, ako ne postoji nijedna konekcija, ostvaruje konekcija sa
podrazumevanim serverom.
SQL konekcija se zavrsava eksplicitno, iskazom
DISCONNECT
pri cemu se zatvara imenovana, podrazumevana (DEFAULT), tekuca (CURRENT) konekcija, odnosno sve postojece konekcije klijenta.
Konekcija se moze zatvoriti i implicitno, po izvrsenju poslednje procedure
pozvane iz aplikativnog programa ili poslednjeg interaktivnog SQL iskaza.
5.1.3
Aplikativni SQL
135
136
5 Standardi SQL-a
parametre pripremljenog iskaza i za rezultujuce vrednosti dinamickog FETCH
ili SELECT iskaza.
mogucnost dinamickog izvrsenja odredenih
SQL2 predvida
grupa SQL iskaza,
kao sto su:
manipulativni iskazi (SELECT, DELETE, INSERT, UPDATE),
iskazi definisanja (CREATE, ALTER, DROP),
iskazi transakcija, itd.
5.2
Pitanja i zadaci
6.1
Interaktivni QUEL
6.1.1
Definisanje podataka
ime-baze-podataka
ime-baze-podataka
ime-bazne-tabele ( def-kolone {, def-kolone})
ime-bazne-tabele
138
vrednostima odgovarajuceg tipa (NOT NULL WITH DEFAULT, sto se i podrazumeva ako se nista ne navede).
Na primer, iskaz
CREATE I (I SIF
NAZIV
STATUS
DRZAVA
=
=
=
=
C6,
C20,
I2,
C20)
kreira tabelu I sa tri kolone tipa niske znakova (I SIF, NAZIV, DRZAVA) i sa
jednom kolonom tipa kratkog celog broja (STATUS).
6.1.2
Manipulisanje podacima
U svom manipulativnom delu upitni jezik QUEL ima iskaz deklarisanja n-torne
promenljive oblika
RANGE OF lista-promenljivih IS ime-tabele
Na primer, RANGE OF IX IS I.
Svaka n-torna promenljiva iz liste promenljivih uzima za svoje vrednosti vrste
tabele ime-tabele.
Iskazi pomocu kojih QUEL komunicira sa bazom jesu iskazi pretrazivanja (RETRIEVE), unosenja (APPEND), brisanja (DELETE) i zamene (REPLACE). Opsti
oblik ovih iskaza je
iskaz [[INTO | TO] ime-rezultata]
[WHERE logicki-izraz]
( ciljna-lista)
139
I SIF
i1
i1
i1
i1
i2
i3
i4
OBJASNJ.
Tiraz u hiljadama
Tiraz u hiljadama
Tiraz u hiljadama
Tiraz u hiljadama
Tiraz u hiljadama
Tiraz u hiljadama
Tiraz u hiljadama
primeraka
primeraka
primeraka
primeraka
primeraka
primeraka
primeraka
TuH
10
7
10
10
5
3
5
140
Primer 6.5 Dodati tabeli K BC (koja ima iste atribute kao i tabela K) sve vrste
tabele K cija je sifra K SIF jednaka k1 ili k3.
APPEND TO K BC (K SIF = K.K SIF, NASLOV = K.NASLOV,
OBLAST = K.OBLAST)
WHERE K.K SIF = k1 OR K.K SIF = k3
6.1.3
141
6.1.4
OF r IS R
OF s IS S
TO T (C1 = r.A1 , . . . , Cn = r.An )
TO T (C1 = s.B1 , . . . , Cn = s.Bn )
OF r IS R
OF s IS S
TO T (C1 = r.A1 , . . . , Cn = r.An ,
Cn+1 = s.B1 , . . . , Cn+m = s.Bm )
142
OF r IS R
OF s IS S
TO T (C1 = r.A1 , . . . , Cn = r.An , Cn+1 = s.B1 ,
. . . , Cn+j1 = Bj1 , Cn+j = Bj+1 , . . . , Cn+m1 = s.Bm )
WHERE r.Ai = s.Bj
6.1.5
OF r1 IS R
OF r2 IS R
OF s IS S
TO T (C1 = r1 .A1 )
WHERE ANY(s.B1 BY r1 .A1
WHERE ANY(r2 .A1 BY s.B1 , r1 .A1
WHERE r2 .A1 = r1 .A1 AND r2 .A2 = s.B1 ) = 0) = 0
atr 1, . . . , atr k
143
sumeda).
6.2
Aplikativni QUEL
Kao i SQL, i QUEL ima svoju aplikativnu varijantu. To je EQUEL (Embedded QUEL), QUEL ugnjezden u programski jezik C (kao i u jezike Ada, BASIC,
COBOL, FORTRAN, PL/I, Pascal).
Osnovni princip EQUEL-a je princip dualnosti, tj. princip da se svaki QUEL
iskaz koji se moze izvrsiti interaktivno, moze upotrebiti i u aplikativnom (EQUEL)
programu; obrat ne vazi, tj. postoji niz iskaza koji se mogu upotrebiti u aplikativnom, ali ne i u interaktivnom radu.
Osnovne karakteristike EQUEL jezika mogu se sumirati na sledeci nacin:
obradu kroz prekompilator, koji izvrsne
EQUEL program mora da prode
QUEL iskaze zamenjuje pozivima (u maticnom jeziku) izvrsnog EQUEL sistema. Zato sve linije aplikativnog programa koje treba da obradi prekompilator pocinju znakom ## u prve dve zauzete kolone; to su linije koje sadrze
QUEL iskaze, ali i deklaracije maticnog jezika (npr. C) kojima se deklarisu
programske promenljive koje ce se navesti u nekom QUEL iskazu.
Izvrsni QUEL iskazi u EQUEL programu mogu se pojaviti na svakom mestu
gde mogu i izvrsni iskazi maticnog jezika.
Programske promenljive mogu se koristiti u ciljnoj listi RETRIEVE iskaza,
kao imena n-tornih promenljivih, kao imena tabela i kolona, unutar QUEL
izraza i logickih izraza.
EQUEL program moze pristupiti samo jednoj bazi podataka u jednom
trenutku; za pristup bazi, odnosno za kraj rada sa bazom, koriste se EQUEL
iskazi otvaranja odnosno zatvaranja baze podataka:
144
145
6.3
Pitanja i zadaci
146
Optimizacija upita
7.1
Katalog
148
7 Optimizacija upita
Osim ovih tabela ciji je znacaj prepoznatljiv, DB2 katalog sadrzi i grupe tabela
sa informacijama o strukturama (bazama podataka u sistemu, prostorima tabela,
izvornim definicijama pogleda, planovima izvrsavanja pristupnim paketima), o
autorizaciji (pravima pristupa kolonama, bazama podataka, planovima izvrsavanja,
sistemskim funkcijama, fizickim strukturama), kao i tabele o oporavku, integritetu
(primarnim, stranim kljucevima), itd.
Pretrazivanje tabela sistemskog kataloga moze se vrsiti SQL iskazima.
primer, iskaz
Na
7.2
149
150
7 Optimizacija upita
I Prevodenje
upita u internu reprezentaciju podrazumeva njegovo ciscenje od
specificne sintakse i predstavljanje nekim formalizmom interne reprezentacije. Taj
formalizam mora biti dovoljno bogat da omoguci predstavljanje svih upita upitnog
jezika i sto je moguce neutralniji da ne bi uticao na kasnije odluke optimizatora.
Najcesci formalizmi interne reprezentacije jesu neki oblik drveta apstraktne sintakse
(DAS) i odabrana sintaksa relacione algebre. Tako se polazni upit sa pocetka ovog
odeljka moze predstaviti DAS-om na slici 7.1 ili izrazom relacione algebre
151
projekcija (NAZIV)
I
KI
Slika 7.1: Drvo apstraktne sintakse (DAS) upita
152
7 Optimizacija upita
se tim pravilima mogu transformisati u isti oblik; taj transformisani oblik je njihova
kanonicka forma. Optimalno bi bilo da se klase semanticke i sintaksne ekvivalencije
poklapaju. Obavezno je pak da svi sintaksno ekvivalentni upiti budu i semanticki
ekvivalentni, tj. da svaka klasa sintaksne ekvivalencije bude podskup neke klase
semanticke ekvivalencije, za sta je odgovorna semanticka valjanost pravila transformacije. Naime, ni jednim pravilom transformacije upit ne sme da promeni svoju
klasu semanticke ekvivalencije. Od kompletnosti skupa pravila transformacije zavisi koliko ce klasa sintaksne ekvivalencije biti sadrzano u jednoj klasi semanticke
ekvivalencije, a prakticni cilj je da taj broj bude sto manji.
Ako je skup objekata Q skup svih mogucih upita interne reprezentacije, skup
pravila transformacije upita u kanonicku formu mogao bi da ukljuci sledeca pravila:
logicke izraze restrikcije prevesti u konjunktivnu normalnu formu, tj. u kon
153
ako je S.A strani kljuc koji se odnosi na primarni kljuc R.A, onda se izraz
(S R)[A] moze zameniti izrazom S[A]; na primer, izraz (KI K)[K SIF] moze da
se zameni izrazom KI[K SIF].
Sistem INGRES primenjuje i pravilo koje prosirenjem restrikcije smanjuje obim
relacije medurezultata,
sto je ilustrovano sledecim primerima:
izraz A.F1 > B.F2 AND B.F2 = 3 moze se zameniti izrazom A.F1 > B.F2
AND B.F2 = 3 AND A.F1 > 3;
izraz I.DRZAVA > P.DRZAVA AND P.DRZAVA > Amerika,
moze se zameniti izrazom
I.DRZAVA > P.DRZAVA AND P.DRZAVA > Amerika AND I.DRZAVA >
Amerika.
III Posto je upit transformisan u svoju kanonicku formu (bez obzira na to kojim pravilima pojedini sistem realizovao tu transformaciju), sledeci korak treba da
odgovori na pitanje kako izracunati transformisani upit. Na ovom nivou razmatraju se pristupni putevi kao sto su indeksi ili hes algoritmi, distribucija vrednosti
podataka, fizicko grupisanje slogova, itd. Upitni izraz u kanonickoj formi posmatra se kao niz operacija niskog nivoa spajanja, restrikcije, itd. Za svaku od tih
operacija optimizator ima na raspolaganju skup unapred definisanih procedura za
njihovu implementaciju, u zavisnosti od svojstava relacija argumenata operacije.
Na primer, optimizator ima na raspolaganju skup procedura za izvrsavanje restrikcije: jednu za = restrikciju na jedinstvenom atributu, drugu za indeksirani atribut
restrikcije, trecu za grupisuci atribut restrikcije, itd. Uz svaku od procedura postoji i informacija o njenoj ceni, tj. o prostoru i vremenu potrebnom za njeno
izvrsenje.
Upotrebom informacija iz sistemskog kataloga o tekucem stanju baze podataka
(na primer, o kardinalnosti relacija i pristupnim putevima), optimizator bira jednu
ili vise procedura kandidata za svaku od operacija u upitnom izrazu. Ovaj proces
se nekada zove izbor pristupnog puta.
IV Poslednja faza u procesu optimizacije je konstrukcija skupa upitnih planova
(planova izvrsavanja upita), sa izborom najboljeg (na primer, najjeftinijeg). Svaki
upitni plan je kombinacija procedura od kojih svaka odgovara po jednoj operaciji u
upitu. Broj mogucih planova je obicno suvise veliki, pa je pozeljno koriscenje neke
heuristike koja ogranicava broj planova koji se generisu. Izbor se vrsi na osnovu cene
plana, a formula cene je najcesce broj operacija ulaza/izlaza sa diska, mada se nekad
u formulu cene ukljucuje i koriscenje centralnog procesora. Treba napomenuti da
je procena cene veoma tezak zadatak jer svi upiti (osim najjednostavnijih) generisu
tabele medurezultate
koje treba upisati na disk (i citati sa diska), a ciji je obim
tesko proceniti jer je neposredno zavisan od vrednosti registrovanih u bazi. U
sledecim odeljcima ove glave bice izlozene metode optimizacije koje se primenjuju
u dva sistema: prvom kompletnom prototipskom relacionom sistemu, SYSTEM R
([56]), i najpoznatijem akademskom relacionom sistemu INGRES ([70]).
154
7 Optimizacija upita
7.3
Optimizacija u SYSTEM R
155
relacije. (Poredenje
6= nije ukljuceno, jer se ne ocekuje znacajna selektivnost; gotovo sve n-torke moraju biti pretrazene).
156
7 Optimizacija upita
Metoda sortiranja/spajanja sastoji se od sortiranja relacija A, B po vrednostima atributa spajanja, i spajanja sortiranih relacija po jednakosti
atributa. Pristup torkama relacija A i B u fizickom redosledu sada je
najefikasniji, a sam algoritam se moze realizovati tako da se spajanje
dveju relacija obavi jednim citanjem svake od njih (v. odeljak 11.3).
7.4
Optimizacija u INGRES-u
I IS I
K IS K
KI IS KI
(I.NAZIV) WHERE I.DRZAVA = Jugoslavija AND
I.I SIF = KI.I SIF AND KI.TIRAZ >= 5000 AND
KI.K SIF = K.K SIF AND K.OBLAST = poezija
157
Slicno se iz upita (3), razdvajanjem po promenljivoj KI, dobija sledeci par upita
ekvivalentan upitu (3):
(4) RETRIEVE INTO KI(KI.I SIF, KI.K SIF) WHERE KI.TIRAZ
>= 5000
(9)
158
7 Optimizacija upita
Slicno, kako skup vrednosti atributa I SIF u relaciji KI jeste {i1, i4}, dvopromenljivi upit (9) zamenjuje se jednopromenljivim u kome svaka od dve vrednosti
iz tog skupa zamenjuje, redom, komponentu KI.I SIF. Tako se upit (9) zamenjuje
upitom
RETRIEVE (I.NAZIV) WHERE I.I SIF = i1
OR I.I SIF = i4
Slika 7.2 predstavlja drvo dekompozicije polaznog upita (1). Grana ciji je ulazni
cvor upit oblika (i) ima, kao svoj izlazni cvor, relaciju koja ucestvuje u izgradnji tog
upita. Grana ciji je izlazni cvor upit oblika (i) ima, kao svoj ulazni cvor, relaciju
promenljivoj. Cvor
koji ima vise od jedne ulazne grane predstavlja visepromenljivi
upit (takvi su cvorovi (8) i (9)), dobijen razdvajanjem po dve ili vise n-tornih
promenljivih; ovakav upit izvrsava se supstitucijom n-torki.
rezultat
6
-
razdvajanje
I
6
- (9)
supstitucija
KI
6
- (8)
KI
6
(6)
6
K
6
(2)
6
(4)
6
KI
7.5
Pitanja i zadaci
159
drvo apstraktne sintakse
dekompozicija upita
metoda sortiranja/spajanja
metoda ugnjezdenih petlji
Deo III
Logi
cko projektovanje
Pod logickim projektovanjem relacione baze podataka podrazumeva se projektovanje sheme relacione baze podataka, tj. grupisanje pojedinih atributa u posebne
entitetima u posebne relacije,
relacije, ili izdvajanje uocenih entiteta i odnosa medu
a sve to na osnovu analize informacionih zahteva i informacionog okruzenja. Znacaj
dobrog logickog projektovanja relacione baze podataka lezi u cinjenici da je takvu
bazu moguce najefikasnije odrzavati, i da je manipulisanje podacima u njoj najjednostavnije, najefikasnije i najpouzdanije.
Razlicite metodologije logickog projektovanja dolaze do sheme relacione baze
razlicitim postupcima, pri cemu se vec u opisu znacenja logickog projektovanja
uocavaju dva globalno razlicita postupka: jedan se zasniva na grupisanju atributa
svojstava informacionog okruzenja u posebne relacije, a drugi na izdvajanju
vezama
entiteta i odnosa u posebne relacije. Prvi je sintaksno orijentisan i voden
161
Teorija zavisnosti
8.1
Kao sto je vec naglaseno u kratkom opisu integritetnog dela relacionog modela
(odeljak 1.4), funkcionalne zavisnosti (skraceno FZ) jesu najvazniji oblik specificnih
uslova integriteta relacije.
S druge strane, znacaj funkcionalnih zavisnosti lezi u cinjenici da one predstavljaju osnovni koncept na kome se zasniva jedna metoda logickog projektovanja baze
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
STATUS
30
20
10
30
DRZAVA
Jugoslavija
Amerika
Jugoslavija
Jugoslavija
162
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
STATUS
30
20
10
30
163
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
DRZAVA
Jugoslavija
Amerika
Jugoslavija
Jugoslavija
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
Prosveta
STATUS
30
20
10
30
10
INSD[NAZIV, DRZAVA]
NAZIV
Prosveta
Addison Wesley Publ. Comp.
Decje novine
Matica srpska
Prosveta
DRZAVA
Jugoslavija
Amerika
Jugoslavija
Jugoslavija
Srbija
STATUS
30
30
20
10
30
10
10
DRZAVA
Jugoslavija
Srbija
Amerika
Jugoslavija
Jugoslavija
Jugoslavija
Srbija
164
8 Teorija zavisnosti
Dakle, tvrdenje
teoreme vazi u sva tri slucaja.
Ako u relaciji R vazi funkcionalna zavisnost X Y, onda se kaze da relacija R
zadovoljava tu funkcionalnu zavisnost.
Relacija R je dinamickog sadrzaja, sto znaci da njen sadrzaj u raznim momentima moze biti razlicit. Stanje r relacije R je njen sadrzaj u nekom momentu.
Kazacemo da stanje r relacije R zadovoljava FZ X Y ako ta funkcionalna zavisnost vazi u relaciji R u momemtu koji definise njeno stanje r. Sada se za relaciju R
moze reci da zadovoljava FZ X Y ako svako njeno stanje r zadovoljava tu FZ.
Vazenje funkcionalne zavisnosti X Y u stanju r relacije R moze se ispitati
sledecim algoritmom:
1 Ovde se, kao i u daljem tekstu, pod XY podrazumeva unija skupova atributa X i Y , bez
ponavljanja eventualnih zajedni
ckih atributa.
8.2 Aksiome izvodenja
165
Algoritam ZADOVOLJAVA
Ulaz: stanje r relacije R i FZ X Y ;
Izlaz: TACNO
ako r zadovoljava FZ X Y , NETACNO
u suprotnom;
ZADOVOLJAVA(r, X Y )
BEGIN
pregrupisati stanje r relacije R po vrstama tako da vrste sa jednakim
X-vrednostima budu zajedno;
i jednake
ako svaki skup vrsta sa jednakim X-vrednostima ima takode
8.2
Aksiome izvodenja
Aksiome izvodenja
su pravila koja utvrduju
vazenje nekih funkcionalnih zavisnosti u relaciji R, na osnovu vazenja nekih drugih funkcionalnih zavisnosti u R.
166
8 Teorija zavisnosti
Ako R zadovoljava FZ X Y , onda skup R[X = x][Y ] sadrzi najvise jednu
n-torku za svako x. Tada je R[XZ = xz] R[X = x], pa je i R[XZ =
xz][Y ] R[X = x][Y ]. Zato i skup R[XZ = xz][Y ] sadrzi najvise jednu
n-torku, tj. relacija R zadovoljava funkcionalnu zavisnost XZ Y .
Primer 8.1 Jedno stanje r relacije R(A, B, C, D) moze biti
r
A
a1
a2
a1
a3
B
b1
b2
b1
b3
C
c1
c1
c1
c2
D
d1
d1
d2
d3
t1 [Y ] = t2 [Y ]
t1 [Z] = t2 [Z]
(zbog FZ X Y )
(zbog FZ Y Z),
8.2 Aksiome izvodenja
167
A
a1
a2
a3
a4
B
b1
b2
b1
b1
C
c2
c1
c2
c2
D
d1
d2
d1
d3
Z
XZ
X
XZ
XZ
YZ
XZ
Z
Z
Y
Y
YZ
W
W
(prema F1)
(prema F2)
(pretpostavka)
(prema F2)
(prema F3, iz 2) i 4))
(pretpostavka)
(prema F5, iz 5) i 6)).
168
8 Teorija zavisnosti
jednoznacno odreduju
broj radnika jednog direktora na jednom spratu. Primenom
pseudotranzitivnosti moze se dobiti FZ {SEKTOR, SPRAT} BROJ RADNIKA,
koja odreduje
broj radnika direktora specificnog sektora na specificnom spratu (a
ne broj radnika specificnog sektora na specificnom spratu). Ako direktor moze da
upravlja vecim brojem sektora, onda dobijena FZ nije semanticki ista kao sintaksno
identicna FZ koja bi oznacavala broj radnika specificnog sektora na specificnom
spratu.
Problem nejedinstvenosti funkcionalne zavisnosti obicno se resava preimenovanjem atributa. U prvom primeru, atribut RADNIK iz FZ g moze se preimenovati
u atribut RADNIK UPRAVA, jer se semantika atributa RADNIK u FZ f, g bitno
razlikuje. U drugom primeru atribut BROJ RADNIKA iz FZ g trebalo bi preimenovati u BROJ RADNIKA DIREKTORA, pa bi se primenom pseudotranzitivnosti
dobila FZ {SEKTOR, SPRAT} BROJ RADNIKA DIREKTORA koja bi sada
bila i sintaksno razlicita od FZ {SEKTOR, SPRAT} BROJ RADNIKA.
8.3
Ako je zadat skup F funkcionalnih zavisnosti jedne relacije, niz pitanja koja se
postavljaju u vezi sa njim ukljucuje:
1. Kako konstruisati skup svih funkcionalnih zavisnosti koje se mogu izvesti iz
F po Armstrongovim aksiomama?
2. Da li je zadata FZ logicka posledica skupa F ?
3. Kako konstruisati najmanji (po broju FZ) skup FZ koji generise sve FZ kao
i F?
Prva dva pitanja odnose se na konstrukciju zatvorenja skupa FZ, a trece na
konstrukciju pokrivanja skupa FZ. Znacaj ovih konstrukcija je u povecanju efikasnosti odrzavanja integriteta baze podataka, kao i u logickom projektovanju baza
podataka.
Pored znacaja koji zatvorenje skupa FZ ima u logickom projektovanju baze
169
170
8 Teorija zavisnosti
Algoritam CLAN
Ulaz: skup FZ F i FZ X Y ;
Izlaz: TACNO
ako F |= X Y, NETACNO
u suprotnom;
CLAN(F , X Y )
BEGIN
8.4
171
Algoritam IZVODI
Ulaz: dva skupa FZ F, G;
Izlaz: TACNO
ako F |= G, NETACNO
u suprotnom;
IZVODI(F, G)
BEGIN
v := TACNO;
FOR svaka FZ X Y iz G DO
v := v AND CLAN(F,
X Y );
RETURN(v)
END.
Algoritam EKVIV
Ulaz: dva skupa FZ F, G;
Izlaz: TACNO
ako F G, NETACNO
u suprotnom;
EKVIV(F, G)
BEGIN
v := IZVODI(F, G) AND IZVODI(G, F );
RETURN(v)
END.
Iz istog razloga kao i pokrivanja uopste, od interesa su pokrivanja bez suvisnih
FZ (tj. bez onih FZ koje se mogu izvesti iz preostalih FZ istog skupa).
Definicija 8.4 Skup FZ F je neredundantan ako ne sadrzi pravi podskup F 0 F
takav da je F 0 F ; u suprotnom je skup F redundantan. Skup F je neredundantno
pokrivanje skupa FZ G ako je F pokrivanje skupa G i F je neredundantan skup
FZ.
Primer 8.7 Za dva skupa FZ
G = {AB C, A B, B C, A C} i
F = {AB C, A B, B C}
vazi F G, ali je F redundantan skup FZ jer je i skup F 0 = {A B, B C}
pokrivanje skupa G. Skup FZ F 0 jeste neredundantno pokrivanje skupa FZ G.
Sledeca definicija neredundantnog skupa ekvivalentna je definiciji 8.4, ali je operativnija od nje i koristi pojam suvisne funkcionalne zavisnosti:
Definicija 8.5 FZ X Y je suvisna u skupu FZ F ako F \ {X Y } |= X Y .
Skup FZ F je neredundantan ako u njemu nema suvisnih FZ.
Za svaki skup FZ G postoji neki podskup F G takav da je F neredundantno
pokrivanje od G. Ako je G neredundantan skup FZ, onda je F = G. Ako je G
redundantan skup, treba izbaciti iz njega sve suvisne FZ. Sledeci algoritam NERE
DUND izgraduje
jedno neredundantno pokrivanje F datog skupa FZ G:
172
8 Teorija zavisnosti
Algoritam NEREDUND
Ulaz: skup FZ G;
Izlaz: neredundantno pokrivanje F skupa G;
NEREDUND(G)
BEGIN
F := G;
FOR svaka FZ X Y iz G DO
IF CLAN(
F \ {X Y }, X Y ) THEN F := F \ {X Y };
RETURN (F )
END.
Primer 8.8 Neredundantno pokrivanje skupa FZ
G = {A B, B A, B C, A C},
odredeno
algoritmom NEREDUND(G), jeste skup
{A B, B A, A C}.
Algoritam za odredivanje
minimalnog pokrivanja ima veliku vremensku slozenost
(eksponencijalnu), a sam problem je jedan od NP kompletnih problema ([48]). Al
goritam zahteva definisanje nekih novih pojmova kao sto su graf izvodenja
FZ i
relacije definisane nad takvim grafom.
Jedna vrsta neredundantnog pokrivanja koja se cesto koristi u procesu logickog
projektovanja baze podataka i dokazivanju korektnosti tog procesa, jeste kanonicko
pokrivanje.
Definicija 8.6 Kanonicko pokrivanje skupa FZ G je neredundantno pokrivanje F
koje zadovoljava sledeca dva uslova:
a) svaka FZ u skupu F je oblika X A, gde je A jedan atribut;
|F | ozna
cava kardinalnost skupa F .
173
8.5
Vi
sezna
cne zavisnosti
atributima
Funkcionalne zavisnosti su specijalni slucaj opstijih logickih veza medu
relacije, koje se zovu viseznacne zavisnosti. Opstost ovog tipa logicke veze ogleda
se u sledecem: kod funkcionalne zavisnosti skupa atributa Y od skupa atributa
174
8 Teorija zavisnosti
PREDMET
p1
p1
p1
p1
p2
p2
p2
NASTAVNIK
n1
n1
n2
n2
n3
n3
n3
REFERENCA
r1
r2
r1
r2
r3
r4
r5
viseznacno odreduje
skup atributa Y , tj. da skup atributa Y viseznacno zavisi od
skupa atributa X.
Prethodna definicija ima i sledece interpretacije. U relaciji R vazi VZ X Y
ako pripadnost n-torki xyz, xy 0 z 0 R, za x R[x], y, y 0 R[Y ], z, z 0 R[Z] (tj.
x yz, x y 0 z 0 R), povlaci i pripadnost n-torki xyz 0 , xy 0 z R (tj. x yz 0 ,
viseznacna zavisnost X Y vazi u R ako je skup Yxz
x y 0 z R). Takode,
vrednoscu x, tj. zavisi samo od x a ne i od z.
jednoznacno odreden
Dakle, Yxz je skup svih elemenata projekcije relacije R na skup atributa Y, koji
su u relaciji R sa x, z, tj. Yxz je projekcija na skup atributa Y restrikcije relacije
R po uslovu X = x i Z = z. Koristeci ovu oznaku, za skup vrednosti viseznacno
zavisnog atributa REFERENCA za predmet p1 dobijamo
175
koriste jednu (odredenu) referencu zavisi takode samo od predmeta a ne i od reference (vazi viseznacna zavisnost PREDMET NASTAVNIK). To nije slucajno,
vec predstavlja jednu od osobina viseznacnih zavisnosti komplementarnost.
8.6
Osnovne osobine vi
sezna
cnih zavisnosti
176
8 Teorija zavisnosti
definicije funkcionalnih i viseznacnih zavisnosti; sve te osobine nazivaju se i aksiomama zavisnosti, a njihov znacaj ogleda se u zajednickom svojstvu potpunosti
koje se formulise sledecom teoremom.
Teorema 8.2 Za dati skup funkcionalniih i viseznacnih zavisnosti D u relaciji R sa
skupom atributa A, svojstva F1F6, (a)(c) i (a), (b), primenjena na zavisnosti
iz D, omogucuju izvodenje
skupa D+ svih zavisnosti (funkcionalnih i viseznacnih)
koje su logicka posledica skupa D.
Dokaz teoreme moze se naci u [48], [65].
Znacaj viseznacnih zavisnosti lezi u cinjenici da one daju potreban i dovoljan
uslov da se relacija moze dekomponovati u par svojih projekcija bez gubitka informacije, tj. da bude rezultat prirodnog spajanja svojih projekcija. Ovo svojstvo
viseznacnih zavisnosti je izuzetno vazno u metodologiji logickog projektovanja baze
R = R[XY ] R[XZ]
177
Dakle, tvrdenje
teoreme vazi u sva tri slucaja.
Ako se definicija viseznacne zavisnosti modifikuje tako da skup atributa Z moze
biti prazan, dolazi se do definicije trivijalne viseznacne zavisnosti:
Definicija 8.8 Trivijalne viseznacne zavisnosti u relaciji R(X, Y ) sa disjunktnim,
nepraznim podskupovima X, Y skupa Atr(R) jesu zavisnosti X , X Y .
8.7
Zavisnosti spajanja
178
8 Teorija zavisnosti
8.8
Pitanja i zadaci
aksiome izvodenja
zatvorenje skupa atributa
zatvorenje skupa FZ
pokrivanje skupa FZ
neredundantno pokrivanje skupa FZ
CLAN,
koristi algoritam REDUND.
7. Navesti osnovne osobine viseznacnih zavisnosti.
8. Formulisati i dokazati vezu VZ i dekompozicije relacije u skup projekcija.
9. Neka je relacija R stepena n. Odrediti najveci broj funkcionalnih zavisnosti
koje relacija R moze da zadovoljava.
10. Odrediti zatvorenje skupa atributa {A, B} nad skupom FZ F = {AB C,
B D, CD E, CE GH, G A}.
11. Odrediti zatvorenje F + skupa FZ F = {AB C, C B}.
12. Odrediti neredundantno pokrivanje sledeceg skupa FZ relacije R(A,B,C,D,E,I):
A C
C DI
EC AB
AB C
CD I
EI C
179
IZDANJE
BR PRIMERAKA
KAT BROJ
ZAUZETOST
DATUM IZD
Torka (bb, mesto, naziv, k sif, i sif, izd, br pr, kat br, zauz, dat) je element
relacije BIBLIOTEKA ako biblioteka sa maticnim brojem bb i nazivom naziv
u mestu mesto poseduje primerak pod kataloskim brojem kat br knjige sa
sifrom k sif, u izdanju izd izdavaca sa sifrom i sif ; primerak je jedan od br pr
primeraka te knjige u toj biblioteci, a moze biti zauzet (zauz je 1) sa datumom
izdavanja dat, ili slobodan (zauz je 0 a dat je NULL). Koje funkcionalne zavisnosti zadovoljava relacija biblioteka?
14. Neka relacija UCENIK ima sledece atribute:
UCENIK BR
IME
DATUM RODENJA
SKOLA
SMER
RAZRED
ODELJENJE
RAZREDNI STARESINA
PREDMET
OCENA
Atributi imaju uobicajeno znacenje. Odrediti skup zavisnosti koje zadovoljava relacija UCENIK.
15. Neka relacija RASPORED CASOVA ima sledece atribute:
D dan u nedelji (15)
SP sat pocetka predavanja (819)
SZ sat zavrsetka predavanja (920)
U broj ucionice
N ime nastavnika
P naziv predmeta
Torka (D:d, SP:sp, SZ:sz, U:u, N:n, P:p) pripada relaciji RASPORED CASOVA
ako u vreme (D:d, SP:spSZ:sz) nastavnik N:n drzi predavanje iz predmeta
P:p u ucionici U:u. Koje funkcionalne (i druge) zavisnosti vaze u relaciji
RASPORED CASOVA?
Normalne forme
9.1
Pre nego sto damo definiciju druge normalne forme i algoritam dekompozicije
relacije u skup relacija koje su u drugoj normalnoj formi, navescemo primer relacije
koja ispoljava anomalije unosenja, brisanja i azuriranja, i objasniti uzrok anomalija
kao i nacin njihovog otklanjanja.
Primer 9.1 Neka je data relacija R sa sledecim sadrzajem:
R
180
I SIF
i1
i3
i3
i4
i5
i5
K SIF
k1
k2
k3
k1
k1
k2
NAZIV
Prosveta
Decje novine
Decje novine
Matica srpska
Prosveta
Prosveta
181
Znacenje atributa relacije R je isto kao u odeljku 1.2. Neka u relaciji R vazi
funkcionalna zavisnost I SIF NAZIV, i neka je to jedina funkcionalna zavisnost u toj relaciji. Dakle, NAZIV 6 I SIF, I SIF 6 K SIF , K SIF 6 I SIF. U
relaciji R jedini kljuc, pa i primarni kljuc jeste par atributa (I SIF, K SIF).
Anomalija unosenja u relaciju R ogleda se u nemogucnosti unosenja podataka
o sifri i nazivu izdavaca dok se ne unese i podatak o bar jednoj knjizi koju taj
izdavac izdaje (atribut K SIF ne moze imati nedostajucu vrednost s obzirom da je
deo primarnog kljuca).
Anomalija brisanja ogleda se u cinjenici da se brisanjem informacije o izdanju
neke knjige moze izbrisati, bez takve namere, i informacija o nazivu odgovarajuceg
izdavaca. Tako, iskljucenje knjige k1 iz izdanja izdavaca i4 moze se izvrsiti samo
brisanjem trojke (i4, k1, Matica srpska), cime se brise i informacija o nazivu izdavaca sa sifrom i4.
Anomalija azuriranja ogleda se u nemogucnosti nezavisnog azuriranja vrednosti
atributa NAZIV (izdavaca). Na primer, ako je potrebno promeniti naziv izdavaca
sa sifrom i5, sa Prosveta na Nova Prosveta, onda se taj podatak ne moze
promeniti (azurirati) u jednoj trojci relacije, vec se to mora uciniti u svakoj
trojci koja se odnosi na izdavaca sa sifrom i5, tj. onoliko puta koliko izdanja ima
taj izdavac.
Uzrok anomalija koje ispoljava relacija R je u cinjenici da su tom relacijom
tipa entiteta IZ i jedan odnos izmedu
predstavljeni jedan tip entiteta IZDAVAC
i tipa entiteta KNJIGA. Entitet IZDAVAC
moze se predstaviti relacijom
DAVAC
IZDAVAC sa atributima I SIF, NAZIV, itd, a odnos relacijom IZDANJA sa
atributima I SIF, K SIF, itd. Ovaj semanticki uzrok anomalija sintaksno se moze
prepoznati u funkcionalnoj zavisnosti atributa NAZIV od atributa I SIF koji je
pravi podskup primarnog kljuca. Ovakva funkcionalna zavisnost zove se parcijalna,
njeno postojanje cini da relacija R nije u drugoj normalnoj formi, a anomalije koje
prouzrokuje eliminisu se pravilom po kome se relacija R zamenjuje svojim projekcijama na parove atributa (I SIF, NAZIV), (I SIF, K SIF):
R [I SIF, NAZIV] = IZDAVAC
I SIF
i1
i3
i4
i5
NAZIV
Prosveta
Decje novine
Matica srpska
Prosveta
I SIF
i1
i3
i3
i4
i5
i5
K SIF
k1
k2
k3
k1
k1
k2
182
9 Normalne forme
183
2NF (lako se dokazuje), a ako druga projekcija R[XZ] nije u 2NF, ona se posmatra
kao nova relacija R i sa njom se ponavlja isti postupak dekompozicije po parcijalnoj
funkcionalnoj zavisnosti koju sadrzi. Svaka projekcija dobijena dekompozicijom u
nekom prolazu pridruzuje se skupu relacija koje su u 2NF a cijim se spajanjem
moze dobiti polazna relacija. Postupak je konacan jer se broj atributa relacija
do binarne
projekcija smanjuje pa se, ako ne pre, postupak zavrsava kada se dode
relacije (relacije sa dva atributa) koja je uvek u 2NF. Naime, ako su oba atributa
binarne relacije u kljucu, onda ona nema sporednih atributa, a ako je samo jedan
atribut u kljucu, onda nema parcijalne zavisnosti od kljuca; u svakom od ovih
slucajeva relacija je u 2NF.
9.2
Tre
ca normalna forma
Kriterijum koji definise drugu normalnu formu nije dovoljno strog, pa relacija koja
je u 2NF i dalje moze da ispoljava anomalije unosenja, brisanja i azuriranja. Tada
su anomalije posledica drugih nepozeljnih oblika funkcionalnih zavisnosti koje treba
otkloniti dekompozicijom relacije bez gubljenja informacije, u skup projekcija koje
su u tzv. trecoj normalnoj formi (v. definiciju 9.3).
Primer 9.2 Neka je relacijom S( P SIF, I SIF, DRZAVA) predstavljen tip entiteta
(sa atributima I SIF i DRZAVA) i odnos tog tipa entiteta sa tipom
IZDAVAC
entiteta PISAC koji je predstavljen jedinstvenim identifikatorom P SIF. Neka je
u relaciji S primarni kljuc atribut P SIF, i neka u njoj vaze FZ P SIF I SIF i
I SIF DRZAVA, dok I SIF 6 P SIF i DRZAVA 6 I SIF (jedan pisac moze imati
samo jednog izdavaca, dok jedan izdavac moze izdavati dela veceg broja pisaca). Iz
ovih funkcionalnih zavisnosti proisticu sve ranije pomenute anomalije. Na primer,
ne moze se uneti informacija o drzavi u kojoj je registrovan novi izdavac dok se
ne unese sifra bar jednog pisca cija dela taj izdavac izdaje; brisanjem poslednjeg
pisca cija dela izdaje neki izdavac gubi se i informacija o drzavi u kojoj je izdavac
registrovan; promena drzave datog izdavaca mora se izvrsiti u svakoj trojci koja se
odnosi na nekog pisca tog izdavaca. Sintaksno gledano, anomalije su posledica tzv.
tranzitivne zavisnosti sporednog atributa DRZAVA od kljucnog atributa P SIF, a
mogu se otkloniti zamenom relacije S njenim projekcijama S[P SIF, I SIF], S[I SIF,
DRZAVA].
Za novodobijene relacije vazi da se njihovim spajanjem moze dobiti relacija S
(zbog FZ I SIF DRZAVA), pri cemu u njima nema tranzitivne zavisnosti pa su
u tzv. trecoj normalnoj formi.
184
9 Normalne forme
185
Kao i kod 2NF normalizacije, postupak je konacan jer se broj atributa relacija
do bina projekcija smanjuje pa se, ako ne pre, postupak zavrsava kada se dode
rne relacije koja je uvek u 3NF (nad dva atributa ne moze postojati tranzitivna
zavisnost sporednog atributa od kljuca).
186
9 Normalne forme
187
H1
H2
H3
H4
= {A B}
= {B C, B D}
= {D B}
= {AE F };
9.3
R1 (A, B)
(kljuc A),
R2 (B, C, D) (kljuc B; kljuc D),
R3 (A, E, F ) (kljuc {A, E}).
188
9 Normalne forme
189
NASTAVNIK,
PREDMET, ali
6NASTAVNIK,
sa sledecim znacenjem: jedan student slusa jedan predmet kod jednog nastavnika,
jedan nastavnik predaje jedan predmet, jedan predmet moze da predaje veci broj
nastavnika. Primarni kljuc relacije je par atributa (STUDENT, PREDMET), i
relacija je u 3NF, ali nije u BCNF. Njenom dekompozicijom prema BCNF algoritmu
dobile bi se projekcije
SPN[ STUDENT, NASTAVNIK ],
SPN[ NASTAVNIK, PREDMET ],
koje su u BCNF. Jedina netrivijalna funkcionalna zavisnost u ovim projekcijama
je FZ NASTAVNIK PREDMET, a iz nje se ne moze izvesti funkcionalna zavisnost {STUDENT, PREDMET} NASTAVNIK koja vazi u polaznoj relaciji.
Zato se dobijene projekcije ne mogu nezavisno azurirati. Ovo je primer nepozeljne
dekompozicije, jer se BCNF normalizacijom ne resavaju problemi zbog kojih se ona
i sprovodi. Neopravdanost BCNF dekompozicije ima objasnjenje i u semantickoj
cinjenici da relacija SPN, iako ne sasvim normalizovana, ne sadrzi u sebi, kao pravi
entiteta.
podskup, nijedan entitet niti odnos izmedu
Teorema 9.4 Neka je 2NFRel oznaka za skup relacija koje su u 2NF, slicno
3NFRel, BCNFRel. Tada vaze inkluzije BCNFRel 3NFRel 2NFRel. Ove
inkluzije su stroge (kao sto pokazuju uvodni primeri za definicije 3NF i BCNF).
9.4
Dobre i lo
se dekompozicije
Relacija se cesto na vise nacina moze zameniti skupom relacija (njenih projekcija)
koje su u 3NF ili BCNF. Neke od tih dekompozicija su dobre, neke su nekorisne, a
neke su pogresne i stoga neprimenljive. Na primer, ako u relaciji IZDAVAC(I SIF,
STATUS, DRZAVA) vaze FZ I SIF DRZAVA, DRZAVA STATUS, onda u
toj relaciji vazi i FZ I SIF STATUS (prema aksiomi tranzitivnosti). Relacija
IZDAVAC nije u 3NF upravo zbog tranzitivne zavisnosti atributa STATUS od
kljuca I SIF, a njena dekompozicija u skup relacija koje jesu u 3NF moze se izvrsiti
na jedan od sledeca tri nacina:
190
9 Normalne forme
A:
=
=
B:
=
=
C:
=
=
Sve tri dekompozicije dovode do binarnih relacija koje su u BCNF. Dekompozicije A i B su bez gubitka informacije (zbog FZ DRZAVA STATUS po kojoj
je sprovedena dekompozicija A, odnosno zbog FZ I SIF STATUS po kojoj je
sprovedena dekompozicija B). Ipak, dekompozicija A je bolja jer ona cuva obe polazne funkcionalne zavisnosti. Pri dekompoziciji B ne moze se izvesti polazna FZ
DRZAVA STATUS. To dovodi do anomalija jer je razbijen entitet DRZAVA
sa svojim atributom STATUS na dve relacije, pa se ne moze uneti informacija o
statusu neke drzave dok se neki izdavac ne pridruzi toj drzavi. Zato je dekompozicija B nekorisna. Dekompozicija C je pogresna jer nije sprovedena po FZ koja bi
obezbedila ocuvanje informacije; spajanjem projekcija I2 i I3 ne bi se mogla dobiti polazna relacija IZDAVAC, u sta je lako uveriti se analizom primera njenog
moguceg sadrzaja.
Uopste, pri dekompoziciji relacije u njene dve projekcije vazno je postovati dva
pravila:
1. zajednicki atributi projekcija moraju biti kljuc u bar jednoj od projekcija (da
bi se informacija sacuvala);
2. potrebno je da se sve FZ polazne relacije mogu izvesti iz FZ u projekcijama
dobijenim dekompozicijom.
Kada su zadovoljena oba pravila, dobijene projekcije su nezavisne u smislu da
se mogu nezavisno azurirati; u slucaju da se drugo pravilo ne moze primeniti (kao
u nekim slucajevima BCNF dekompozicije), dekompozicija je nekorisna.
9.5
Cetvrta
normalna forma
Uzrok anomalija u jednoj relaciji mogu da budu, pored raznih vrsta funkcionalnih
zavisnosti, i viseznacne zavisnosti. U tom slucaju relacija se dekomponuje u niz
projekcija koje su u tzv. cetvrtoj normalnoj formi.
Definicija 9.5 Relacija R(A1 , . . . , An ) je u cetvrtoj normalnoj formi (u oznaci
4NF) ako za svaku netrivijalnu VZ X Y , gde su X, Y Atr(R), vazi i
FZ X Ai , za svako i = 1, 2, . . . , n.
Jedna interpretacija relacije u 4NF je sledeca: ona je u 3NF i sve VZ u njoj su u
stvari specijalni slucaj FZ. Drugim recima, relacija je u 4NF ako su sve zavisnosti
u njoj kljucne, tj. na levoj strani imaju ceo kljuc te relacije.
191
Ako relacija nije u 4NF, postupkom dekompozicije ona se moze zameniti skupom
svojih projekcija koje su u 4NF i cijim spajanjem se dobija polazna relacija. Algoritam je slican algoritmu BCNF normalizacije, s tim sto se u relaciji R koja nije u
4NF uocava VZ X Y (i, zbog komplementarnosti, VZ X Atr(R) \ XY ),
pa se relacija R zamenjuje projekcijama R[XY ], R[X, Atr(R) \ XY ], sa kojima se
ponavlja isti postupak ako nisu u 4NF.
Na primer, u relaciji PNR( PREDMET, NASTAVNIK, REFERENCA ) iz glave
8 vaze VZ PREDMET NASTAVNIK i PREDMET REFERENCA, pa
ona nije u 4NF. Relacija PNR moze se zameniti svojim projekcijama na parove
atributa (PREDMET, NASTAVNIK) i (PREDMET, REFERENCA), koje su u
4NF i cijim spajanjem se dobija relacija PNR.
Ceo postupak BCNF i 4NF normalizacije je ponekad nepozeljan, jer anomalije
prouzrokovane tranzitivnim zavisnostima kljucnih atributa od kljuca, i viseznacnim
zavisnostima, cesto jesu deo semantike realnosti koja se modelira a ne anomalije
u pravom smislu reci. Drugi razlog zbog kojeg BCNF i 4NF normalizacija mogu
biti nepozeljne je to sto dobijene dekompozicije ne cuvaju sve polazne zavisnosti,
pa se dobijene projekcije ne mogu nezavisno azurirati. Preveliko usitnjavanje nor da bude razlog protiv ovih zavrsnih
malizovanih relacija projekcija moze takode
oblika normalizacije. Zato se postupak normalizacije u praksi obicno zavrsava na
trecoj normalnoj formi; ona predstavlja rezultat logickog projektovanja kome teze
i metode semantickog modeliranja.
9.6
Postoje slucajevi kada posmatrana relacija predstavlja veci broj entiteta ili njihovih
odnosa (vise od dva). Ako je svaki od tih entiteta i odnosa predstavljen samo
skupovima svojih kljucnih atributa, onda nije moguce dekomponovati relaciju u
samo dve njene projekcije bez gubljenja informacije, ali je moguca njena dekompozicija u vise projekcija. Na primer, relaciju
R
A
a1
a1
a3
a4
a5
a6
B
b1
b2
b3
b3
b5
b6
C
c1
c2
c3
c4
c5
c5
nije moguce dekomponovati samo u dve njene projekcije bez gubitka informacije,
ali je moguce dekomponovati je u sledece tri binarne projekcije (cijim se spajanjem
dobija upravo relacija R):
192
9 Normalne forme
R[A, B]
A
a1
a1
a3
a4
a5
a6
B
b1
b2
b3
b3
b5
b6
R[A, C]
A
a1
a1
a3
a4
a5
a6
C
c1
c2
c3
c4
c5
c5
R[B, C]
B
b1
b2
b3
b3
b5
b6
C
c1
c2
c3
c4
c5
c5
Stavi
se, peta normalna forma je najjaca normalna forma sintaksno zasnovanog
9.7
Pitanja i zadaci
193
2. Opisati algoritme 2NF, 3NF i BCNF normalizacije. Proceniti njihovu vremensku slozenost.
3. Koje su prednosti a koji nedostaci normalizacije dekompozicijom?
4. Navesti primer relacije koja se ne moze korisno (tj. sa ocuvanjem polaznih
FZ) dekomponovati u BCNF projekcije.
5. Opisati algoritam sinteze 3NF relacija iz zadatog skupa funkcionalnih zavisnosti.
6. Neka je dat sledeci skup funkcionalnih zavisnosti:
AB
B C
C D
B D
B A
ABD E
radnik
projekat
posao
kancelarija
telefon
istorija
primanja
194
9 Normalne forme
za svakog radnika postoji opis svih poslova koje je radio; za svaki takav
posao postoji i istorija primanja radnika dok je radio taj posao;
svaka kancelarija ima skup (jedan ili vise) telefona.
Baza podataka sadrzi sledece podatke.
za svaki sektor: jedinstveni broj sektora, sredstva i jedinstveni broj
rukovodioca;
za svakog radnika: jedinstveni broj radnika, broj projekta na kome je
baza sadrzi i naziv
angazovan, broj kancelarije i broj telefona; takode,
svakog posla koji je radnik obavljao, kao i datum i iznos svakog primanja
na tom poslu;
za svaki projekat: jedinstveni broj projekta i sredstva;
za svaku kancelariju: jedinstveni broj kancelarije, povrsinu (u kvadratnim metrima) i brojeve svih telefona u toj kancelariji.
Projektovati relacijske sheme relacija koje su u 3NF i koje prikazuju ove podatke. Formulisati pretpostavke o odnosu uvedenih atributa, kao i zavisnosti
koje formalizuju te pretpostavke.
10
Semanti
cko modeliranje
Sistemi zasnovani na tradicionalnim modelima hijerarhijskom, mreznom i relacionom, imaju tendenciju da u znacajnoj meri razgranicavaju unutrasnji (fizicki)
nivo podataka od konceptualnog (logickog) i spoljasnjeg, ali ne u dovoljnoj meri i
spoljasnji nivo od konceptualnog. Osim toga, ovi modeli ne podrzavaju semantiku
podataka, vec je ona prepustena korisniku.
Tako, na primer, relacioni sistemi ne prepoznaju da su naslov knjige i
drzava semanticki razliciti atributi, pa je moguce, ako su definisani na istom
domenu (niske simbola), izvrsiti operaciju spajanja nad njima. Ovi modeli ne
prepoznaju ni da je, na primer, tip entiteta programer specijalni slucaj tipa
entiteta radnik, a da je ovaj specijalni slucaj tipa entiteta osoba, odnosno
da je ta vrsta hijerarhije tipova entiteta na bilo koji nacin specificna u odnosu
na opste pravilo referencijalnog integriteta (hijerarhija koju podrzava hijerarhijski
model je sasvim drugacijeg znacenja). Tako se dolazi do potrebe za prosirenjem
postojecih modela semantickim aspektom podataka, tj. do stvaranja novih modela
koji ukljucuju semanticku komponentu.
Predstavljanje znacenja podataka modelom podataka zove se semanticko modeliranje. Osnovni cilj semantickog modeliranja je da se sistemi zasnovani na novim
modelima ponasaju inteligentnije od sistema za upravljanje bazama podataka zasnovanih na klasicnim modelima. Svaki od modela do kojih se na taj nacin dolazi
poseduje manju ili vecu moc predstavljanja semantike podataka (izvesnu moc te
196
10 Semanticko modeliranje
Semanticki koncepti i modeli, cak i kada nemaju kompletnu podrsku operacijama i/ili pravilima integriteta, predstavljaju izuzetno znacajan okvir za logicko
projektovanje, s obzirom da prevazilaze osnovni nedostatak sintaksno orijentisane
metode normalizacije nedostatak semanticke komponente.
U daljem tekstu ovog poglavlja bice prvo detaljnije predstavljeni osnovni koncepti semantickih modela, a zatim ce biti prikazana tri modela koji mogu da ponesu
epitet semantickih prosireni relacioni model , model entiteta i odnosa i semanticki
model baze podataka.
Entitet, kao osnovni pojam koji se ne definise, a cije je znacenje stvar, bice,
od znacaja, koji se moze jednoznacno identifikovati, moze da popojava, dogadaj
stoji na razlicitim nivoima samostalnosti. Tako, samostalni entitet karakterise
njegova egzistencijalna nezavisnost od drugih entiteta u bazi, tj. on je od interesa
(u specificnoj bazi) sam za sebe. S druge strane, opisni entitet (ili zavisni entitet)
karakterise njegova egzistencijalna zavisnost od drugog entiteta u bazi, tj. on
opisuje, kao svojstvo, neki drugi entitet. Tako je u bazi o zaposlenima u nekom preduzecu, entitet RADNIK samostalni entitet, a entitet DETE RADNIKA opisni
entitet. Svaka od ovih vrsta entiteta ima sopstvena svojstva (u terminima raznih
modela atribute, karakteristike). Potreba za izdvajanjem opisnih entiteta nastaje
atributima
zbog strogo viseznacnih zavisnosti (onih koje nisu funkcionalne) medu
nekih entiteta (v. odeljak 8.5 o viseznacnim zavisnostima).
dva tipa entiteta (ili vise tipova entiteta), koji
Asocijacija je odnos M:N izmedu
moze imati i svoja sopstvena svojstva (oznaka M:N oznacava da jedan entitet
prvog tipa moze biti pridruzen vecem broju entiteta drugog tipa, i obratno). Tako se
entiteta tipa RADNIK i PREDUZECE
moze uspostaviti odnos asocijacija
izmedu
ZAPOSLENJE, sa svojstvima kao sto su datum zaposlenja, status, polozaj, prihod
tipova entiteta, ona se moze posmatrati
itd. Osim sto je asocijacija odnos izmedu
i kao entitet specificnog tipa asocijativni entitet.
dva tipa entiteta X i Y vazi odnos podtip/nadtip ako je svaki entitet tipa
Izmedu
X obavezno i entitet tipa Y . U ovom odnosu, tip entiteta X je podtip, a tip entiteta
Y je nadtip. Pri tome, tip entiteta Y moze biti nadtip za veci broj tipova entiteta
X1 , . . . , Xn u datom odnosu podtip/nadtip, dok je tip entiteta X podtip samo
tipa entiteta Y u tom odnosu podtip/nadtip. Stoga se odnos podtip/nadtip moze
posmatrati kao preslikavanje nadtipa u uniju podtipova. Na primer, tip entiteta
OSOBA moze biti nadtip za tipove entiteta RADNIK, STUDENT, PENZIONER,
NEZAPOSLENO LICE, dok su pobrojani tipovi podtipovi tipa entiteta OSOBA.
Nad istim parom tipova entiteta X, Y moze biti definisan veci broj odnosa tipa
podtip/nadtip, pa se svaki takav odnos imenuje znacenjem preslikavanja nadtipa u
uniju podtipova. Tako bi navedeni odnos mogao da se zove PO ZANIMANJU JE
(npr. osoba o1 je po zanimanju radnik), dok bi drugi odnos podtip/nadtip nad
JE PO ZANIMANJU (npr.
istim tipovima entiteta mogao da bude SUPRUZNIK
suprug(a) osobe o1 je po zanimanju radnik).
Pri izgradnji asocijativnog tipa entiteta, kao i pri izgradnji podtipa (nadtipa)
entiteta, od znacaja je, pre svega, nacin na koji iz jednog skupa tipova entiteta
10 Semanticko modeliranje
197
RADNIK
?
DETE
Slika 10.1: Samostalni i opisni entitet
U relacionom modelu ova dva tipa entiteta se predstavljaju dvema relacijama:
RADNIK
DETE
(IME, DOHODAK)
(IME, GODINE, IME RODITELJA)
(primarni kljucevi relacija su podvuceni; entitet DETE je, osim sto je egzistencijalno zavisan od entiteta RADNIK, i identifikaciono zavisan od njega, jer atribut
IME RODITELJA, koji ima isto znacenje kao atribut IME relacije RADNIK, ulazi
u primarni kljuc relacije DETE).
Asocijacija PREDAVANJE nad tipovima entiteta NASTAVNIK i PREDMET
moze se graficki (tzv. mreznom strukturom) predstaviti kao na dijagramu na slici
10.2 (jedno predavanje ukljucuje tacno jednog nastavnika i tacno jedan predmet,
198
10 Semanticko modeliranje
dok jedan nastavnik moze ucestvovati u vecem broju predavanja; isto vazi i za
predmet).
NASTAVNIK
PREDMET
@
S1
@
R
@
S2
PREDAVANJE
Ista asocijacija bi
NASTAVNIK
PREDMET
PREDAVANJE
(primarni kljucevi su podvuceni; asocijativni entitet PREDAVANJE nastao je agregacijom entiteta NASTAVNIK i PREDMET, pa je i primarni kljuc tog asocijativnog
entiteta skup primarnih kljuceva entiteta od kojih je nastao (IME, NAZIV). Ovi
atributi u relaciji PREDAVANJE su i strani kljucevi).
Generalizacija ukljucuje sledeci opsti uslov integriteta: za svaki primerak entiteta podtipa mora u bazi postojati i odgovarajuci primerak entiteta nadtipa.
Tako se generalizacija sa nadtipom OSOBA i podtipovima RADNIK, STUDENT,
PENZIONER, NEZAPOSLENO LICE moze u relacionom modelu predstaviti sa
nekoliko relacija. Jedna relacija odgovara nadtipu i sadrzi zajednicke atribute svih
podtipova, a po jedna relacija odgovara svakom podtipu i, osim primarnog kljuca
relacije nadtipa, sadrzi samo jos specificne atribute za taj podtip. Tako nas
primer moze imati sledecu relacionu reprezentaciju:
OSOBA (MLB, IME, ADRESA, ZANIMANJE)
RADNIK (MLB, STRUKA, PREDUZECE, RADNO MESTO)
STUDENT (MLB, FAKULTET, STATUS, GODINA, BR IND)
PENZIONER (MLB, STATUS, STAZ, IZNOS)
NEZAPOSLENO LICE (MLB, STATUS, NAKNADA).
Opsti uslov integriteta generalizacije bi se u relacionom sistemu mogao zadati
koriscenjem odgovarajuceg iskaza, npr. u jeziku SQL2,
CREATE ASSERTION GEN1 CHECK
( NOT EXISTS
( SELECT * FROM RADNIK
WHERE NOT EXISTS
( SELECT * FROM OSOBA
WHERE OSOBA.MLB = RADNIK.MLB ) ) )
199
(ne postoji n-torka relacije RADNIK za koju ne postoji n-torka relacije OSOBA sa
istim maticnim licnim brojem). Slicne uslove integriteta treba zadati i za relacije
STUDENT, PENZIONER, NEZAPOSLENO LICE.
Generalizacijom se u relacionom modelu izbegava druga vrsta nedostajuce vrednosti neprimenljivo svojstvo (npr. svojstvo BR IND za radnika, kada bi sve osobe
bile predstavljene samo jednom relacijom sa unijom atributa prethodnih relacija).
Druga strategija za predstavljanje generalizacije u relacionom modelu su
pogledi. Tako relaciona baza moze da se sastoji od relacija koje odgovaraju
podtipovima i sadrze sve atribute odgovarajucih podtipova:
RADNIK (MLB, IME, ADRESA, STRUKA, PREDUZECE, RADNO MESTO)
STUDENT (MLB, IME, ADRESA, FAKULTET, STATUS, GODINA, BR IND)
PENZIONER (MLB, IME, ADRESA, STATUS, STAZ, IZNOS)
NEZAPOSLENO LICE (MLB, IME, ADRESA, STATUS, NAKNADA).
Sada se relacija koja odgovara nadtipu koji ukljucuje samo zajednicke atribute
podtipova moze realizovati pogledom (u SQL2):
CREATE VIEW OSOBA AS
SELECT MLB, IME,
FROM RADNIK
UNION
SELECT MLB, IME,
FROM STUDENT
UNION
SELECT MLB, IME,
FROM PENZIONER
UNION
SELECT MLB, IME,
FROM NEZAPOSLENO
ADRESA
ADRESA
ADRESA
ADRESA
LICE
Jedan od prvih rezultata na razvoju semantickih modela jeste Osnovni semanticki model ([54]). On prepoznaje razne nivoe samostalnosti entiteta kao i
odnos asocijacije, ustanovljava pravila integriteta koja se odnose na egzistencijalnu
zavisnost asocijativnog entiteta od komponentnih entiteta, i ostaje u okviru strukture n-arnih relacija relacionog modela.
10.1
Pro
sireni relacioni model RM/T
Prvu verziju prosirenog relacionog modela RM/T definisao je Codd u radu [18]
(T u oznaci modela nema znacenje vezano za prirodu modela, vec dolazi od
geografskog pojma Tasmanija, gde je autor boravio u vreme rada na prosirenom
200
10 Semanticko modeliranje
relacionom modelu). To je kompletan model jer poseduje sva tri neophodna dela
modela.
Strukturni deo modela, koji je vrlo precizno definisan, bogat je i sadrzi veci
broj semanticki razlicitih tipova relacija. Model ne pravi nepotrebne razlike izmedu
entiteta i odnosa, vec se odnos posmatra kao specijalna vrsta entiteta. Integritetni
precizno definisan kroz niz pravila za ocuvanje integriteta,
deo modela je takode
njima. Najzad,
koja se odnose na pojedinacne tipove relacija (entiteta) i veze medu
RM/T ima specificni skup operacija za manipulisanje relacijama, kojima je prosiren
skup operacija osnovnog relacionog modela.
10.1.1
Prema klasifikacionoj shemi RM/T modela, svi entiteti su podeljeni u tri klase:
osnovni entiteti (odgovaraju samostalnim entitetima u ranijem smislu);
opisni entiteti (u ranijem smislu);
asocijativni entiteti (u ranijem smislu), koji se mogu graditi nad osnovnim,
opisnim ili asocijativnim tipovima entiteta.
raznim tipovima entiteta mogu postojati razliciti odnosi
Osim toga, kako medu
(asocijacija, podtip/nadtip), RM/T ukljucuje i formalnu katalosku strukturu kojom
se ti odnosi mogu registrovati u sistemu.
U osnovnom relacionom modelu, entiteti predstavljeni n-torkama relacije jednoznacno se identifikuju pomocu primarnog kljuca koji definise korisnik. U modelu
RM/T entiteti se identifikuju pomocu surogata, primarnih kljuceva koje generise
i kontrolise sistem. Dakle, svi primarni i strani kljucevi u RM/T su surogati.
Surogati su jedinstvene reprezentacije entiteta; to su nepromenljive i neponovljive
vrednosti, od kojih svaka odgovara pojedinacnoj n-torci relacije i koje se generisu
pri unosenju n-torki kojima se predstavljaju entiteti.
Entiteti svih klasa predstavljeni su dvema vrstama relacija: E-relacije i Prelacije.
Svakom tipu entiteta (bez obzira na njegovu klasu) odgovara jedna E-relacija.
E-relacija za dati tip entiteta je unarna relacija (sa jednom kolonom) koja sadrzi
surogate svih entiteta tog tipa, predstavljenih u bazi. Sa druge strane, svakom
tipu entiteta odgovara jedna ili vise P-relacija, od kojih svaka sadrzi po dva ili
vise atributa: jedan od atributa je surogat odgovarajuceg tipa entiteta, a ostali
atributi su neki (moze i svi) atributi tog tipa entiteta. Dakle, E-relacija registruje
egzistenciju entiteta, a P-relacije registruju njegova svojstva. Na primer, tip entiteta RADNIK sa atributima MLB, IME, ADRESA, STRUKA moze se predstaviti
jednom E-relacijom
RADNIK( RADNIK$)
i trima P-relacijama:
201
10.1.2
Osim dva opsta pravila integriteta koja vaze za osnovni relacioni model (integritet
entiteta i referencijalni integritet), RM/T poseduje jos niz opstih pravila integriteta:
Integritet entiteta u RM/T : E-relacije ne prihvataju nedostajuce vrednosti;
nad E-relacijama moguce je vrsiti operacije unosenja i brisanja, ali ne i operacije azuriranja.
Integritet svojstva: Ako n-torka t postoji u nekoj P-relaciji, onda odgovarajuca E-relacija mora imati registrovano postojanje entiteta koji t opisuje,
tj. sistemski primarni kljuc (surogat) n-torke t mora postojati u odgovarajucoj E-relaciji.
Integritet opisnog entiteta: Ako opisni entitet postoji u bazi, onda u bazi
mora postojati i entitet koji taj opisni entitet opisuje.
Integritet asocijacije: Asocijativni entitet moze postojati u bazi (kao i njegov
surogat u odgovarajucoj E-relaciji), cak i ako je jedan ili vise entiteta koji
ucestvuju u toj asocijaciji nepoznato. U tom slucaju surogat E- (surogat
202
10 Semanticko modeliranje
nedostajuce vrednosti) oznacava da je entitet ucesnik nepoznat. Ovo pravilo
ne vazi u slucaju da postoji eksplicitni uslov integriteta koji to zabranjuje.
10.1.3
RM/T katalog
DOMENI
RELACIJE
ATRIBUTI
REL ATR
ATR DOM
(
(
(
(
(
Prve tri relacije opisuju sve domene, relacije i atribute u bazi, i sadrze po jednu
n-torku za svaki domen, relaciju odnosno atribut, redom. Druge dve relacije predstavljaju veze relacija i pripadnih atributa, odnosno atributa i pripadnih domena.
Znacenje pojedinih atributa (onih za koje to nije ocevidno) je sledece:
UREDENJE
u relaciji DOMENI ukazuje na to da li je nad datim domenom
definisana relacija poretka > (DA/NE);
REL TIP je vrsta relacije E-relacija (osnovna, opisna ili asocijativna,
podtip), P-relacija ili kataloska relacija;
KLJUC ukazuje na ucesce atributa u korisnicki definisanom kljucu odgovarajuceg entiteta (DA/NE).
203
UCE
PN ( PN$, Podtip-E-ime-relacije, Nadtip-E-ime-relacije, Kriterijum)
(veza E-relacija svakog podtipa i nadtipa u bazi; uz imena ovih
relacija, u svakoj n-torci relacije PN prisutan je kriterijum specijalizacije nadtip/podtip; npr. POSAO bi mogao da bude kriterijum specijalizacije nadtipa RADNIK u podtip LEKAR).
10.1.4
204
10 Semanticko modeliranje
tog tipa entiteta, iskljucujuci surogat. Rezultat bi se u RM/T modelu dobio primenom operacije PROPERTY na tip entiteta RADNIK, tj. rezultat je vrednost
izraza PROPERTY( RADNIK ). Ova operacija zamenjuje citav sledeci niz operacija
osnovne relacione algebre i drugih operacija RM/T prosirenja:
1. izvrsiti restrikciju kataloske relacije PE po uslovu E-ime-relacije = RADNIK
(dobiju se n-torke koje se odnose na E i P relacije tipa entiteta RADNIK);
2. projektovati rezultat koraka 1 na atribut P-ime-relacije (dobijaju se imena
svih P-relacija koje odgovaraju tipu entiteta RADNIK);
3. rezultatu koraka 2 dodati i ime E-relacije tipa entiteta RADNIK (unija);
4. izvrsiti spoljasnje prirodno spajanje (v. tacku 2.1.3 Prosirena relaciona
algebra) svih relacija cija su imena u skupu koji je rezultat koraka 3;
5. eliminisati iz rezultata koraka 4 atribut RADNIK$.
Od operacija koje ne pripadaju osnovnoj relacionoj algebri, u realizaciju ovog
primera trebalo bi ukljuciti dve operacije: DENOTE (posle koraka 3 da bi se od
skupa imena pripadnih relacija dobio skup samih relacija) i operaciju COMPRESS
sa prvim operandom OUTER NATURAL JOIN (spoljasnje prirodno spajanje) i
drugim operandom skupom relacija dobijenih prethodnom primenom operacije
DENOTE.
Prosireni relacioni model ukljucuje i jednu vrstu nedostajucih vrednosti i sve
operacije koje se na njih odnose (v. tacku 2.1.3).
10.2
Pro
sireni model entiteta i odnosa (PMEO)
Model entiteta i odnosa definisao je Peter Chen u radu [13]. To i nije u pravom
smislu model, jer ne poseduje manipulativni deo, dok je integritetni deo implicitno
podrzan. Uz model je razvijena i dijagramska tehnika za predstavljanje entiteta
njima, sa svim njihovim karakteristikama. Bez obzira na nekomi odnosa medu
pletnost ovog modela, on je doziveo veliku popularnost, zahvaljujuci semantickim
konceptima koje podrzava, kao i dijagramskoj tehnici koja svojom preglednoscu
pojednostavljuje predstavljanje entiteta i odnosa u modelu i olaksava razumevanje
njihovog znacenja.
Posebnu primenu model entiteta i odnosa ima u realizaciji efikasne i produktivne semanticke metode logickog projektovanja. Shema baze podataka koja se
dobije ovom metodom obicno se (automatski) preslikava u shemu relacione baze
podataka, na koju se primenjuje neki od relacionih jezika za definisanje i manipulisanje podacima. Zato ([27]), model entiteta i odnosa predstavlja samo tanki
sloj nad relacionim modelom. Ako je proces projektovanja, zasnovan na modelu
entiteta i odnosa, korektno sproveden, tj. ako su uoceni svi bitni entiteti i pravilno
205
njima, onda dobijena relaciona baza podataka ima svouspostavljeni odnosi medu
jstvo da su joj, gotovo uvek, sve relacije u nekoj od visih normalnih formi (bar u
3NF).
Model entiteta i odnosa je vec dugi niz godina najzastupljenija metoda logickog
projektovanja baze podataka. Doziveo je veci broj razlicitih prosirenja i modifikacija (u odnosu na Chen-ovu varijantu), tako da je i danas u upotrebi veci broj
verzija tog modela. Ovde ce biti prikazana jedna od tih verzija, prosireni model
entiteta i odnosa, onako kako je izlozen u [62].
10.3
ZAPOSLENI
mlb
ime
206
10 Semanticko modeliranje
ZAPOSLENI
H
HHH
radi -
Hzapo
sljava
HZAPOSLENJE
(1,2)
(1,M)
HH
PREDUZECE
RADNIK
muz
(0,1)
@
- BRAK @
@
@
6
zena
(0,1)
Pri izboru tipova entiteta vodi se racuna o tome da svaki atribut moze imati
najvise jednu vrednost u jednom primerku entiteta (primerak entiteta odgovara
n-torci relacije relacionog modela). To se ponekad postize proglasavanjem atributa
starog i novog entiteta. Na primer,
za novi entitet i uspostavljanjem odnosa izmedu
jedno svojstvo tipa entiteta KNJIGA je IME AUTORA, ali, kako jedna knjiga moze
imati vise autora, uvodi se novi tip entiteta AUTOR i odnos KNJIGA-AUTOR sa
preslikavanjima napisana (1,M) i napisao (0,M) (slika 10.6).
Regularni (nezavisni) entitet je termin koji odgovara samostalnom entitetu u
ranijem smislu i koji se moze identifikovati pomocu sopstvenih atributa (npr. entitet
ZAPOSLENI(mlb, ime)).
Slabi entitet je termin koji odgovara opisnom entitetu u ranijem smislu; on se
ne moze identifikovati samo pomocu sopstvenih atributa, vec se moraju koristiti
207
H
HHH
HH napisao
napisana
- KNJIGA-AUTOR
(1,M) HH
(0,M)
HH
H
H
KNJIGA
AUTOR
odnosi sa drugim entitetima. Pri tome se koriste samo funkcionalni odnosi (jedno
preslikavanje definisano odnosom ima kardinalnost (1,1)), a identifikovanje pomocu
do regularnog entiteta.
odnosa moze se primeniti i rekurzivno, dok se ne dode
Ovi odnosi se predstavljaju specificno, bez romba. Slabi entitet je egzistencijalno
(i identifikaciono) zavisan od entiteta pomocu kojeg se identifikuje, pa proizvodi
anomalije brisanja i unosenja, samo sto to sada nisu anomalije vec karakteristike
znacenja podataka. Primer slabog entiteta DETE RADNIKA sa atributima ime i
prezime, starost, predstavljen je na slici 10.7.
RADNIK
starost
?
DETE
ime i prez.
208
10 Semanticko modeliranje
@
S
@
@
?
j
?
?
?
STUDENT
RADNIK
struka
(1,1)
?
@
@
S
@
@
?
j
?
?
DAKTILOGRAF
LEKAR
PENZIONER
?
NEZAP.LICE
MATEMATICAR
209
se u PMEO agregirani entitet, ili mesovit tip entitet odnos. Agregirani entitet
predstavlja se rombom u pravougaoniku.
Inverzni postupak agregaciji je dekompozicija. Tipovi entiteta nad kojima je
agregirani entitet zovu se komponente agregacije. Agregirani entitet je
izgraden
egzistencijalno zavisan od komponenata, i njegovo preslikavanje u komponentni tip
je uvek (1,1); zato se ovo preslikavanje i njegova kardinalnost na dijagramu ne
oznacavaju. Kardinalnost preslikavanja komponente u agregirani entitet se mora
navesti jer moze biti proizvoljna.
Primer agregiranog entiteta je tip entiteta PREDAVANJE, dobijen iz tipova
entiteta NASTAVNIK i PREDMET (to su komponente agregacije), sa sopstvenim
atributima mesto i vreme (slika 10.9).
vreme
mesto
PREDMET
Q
-PREDAVANJEQ
Q
(0,4)
(0,3)
Q
NASTAVNIK
Primarni kljuc agregiranog entiteta sastoji se od primarnih kljuceva komponentnih entiteta, inace se agregirani entitet ponasa kao i svaki drugi entitet, tj. moze
da bude u odnosu sa nekim drugim entitetom, moze da se specijalizuje itd.
Agregirani entitet (moze i bez sopstvenih atributa) koristi se i kada je potrebno
veceg broja tipova entiteta (vise od dva, slika 10.10).
predstaviti odnos izmedu
Skup tipova entiteta i odnosa kojima se u prosirenom modelu entiteta i odnosa
modeliraju podaci iz baze podataka, zajedno sa njihovim atributima, primarnim
kljucevima, preslikavanjima koja definisu i kardinalnoscu tih preslikavanja, obrazuje
shemu baze podataka prosirenog modela entiteta i odnosa. Ova se shema najpreglednije predstavlja dijagramom PMEO.
210
10 Semanticko modeliranje
PREDMET
STUDENT
ispit-iz
(0,M)
?
Q
Q
Q ispitivao
polagao
- POLAGANJE Q
(0,M)
(0,M) QQ
Q
Q
NASTAVNIK
agregirani entitet se prevodi u relaciju koja sadrzi sve njegove atribute i primarne kljuceve komponenata;
podtip nekog nadtipa entiteta prevodi se u relaciju koja sadrzi njegove
specificne atribute i primarni kljuc odgovarajuceg nadtipa;
odnos se prevodi u relaciju koja sadrzi primarne kljuceve entiteta koji grade
odnos;
ako se u nekom odnosu jedan tip entiteta preslikava u drugi tip entiteta preslikavanjem kardinalnosti (1,1), onda se prvom tipu entiteta kao atribut do njih se ne prevodi
deljuje primarni kljuc drugog tipa entiteta; odnos izmedu
u posebnu relaciju.
10.3.1
Primer logi
ckog projektovanja
211
Relacije predava
c, predmet, predmet-smer i smer su i u 3NF. U relaciji
predavanje2 prisutna je tranzitivna zavisnost sporednog atributa sprat od primarnog kljuca ( {predavac#, sifra predmeta, sifra smera, vreme} br.sale; br.sale
sprat). Zato se relacija predavanje2 moze zameniti, bez gubljenja informacije,
sledecim relacijama koje su u 3NF:
sala
( br.sale, sprat)
predavanje3 ( predavac#, sifra predmeta, sifra smera, vreme, br.sale).
Dakle, shema relacione baze podataka dobijena metodom normalnih formi sastoji se od relacijskih shema za relacije (koje su u 3NF):
predava
c, predmet, predmet-smer, smer, sala, predavanje3.
Logicko projektovanje relacione baze zasnovano na prosirenom modelu entiteta
i odnosa polazi od uocavanja entiteta i njihovih odnosa, koje treba predstaviti.
Uocimo regularne tipove entiteta (sa atributima):
predava
c:
predmet:
smer:
sala:
212
10 Semanticko modeliranje
br.sale
sprat
sala
@
-
@
mesto
@
@
6
(0,M)
predaje se-na-smeru
(1,N)
godina
Q
Q
Q
predmet Q predaje se
Q
Q
- predavanje Q (1,3)
Q
Q na-smeru (0,M)
Q
Q
Q
Q
fond.c.
6
6
?
Q
(M,N)
sadrzi
smer
(0,M)
predaje
predavac
zvanje
sifra
naziv
pred#
ime
(1,1)
Q
Q
- odrzavanje Q
Q
Q
6
stepen
(0,M)
vreme
Do sheme relacione baze podataka moze se sada doci primenom pravila za transformaciju entiteta i odnosa u relacije. Tako, samostalni entiteti predava
c, predmet, smer i sala, predstavljaju se relacijama sa sopstvenim atributima.
213
(sifra, naziv )
(predavac#, ime, zvanje, stepen )
(sifra, naziv )
(br.sale, sprat )
(sifra predmeta, sifra smera, godina, fond casova)
(sifra predmeta, sifra smera, predavac#, vreme, br.sale).
10.4
Semanti
cki model baze podataka
Semanticki model baze podataka (SDM A Semantic Database Model, [36]) moze
se smatrati jednim od prvih modela podataka iz nove generacije generacije objektnih modela ([43]). To je formalizam visokog nivoa za struktuiranje i opisivanje
se obraduju
aplikacijom.
2. Entiteti su organizovani u klase, koje predstavljaju skupove entiteta koji nose
odredeno
znacenje. Struktura i organizacija SDM baze podataka zadaje se
SDM shemom, kojom se identifikuju klase u bazi podataka. Klasa ima ime
(ili vise sinonimnih imena) i skup clanova entiteta, homogene strukture.
214
10 Semanticko modeliranje
10.5
Pitanja i zadaci
podtip/nadtip
generalizacija
specijalizacija
215
Deo IV
Fizi
cka organizacija podataka
217
11
Strukture podataka i
pristupne metode
Najnizi nivo ANSI/SPARC arhitekture sistema baza podataka je unutrasnji nivo.
To je fizicka reprezentacija (obicno na disku) cele baze podataka, niskog nivoa, koja
se sastoji od velikog broja fizickih slogova (ili, krace, slogova1 ) razlicitih tipova.
Fizicki slogovi su prema svom tipu, s tacke gledista SUBP, grupisani u datoteke
koje imaju jedinstvene identifikatore.
Fizicki slog odgovara logickom slogu koji predstavlja (npr. n-torci specificne
relacije), ima jedinstveni identifikator i sastoji se od niza bajtova. Prvih nekoliko
bajtova sadrzi informaciju o tipu fizickog sloga, sledecih nekoliko bajtova je rezervisano za duzinu sloga u bajtovima ako je tip sloga promenljive duzine, a zatim
slede oznake i vrednosti fizickih polja.
Zadatak SUBP je da zahteve koje korisnik postavlja na konceptualnom nivou
nad logickim tipovima podataka (npr. relacijama i n-torkama) preslika, na unutrasnjem nivou, u zahteve nad datotekama i fizickim slogovima (preslikavanje
skupa relacija u skup datoteka ne mora biti 11; v. sledeci odeljak). Zahtevi koje
SUBP moze da proizvede na unutrasnjem nivou su sledeci:
1. pronaci fizicki slog s iz datoteke d;
2. izmeniti fizicki slog s u datoteci d;
3. dodati novi fizicki slog datoteci d i dobiti njegov identifikator;
4. izbrisati fizicki slog s iz datoteke d;
5. kreirati novu datoteku d;
6. ukloniti datoteku d.
1 Terminologija,
218
219
SUBP
zahtev za
fiz.slogom
6 nadeni
fiz.slog
?
upravljac
tekama
6 nadena
zahtev za
stranicom ?
stranica
upravljac
U/I operacija
nad diskom
diskom
6 procitani
podaci
?
podaci
na disku
220
Preslikavanje stranice u fizicke adrese na disku koje odgovaraju toj stranici, ostvaruje upravljac diskom (slika 11.1). Zato je upravljac tekama u mogucnosti da
postavi (a upravljac diskom da izvrsi) sledece vrste zahteva:
1. pretraziti stranicu p iz stranicnog skupa st;
2. izmeniti stranicu p u stranicnom skupu st;
3. dodati novu stranicu stranicnom skupu st i dobiti broj te stranice, p;
4. ukloniti stranicu p iz stranicnog skupa st.
Preslikavanje datoteke u stranicne skupove ostvaruje upravljac tekama. Tako se
zahtevi koji se odnose na fizicki slog, a koje SUBP postavlja na unutrasnjem nivou
SUBP izgraduje
svoj sopstveni upravljac tekama da bi povecao efikasnost pristupa
podacima.
Pored fizicke reprezentacije podataka, fizicka organizacija podrazumeva i algoritme obrade podataka. Zato ce u ovoj glavi, osim elemenata fizicke reprezentacije,
biti skicirani i odgovarajuci algoritmi obrade.
11.1
Fizi
cka reprezentacija relacije
Jedna relacija moze imati fizicku reprezentaciju koja se sastoji od veceg broja datoteka (s tacke gledista SUBP), tj. od veceg broja stranicnih skupova (s tacke
gledista operativnog sistema). U tekstu koji sledi bice razmatrana samo fizicka
reprezentacija s tacke gledista SUBP koji ukljucuje funkcije upravljaca tekama.
Fizicka reprezentacija jedne relacije ukljucuje, obavezno, datoteku podataka, u
oznaci DP, koja sadrzi fizicke slogove koji odgovaraju podacima koji se vide na
221
SUBP
(konceptualni nivo):
i1
i2
i3
i4
i5
i6
i7
i8
i9
i10
k1
relacija-1
(K)
k2
k3
relacija-2
(I)
k4
k5
SUBP
(unutrasnji nivo):
datoteka-1:
f.k1
f.i1
f.i3
2
f.i2
f.i4
f.k4
4
...
f.k5
f.k2
f.k3
1
datoteka-2:
f.i5
f.i6
f.i7
f.i9
f.i8
f.i10
...
TEKAMA:
UPRAVLJAC
stranicni-skup-1 HH
1
2
3
H
j
4
f.k1
f.k4
f.i1 f.i2
f.i5 f.i6
...
f.i3 f.i4
f.k5
f.k2
f.i7 f.i8
f.k3
f.i9 f.i10
:
H
YH
*
H stranicni-skup-2
222
karakteristika uredaja
(brzina pomeranja glava diska), i nece se uzimati u obzir
pri daljem razmatranju. Zato ce se vreme citanja, odnosno upisa stranice smatrati
vreme obrade stranice u unutrasnjoj
jednakim za sve stranice na disku. Takode,
memoriji je za nekoliko redova velicine manje od vremena citanja, odnosno upisa
stranice na disk, pa se ni ono nece uzimati u obzir. Tako ce jedina mera efikasnosti
pojedine fizicke organizacije biti broj stranica koje je potrebno upisati, odnosno
procitati sa diska, u realizaciji upita pri toj fizickoj organizaciji.
Razmotrimo sledeci primer. Neka datoteka podataka sadrzi n slogova grupisanih
u stranice, od kojih svaka moze da primi po m slogova. Dakle, datoteka podataka
sadrzi (logicki, jer stranicni skup koji joj odgovara moze da sadrzi i slogove drugog
tipa) n/m stranica. Neka je vreme citanja, odnosno upisa pojedine stranice jednako t. Pretpostavimo da je potrebno obraditi sve slogove iz te datoteke podataka.
Ako se slogovima pristupa serijski (redom, kako su upisani), za obradu svih slogova
potrebno je vreme (n/m) t, tj. vreme obrade pojedinacnog sloga pri ovakvom
pristupu je ((n/m) t)/n = t/m. Ako postoji mogucnost direktnog pristupa slogu
(po nekom svojstvu tog sloga), i ako slogovi nisu grupisani po tom svojstvu, re
alna je pretpostavka da se dva sloga koja se obraduju
jedan za drugim nalaze na
razlicitim stranicama. Tada je za obradu cele datoteke podataka potrebno vreme
n t, tj. vreme obrade pojedinacnog sloga pri ovakvom pristupu je n t/n = t.
Ovo razmatranje dovodi do zakljucka da, kada je potrebno obraditi veliki broj slogova iz datoteke podataka, vreme obrade po slogu, pa i celokupno vreme obrade
svih slogova daleko je manje u slucaju da se slogovima pristupa sekvencijalno
u fizickom redosledu stranica, nego u slucaju da je pristup stranicama slobodan
(preko reda).
Indeksna datoteka, u oznaci ID, sa logicke tacke gledista odgovara funkciji koja
223
ID : dom(A) P(DP).
(P je oznaka za partitivni skup).
Indeksna datoteka ID moze predstavljati indeks kod indeks-sekvencijalne reprezentacije ili indeks kod indeksne reprezentacije. U prvom slucaju, indeksna datoteka
izgraduju
nad razlicitim fizickim reprezentacijama podataka, kao i metoda pristupa
i algoritama obrade. Naredne dve glave bice posvecene sofisticiranijim i efikasnijim
fizickim organizacijama.
Razliciti algoritmi obrade datoteke podataka, pri razlicitim fizickim organizacijama, podrazumevaju sortiranost datoteke podataka po nekom atributu (atribut
sortiranja). S obzirom da je to datoteka na disku, za njeno sortiranje primenjuje se neki od algoritama spoljasnjeg sortiranja. U sledecem odeljku bice opisan
jedan jednostavan ali dosta efikasan algoritam algoritam spoljasnjeg sortiranja
balansiranim spajanjem ([55], [1]).
11.2
224
pristupa redom kojim su upisani (jednom slogu se moze pristupiti samo tako sto se
prethodno pristupi svim slogovima, od pocetka datoteke, koji mu prethode).
DP@
@
@
R
@
P1
P2
..
.
Pn
a) pocetna distribucija
P1
P2 P @
PP@
P
q
P
R
@
..
@
.
@
@
@
R
Pn
Pn+1
- P1
Pn+2
- P2
..
.
..
.
P2n
- Pn
Na primer, pretpostavimo da sekvencijalna datoteka DP sadrzi slogove sa vrednostima atributa sortiranja 1, 5, 31, 7, 9, 3, 13, 6, 17, 8, 25, 27, 2, 10, da unutrasnja
memorija moze da sortira tri sloga, i da je na raspolaganju sest pomocnih sekvencijalnih datoteka. Tada se postupak sortiranja datoteke DP odvija kroz sledece faze
(u datotekama DP, P1 , . . . , P6 oznacavaju se samo vrednosti atributa sortiranja,
ali se u njih u stvari upisuju celi slogovi sa tim vrednostima atributa sortiranja):
225
po
cetna distribucija:
P1 : 1, 5, 31, 8, 25, 27
P2 : 3, 7, 9, 2, 10
P3 : 6, 13, 17
spajanje i distribucija:
P4 : 1, 3, 5, 6, 7, 9, 13, 17, 31
P5 : 2, 8, 10, 25, 27
P6 :
prepisivanje drugog u prvi pomo
cni skup:
P1 : 1, 3, 5, 6, 7, 9, 13, 17, 31
P2 : 2, 8, 10, 25, 27
P3 :
spajanje i distribucija:
P4 : 1, 2, 3, 5, 6, 7, 8, 9, 10, 13, 17, 25, 27, 31
P5 :
P6 :
prepisivanje drugog u prvi pomo
cni skup:
P1 : 1, 2, 3, 5, 6, 7, 8, 9, 10, 13, 17, 25, 27, 31
P2 :
P3 :
DP := P1 .
Dakle, posle dve primene spajanja sa distribucijom, datoteka DP postaje sortirana.
Globalni algoritam sortiranja sekvencijalne datoteke balansiranim spajanjem
moze se opisati sledecim pseudoprogramom:
Algoritam sortiranja balansiranim spajanjem
ulaz: sekvencijalna datoteka DP, atribut sortiranja A;
izlaz: sortirana datoteka DP;
pomo
cne strukture: sekvencijalne datoteke P1 , . . . , P2n ;
BEGIN
izvrsiti pocetnu distribuciju sekvenci iz DP u P1 , . . . , Pn ;
REPEAT
izvrsiti spajanje sekvenci iz datoteka P1 , . . . , Pn
226
Algoritam po
cetne distribucije sekvenci
ulaz: sekvencijalna datoteka DP, atribut sortiranja A i kapacitet memorije m;
izlaz: sekvencijalne datoteke P1 , . . . ,Pn koje sadrze sekvence datoteke DP;
BEGIN
pripremiti datoteku DP za citanje i datoteke P1 , . . . ,Pn za upis;
i := 1; /*indeks pomocne datoteke*/
REPEAT
ucitati sledeci niz od m slogova iz datoteke DP u unutrasnju memoriju
(ili k < m ako je ostalo samo k),
sortirati ga i sortiranu sekvencu upisati u datoteku Pi ;
i := (i mod n) + 1
UNTIL kraj datoteke DP
END.
227
228
b := 0; /* broj obradenih
(procitanih i spojenih) sekvenci ulaznog niza */
FOR svaku sekvencu si , i = 1, . . . , n, DO
IF sekvenca si prazna
THEN tekucii := prvi slog sekvence si
ELSE
BEGIN
tekucii := indikator kraja;
b := b +1
END;
11.3
Sekvencijalna organizacija
Sekvencijalna organizacija podataka karakterise se iskljucivo sekvencijalnim (rednim) pristupom slogovima u datoteci podataka. Ova organizacija ima dve varijante
229
neuredenu,
koja se zove i gomila (engl. heap), i uredenu
varijantu. U prvoj
varijanti fizicka reprezentacija relacije ukljucuje samo jednu datoteku datoteku
podataka (DP), u koju se slogovi unose hronoloskim redom u redosledu kojim
stizu. U drugoj varijanti, slogovi datoteke podataka su sortirani u redosledu nekog
atributa sortiranja. Slogovi koji se unose posle pocetnog sortiranja unose se u drugu
datoteku tzv. datoteku promena (DPR), i to hronoloski, kao i u prvoj varijanti.
Slogovi koje treba brisati ne izbacuju se (ni u jednoj varijanti), vec se obelezavaju
nevazecim, sve do povremene reorganizacije kada se fizicki izbacuju svi obelezeni
slogovi. Pri reorganizaciji se, u drugoj varijanti, i objedinjuju i sortiraju datoteka
podataka i datoteka promena.
11.3.1
Efikasnost izvr
savanja jednorelacionih upita
230
Primer upita grupne obrade sa restrikcijom je: naci nazive jugoslovenskih izdavaca ciji status nije manji od 20. Ovaj upit u SQL-u ima oblik:
SELECT NAZIV
FROM
I
WHERE STATUS >= 20 AND DRZAVA = Jugoslavija
Grupna obrada slogova u zadatom redosledu zadatog atributa zahteva sortiranje
DP datoteke u neuredenoj
varijanti, odnosno DP i DPR datoteka (zajedno), u
koji odreduje
redosled, jer se onda zahteva samo sortiranje datoteke promena i
sekvencijalno spajanje dve sortirane datoteke (v. prethodni odeljak).
Na primer, upit prikazati naziv i status svih izdavaca u abecednom poretku
naziva predstavlja grupnu obradu u zadatom redosledu:
SELECT NAZIV, STATUS
FROM
I
ORDER BY NAZIV
Za sortiranje DP datoteke, odnosno DP i DPR datoteka, koje se odnose na
relaciju I, moze se koristiti neki od algoritama spoljasnjeg sortiranja (v. odeljak
11.2).
Izbor sloga, tj. operacija pretrazivanja, potrebna je pri izvrsavanju svake od
operacija azuriranja odnosno brisanja. Zbog toga je efikasnost izvrsenja ovih operacija direktno zavisna od efikasnosti izbora (koja je razmotrena u ovom paragrafu). Sledeci paragraf odnosi se na razmatranje upravo tih operacija.
A
zuriranje, brisanje i uno
senje.
Azuriranje i brisanje sloga, odnosno grupe
slogova analogno je izboru, pa i vreme potrebno za azuriranje, odnosno brisanje
odgovara vremenu potrebnom za izbor. Umesto fizickog brisanja, slog se obelezava
nevazecim, s tim sto vreme potrebno za brisanje pojedinacnog sloga ukljucuje jos i
vreme periodicne reorganizacije (pri kojoj se slogovi de facto brisu), izracunato po
slogu.
Unosenje novog sloga realizuje se kao hronolosko dodavanje sloga datoteci po
dataka odnosno datoteci promena; u slucaju uredene
varijante, vreme unosenja
ukljucuje i vreme povremene reorganizacije, izracunato po pojedinacnom slogu,
kojom se datoteka podataka i datoteka promena objedinjuju u novu datoteku podataka, a datoteka promena prazni.
11.3.2
231
Izvr
savanje vi
serelacionih upita
Svi viserelacioni upiti ukljucuju neki oblik operacije spajanja, a najcesce i neki
oblik restrikcije i projekcije. Zato osnovni algoritam izvrsavanja dvorelacionih upita
(analogno viserelacionih), za sekvencijalnu fizicku reprezentaciju relacija, ima dva
globalna koraka:
1. Sortirati obe datoteke podataka (i datoteke promena, ako postoje) po atributima spajanja; u prvom prolazu kroz datoteke pri sortiranju izvrsiti restrikcije
i projekcije na izlazne atribute i atribute spajanja;
2. Izvrsiti sekvencijalno prirodno spajanje sortiranih datoteka, uz istovremenu
projekciju na izlazne atribute.
232
END
UNTIL kraj jedne od datoteka P1 , P2
END.
Spajanje dva skupa slogova sa istom vrednoscu atributa spajanja (poslednji
korak prethodnog algoritma) je spajanje svakog sloga iz prvog skupa sa svakim
slogom iz drugog skupa. To je radnja koja se najcesce izvrsava bar delimicno u
unutrasnjoj memoriji, jer bi inace zahtevala vracanje kroz jedan od skupova, sto
nije karakteristicno za sekvencijalni pristup.
Na primer, u izvrsavanju upita
SELECT NAZIV, K SIF
FROM
I, KI
WHERE I.I SIF = KI.I SIF AND TIRAZ > 3000
pri cemu su obe relacije (I, KI) fizicki organizovane sekvencijalno, prvo bi se sortirala
datoteka podataka (i datoteka promena, ako postoji) relacije I, uz projektovanje
na atribute I SIF, NAZIV, odnosno datoteka podataka relacije KI, uz restrikciju
TIRAZ > 3000 i projekciju na atribute K SIF, I SIF; zatim bi se rezultati ovih
operacija sekvencijalno prirodno spojili uz projekciju na atribute NAZIV, K SIF.
Osim opisanog osnovnog algoritma spajanja sekvencijalnih datoteka prethodnim sortiranjem, moguce je operaciju spajanja izvrsiti i algoritmom ugnjezdenih
petlji. Prema ovom algoritmu, jedna sekvencijalna datoteka se cita jedanput, slog
po slog. Za svaki slog te datoteke citaju se, redom, svi slogovi druge sekvencijalne
datoteke, svaki se poredi sa slogom prve datoteke i, ako ispunjava uslov spajanja,
spaja se sa njim.
Algoritam koji ce se primeniti u konkretnom slucaju bira se na osnovu procene
cene, uzimajuci u obzir ucestalost promena sekvencijalnih datoteka. Ako su datoteke sporopromenljive, tj. ako se veci broj operacija spajanja nad tim da dva azuriranja, cena sortiranja (izracunata po jednom spatotekama izvrsi izmedu
svaka dva spajanja sadrzaj
janju) je opravdana i prihvatljiva. Ako se pak izmedu
relacija promeni, sortiranje moze biti neopravdano skupa operacija.
Prednost uredene
varijante u izvrsavanju dvorelacionih (i viserelacionih) upita
postoji samo u slucaju da je atribut spajanja bas atribut sortiranja bar jedne od
relacija koje ucestvuju u tom upitu, jer ta relacija ne prolazi kroz korak sortiranja.
Moze se zakljuciti da su u slucaju sekvencijalne reprezentacije potrebna cesta
11.4
233
Indeks-sekvencijalna organizacija
234
Mada indeksna datoteka ima mnogo manje slogova, a slogovi manje polja nego
datoteka podataka, i za njeno sekvencijalno pretrazivanje potrebno je vreme koje
moze da postane nezanemarljivo. Zbog toga je pozeljno i nad indeksnom datotekom
imati indeks koji bi omogucio efikasni pristup slogu (odnosno stranici) u indeksnoj datoteci. Poboljsanje efikasnosti indeks-sekvencijalne reprezentacije postize se
fizickim grupisanjem delova (stranica) datoteke podataka, zone prekoracenja i indeksne datoteke, pri cemu se deo indeksa u grupi, koji se odnosi na stranice datoteke
podataka i zone prekoracenja u grupi, zove indeks grupe. Grupe se obicno realizuju
po cilindrima diska. Pored indeksa grupa, postoji i glavni indeks (glavna indeksna
datoteka) koji sadrzi parove oblika
(redni-broj-grupe, maksimalna-vrednost-kljuca-u-grupi)
235
DP
..
.
7
pkmax12 .
..
str11
..
.
..
.
IGk
pkmaxk . XXX
X
X
z pk
maxk
1
..
.
str12
pkmax1 .
..
.
ZP1 :
G1 :
-
GI
ZP
..
.
..
.
Gk : strk1
ZPk :
strk2
..
.
?
-
11.4.1
Efikasnost izvr
savanja jednorelacionih upita
Pretra
zivanje.
Izbor pojedinacnog sloga u ovoj reprezentaciji efikasna je operacija samo u slucaju izbora po primarnom kljucu, inace indeks nije od koristi. U
slucaju izbora po primarnom kljucu, izbor se sastoji od sledecih radnji:
pretraziti glavni indeks; naci slog sa najmanjom vrednoscu primarnog kljuca
236
Od velicine glavnog indeksa i indeksa grupe zavisi broj stranica koje treba
do stranice u datoteci podataka. Od duzine lanaca
procitati dok se ne dode
prekoracenja zavisi broj stranica koje treba procitati od stranice datoteke podataka
do stranice u zoni prekoracenja koja sadrzi trazeni slog. Indeks je sortiran ali se
pretrazuje sekvencijalno, pa vreme pretrazivanja indeksa (uspesnog ili neuspesnog)
jeste 12 t Bs, gde je Bs broj stranica indeksa (glavnog odnosno indeksa grupe),
a t vreme citanja (odnosno upisa) proizvoljne stranice na disku.
Obrada svih slogova (ili velike grupe njih) u proizvoljnom redosledu ne zahteva
upotrebu indeksa i odvija se po odgovarajucem algoritmu grupne obrade sekvencijalne datoteke.
Obrada svih slogova u redosledu primarnog kljuca je efikasna (bez upotrebe indeksa), dok se u slucaju redosleda po bilo kom drugom atributu zahteva sortiranje
datoteke podataka i zone prekoracenja u redosledu tog atributa. Obrada svih slo
gova u redosledu primarnog kljuca je efikasnija nego kod uredene
varijante sekvencijalne reprezentacije, jer su i slogovi u zoni prekoracenja povezani pokazivacima sa
odgovarajucim slogovima iz datoteke podataka.
Posebno karakteristican za ovu reprezentaciju je algoritam restrikcije tipa intervala, koji predstavlja puni izraz efikasnosti ove reprezentacije, s obzirom da koristi
oba njena koncepta sadrzana u nazivu: indeks i sekvencijalnost. Ovaj algoritam je
kombinacija izbora pojedinacnog (tj. prvog iz intervala) sloga uz pomoc indeksa,
i sekvencijalnog pretrazivanja datoteke podataka i zone prekoracenja po algoritmu
grupne obrade. Da bi se izbor pojedinacnog sloga mogao izvrsiti pomocu indeksa,
potrebno je da uslov restrikcije bude zadat nad primarnim kljucem relacije.
Primer upita tipa intervalne restrikcije je: izdati nazive i statuse jugoslovenskih
izdavaca sa sifrom od i500 do i1000. U SQL-u upit se moze izraziti SELECT
upitnim blokom
SELECT NAZIV, STATUS
FROM I
WHERE I SIF >= i500 AND I SIF <= i1000 AND DRZAVA
= Jugoslavija
Restrikcija tipa intervala, uz projektovanje na izlazne atribute, kod indekssekvencijalne reprezentacije sastoji se iz dva koraka. Prvi je pronalazenje (po indeksu) sloga sa najmanjom vrednoscu primarnog kljuca koja nije manja od donje
granice intervala. Drugi je sekvencijalna obrada svih slogova sa vrednoscu primarnog kljuca koja je manja ili jednaka gornjoj granici intervala; obrada sloga
ukljucuje proveru ostalih uslova restrikcije i, ukoliko su ispunjeni, projekciju na
izlazne atribute.
237
A
zuriranje, brisanje i uno
senje.
Operacija brisanja se sastoji od izbora
i obelezavanja sloga nevazecim, jer se slog, zbog indeksa i lanaca prekoracenja,
fizicki ne izbacuje.
Novi slog se unosi na odgovarajuce mesto u sortirani niz slogova, u stranicu
datoteke podataka ili u lanac prekoracenja zone prekoracenja. Zbog unosenja sloga
u punu stranicu datoteke podataka moze se dogoditi da slog sa prethodno najvecom
vrednoscu primarnog kljuca (koja je i u indeksu pridruzena stranici) bude premesten
iz stranice datoteke podataka u zonu prekoracenja.
Operacija unosenja sastoji se od sledecih radnji:
pronaci stranicu datoteke podataka u koju treba uneti slog (pretrazivanjem
glavnog indeksa i indeksa grupe, kao kod operacije pretrazivanja);
AKO je vrednost primarnog kljuca sloga koji se unosi veca od najvece vrednosti primarnog kljuca u stranici, ONDA
1. upisati slog u prvu nepopunjenu stranicu zone prekoracenja;
2. pretraziti niz stranica zone prekoracenja iste grupe, preko lanca prekoracenja, radi lociranja sloga prethodnika po vrednosti primarnog kljuca;
3. u novi slog postaviti pokazivac na slog na koji pokazuje locirani slog
prethodnik;
4. u slog prethodnik postaviti pokazivac na novi upisani slog;
INACE
1. sortirati slogove stranice datoteke podataka zajedno sa slogom koji se
unosi;
2. upisati sortirani sadrzaj stranice u datoteku podataka;
3. AKO je doslo do prekoracenja kapaciteta stranice, ONDA
uneti slog koji je izazvao prekoracenje u prvu nepopunjenu stranicu zone prekoracenja iste grupe;
poslednjeg sloga u
povezati ga u lanac prekoracenja, izmedu
stranici datoteke podataka i sloga na koji je prethodno pokazivao poslednji slog u stranici datoteke podataka.
Vrednosti atributa koji nisu u primarnom kljucu azuriraju se izborom sloga
i izmenom vrednosti u samom slogu u datoteci podataka ili zoni prekoracenja.
Vrednost primarnog kljuca se azurira kao dvoetapna operacija brisanja sloga koji
se azurira (tj. njegovog obelezavanja nevazecim) i unosenja novog sloga u zonu
prekoracenja, uz uvezivanje u odgovarajuci lanac prekoracenja.
Kada se prepuni zona prekoracenja ili kada se zbog obelezenih a neizbacenih
slogova, ili predugih lanaca prekoracenja, suvise degradira efikasnost organizacije,
vrsi se reorganizacija. Ona se odvija bez koriscenja indeksa, a sortirana (DP, ZP)
datoteka postaje nova DP datoteka. Kreira se nova indeksna datoteka, a zona
prekoracenja postaje prazna.
238
11.4.2
Izvr
savanje vi
serelacionih upita
Kljucna operacija kod algoritama izvrsavanja viserelacionih upita je operacija spajanja, pa je i efikasnost izvrsavanja upita zavisna od efikasnosti izvrsavanja ove
operacije.
Kada se relacije spajaju po primarnim kljucevima relacija u indeks-sekvencijalnoj
reprezentaciji, operacija se izvodi po algoritmu sekvencijalnog prirodnog spajanja
11.5
Pitanja i zadaci
spoljasnje sortiranje
fizicka reprezentacija podataka
fizicka organizacija podataka
sekvencijalna organizacija
indeks-sekvencijalna organizacija
239
12
Indeksna organizacija
Indeksna organizacija dobila je ime po pristupnoj datoteci u sastavu fizicke
reprezentacije indeksu. Nad jednom relacijom (na fizickom nivou nad datotekom
podataka) moze da postoji jedan ili vise indeksa. Indeksi imaju specificnu strukturu i karakteristike u odnosu na indeks kod indeks-sekvencijalne reprezentacije.
ove dve vrste indeksa je u tome sto su u ovom indeksu
Osnovna razlika izmedu
za razliku
prisutne sve vrednosti atributa nad kojim se gradi indeks.1 Takode,
od statickog indeksa kod indeks-sekvencijalne reprezentacije, indeks kod indeksne
reprezentacije je dinamicki i neposredno odrazava sve promene nad datotekom
podataka.
Logicki, indeks I nad atributom (ili skupom atributa) A relacije R u indeksnoj
reprezentaciji ostvaruje preslikavanje
dom(A) P(R)
(fizicka organizacija indeksa bice opisana u odeljku 12.3). Atribut A zove se atribut
indeksiranja.2
Indeksna organizacija je, zbog efikasnosti pristupa po raznim grupama atributa,
najzastupljenija fizicka organizacija relacija u svim sistemima za upravljanje
bazama podataka.
indeksima izgradenim
Medu
nad jednom datotekom podataka, najvise jedan in nad atributom
deks moze biti grupisuci (engl. clustering), sto znaci da je izgraden
po kome su uredeni
fizicki slogovi datoteke podataka, kao kod indeks-sekvencijalne
reprezentacije. Ostali indeksi su obicni, negrupisuci, i po njima je moguc efikasan
1 Ovakav
240
241
(NGI) izgradeni
su nad atributom K SIF, odnosno atributom TIRAZ datoteke po
dataka (DP) relacije KI). Odrzavanje fizickog uredenja
u slucaju grupisuceg indeksa
zahteva, kao kod indeks-sekvencijalne reprezentacije, koriscenje posebne datoteke
zone prekoracenja za unosenje elemenata posle pocetnog sortiranja datoteke po
dataka po atributu indeksiranja. Medutim,
za razliku od indeks-sekvencijalne organizacije, indeks kod indeksne organizacije omogucuje neposredan pristup svakom
od slogova (odnosno svakoj stranici) i iz zone prekoracenja, bez koriscenja lanaca
prekoracenja.
GI
K SIF
k1
k2
k3
k4
k5
k6
DP (KI)
.
.
.
.
.
. XX
NGI
K SIF
. . . TIRAZ
TIRAZ
. 3000
k1
10000 b
b
. 5000
`b
k2
7000 `
`b
"
`b
``
"
`
` . 7000
``` b
k3
10000 `
"b
`
"``
b
`
. 10000
"
k4
10000 "
"
k5
5000 "
k6
3000
XX
XXX k6
5000
X
Grupisuci (GI) i negrupisuci (NGI) indeks
Slika 12.1: Indeksna reprezentacija
12.1
Efikasnost izvr
savanja jednorelacionih upita
12.1.1
Pretra
zivanje
242
12 Indeksna organizacija
Kako operacija restrikcije vrsi izbor jednog ili grupe slogova po vrednosti
atributa, efikasnost ove operacije u slucaju indeksne reprezentacije zavisi od tipa
restrikcije i od atributa po kojima postoje indeksi. Tip restrikcije ukazuje na
kolicinu slogova ciji se izbor vrsi tom restrikcijom, i moze biti intervalna (po uslovu
{<, <=, >, >=}) ili specificna (po uslovu =).
Primer 12.1 Upit kojim se iz relacije P (pisac) dobijaju imena jugoslovenskih
pisaca sa vise od 10 naslova, moze se SQL-om izraziti kao:
SELECT IME
FROM
P
WHERE DRZAVA = Jugoslavija AND BR NASLOVA > 10
indeks po atributu DRZAVA,
Ako je nad datotekom podataka relacije P izgraden
prethodna restrikcija ce se izvrsiti kao izbor svih slogova sa vrednoscu atributa
DRZAVA = Jugoslavija, za kojim sledi provera intervala za atribut BR NASLOVA.
Dakle, potrebno je pretraziti indeks da bi se dobio skup svih rednih brojeva stranica
na kojima su slogovi cija je vrednost atributa DRZAVA Jugoslavija. U slucaju
da je indeks negrupisuci, moze se pretpostaviti da je svaki takav slog na posebnoj
stranici; ako je broj takvih slogova (i stranica) veliki, ovakva restrikcija je skupa
operacija. Ako je indeks grupisuci, svi slogovi (bar iz datoteke podataka) sa istom
vrednoscu atributa DRZAVA nalaze se zajedno na stranici ili susednim stranicama,
pa je pristup znatno efikasniji.
Ako nad relacijom P postoji indeks po atributu BR NASLOVA, a ne postoji indeks po atributu DRZAVA, upotreba indeksa je dobra samo ako je indeks grupisuci.
Indeks se koristi za nalazenje prvog sloga iz odgovarajuce datoteke podataka, sa
vrednoscu atributa BR NASLOVA vecom od 10, a zatim se pretrazivanje datoteke
podataka nastavlja sekvencijalno (sa lancima prekoracenja u zoni prekoracenja) do
kraja. Restrikcija se u ovom slucaju izvodi prema algoritmu intervalne restrikcije
kao kod indeks-sekvencijalne organizacije.
Ako nad relacijom P nema nijednog od ovih indeksa, pretrazuju se svi slogovi
datoteka DP i ZP, uz ispitivanje uslova restrikcije za svaki slog.
12.1.2
A
zuriranje, uno
senje i brisanje
243
3. ako vrednost atributa indeksiranja u indeksu vec postoji, dodaje se broj stra
nice novog unetog sloga skupu brojeva stranica u nadenom
elementu podataka; u suprotnom, unosi se u indeks novi element podataka koji se odnosi
na novi uneti slog (v. odeljak 12.3, Struktura indeksa);
4. novi slog se uvezuje u odgovarajuci lanac prekoracenja (kao kod indekssekvencijalne organizacije) iza poslednjeg sloga sa istom (ili prvom manjom)
vrednoscu atributa indeksiranja (njegova adresa je dobijena u koraku 2);
5. pretrazivanjem svakog od negrupisucih indeksa pronalazi se mesto za upis
novog elementa podataka (kao u koraku 2), i element podataka (ili samo
redni broj stranice zone prekoracenja) se tamo upisuje.
U slucaju da ne postoji grupisuci indeks, nema ni zone prekoracenja, vec je
datoteka podataka jedina koja sadrzi fizicke slogove koji odgovaraju n-torkama
relacije; unosenje novog sloga u tom slucaju sastoji se od upisa novog sloga u
datoteku podataka (odgovara koraku 1 prethodnog postupka) i upisa odgovarajuceg
elementa podataka u svaki od negrupisucih indeksa (korak 5).
Brisanje sloga (slogova) sa zadatom vrednoscu nekog atributa sastoji se od
sledecih radnji:
1. nalazenje sloga (preko indeksa, ako postoji nad datim atributom, ili sekvencijalnim pretrazivanjem);
2. obelezavanje sloga nevazecim ili fizicko brisanje sloga sa uklanjanjem sloga iz
odgovarajuceg lanca prekoracenja (u slucaju postojanja grupisuceg indeksa);
3. za svaki postojeci indeks nad datotekom podataka, brisanje sloga koji se
odnosi na slog izbrisan iz datoteke podataka, uz dodatne neophodne izmene
na indeksnim datotekama.
Azuriranje sloga sastoji se od sledecih radnji:
1. nalazenje sloga (najbolje preko grupisuceg indeksa, ali moze i preko nekog
drugog indeksa);
2. azuriranje sloga i upis azurirane stranice (ako atribut indeksiranja grupisuceg
indeksa nije azuriran), odnosno obelezavanje sloga nevazecim i upis novog
sloga sa azuriranim atributima (ako se azurira i atribut indeksiranja
grupisuceg indeksa);
3. za svaki indeks, odgovarajuce azuriranje indeksa.
244
12.2
12 Indeksna organizacija
Izvr
savanje vi
serelacionih upita
Algoritmi izvrsavanja dvorelacionih, pa i viserelacionih upita koji se na njima zasnivaju, zavise od pristupnih indeksnih datoteka nad relacijama koje ucestvuju u
upitu.
Primer 12.2 Za relacije P i KP (pisac i autor, glava 1), upit naci imena svih
jugoslovenskih pisaca koji se pojavljuju kao drugi autor neke knjige, koji se u
SQL-u izrazava kao SELECT blok
SELECT IME
FROM
P, KP
WHERE P.P SIF = KP.P SIF AND P.DRZAVA = Jugoslavija
AND KP.R BROJ = 2
izvrsice se na razne nacine za razlicite indekse nad relacijama P i KP. Tako, ako
postoje indeksi po atributima specificne restrikcije P.DRZAVA i KP.R BROJ,
a ne postoje indeksi po atributima spajanja P SIF ni u jednoj relaciji, upit se
izvrsava tako sto se prvo vrsi indeksna restrikcija (relacije P po uslovu P.DRZAVA
= Jugoslavija i relacije KP po uslovu KP.R BROJ = 2), a zatim sortiranje (ako
je potrebno) uz preostale restrikcije, i sekvencijalno prirodno spajanje (po P SIF)
dobijenih sortiranih datoteka, uz projektovanje na atribute projekcije (IME).
Ako pak postoji indeks po atributu specificne restrikcije jedne relacije (npr.
po atributu P.DRZAVA) i indeks po atributu spajanja druge relacije (npr. po
atributu KP.P SIF), onda se upit izvrsava u dva koraka. U prvom koraku izvrsava
se indeksna restrikcija (relacije P po uslovu P.DRZAVA = Jugoslavija). U drugom
koraku datoteka rezultat te restrikcije sekvencijalno se pretrazuje, i svaki njegov
slog, koriscenjem indeksa po atributu spajanja druge relacije (KP), spaja se sa
odgovarajucim n-torkama te druge relacije, tj. sa slogovima odgovarajuce datoteke.
U drugom koraku izvode se i preostale restrikcije (npr. relacije KP po uslovu
KP.R BROJ = 2), kao i projekcija na atribute projekcije (IME).
Spajanje koje je opisano prethodnim postupkom zove se indeksno spajanje. Objasnimo njegov algoritam nesto detaljnije.
Indeksno spajanje je prirodno spajanje dve datoteke koje odgovaraju dvema
relacijama, od kojih jedna (npr. prva) ima indeks po atributu spajanja. Fizicko
polje slogova datoteke, koje odgovara atributu spajanja, zvacemo polje spajanja.
Datoteke se spajaju tako sto se druga datoteka cita sekvencijalno, i za svaki njen
slog, tj. njegovu vrednost polja spajanja, pristupa se, koriscenjem indeksa, slogovima prve datoteke koji imaju istu vrednost polja spajanja kao slog iz druge datoteke.
Slog druge i odgovarajuci slogovi prve datoteke se spajaju.
12.3
Struktura indeksa
245
Listovi tog drveta su stranice koje sadrze skupove slogova sortiranih po vrednostima iz domena atributa indeksiranja. Ovakva struktura cini pretrazivanje indeksa
maksimalno efikasnom radnjom.
Struktura indeksnog drveta ciji su cvorovi stranice, vrlo je specificna, kao
i struktura i druga svojstva samih stranica. Zato cemo prvo podsetiti na opstu
definiciju strukture grafa i drveta kao specificne strukture grafa, a zatim cemo
uvesti definicije specificnih struktura drveta, i posebno B-drveta kao jedne fizicke
reprezentacije indeksa.
Posebno pozeljna osobina drveta, kada je u pitanju efikasnost njegovog pretrazivanja, jeste balansiranost koja oznacava da je duzina puta od korena do svakog
lista jednaka. Jedna specificna struktura balansiranog drveta, poznata kao B-drvo,
posluzila je kao osnov za izgradnju niza struktura podataka koje se koriste u implementaciji indeksa. U daljem tekstu bice izlozena struktura B-drveta kao i osnovni
algoritmi za unosenje u B-drvo i pretrazivanje B-drveta.
246
12 Indeksna organizacija
gde je uredeni
par (ki , pi ) indeksni element, koji se sastoji od vrednosti iz
domena atributa indeksiranja (ki ) i pokazivaca na stranicu neposrednog sledbenika (pi ), i = 1, 2, . . . , m. Pokazivac na stranicu neposrednog sledbenika
je i p0 ;
svaka stranica koja nije list, osim korena, ima najmanje n indeksnih elemenata, a koren koji nije list najmanje jedan. Svaka stranica koja nije list ima
najvise 2n indeksnih elemenata;
za svaku vrednost ki iz indeksnog elementa vazi sledece: pokazivac koji joj
prethodi (pi1 ) pokazuje na poddrvo u kome za svaku vrednost kj iz domena
atributa indeksiranja vazi kj ki ; pokazivac koji za njom sledi (pi ) pokazuje
na poddrvo u kome za svaku vrednost kj iz domena atributa indeksiranja vazi
kj > k i ;
stranice listovi sadrze niz elemenata podataka parova oblika (ki , di ), gde
su ki kao i u indeksnom elementu, a di pridruzeni podaci. Na primer, di
moze biti skup adresa slogova sa vrednoscu atributa indeksiranja ki (ili skup
rednih brojeva stranica na kojima su ti slogovi). List sadrzi najmanje n0 , a
najvise 2n0 (n0 > 0) elemenata podataka;
elementi stranice (indeksni i elementi podataka) sortirani su u rastucem redosledu vrednosti iz domena atributa indeksiranja.
Na primer, za h = 2, n = 2, n0 = 1, graficki izgled jednog B-drveta predstavljen
je slikom 12.2.
Osnovne radnje nad indeksom su:
247
10 .
@
@
@
@
R
. 4 . 7 .
@
. 17 . 25 .
2 d01 4 d02
5 d001 7 d002
@
R
@
000
9 d000
1 10 d2
iv
13 div
1 17 d2
@
@
@
@
R
19 . . . 25 . . . 27 . . . 29 . . .
unosenje u indeks (odnosno brisanje i azuriranje): dodavanje para (k, d) indeksu (odnosno uklanjanje iz indeksa, izmena); d je podatak koji odgovara
datoj vrednosti k iz domena atributa indeksiranja.
12.3.1
Pretra
zivanje indeksa
248
12 Indeksna organizacija
Pretra
zivanje indeksa
ulaz: vrednost k iz domena atributa indeksiranja;
izlaz: skup podataka d pridruzen vrednosti k ako par (k, d) postoji u indeksu,
inace poruka u indeksu ne postoji vrednost k;
BEGIN
neka je tekuca stranica koren B-drveta;
WHILE tekuca stranica nije list DO
BEGIN pretraziti tekucu stranicu;
IF za neko i, k ki , THEN
BEGIN
neka je i0 najmanje takvo i;
tekuca stranica neka je stranica na koju pokazuje pokazivac pi0 1
END
ELSE tekuca stranica neka je stranica na koju pokazuje pokazivac pm
END;
pretraziti list drveta;
par (k, d) THEN rezultat je d
IF pronaden
ELSE poruka u indeksu ne postoji vrednost k
END.
Na primer, ako iz prethodnog drveta treba naci podatak d koji odgovara vrednosti k = 13 atributa indeksiranja, izvrsavanje prethodnog algoritma se odvija kroz
sledece korake:
tekuca stranica je koren;
kako ne postoji i za koje je k(= 13) < ki , tekuca stranica postaje stranica sa
sadrzajem .17.25. jer na nju pokazuje pokazivac pm ( p1 );
kako je na tekucoj stranici k(= 13) < ki za i = 1, tekuca stranica postaje
stranica na koju pokazuje pokazivac pi1 ( p0 ), tj. stranica sa sadrzajem
iv
(13, div
1 ; 17, d2 );
tekuca stranica je list; njenim pretrazivanjem pronalazi se element podataka
iv
savanja algoritma.
par (13, div
1 ), pa je podatak d1 rezultat izvr
12.3.2
Uno
senje u indeks, brisanje i a
zuriranje
da podatak d odreduje
polozaj slogova sa vrednoscu atributa indeksiranja k, onda se
prethodnim algoritmom locira stranica u indeksu u koju treba uneti novi element
podataka. Ako u toj stranici nema mesta (stranica je maksimalno popunjena),
primenjuje se algoritam cepanja stranice, tj. dodeljivanje nove indeksne stranice
249
tako sto se uvodi nova stranica; na staroj stranici ostaju dva (uredena)
elementa
podataka (5, d001 ), (6, d), a na novoj stranici jedan element podataka (7, d002 ). U
opstem slucaju na staroj stranici ostavlja se n0 + 1 (oko 50%) elemenata po se u stranicu prethodnik
dataka, a ostalih n0 se upisuje na novu stranicu. Takode
(stranicu sa sadrzajem .4.7.) dodaje novi indeksni element, pa njen sadrzaj postaje
.4.6.7. Tako se dobija novo B-drvo indeksa, graficki predstavljeno na slici 12.3.
10 .
@
. 4 . 6 . 7 .
@
. 17 . 25 .
@
@
@
R
2 d01 4 d02
000
9 d000
1 10 d2
?
5 d001 6 d
@
@
@
R
iv
13 div
1 17 d2
@
@
@
@
R
19 . . . 25 . . . 27 . . . 29 . . .
?
7 d002
250
12 Indeksna organizacija
@
R
. 4 .
. 7 .
. 17 . 25 .
@
2 d01 4 d02
000
9 d000
1 10 d2
?
5 d001 6 d
iv
13 div
1 17 d2
@
@
R
@
19 . . . 25 . . . 27 . . . 29 . . .
?
7 d002
251
Postoje dva problema sa osnovnom strukturom B-drveta, zbog kojih se cesce koriste neke modifikacije te strukture. Jedan problem je nedovoljna popunjenost stranica. Naime, nedovoljno popunjeno indeksno drvo produzuje vreme pretrazivanja,
i zato popunjenost stranice od 75% (u proseku) ne zadovoljava. Resenje ovog
susednih stranica,
problema nalazi se u prelivanju elemenata podataka izmedu
umesto cepanja stranice. Tako se susedne stranice, ako je to moguce, dodatno
popunjavaju, a nova stranica (koja je popunjena samo sa 50%) uvodi se samo kada
je to zaista neophodno.
Drugi problem sa osnovnom strukturom B-drveta je nemogucnost pretrazivanja
datoteke podataka u redosledu vrednosti atributa indeksiranja, a sto je cesto veoma
pozeljno. Modifikacija koja omogucuje ovakvo pretrazivanje je povezivanje stranica listova B-drveta u listu koja odrazava sortiranost atributa indeksiranja,
i obezbeduje
pristup slogovima datoteke podataka po rastucim (ili opadajucim)
vrednostima atributa indeksiranja.
12.4
Pitanja i zadaci
252
12 Indeksna organizacija
15. Neka relacija KI sadrzi 50000 n-torki i neka njen sadrzaj ima sledecu strukturu: u relaciji je 10000 razlicitih knjiga; svaku knjigu izdalo je u proseku 2.5
izdavaca; svaki izdavac izdao je jednu istu knjigu u proseku u po 2 izdanja.
Neka je relacija KI predstavljena indeksnom reprezentacijom sa indeksom
po atributu K SIF, tako da polje K SIF u indeksu zauzima 5 bajtova, koliko zauzima i pokazivac na odgovarajuci slog u datoteci podataka. Neka je
element podataka oblika (K SIF, pokazivac) i neka je velicina stranice 1024
bajta. Izracunati broj stranica indeksa potrebnih za elemente podataka i broj
stranica indeksa potrebnih za indeksne elemente. Izracunati visinu indeksnog
drveta.
13
Direktna organizacija
Potpuno drugaciji pristup fizickoj organizaciji relacije, u odnosu na indekssekvencijalnu i indeksnu organizaciju, predstavlja direktna (hes, rasejana, rasuta)
organizacija (engl. hash).
Odlike direktne organizacije su:
specificnom slogu se pristupa uz pomoc algoritma koji se zove algoritam direktnog pristupa ili hes algoritam
254
13 Direktna organizacija
gde num oznacava numericki deo vrednosti atributa I SIF, a mod je funkcija
izracunavanja ostatka pri celobrojnom deljenju. Prethodna funkcija proizvodi
sledece brojeve stranica datoteke podataka, u koje ce se upisati slogovi sa navedenim
vrednostima atributa I SIF: 9, 5, 1, 10, 6. Ta hes funkcija je jedna modifikacija
najcesce koriscene hes funkcije, tzv. kolicnik/ostatak hes funkcije: h(v) = v mod
M. Ovom funkcijom se izracunava adresa direktnog pristupa sloga sa vrednoscu hes
atributa v, pri velicini datoteke podataka od M stranica.
Ako se zna da su vrednosti atributa direktnog pristupa razliciti celi brojevi od 1
do N, slog sa vrednoscu atributa direktnog pristupa i mogao bi da se upise na i-tu
stranicu datoteke podataka. Hesiranje (direktna reprezentacija) je uopstenje ovog
postupka kada ne postoji tako specificno znanje o vrednostima atributa direktnog
pristupa. Naime, domen atributa direktnog pristupa po pravilu ima mnogo vise
elemenata od broja stranica u datoteci DP, pa funkcija direktnog pristupa h nije
injektivna, tj. moze biti h(v1 ) = h(v2 ) i za v1 6= v2 . U prethodnom primeru,
ako postoji izdavac sa sifrom I SIF=i1400, broj stranice na koju ce se smestiti
slog sa tom vrednoscu atributa I SIF je 1400 mod 13 = 9, a to je ista stranica na
koju se smesta i slog sa vrednoscu atributa I SIF=i100. Ova pojava kod direktne
reprezentacije zove se kolizija.
Dakle, prvi korak u izgradnji direktne reprezentacije je izracunavanje hes
funkcije koja transformise vrednost atributa direktnog pristupa u broj stranice.
Ne postoji savrsena hes funkcija, i uvek moze da se dogodi da dve ili vise razlicitih
vrednosti atributa direktnog pristupa dovedu do kolizije. Drugi korak u izgradnji
direktne reprezentacije je razresavanje kolizije.
Jedna od metoda razresavanja kolizije koristi povezane liste (ulancavanje) i
pogodna je u nekim dinamickim situacijama kada broj razlicitih vrednosti atributa
direktnog pristupa nije poznat unapred. U nasem primeru, ako na stranici 9 ima
mesta za oba sloga, oni ce se tamo upisati bez problema. Ako nema mesta na
stranici (npr. svaki slog zauzima celu stranicu), bira se prva slobodna stranica
pomocne datoteke zone prekoracenja (u ovom slucaju stranica broj 13), tamo se
upisuje slog i povezuje se pokazivacem sa stranicom datoteke podataka ciji je broj
dupliran (u nasem primeru sa stranicom 9). Dalji slogovi sa istom adresom
ulancavaju se kao kod indeks-sekvencijalne datoteke.
Direktna reprezentacija je dobar primer nagodbe oko prostora i vremena. Ako
nema ogranicenja memorije (velicine datoteke podataka), onda svako pojedinacno
pretrazivanje sloga moze da se izvede u jednom koraku, koriscenjem vrednosti
atributa direktnog pristupa kao adrese (hes funkcija h je identitet). Kada ne bi
bilo vremenskog ogranicenja, mogla bi se primeniti sekvencijalna reprezentacija
uz koriscenje minimuma memorije. Direktna reprezentacija omogucuje upotrebu
razumne kolicine prostora i vremena. Osnovni princip metode hesiranja je efikasno
koriscenje raspolozive memorije i brz pristup memoriji.
Tako se, koriscenjem hes atributa I SIF relacije I, efikasno izvrsavaju upiti sa
specificnom restrikcijom oblika
255
SELECT *
FROM
I
WHERE I SIF = i2000
dok se taj hes atribut ne moze iskoristiti u upitima sa intervalnom restrikcijom
oblika
SELECT *
FROM
I
WHERE I SIF > i500
Da bi se smanjila frekvencija kolizije (u slucaju da se ostavi mali broj stranica),
a i da bi se smanjilo nepotrebno trosenje stranica (kada se ostavi mnogo stranica),
obicno se za smestaj slogova ostavlja oko 20% vise prostora u datoteci podataka i
zoni prekoracenja, nego sto je to potrebno s obzirom na broj i velicinu slogova.
Metode direktne reprezentacije i direktnog pristupa, bilo da se odnose na trajne
strukture kao sto su spoljasnje datoteke baza podataka, ili na memorijske strukture kao sto su razne vrste tabela i njihovo efikasno pretrazivanje, dosta dobro su
istrazene, ukljucujuci oba problema: hes funkcije i metode razresavanja kolizije. U
sledecim odeljcima bice vise reci o ovim problemima i njihovom resavanju.
13.1
Kod direktne fizicke organizacije relacija, definisanje i izracunavanje funkcije direktnog pristupa predstavlja prvi problem realizacije ove organizacije. Funkcija
treba da transformise vrednosti atributa direktnog pristupa (obicno cele brojeve
ili kratke niske znakova) u cele brojeve iz intervala 0..M1, gde je M broj stranica
datoteke podataka. Problem sa hes funkcijom je u tome sto ona treba da preslika
veliki domen mogucih vrednosti hes atributa u mali skup brojeva stranica. Pri
tome kolizija treba da se izbegne ili da se minimizuje.
Nalazenje idealne hes funkcije bez kolizije, cak i kada ona teorijski postoji,
vrlo je tezak posao. Na primer, ako imamo trideset slogova sa jedinstvenim vred i ako na jednu stranicu moze da stane tacno jedan slog a na
nostima polja KLJUC,
raspolaganju je 40 stranica datoteke podataka (40 raznih adresa), onda ima 4030
nacina da se izracunaju adrese tih 30 slogova, tj. ima 4030 razlicitih hes funkcija.
Od tog broja, samo 40 39 11 = 40!
cite adrese za razlicite
10! funkcija daje razli
Dakle, jedna od oko 10 miliona funkcija je idealna
vrednosti hes polja KLJUC.
i ne proizvodi koliziju. Zbog toga se dobrom hes funkcijom smatra ona koja se
lako izracunava i aproksimira slucajnu funkciju: za proizvoljni argument, svaki
je rezultat podjednako moguc.
Prvi korak u izracunavanju funkcije direktnog pristupa je transformacija vrednosti atributa direktnog pristupa u broj (jer su funkcije aritmeticke). Drugi korak
je samo izracunavanje adrese direktnog pristupa, pri cemu se cesto koristi metoda
izbora prostog broja M za broj raspolozivih stranica datoteke podataka, i neka
modifikacija hes funkcije h(v) = v mod M.
256
13 Direktna organizacija
13.2
Re
savanje kolizije posebno ulan
cavanje
str2 :
strk :
DP
glava . XX str1 :
XXX
X
z ...
...
*
...
glava . str2 :
...
...
..
.
glava .
ZP
..
.
..
.
..
.
..
.
strl : - . . .
...
sled.
sled.
sled.
sled.
sled.
sled.
sled.
..
.
Slika 13.1: Razresavanje kolizije posebno ulancavanje sa listama slogova
Svaka stranica datoteke podataka, u ovom slucaju, ima pokazivac glava na
prvi slog u zoni prekoracenja sa istom hes adresom, a svaki slog stranice zone
prekoracenja ima pokazivacko polje sled na sledeci slog u odgovarajucoj listi (na
istoj ili razlicitoj stranici zone prekoracenja).
Ilustrujmo sledecim primerom postupak unosenja kod direktne reprezentacije
sa posebnim ulancavanjem.
Primer 13.1 Neka u relaciji R atribut direktnog pristupa jeste SLOVO sa
domenom skupom velikih slova abecede. Neka je i-to slovo u abecedi predstavljeno brojem i i neka se koristi hes funkcija h(v) = v mod M (M je broj
stranica datoteke podataka). Tada se za zadati skup vrednosti atributa SLOVO i
M=11 dobijaju sledece hes adrese:
R P R E
23 22 23 9
1 0 1 9
257
T R A
26 23 1
4 1 1
I
Z
V A
30 13 28 1
8 2 6 1
NJ A
20 1
9 1
Ako se slogovi sa ovim vrednostima hes polja SLOVO redom unose u datoteku
podataka koja je na pocetku prazna, stranice datoteke podataka sa brojevima od
0 do 10 treba da sadrze slogove sa sledecim vrednostima polja SLOVO:
0 1 2 3 4 5 6 7 8 9 10
E
P R I
T
V M Z
P R I
E
R
NJ
R
A
A
A
Ako stranica datoteke podataka moze da primi najvise dva sloga, onda se za
upis treceg sloga sa istom hes adresom dodeljuje (ili bira nepopunjena) stranica
zone prekoracenja ZP, u nju se upisuje taj slog, a u odgovarajucu stranicu datoteke
podataka postavlja se pokazivac na upisani slog. Ostali slogovi, za koje nema mesta
u stranici datoteke podataka, upisuju se u vec dodeljenu (ili novu) stranicu zone
prekoracenja, pri cemu se postavljaju pokazivaci na sledeci slog u lancu.
Neka su tri dodeljene stranice zone prekoracenja stranice sa brojevima 15, 23,
27. Tada se fizicka reprezentacija relacije R moze predstaviti slikom 13.2. Stranica
sa brojem 23 dodeljuje se tek kada je stranica sa brojem 15 popunjena; slicno vazi
i za stranicu sa brojem 27. Stranica sa brojem 27 sadrzi slogove sa razlicitim hes
adresama.
1
R
R
15
R
R
2
I
I
4
T
23
-A
A
6
V
7
M
9
E
E
27
-A
10
NJ
258
13 Direktna organizacija
Globalni algoritmi unosenja i pretrazivanja kod direktne organizacije sa posebnim ulancavanjem u razresavanju kolizije mogu se predstaviti sledecim pseudoprogramima.
Algoritam he
s uno
senja sa posebnim ulan
cavanjem
ulaz: slog s sa vrednoscu v hes atributa A;
slog s;
izlaz: adresa stranice x na koju je unet slog s, ili na kojoj je naden
BEGIN
x := h(v);
slog s THEN
IF na stranici(x) naden
izdati poruku da je slog vec zapisan na stranici(x)
ELSE IF stranica(x) popunjena THEN
BEGIN
WHILE postoji sledeci slog, s slog, u lancu prekoracenja, DO
BEGIN
x := adresa stranice sloga s slog;
na stranici(x))
IF s slog = s THEN EXIT(slog s naden
END;
IF stranica(x) popunjena THEN
naci nepopunjenu stranicu u zoni prekoracenja ZP
i njenu adresu dodeliti x;
uneti slog s na stranicu x;
IF slog s prvi slog u lancu prekoracenja THEN
stranica(h(v)).glava neka pokazuje na slog s
ELSE s slog.sled neka pokazuje na slog s
END
ELSE uneti slog s na stranicu x;
vratiti adresu stranice x
END.
Algoritam he
s pretra
zivanja sa posebnim ulan
cavanjem
ulaz: hes atribut A i vrednost v tog atributa;
izlaz: skup brojeva stranica x1 , x2 , . . . , xn koje sadrze slogove
sa vrednoscu v hes atributa; za neuspesno pretrazivanje poruka;
259
BEGIN
i := 0;
/*broj pronadenih
slogova*/
x := h(v);
IF stranica(x) sadrzi slog sa vrednoscu v atributa A THEN
BEGIN i := 1; x1 := x END;
IF stranica(x) popunjena
THEN WHILE postoji sledeci slog, s slog, u lancu prekoracenja DO
BEGIN
x := adresa stranice sloga s slog;
IF s slog.A = v i xi <> x
/* za i > 0 */
THEN BEGIN i := i + 1; xi = x END
END;
IF i = 0 THEN izdati poruku o neuspesnom pretrazivanju
ELSE vratiti i, (xj , j = 1, 2, . . . , i)
END.
Vreme pretrazivanja datoteke podataka i zone prekoracenja, izrazeno brojem
260
13 Direktna organizacija
str1 :
str2 :
DP
glava .
str1:
ZP
sled .
sled .
str2 :
glava . H
HH
HH
H
j
..
.
sled .
strl :
sled .
sled .
..
.
Slika 13.3: Razresavanje kolizije posebno ulancavanje sa listama stranica
13.3
Re
savanje kolizije otvoreno adresiranje
Ako je moguce proceniti broj slogova N, onda odrzavanje lista stranica, odnosno
slogova, moze biti neefikasno. U tom slucaju koriste se metode koje smestaju svih
N slogova u datoteku podataka. Velicina datoteke podataka je M stranica, gde je M
> N/k, a k je kapacitet stranice izrazen brojem slogova koje moze da primi. Prazne
stranice ili prazna mesta u stranicama datoteke podataka pomazu pri koliziji. Ove
metode se zovu metode hesiranja sa otvorenim adresiranjem.
Najjednostavnija od tih metoda je linearni pokusaj: kada se pojavi kolizija,
pokusati sa sledecom (susednom) stranicom u datoteci podataka. Ako se trazena
u toj stranici, pretrazivanje je uspesno i slog sa tom vrednoscu
vrednost nade
atributa direktnog pristupa je rezultat pretrazivanja (pretrazivanje se moze nastaviti do pronalazenja svih takvih slogova). Ako ta stranica nije popunjena a
261
Algoritam uno
senja sa otvorenim adresiranjem
ulaz: slog s sa vrednoscu v hes atributa A;
slog s;
izlaz: broj stranice x na koju je unet ili na kojoj je naden
BEGIN
x := h(v);
IF stranica(x) sadrzi slog s
THEN izdati poruku o postojanju sloga s
ELSE BEGIN
WHILE stranica(x) popunjena DO
BEGIN x := (x + 1) mod M;
IF stranica(x) sadrzi slog s THEN
na strnici x)
EXIT(slog s naden
END;
upisati slog s u stranicu x
END;
vratiti x
END.
Primer 13.2 Za skup vrednosti atributa SLOVO kao u primeru 13.1, ista hes
funkcija (h(v) = v mod M) za M=23 proizvodi sledece hes adrese:
SLOVO: P R
adresa: 22 0
I
M E
13 18 9
R
0
P R
22 0
E
9
T
3
R
0
A
1
Z
7
I
V
13 5
A
1
NJ A
20 1
Ako na jednu stranicu staje samo jedan slog (k=1), sledeca tabela prikazuje
postupno unosenje slogova sa navedenim vrednostima atributa SLOVO, u stranice
datoteke podataka sa naznacenim brojem:
262
13 Direktna organizacija
0 1
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
P
P
P
P
P
P
P
P
P
P
P
P
R
R
R
R
R
R
R
R
R
R
R
T
T
T
T
T
T
T
T
T
R
R
R
R
R
R
R
R
A
A
A
A
A
A
A
V
V
V
V
E
E
E
E
E
E
E
E
E
E
E
E
E
E
10 11 12 13 14 15 16 17 18 19 20 21 22
P
P
I
P
I
M
P
I
M
P
I
M
P
I
M
P
I
M
P
E
I
M
P
E
I
M
P
E
I
M
P
E
I
M
P
E
I
M
P
E
I I
M
P
E
I I
M
P
E A
I I
M
P
E A
I I
M
NJ
P
E A A I I
M
NJ
P
Algoritam he
s pretra
zivanja sloga sa otvorenim adresiranjem
ulaz: hes atribut A i vrednost tog atributa v;
izlaz: skup brojeva stranica x1 , . . . , xi datoteke podataka koje sadrze slog sa
vrednoscu v hes atributa; za neuspesno pretrazivanje poruka;
BEGIN
i := 0; x := h(v);
IF stranica(x) sadrzi slog sa vrednoscu atributa A =v THEN
BEGIN i := i + 1; xi := x END;
WHILE stranica(x) popunjena DO
BEGIN x := (x + 1) mod M;
IF stranica(x) sadrzi slog sa vrednoscu atributa A =v THEN
BEGIN i := i + 1; xi := x END
END;
IF i = 0 THEN izdati poruku da slog sa datom vrednoscu v
atributa A ne postoji
ELSE vratiti x1 , . . . , xi
END.
Nedostatak metode linearnog pokusaja je sto se pri trazenju sloga sa datom
vrednoscu hes atributa ne prelazi samo preko vrednosti koje se preslikavaju u istu
hes adresu, vec i preko drugih vrednosti, narocito kad rezervisani skup stranica
263
pocne da se popunjava. Tako, ako se pretrazuju podaci uneti u primeru 13.2, pri
koji nemaju istu hes adresu. Unosenje
trazenju V-a prelazi se i preko R, A, Z,
sloga sa jednom vrednoscu hes adrese moze drasticno da uveca vreme pretrazivanja
slogova sa drugom vrednoscu hes adrese. Umetanje na stranicu 2 u primeru 13.2
znacajno uvecava vreme pretrazivanja sloga cija je hes adresa 1. Ovo je problem
grupisanja (clustering) kod linearnog pokusaja, koji se resava drugom metodom
otvorenog adresiranja, dvostrukim hesiranjem. Umesto ispitivanja svake naredne
stranice za stranicom u koliziji, uvodi se druga hes funkcija za fiksni korak (engl.
increment) nad adresama, u := h2 (v); pri tome se dodela x := (x + 1) mod M (u
algoritmima unosenja i pretrazivanja sa otvorenim adresiranjem) zamenjuje dodelom x := (x + u) mod M. Funkcija h2 mora da se izabere pazljivo. Prvo, u mora
biti razlicito od nule. Zatim, M i u treba da su uzajamno prosti (inace su moguci
ciklusi).
Sledeci primer ilustruje metodu dvostrukog hesiranja.
Primer 13.3 Neka je na skup vrednosti atributa SLOVO iz primera 13.1 i 13.2
primenjena osnovna hes funkcija h(v)=v mod M, i druga hes funkcija h2 (v) =M2
v mod (M-2). Za M=23, sledece dve tabele prikazuju h i h2 hes adrese, odnosno
redosled unosenja slogova na stranice datoteke podataka:
SLOVO: P R I M E R P R E T R A
h:
22 0 13 18 9 0 22 0 9 3 0 1
h2 :
20 19 8 3 12 19 20 19 12 16 19 20
0 1
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
A
A
A
A
A
A
A
T
T
T
T
T
T
T
T
T
V
V
V
V
I
I
I
I
I
E
E
E
E
E
E
E
E
E
E
E
E
E
E
I
Z
V A NJ A
7 13 5 1 20 1
12 8 14 20 1 20
10 11 12 13 14 15 16 17 18 19 20 21 22
P
P
I
P
I
M
P
I
M
P
I
M R
P
I
P
M R
P
I
R P
M R
P
I
R P
M R
E P
I
R P
M R
E P
R
I
R P
M R
E P
R
I
R P
M R
E P
R
I
R P
M R
E P
R
I
R P
M R
E P
R
I
R P
M R
E P
R A I
R P
M R
E P
R A I
R P
M R NJ E P
R A I
R P A M R NJ E P
264
13 Direktna organizacija
Broj rezervisanih stranica kod metoda otvorenog adresiranja veci je nego kod
posebnog ulancavanja, jer je M > N/k (u primerima 13.1 i 13.2, za k=1 i N=18,
kod posebnog ulancavanja potrebno je tacno 18 stranica, a kod otvorenog adresir
anja 23). Medutim,
ukupna potrosena memorija manja je nego kod posebnog
ulancavanja jer nema pokazivaca.
Broj zauzetih stranica datoteke podataka kod metode dvostrukog hesiranja
isti je kao i kod metode linearnog pokusaja. Isto vazi i za prosecnu popunjenost (tzv. faktor opterecenja, a) stranice datoteke podataka. U primerima
13.2 i 13.3, za M=23, N=18, k=1, a=18/23/1100 = 78%. Vreme potrebno za
uspesno pretrazivanje kod metode dvostrukog hesiranja je krace; u primeru 13.3
ono iznosi 43/18=2.4, dok u primeru 13.2 (metodom linearnog pokusaja) ono iznosi
62/18=3.44. Hes funkcije treba da obezbede dobro vreme za uspesno pretrazivanje
pri popunjenosti datoteke podataka i do 90%. Ipak, tako pun skup stranica treba
izbegavati.
Metode otvorenog adresiranja mogu se primeniti i u slucaju da se broj slogova
ne moze predvideti. Tada je moguce povremeno ponovno hesiranje u vecu datoteku
podataka.
Za poboljsanje efikasnosti pretrazivanja (i unosenja) kod otvorenog adresiranja,
bez obzira da li se koristi metoda linearnog pokusaja ili dvostrukog hesiranja, mogu
u stranici sa njese primeniti i ulancavanja. Tako, u slucaju da se slog ne nade
govom hes adresom, a da je stranica puna, trazenje ne mora da se nastavi u svim
narednim stranicama. Neka slog koji se trazi ima hes adresu a. Tada slog moze da
se trazi u lancu slogova (odnosno stranica) povezanih pokazivacima, koji pocinje
od hronoloski prvog sloga sa istom hes adresom a. Naime, nijedan slog sa hes
adresom a ne mora da bude na stranici sa adresom a (u vreme unosenja takvih
slogova stranica je mogla da bude vec popunjena slogovima sa hes adresama razlicitim od a). Zato svaka stranica datoteke podataka (npr. stranica sa brojem
x) ima jedan pokazivac na hronoloski prvi slog cija je hes adresa jednaka x; taj
pokazivac mozemo da oznacimo sa stranica(x).prvi. Svaki slog koji odgovara ntorci relacije sa vrednoscu hes atributa v sadrzi pokazivac na sledeci slog (na istoj
ili razlicitoj stranici) sa istom hes adresom h(v); taj pokazivac mozemo da oznacimo
sa slog(v).sled.
Algoritam pretrazivanja za slucaj ulancavanja kod otvorenog adresiranja predstavlja analogon algoritma pretrazivanja kod posebnog ulancavanja; za razliku od
tog algoritma, ovaj algoritam koristi jednu fizicku datoteku datoteku podataka,
sa unapred odredenim
skupom stranica. Slicno vazi i za algoritam unosenja.
Sledeci pseudoprogrami prikazuju ova dva globalna algoritma.
Algoritam pretra
zivanja kod otvorenog adresiranja sa ulan
cavanjem
ulaz: hes atribut A i vrednost v atributa A;
izlaz: skup brojeva stranica x1 , x2 , . . . , xn datoteke podataka, koje sadrze
slogove sa vrednoscu v atributa A; za neuspesno pretrazivanje poruka;
265
BEGIN
i := 0;
x := h(v);
uzeti pokazivac stranica(x).prvi na hronoloski prvi slog sa hes adresom x;
WHILE postoji sledeci slog u lancu DO
/* u prvom prolazu sledeci znaci prvi */
BEGIN broj stranice slog-a dodeliti x;
IF vrednost atributa A slog-a = v i x <> xi /* za i > 0 */
THEN /*stranica nije vec uzeta u obzir */
BEGIN i := i + 1; xi := x END
END;
IF i = 0 THEN izdati poruku o neuspesnom pretrazivanju
ELSE vratiti x1 , . . . , xi
END.
Algoritam uno
senja sloga kod otvorenog adresiranja sa ulan
cavanjem
i kontrolom duplikata
ulaz: slog s sa vrednoscu v hes atributa A;
slog s;
izlaz: broj stranice x na koju je unet ili na kojoj je naden
BEGIN
x := h(v); /* hes funkcija */
uzeti pokazivac stranica(x).prvi na hronoloski prvi slog sa hes adresom x;
WHILE postoji sledeci slog u lancu DO
BEGIN broj stranice slog-a dodeliti x;
IF slog = s
na stranici x)
THEN EXIT(slog s naden
END;
WHILE stranica(x) popunjena DO x := (x + 1) mod M;
uneti slog s na stranicu sa brojem x;
postaviti polje sled poslednjeg slog-a u lancu (ili polje stranica(h(v)).prvi,
ako je s prvi slog sa hes adresom h(v)) da pokazuje na slog s;
vratiti x
END.
13.4
Efikasnost izvr
savanja operacija
Izbor pojedinacnog sloga kod direktne reprezentacije je vrlo efikasna operacija (jedina efikasna operacija nad ovom reprezentacijom), i to u slucaju da se izbor vrsi po
hes atributu. Hes atribut moze biti ma koji atribut ili kombinacija atributa relacije.
To ne mora biti primarni kljuc, niti vrednosti hes atributa moraju biti jedinstvene
unutar relacije. Ipak, pozeljno je za hes atribut izabrati sto je moguce jedinstveniji atribut. Na primer, atribut POL neke relacije, sa vrednostima {muski,
266
13 Direktna organizacija
zenski}, nije dobar kandidat za hes atribut, dok licni broj to svakako jeste. Zato
je vazno maksimalno uskladiti izbor hes atributa sa atributom specificne restrikcije
koja se najcesce javlja u kvalifikaciji upita. Najcesce se za hes atribut bira primarni
kljuc relacije.
Ako je faktor opterecenja a = N/(Mk) (N je broj slogova, M broj stranica
datoteke podataka, k kapacitet stranice u slogovima), onda se analiticki izrazi za
vreme utroseno pri neuspesnom i uspesnom pretrazivanju kod direktne organizacije
mogu prikazati na sledeci nacin ([44], [55]):
neuspesno
uspesno
posebno ulancavanje:
1+
a
2
(a+1)
2
linearni pokusaj:
1
2
1
2(1a)2
1
2
dvostruko hesiranje:
1
(1a)
1
2(1a)
ln(1a)
a
U slucaju posebnog ulancavanja moze biti a > 1, dok u slucaju otvorenog adresiranja (linearni pokusaj i dvostruko hesiranje) mora biti a < 1.
Za malo a, pokazuje se da se svi navedeni izrazi za utroseno vreme svode na osnovni rezultat oko 1+N/(Mk) za neuspesno i 1+N/(2Mk) pokusaja za uspesno
pretrazivanje. Kada je a blisko jedinici, tj. pri velikoj popunjenosti stranica,
otvoreno adresiranje daje veoma lose rezultate.
Iz efikasnosti izbora proistice efikasnost i svih ostalih operacija nad direktnom
reprezentacijom.
Grupna obrada (ili obrada svih slogova) u proizvoljnom ili specificnom redosledu
267
indeksa koristi hes algoritam za transformaciju vrednosti atributa direktnog pristupa u adresu, kada je taj atribut ujedno i atribut spajanja.
Vreme pristupa slogu kod direktne reprezentacije moze biti vrlo malo, u srednjem je dosta dobro (narocito u slucaju dovoljno velike datoteke podataka, skoro
konstantno vreme), ali u najgorem slucaju moze biti i vrlo veliko (kada se veliki broj
vrednosti hes atributa preslikava hes funkcijom u jednu istu adresu); prethodno
navedena tabela sa analitickim rezultatima vezanim za vreme pristupa to dobro
ilustruje. Zbog toga se direktna reprezentacija smatra nestabilnom reprezentacijom. Poseban nedostatak direktne reprezentacije predstavlja cinjenica da su slogovi
u datoteci podataka DP u proizvoljnom redosledu (nesortiranom, nehronoloskom,
onom koji diktira hes funkcija), i da nema fizickog grupisanja slogova pogodnog
za grupne operacije. Ako ovi nedostaci nisu od velike vaznosti za aplikaciju koja
intenzivno pretrazuje relaciju po specificnim vrednostima nekog atributa, onda je
hesiranje po tom atributu pravi izbor fizicke reprezentacije relacije.
Najbolju metodu hesiranja u konkretnoj situaciji je tesko odabrati, ali cesto
svaka od metoda radi dovoljno dobro. Svaka od metoda podrzana je citavim nizom
13.5
Pitanja i zadaci
268
13 Direktna organizacija
I SIF) kao skupom atributa direktnog pristupa. Konstruisati hes funkciju
za ovu reprezentaciju i diskutovati prednosti i nedostatke razlicitih metoda
razresavanja kolizije.
Deo V
Upravljanje transakcijama
270
14
Transakcija, integritet i
konkurentnost
14.1
Transakcija i integritet
Transakcija je logicka jedinica posla pri radu sa podacima. Ona predstavlja niz, tj.
sekvencijalnu kompoziciju radnji koja ne narusava uslove integriteta. Po izvrsenju
kompletne transakcije stanje baze1 treba da je konzistentno, tj. da su ispunjeni
uslovi integriteta. Dakle, posmatrana kao jedinica posla, transakcija prevodi jedno
271
272
(B)
BEGIN TRANSACTION
UPDATE KI
SET VR IZDANJA = VR IZDANJA + 4000
WHERE K SIF = k1 AND I SIF = i1 AND IZDANJE = 2;
UPDATE I
SET VREDNOST = VREDNOST + 4000
WHERE I SIF = i1;
END TRANSACTION
14.2 Konkurentnost
273
podataka efekti izvrsenja svih radnji od kojih se transakcija sastoji, ili nijedne, sto
je jedan aspekt kontrole konzistentnosti baze.
RSUBP DB2 koristi dve radnje upravljaca transakcija, COMMIT i ROLLBACK (to su i iskazi SQL-a), od kojih svaka oznacava i kraj transakcije: COMMIT oznacava uspesan kraj transakcije i trajan upis efekata svih radnji transakcije
u bazu, dok ROLLBACK oznacava neuspesan kraj transakcije i ponistenje svih
efekata koje su proizvele radnje te transakcije. Tako je u sistemu DB2 transakcija deo aplikacije od pocetka programa do prve radnje COMMIT ili ROLLBACK,
dve susedne takve radnje u programu, odnosno od poslednje takve
odnosno izmedu
radnje do kraja programa. Ako se nijedna od radnji COMMIT, ROLLBACK ne
ukljuci u program, onda citav program predstavlja jednu transakciju; na kraju
programa se sistemski generise jedna komanda COMMIT ako je kraj programa
uspesan, odnosno jedna komanda ROLLBACK ako je kraj programa neuspesan.
Ugnjezdene transakcije u sistemu DB2 nisu moguce.
Deo programa u aplikativnom SQL-u, koji realizuje prethodnu transakciju u
sistemu DB2 i koji odrazava zadati uslov integriteta nad relacijama KI, I, moze
imati sledeci izgled:
EXEC SQL WHENEVER SQLERROR GO TO PONISTI;
EXEC SQL UPDATE KI
SET VR IZDANJA = VR IZDANJA + 4000
WHERE K SIF = k1 AND I SIF = i1 AND IZDANJE = 2;
EXEC SQL UPDATE I
SET VREDNOST = VREDNOST + 4000
WHERE I SIF = i1;
EXEC SQL COMMIT;
GO TO ZAVRSENA;
PONISTI: EXEC SQL ROLLBACK;
ZAVRSENA: RETURN;
14.2
Konkurentnost
Kako bazu podataka koristi istovremeno veci broj korisnika, nad bazom podataka se
istovremeno moze izvrsavati vise transakcija. Mada svaka od njih moze ispunjavati
uslove integriteta baze podataka (dobro su definisane, kao sto je bio slucaj sa
transakcijom iz prethodnog primera), ponekad njihovo istovremeno izvrsenje moze
da narusi te uslove. Izvrsenje u kome se transakcije izvrsavaju jedna za drugom je
serijsko izvrsenje, i ono ispunjava uslove integriteta baze, tj. ostavlja bazu u konzistentnom stanju. Pod izvrsenjem skupa transakcija ovde se podrazumeva niz radnji
od kojih se te transakcije sastoje. U tom nizu redosled radnji iz svake transakcije
je nepromenjen, ali dve uzastopne radnje ne moraju pripadati istoj transakciji.
Pojedinacna radnja izvrsenja izvrsava se u jednom koraku.
Da bi se definisalo izvrsenje skupa transakcija koje ispunjava uslove integriteta
a koje nije serijsko, potrebno je preciznije definisati izvrsenje skupa transakcija i
274
(A)
(B)
14.2.1
Izvr
senja skupa transakcija
parovi su neuredeni,
tj. poredak komponenti je nebitan.
14.2 Konkurentnost
275
T1 :
I2 :
T2 :
T1 :
upis KI
upis KI
upis I
I3 :
T2 :
T1 :
upis KI
upis KI
upis I
upis I
upis I
T2 :
upis KI
upis I
upis KI
upis I
276
14.3
Problemi konkurentnosti
= a;
= b;
= b;
= a+4000;
= b+4000;
=
=
=
=
(a + 4000) 1.1
a 1.1 + 4400
(b+4000)1.1
b 1.1 + 4400
277
278
T2 : azurira(r)
T1 : cita(r)
t1
t2
T2 : ponistava
t3
a)
T2 : azurira(r)
T1 : azurira(r)
T2 : ponistava
t1
t2
t3
b)
Slika 14.1: Zavisnost a) citanja b) azuriranja od ponistenog azuriranja
14.4
Zaklju
cavanje
obezbeduje
transakciji pristup objektu, i kojim transakcija istovremeno sprecava
druge transakcije da pristupe tom objektu. Svaka transakcija na kraju svog
izvrsavanja otkljucava sve objekte koje je sama zakljucala (a koje nije vec
otkljucala). Pretpostavimo da u jednostavnom modelu postoji samo jedna vrsta
katanca, i da pri izvrsenju skupa transakcija nijedna transakcija ne moze zakljucati vec zakljucani objekat. (U realnim modelima transakcija postoji vise vrsta
katanaca, od kojih su neki deljivi a neki ekskluzivni; pri tom vise transakcija moze
da postavi deljivi katanac na jedan objekat, ali najvise jedna moze da postavi
ekskluzivni katanac).
14.4 Zakljucavanje
279
ako se sastoji od dve serijske faze: faze zakljucavanja objekata i faze otkljucavanja
objekata. U fazi zakljucavanja nema nijedne radnje otkljucavanja objekta, odnosno
u fazi otkljucavanja vise nema radnji zakljucavanja (naravno, obe ove faze ukljucuju
i druge operacije nad objektima kao sto su citanje, obrada, upis objekata). Faza
otkljucavanja objekata pocinje prvom radnjom otkljucavanja.
Teorema 14.1 Dovoljan uslov za linearizovanost izvrsenja I skupa transakcija
{T1 , T2 } je da su one dvofazne.
Dokaz: Pretpostavimo da za neki objekat o trojka (T1 , o, T2 ) jeste element
relacije zavisnosti izvrsenja I, tj. (T1 , o, T2 ) Z(I). Pokazacemo da je onda
izvrsenje I ekvivalentno serijskom T1 ; T2 , tj. da je linearizovano (sasvim analogno
se pokazuje da, ako je trojka (T2 , o, T1 ) Z(I), onda je izvrsenje I ekvivalentno
serijskom T2 ; T1 , tj. opet je linearizovano).
U suprotnom, neka postoji objekat o0 takav da je (T2 , o0 , T1 ) Z(I). To znaci
da:
1. zbog (T1 , o, T2 ) Z(I), postoje koraci k, m (k < m) izvrsenja I u kojima
transakcija T1 otkljucava objekat o (korak k), odnosno transakcija T2 zakljucava objekat o (korak m);
2. zbog (T2 , o0 , T1 ) Z(I), postoje koraci p, q (p < q) izvrsenja I u kojima
transakcija T2 otkljucava objekat o0 (korak p), odnosno transakcija T1 zakljucava objekat o0 (korak q);
3. iz dvofaznosti transakcija T1 i T2 sledi da je q < k i m < p;
4. iz 1) i 3) sledi q < k < m < p sto je u kontradikciji sa 2). To znaci da ne
postoji objekat o0 takav da je (T2 , o0 , T1 ) Z(I), tj. za svaki objekat o0
nad kojim operisu obe transakcije T1 , T2 vazi: (T1 , o0 , T2 ) Z(I). Dakle,
izvrsenje I je linearizovano.
zakljucati KI
upisati KI
zakljucati I
upisati I
otkljucati KI
otkljucati I
T2 :
zakljucati I
upisati I
zakljucati KI
upisati KI
otkljucati I
otkljucati KI,
280
zakljucati KI
upisati KI
zakljucati I
upisati I.
obezbeduje
zakljucavanje svih vrsta kojima se transakcija obraca (npr.
cele tabele), a ne samo onih vrsta koje zadovoljavaju uslov upita. Tako se
rezultat izvrsenja jednog upita (citanja) transakcije T ne moze promeniti
od strane druge transakcije pre nego sto se transakcija T zavrsi. S druge
nepotvrdene
promene drugih transakcija.
Sledeci nivo izolovanosti jeste nivo stabilnosti citanja RS (engl. read
14.4 Zakljucavanje
281
T2
T1
S
U
X
D
D
N
D
N
N
N
N
N
282
14.4.1
Re
senje problema konkurentnosti
Primenom mehanizma zakljucavanja uz dvofaznost transakcija, resenja tri problema konkurentnosti mogu se graficki predstaviti na sledeci nacin (t predstavlja
vremensku osu):
Re
senje problema nekonzistentne analize:
T1 :
A: azurira KI
(X-katanac nad slogom sa
K SIF=k1, I SIF=i1, IZD.=2)
T2 :
t1
t2
B: azurira I
(X-katanac nad slogom sa
I SIF=i1)
t3
ceka
COMMIT
katance)
(oslobada
t4
ceka
t5
A: azurira KI
(X-katanac nad svim slogovima
sa I SIF=i1)
t6
B: azurira I
(X-katanac nad slogom
sa I SIF=i1)
t7
?
t
COMMIT
katance)
(oslobada
14.4 Zakljucavanje
283
Re
senje problema izgubljenog a
zuriranja:
T1 :
cita I
(S-katanac nad slogom sa)
I SIF=i2)
azurira I
(trazi X-katanac nad slogom
sa I SIF=i2 i ceka)
T2 :
t1
t2
cita I
(S-katanac nad slogom sa)
I SIF=i2)
t3
t4
?
t
azurira I
(trazi X-katanac nad slogom sa
I SIF=i2 i ceka)
cemu se oslobadaju
svi katanci koje je ta transakcija drzala.
Re
senje problema zavisnosti od poni
stenog a
zuriranja:
T1 :
T2 :
azurira slog r
(dobija X-katanac nad r)
t1
cita slog r
(trazi S-katanac nad r
i ceka)
t2
t3
?
t
ROLLBACK
(ponistava se azurirana vrednost
katanac)
i oslobada
284
ove transakcije izvrsavaju u navedenim vremenskim trenucima nad navedenim slogovima ([24]) (odgovarajuci katanci se dobijaju pri citanju odnosno azuriranju, a
oslobadaju
se samo pri uspesnom kompletiranju ili ponistenju transakcije).
vreme trans. radnja
vreme trans. radnja
t1 :
T1 :
citaj A
t19 :
T9 :
upisi G
t2 :
T2 :
citaj B
t20 :
T8 :
citaj E
t3 :
T1 :
citaj C
t21 :
T7 :
COMMIT
t4 :
T4 :
citaj D
t22 :
T9 :
citaj H
t5 :
T5 :
citaj A
t23 :
T3 :
citaj G
t6 :
T2 :
citaj E
t24 :
T10 :
citaj A
t7 :
T2 :
upisi E
t25 :
T9 :
upisi H
t8 :
T3 :
citaj F
t26 :
T6 :
COMMIT
t9 :
T2 :
citaj F
t27 :
T11 :
citaj C
t10 :
T5 :
upisi A
t28 :
T12 :
citaj D
t11 :
T1 :
COMMIT
t29 :
T12 :
citaj C
t12 :
T6 :
citaj A
t30 :
T2 :
upisi F
t13 :
T5 :
ROLLBACK
t31 :
T11 :
upisi C
t14 :
T6 :
citaj C
t32 :
T12 :
citaj A
t15 :
T6 :
upisi C
t33 :
T10 :
upisi A
t16 :
T7 :
citaj G
t34 :
T12 :
upisi D
t17 :
T8 :
citaj H
t35 :
T4 :
citaj G
t18 :
T9 :
citaj G
t36 :
...
...
Pitanje koje se postavlja je: da li u trenutku t36 ima uzajamnog blokiranja?
Iz analize transakcij
a sledi da su transakcije T1 , T7 i T6 uspesno zavrsile rad, a
da je transakcija T5 ponistena. Iz grafa preostalih transakcija i katanaca koje one
drze nad pojedinim slogovima (slika 14.2) sledi da u trenutku t36 nijedna od njih
ne radi nista korisno, tj. da su uzajamno blokirane.
14.5
Pitanja i zadaci
linearizovano izvrsenje
zakljucavanje
katanac
granularnost
dvofaznost transakcija
uzajamno blokiranje transakcija
graf cekanja
285
T10
T11
A(X)
C(X)
?
T12
D(X)
?
T4
G(S)
?
T9
6
G(S)
H(X)
T8
E(S)
?
T2
T3
F(X)
T2 i T 3 :
citaj s
citaj t
azur. t
citaj r
T3 :
citaj t
citaj s
azur. s
citaj r
azur. r
(r, s i t su slogovi).
Navesti sva moguca izvrsenja skupa transakcija {T1 , T2 , T3 } u slucaju da se
ne primenjuje mehanizam zakljucavanja. Koja su od tih izvrsenja linearizovana?
6. Neka su date transakcije kao u prethodnom primeru. Navesti moguca
izvrsenja (ili delimicna izvrsenja) tog skupa transakcija, ako se koriste deljivi
i ekskluzivni katanci. Koja od tih izvrsenja dovode do uzajamnog blokiranja?
Predloziti kriterijume ponistavanja kojima se razresava uzajamno blokiranje.
7. Konstruisati jedno linearizovano izvrsenje skupa transakcija od kojih bar
jedna nije dvofazna.
15
Oporavak
Oporavak podrazumeva aktivnost koju sistem preduzima u slucaju da se, u toku
izvrsenja jedne ili vise transakcija, otkrije neki razlog koji onemogucava njihovo
uspesno kompletiranje. Taj razlog moze biti:
u samoj transakciji, kao sto je prekoracenje neke od dozvoljenih vrednosti
(pad transakcije),
u sistemu, npr. prestanak elektricnog napajanja (pad sistema), ili
u disku na kome je baza podataka, npr. ostecenje glava diska (pad medija).
Kako je transakcija logicka jedinica posla, njene radnje moraju ili sve uspesno
da se izvrse ili nijedna, pa je u slucaju nemogucnosti uspesnog kompletiranja
neophodno ponistiti efekte parcijalno izvrsenih transakcija. Sa druge strane, moze
se dogoditi da u trenutku pada sistema neki efekti uspesno kompletiranih transakcija jos nisu upisani u bazu (npr. azurirani slogovi su jos u unutrasnjoj memoriji
u baferu podataka ciji se sadrzaj pri padu sistema gubi); zato moze postojati
potreba za ponovnim (delimicnim) izvrsenjem nekih prethodno uspesno kompletiranih transakcija. To ponistavanje odnosno ponovno izvrsavanje u cilju uspostavljanja konzistentnog stanja baze predstavlja sistemsku aktivnost oporavka od pada
transakcije ili sistema. Transakcija je, dakle, i logicka jedinica oporavka. U slucaju
pada medija, oporavak ukljucuje pre svega prepisivanje arhivirane kopije baze (npr.
sa trake) na ispravan medij, a zatim, eventualno, ponovno izvrsenje transakcija
kompletiranih posle poslednjeg arhiviranja a pre pada medija.
Ovako koncipiran oporavak nuzno se zasniva na postojanju ponovljenih (dupliranih) podataka i informacija na razlicitim mestima ili medijima, tj. na mogucnosti
rekonstrukcije informacije na osnovu druge informacije, ponovljeno smestene na
drugom mestu u sistemu. Kao drugo mesto u sistemu, na koje se (osim u bazu)
upisuju informacije o izvrsenim radnjama, obicno se koristi tzv. log datoteka (sistemski log, dnevnik azuriranja).
286
15 Oporavak
287
288
15 Oporavak
15.1
15.2
289
290
15 Oporavak
BEGIN
naci slog poslednje tacke pamcenja u log datoteci
(iz datoteke ponovnog startovanja);
IF u poslednjoj tacki pamcenja nema aktivnih transakcija
i slog tacke pamcenja je poslednji slog u log datoteci,
oporavak je zavrsen
ELSE
BEGIN
formirati dve prazne liste transakcija, uspele i neuspele;
sve transakcije aktivne u poslednjoj tacki pamcenja
staviti u listu neuspelih;
citati redom log datoteku od tacke pamcenja do kraja:
na slog pocetak transakcije,
kada se naide
dodati transakciju listi neuspelih;
na slog kompletirana transakcija,
kada se naide
dodati (premestiti) tu transakciju listi uspelih;
citati unazad log datoteku (od kraja)
i ponistiti akcije i efekte neuspelih transakcija;
citati log datoteku od poslednje tacke pamcenja unapred
i ponovo izvrsiti uspele transakcije
END
END.
Primer 15.1 Razmotrimo izvrsenje skupa transakcija predstavljeno slikom 15.1.
T1
T2
T3
T4
T5
trans.
tpam
tpad
vreme
291
T2
T4
trans.
tpam azurira
cita
tpad
vreme
T2
T4
trans.
azurira
cita
tpam
tpad
vreme
15.2.1
Pobolj
sanje procedure oporavka od pada sistema
292
15 Oporavak
radnje uspelih transakcija od tacke pamcenja, cak i ako su efekti tih radnji, zbog
popunjenosti bafera podataka, upisani u bazu pre pada sistema.
293
T1
T2
T3
T4
T5
trans.
tpam
tpad
vreme
BEGIN
formirati dve prazne liste transakcija, uspele i neuspele;
sve transakcije aktivne u tacki m staviti u listu neuspelih;
citati redom log datoteku od tacke m do kraja:
na slog pocetak transakcije,
kada se naide
dodati transakciju listi neuspelih;
na slog kompletirana transakcija,
kada se naide
dodati (premestiti) tu transakciju listi uspelih;
citati unazad log datoteku (od kraja)
i ponistiti efekte onih radnji neuspelih transakcija
za koje je p r, gde je r LSN tekuceg sloga
a p LSN odgovarajuce stranice baze podataka;
citati log datoteku od tacke m unapred
i ponovo izvrsiti one radnje uspelih transakcija
za koje je p < r (p, r kao u prethodnom koraku)
END.
294
15 Oporavak
15.3
Pitanja i zadaci
REDO logika
tacka pamcenja
protokol unaprednog upisivanja u log
dnevnik azuriranja
Deo VI
296
16
Problemi distribuiranih
sistema
16.1
O distribuiranim sistemima
i ulazno/izlazne uredaje.
Osnovna pretpostavka za uspesnost sistema za upravljanje distribuiranim
bazama podataka je nevidljivost lokacije. Naime, ovaj sistem treba da obezbedi
jos jedan nivo fizicke nezavisnosti podataka: korisnik i njegov program ne treba
da znaju na kojoj se lokaciji u distribuiranom sistemu nalaze podaci koji su im
potrebni. Za korisnika, distribuirani sistem treba da izgleda identicno sa nedistribuiranim (centralizovanim), tj. pristup podacima treba da je isti kao da su
svi podaci smesteni u lokalnom cvoru korisnika. Sistem odlucuje (ne ukljucujuci
korisnika) o tome da li ce potrebne podatke, ukoliko su na udaljenoj lokaciji, doneti
na lokalni cvor za obradu, ili ce obradu preneti na udaljenu lokaciju.
Sistem distribuiranih baza podataka moze se predstaviti grafom ciji su cvorovi
lokacije, a grane komunikacione linije. Svaka lokacija sadrzi centralni procesor
(CP), lokalnu bazu podataka (BP) i pripadni SUBP, kao i skup terminala. Dve
njima postoji direktna veza koja funkcionise, ili ako
lokacije su povezane ako medu
postoji treca lokacija koja je sa njima u direktnoj vezi (slika 16.1).
Na razlicitim lokacijama, lokalni sistemi za upravljanje bazama podataka mogu
biti razliciti. Tada se DSUBP naziva heterogenim. Ako su SUBP na svim lokacijama isti, DSUBP se naziva homogenim.
297
298
komunikaciona
linija
CP
..
.
..
.
BP
CP
..
.
BP
..
.
H
H
CP
..
.
CP
..
.
..
.
BP
BP
..
.
299
300
16.2
Fragmentacija podataka
301
DRZAVA = Jugoslavija
16.3
Distribuirana obrada upita podrazumeva distribuiranu optimizaciju kao i distribuirano izvrsavanje upita. Strategije optimizacije upita nad distribuiranom bazom
podataka imaju za cilj da minimizuju cenu obrade i vreme za koje ce korisnik dobiti
odgovor. U troskovima obrade najvecu stavku cine troskovi mrezne komunikacije,
tj. prenosa podataka kroz mrezu, dok su troskovi komunikacije sa ulazno/izlaznim
uredajima
i koriscenja procesora nizi za nekoliko redova velicine. Zbog toga je
veoma znacajno, u zavisnosti od propusnosti mreze (kolicine podataka koje moze da
primi u sekundi) i vremena kasnjenja, pravilno odabrati relacije i njihove fragmente
koji ce biti prenoseni sa jedne lokacije na drugu u cilju obrade upita (globalna
optimizacija). Razlog za prenosenje podataka moze biti to sto su podaci na lokaciji
razlicitoj od one na kojoj se postavlja upit, ili sto u upitu ucestvuje veci broj relacija
sa razlicitih lokacija. Izbor strategije za izvrsenje operacija na jednoj lokaciji poznat
je kao lokalna optimizacija.
Ako se n relacija R1 , R2 , . . . , Rn koje ucestvuju u upitu nalaze na k razlicitih
lokacija l1 , l2 , . . . , lk , pri cemu je svaka relacija Ri u celosti na lokaciji lj , onda se
osnovna strategija distribuirane obrade upita sastoji od sledeca dva koraka:
1. maksimalna redukcija svake relacije na njenoj lokaciji (lokalna restrikcija i
projekcija na atribute spajanja i izlazne atribute),
2. prenosenje dobijenih relacija na jednu lokaciju, ili na vise lokacija, redom,
na kojima je moguce izvrsiti pojedinacna spajanja i projekciju na izlazne
atribute.
302
303
= (I KI)
= (IKI K)
(l3 )
(l1 ).
= (K KI)
= (KKI I)
(l1 )
(l2 ),
KKI
REZ
= (K KI)
= (KKI I)
(l3 )
(l2 ).
Razmotrimo efikasnost nabrojanih varijanti koraka 2 osnovne strategije distribuirane obrade upita.
Neka su velicine relacija date sa
K
I
KI
10000 n-torki
1000 n-torki
50000 n-torki
i neka svaka n-torka zauzima po 100 bita. Neka je, dalje, procenjeno da ima 1000
romana u relaciji K, 100 jugoslovenskih izdavaca u relaciji I i 20000 jugoslovenskih
304
izdanja u relaciji KI. Ako se jos pretpostavi da je propusnost mreze 50000 bita u
sekundi, a vreme kasnjenja 0.1 sekunda, onda se za optimalnu strategiju proglasava
ona koja ima minimalnu vrednost vremena komunikacije
t = kasnjenje + (kolicina podataka za prenos / propusnost), tj.
t = (broj poruka 0.1sec) + (broj bita za prenos / 50000)sec.
Primena raznih varijanti mogucnosti navedenih pod a) i b) rezultovala bi razlicitim ukupnim vremenima komunikacije. Na primer, u slucaju a) bice
t 0.2 + (1100100) / 50000 = 2.4 sekunde (bez prenosenja rezultata na
lokaciju l1 ), dok u slucaju b) dobijamo
t 0.2 + (100 + 20000) 100 / 50000 = 40.4sec.
Jedna od varijanti b) mogla bi da bude i prenosenje relacije KI na lokaciju
l2 , spajanje sa relacijom I i projekcija na atribute K SIF, IZDANJE, NAZIV,
zatim prenosenje rezultata na lokaciju l1 i spajanje sa relacijom K. U ovom slucaju
ukupno vreme komunikacije je
t 0.2 + (70000) 100 / 50000 = 140.2 sekunde, sto je znatno vise od prethodnih
vremena.
Na slican nacin mogu se izracunati ukupna vremena komunikacije i u drugim
varijantama, pri cemu je zadatak globalne optimizacije da izabere varijantu sa
najmanjim vremenskim utroskom.
Znatno poboljsanje efikasnosti moze se postici primenom sofisticiranih algo
ritama za izvodenje
nekih operacija. Jedan od takvih algoritama, primenjen u
sistemu SDD-1, odnosi se na izvrsenje operacije spajanja i ukljucuje operaciju poluspajanja (engl. semijoin). Rezultat operacije poluspajanja relacija R i S jednak
je rezultatu spajanja tih relacija, projektovanom na atribute relacije R. Tako, ako
je potrebno izvrsiti spajanje relacije R (sa lokacije l1 ) i relacije S (sa lokacije l2 ),
umesto da se cela relacija R prenese na lokaciju l2 i tamo spoji sa relacijom S,
moguce je izvrsiti sledeci niz radnji:
izracunati projekciju relacije S po atributu spajanja, na lokaciji l2 (rezultat
je relacija TEMP1);
preneti relaciju TEMP1 na lokaciju l1 ;
izvrsiti poluspajanje relacije R i TEMP1 po atributu spajanja, na lokaciji l1
(rezultat je relacija TEMP2);
preneti relaciju TEMP2 na lokaciju l2 ;
izvrsiti spajanje relacija TEMP2 i S po atributu spajanja, na lokaciji l2 .
Ovaj niz radnji smanjuje kolicinu prenosa podataka samo ako je
broj bitova (TEMP1) + broj bitova (TEMP2) < broj bitova (R),
i nije efikasan ako se spajanje izvodi po primarnom kljucu relacije R koji je strani
kljuc relacije S (npr. u slucaju relacija I, KI).
16.4
305
Preneto a
zuriranje
Medutim,
momentalno prenosenje azuriranja na sve kopije moze da onemoguci
(ili da nedopustivo dugo odlozi) uspesno izvrsenje azuriranja u slucaju da je bilo
koja od lokacija u padu; time ponavljanje podataka smanjuje umesto da povecava
raspolozivost podataka.
Jedan siroko prihvaceni pristup prenosenju azuriranja oslanja se na koncept
primarne kopije, i sastoji se u sledecem postupku:
jedna kopija svakog ponovljenog objekta proglasava se za primarnu kopiju tog
objekta, pri cemu primarne kopije razlicitih objekata mogu biti na razlicitim
lokacijama;
operacija azuriranja objekta smatra se logicki izvrsenom cim se izvrsi
azuriranje primarne kopije tog objekta; azuriranje ostalih kopija je sada
u nadleznosti lokacije na kojoj je primarna kopija, ali se mora izvrsiti pre
kompletiranja transakcije. Ovaj postupak zahteva primenu protokola dvofaznog kompletiranja transakcije (v. odeljak 17.4), koji se pak ne moze
uspesno sprovesti ako je bar jedna relevantna lokacija u padu, sto je nezanemarljivo cest slucaj. Ukoliko se dopusti azuriranje kopija i posle kompletiranja transakcije, ne moze se garantovati konzistentnost podataka u svim
njihovim kopijama. Ipak, neki komercijalni distribuirani sistemi pribegavaju
tom resenju jer puno postovanje azuriranja svih kopija pre kompletiranja
transakcije moze bitno da poveca vreme obrade.
Detaljnija razmatranja problema prenetog azuriranja mogu se naci u [27], [21].
16.5
Upravljanje katalogom
Katalog je, kako je vec istaknuto u odeljku 7.1, sistemska baza podataka koja sadrzi
podatke o baznim relacijama, pogledima, indeksima, korisnicima, itd, a u slucaju
distribuiranog sistema, i o nacinu i lokacijama na koje su podaci razdeljeni i (eventualno) ponovljeni. Sam katalog u distribuiranom sistemu moze biti centralizovan
(samo na jednoj lokaciji), potpuno ponovljen (na svim lokacijama po jedna kopija
kataloga), particioniran (na svakoj lokaciji je deo kataloga koji se odnosi na objekte
sa te lokacije) ili kombinovan (katalog je particioniran, ali na jednoj lokaciji postoji
i jedna centralna kopija kompletnog kataloga).
S obzirom na nedostatke koje ispoljava svaki od navedenih pristupa (zavisnost
od centralne lokacije, visoka cena prenosenja azuriranja kataloga ili skup pristup
306
pri rodenju)
i lokacije na kojoj je roden.
Pronalazenje objekta, kada je dato njegovo lokalno ime ili sinonim, pocinje preslikavanjem lokalnog imena (automatski),
odnosno sinonima (pregledanjem tabele sinonima), u sistemski identifikator ob
jekta. Zatim se, prema sistemskom identifikatoru, nalazi lokacija rodenja
objekta,
pristupa joj se i u slogu koji odgovara tom objektu, pronalazi se lokacija na kojoj
je trenutno smesten. U sledecem koraku pristupa se (u opstem slucaju udaljenoj)
lokaciji na kojoj je objekat smesten, i lokalnim operacijama pronalazi objekat.
16.6
307
308
16.7
Pitanja i zadaci
globalna optimizacija
lokalna optimizacija
sistem multibaza
prolaz
particionirani podaci
ponovljeni podaci
nevidljivost particioniranja
17
Distribuirano upravljanje
transakcijama
Pod transakcijom u distribuiranom sistemu podrazumevace se, kao i u centralizo niz radnji koji prevodi jedno konzistentno stanje
vanom slucaju, vremenski ureden
baze u drugo konzistentno stanje baze. Posmatracemo opet jednostavni model
transakcija u kome se one sastoje samo od radnji citanja i upisa (azuriranja).
Ipak, pojam transakcije u distribuiranom sistemu je kompleksniji, s obzirom da
transakcija moze da izvrsava radnje svog programa na raznim lokacijama; zato
transakciju, koja predstavlja logicku jedinicu posla (i oporavka), moze da izvrsava
veci broj procesa na vecem broju lokacija. Startovanjem jedne transakcije bira se
jedan upravljac transakcija (na jednoj lokaciji) koji sluzi kao koordinator procesa te
transakcije. Svakoj transakciji dodeljuje se i njen privatni radni prostor (koji moze
da bude razdeljen na vise lokacija), iz kojeg ce transakcija citati i u koji ce upisivati
vrednosti objekata.
Pri distribuiranoj obradi transakcija, transakcija koja cita vrednost objekta
cita vrednost samo jednog lokalnog primerka tog objekta, dok azuriranje jednog objekta sprovodi nad svim primercima tog objekta (na svim lokacijama distribuiranog
sistema na kojima primerak tog objekta postoji).
Transakcija se, kao i u centralizovanom sistemu, karakterise ACID-svojstvima
(v. glavu 14).
17.1
Konkurentnost
Neka je dat skup transakcija T={Ti }ni=1 nad bazom podataka distribuiranom na k
lokacija.
Lokalno izvrsenje skupa T na lokaciji l je niz Il trojki oblika
(Tj , procitaj, xl ), odnosno
(Tj , azuriraj, xl ),
309
310
311
17.2
Dvofazno zaklju
cavanje
Jedna metoda za postizanje linearizovanog distribuiranog izvrsenja je, kao i kod centralizovanog linearizovanog izvrsenja, dvofaznost transakcija, koja se u distribuiranom slucaju prosiruje sledecim zahtevima:
pri citanju logickog objekta x, dovoljno je da transakcija zakljuca deljivim
katancem jedan primerak objekta x (onaj koji stvarno cita);
pri azuriranju logickog objekta x, transakcija mora da postavi ekskluzivne
katance na sve primerke objekta x, na svim lokacijama u distribuiranoj bazi;
ako transakcija ne moze da dobije trazeni katanac, ona staje u red za cekanje
za onaj primerak objekta nad kojim treba da izvrsi radnju.
Glavni nedostatak prethodnog postupka dvofaznog zakljucavanja je sto transakcija, pri azuriranju jednog logickog objekta, mora dobiti ekskluzivni katanac na
oslobadanjem
katanaca u celom sistemu. U tom slucaju je azuriranje pojednostavljeno, jer se skup svih primeraka jednog logickog objekta moze tretirati (u svrhe
zakljucavanja) kao jedinstveni objekat. Nedostatak ove tehnike je sto se lokacija
koja upravlja zakljucavanjem brzo preopterecuje, a u slucaju njenog pada, pada i
ceo distribuirani sistem.
Druga tehnika je tehnika primarnog primerka objekta. U ovoj tehnici svaki
logicki objekat ima jedan svoj primarni primerak i, moguce je, veci broj ostalih
312
primeraka. Razni logicki objekti mogu imati primarne primerke na raznim lokacijama. Upravljac zakljucavanja lokacije na kojoj je primarni primerak logickog ob
jekta x obraduje
zahteve za zakljucavanjem objekta x (i na svim drugim lokacijama). I u ovom slucaju svi primerci jednog objekta ponasaju se, u svrhe zakljucavanja, kao jedinstveni objekat, ali ova tehnika ne pokazuje nedostatke centralizovanog upravljaca zakljucavanja.
1.
T1
x1
T3
a)
2.
T1
y2
- T2
b)
z2
- T3
1.
313
x1
T1
T3
6
x1
y2
?
2.
T1
y2
- T2
z2
- T3
17.3
Vremenske oznake
Kod centralizovanih sistema sprecavanje uzajamnog blokiranja je bila skupa operacija pa se najcesce pribegavalo njegovom detektovanju i ponistavanju nekih
transakcija koje su u njemu ucestvovale. Kod distribuiranih sistema operacija
ponistavanje transakcija je skuplja nego kod centralizovanih sistema, pa se primenjuje i druga mogucnost resavanja problema uzajamnog blokiranja njegovo
sprecavanje. Ono se postize po cenu smanjene konkurentnosti izvrsenja skupa
transakcija.
Jedna metoda konkurentnog izvrsavanja skupa transakcija koja iskljucuje
mogucnost uzajamnog blokiranja jeste metoda vremenskih oznaka. U ovoj metodi
transakcijama se dodeljuju oznake vremena njihovog pocetka, i dopustaju se konfliktne radnje samo u redosledu vremenskih oznaka pripadnih transakcija (pokusaj da
se konfliktne radnje izvrse u drugacijem redosledu proizvodi ponistavanje transakcije). Dok metoda zakljucavanja, uz detekciju i razresavanje (eventualno) nasta
log uzajamnog blokiranja, obezbeduje
ekvivalentnost konkurentnog izvrsenja sa
314
nakama (jer su i same vremenske oznake linearno uredene). Kako na svakoj lokaciji vazi da se izvrsenje konfliktnih radnji obavlja u redosledu vremenskih oznaka
transakcija, to za relaciju zavisnosti Z(I) distribuiranog izvrsenja I vazi da je (Ti ,
xl , Tj ) Z(I) (xl je primerak logickog objekta x na lokaciji l) ako i samo ako je
i < j, tj. ako i samo ako je vremenska oznaka (Ti ) < vremenska oznaka (Tj ). Ako
17.3.1
315
Klase transakcija
Tehnika zasnovana na klasama transakcija, kojom se postize linearizovanost distribuiranog izvrsenja skupa transakcija, moze se opisati sledecim karakteristikama.
u konflikt,
Da bi se ogranicio skup transakcija koje uopste mogu da dodu
uocavaju se transakcije koje mogu da operisu (citaju ili azuriraju) nad istim
objektom. Zato se definise skup citanja i skup azuriranja transakcije kao skup
logickih objekata koje ta transakcija cita odnosno azurira.
Klasa transakcija se definise skupom citanja i skupom azuriranja. Pri tome,
jedna transakcija pripada nekoj klasi transakcija ako je njen skup citanja podskup skupa citanja te klase transakcija, a skup azuriranja podskup skupa
azuriranja te klase transakcija. Tako, ako je T transakcija izmene statusa izdavaca iz Jugoslavije, njen skup citanja i skup azuriranja definisan je sledecim
upitom:
SELECT *
FROM
I
WHERE DRZAVA = Jugoslavija
(ili odgovarajucom projekcijom).
Tada je transakcija T u klasi transakcija definisanoj skupom citanja (i skupom
azuriranja)
SELECT *
FROM
I
jer transakcija T cita, odnosno azurira neki podskup skupa slogova svih izdavaca.
Jedna transakcija moze biti istivremeno clan veceg broja klasa transakcija
(svih onih klasa ciji je skup citanja nadskup njenog skupa citanja, a skup
azuriranja nadskup njenog skupa azuriranja).
Dve klase transakcija su u konfliktu ako skup azuriranja bilo koje od tih klasa
ima neprazan presek sa skupom citanja ili skupom azuriranja druge klase.
Transakcije koje pripadaju klasama koje nisu u konfliktu mogu nesmetano
da se odvijaju paralelno, dok je za transakcije iz iste klase, ili za transakcije
konfliktnih klasa, potrebna sinhronizacija (npr. vremenskim oznakama), tj.
specificni protokoli.
Administrator baze podataka (ili sam sistem, kao u slucaju sistema SDD-1)
316
17.3.2
317
Primer 17.3 Neka su zadate sledece tri klase transakcija svojim skupovima citanja
i azuriranja:
318
NAJVECIM
C1 : UVECATI
TIRAZ
IZDAVACIMA
skup citanja:
SELECT *
FROM
I, KI
WHERE I.I SIF = KI.I SIF AND I.STATUS =
(SELECT MAX(STATUS)
FROM
I)
skup azuriranja:
SELECT *
FROM
I, KI
WHERE I.I SIF = KI.I SIF AND I.STATUS =
(SELECT MAX(STATUS)
FROM
I)
Primer transakcije ove klase je Uvecati tiraz najvecim izdavacima iz Jugoslavije
za 10%.
C2 : UVECATI
STATUS NAJVECIM
IZDAVACIMA
skup citanja:
SELECT *
FROM
I
WHERE STATUS = ( SELECT MAX(STATUS)
FROM
I)
skup azuriranja:
SELECT *
FROM
I
WHERE STATUS = ( SELECT MAX(STATUS)
FROM
I)
IZDAVACE
C3 : PRIKAZATIE NAJVECE
skup citanja:
SELECT *
FROM
I
WHERE STATUS = ( SELECT MAX(STATUS)
FROM
I)
skup azuriranja:
prazan skup.
Graf konflikta ove tri klase transakcija moze se prikazati slikom 17.3.
319
UVECATI
UVECATI
PRIKAZATI
TIRAZ
STATUS
NAJVECE
NAJVECIM
NAJVECIM
IZDAVACE
IZDAVACIMA
IZDAVACIMA
cvor citanja
cvor citanja
cvor citanja
r
r
r
HH
HH
HH
HH
HH
Hr
r
r
cvor azuriranja
UVECATI
TIRAZ
NAJVECIM
IZDAVACIMA
cvor azuriranja
UVECATI
STATUS
NAJVECIM
IZDAVACIMA
cvor azuriranja
PRIKAZATI
NAJVECE
IZDAVACE
320
17.4
Oporavak
baze i oslobadaju
resurse koje je transakcija T drzala. Kada se obave sva ta
prepisivanja i o tome obavesti koordinator, izvrsenje transakcije T je zavrseno.
Ako je koordinator obavesten da bar jedna lokacija nije uspesno obavila prvu
fazu, on salje poruku svim lokacijama o ponistavanju transakcije.
Ovakav protokol dvofaznog kompletiranja transakcije u implementacijama se
poboljsava na razne nacine, u cilju smanjenja broja poruka koje se prenose. Na
primer, moguce je pretpostaviti da ce kompletiranje biti uspesno i time eliminisati
17.4 Oporavak
321
slanje poruka iz prve faze. Ukoliko je kompletiranje zaista uspesno, broj poruka
je znatno smanjen; ukoliko je kompletiranje neuspesno (a pretpostavlja se da je to
slucaj), broj poruka se uvecava, a zahteva se i ponistavanje odredenog
redi
broja
radnji.
322
17.5
Pitanja i zadaci
18
324
aplikacije
klijenti
SUBP
server
baza
podataka
Slika 18.1: Klijent-server arhitektura
325
...
KLIJENTI
@
@
@
KOMUNIKACIONA MREZA
SERVER
326
18.1
18.1.1
DB2 server
konfigurisanje, proizvodenje
rezervnih kopija (engl. backup) i oporavak podataka,
upravljanje direktorijumima, raspodelu poslova i upravljanje medijima. Kontrolni
centar je novi graficki alat u ovoj verziji sistema DB2.
Kontrolni centar prikazuje objekte baze podataka kao sto su same baze i tabele i
njihove medusobne
veze. Koriscenjem kontrolnog centra moze se, sa jednog mesta,
upravljati lokalnim ili udaljenim serverom baza podataka i njihovim objektima.
327
18.1.2
DB2 klijent
Klijenti DB2 mogu biti pod operativnim sistemom OS/2, Windows NT, Windows
95, Windows 3.1x, na UNIX platformama (AIX, HP-UX, Solaris, SINIX, Silicon
Graphics IRIX, SCO OpenServer), Macintosh, DOS.
Na svakoj klijent radnoj stanici, bez obzira na platformu, instaliran je paket
CAE (Client Application Enabler), koji omogucuje pristup DB2 serveru i povezivanje na bilo koji DB2 UDB proizvod. Ovaj paket ukljucuje sve neophodne komponente DB2 sistema, zatim ODBC podrsku koriscenju DB2 baze podataka od strane
drugih (ne-DB2) programa za obradu podataka, opseznu dokumentaciju i DB2 komandni interfejs (Command Line Processor). Za svaki operativni sistem postoji
odgovarajuci CAE proizvod, ali sve platforme ne podrzavaju i sve klijentske alate
(v. [?]).
Na klijentu mogu da se instaliraju i komponente za udaljeno administriranje
servera.
18.1.3
328
aplikacija, i obezbeduje
prekompilatore za te jezike.
Treca metoda ugradnje baze podataka u aplikativni program, JDBC, predstavlja
posebno zanimljivu mogucnost u savremenom razvoju RSUBP to je pristup
bazama podataka preko Interneta. Popularnost Interneta i World Wide Web-a
postavlja zadatak pristupa podacima sa Web-a kao obavezu svakog RSUBP-a.
Pozivi DB2 API funkcija koriste se za izvrsavanje administrativnih funkcija
kao sto su pravljenje rezervnih kopija sqlubkp, ili restaurisanje baze podataka
sqlurst. API funkcije su isprogramirane u programskom jeziku, npr. C-u, i
329
mogu se pozivati eksplicitno ili implicitno; one se pozivaju implicitno pri prekompiliranju aplikativnog programa sa ugnjezdenim SQL-om kada se SQL iskazi zamenjuju pozivima API funkcija u sintaksi odgovarajuceg jezika (v. sledecu tacku
Priprema i izvrsavanje aplikativnih programa).
Proces razvoja aplikacije u klijent-server okruzenju podrazumeva da su ispunjene sledece pretpostavke:
na serveru je instaliran upravljac bazama podataka (RSUBP);
na klijent ili server radnoj stanici na kojoj se razvija aplikacija instaliran je
DB2 SDK softver;
odgovarajuci jezicki procesor je instaliran i konfigurisan;
instaliran je i konfigurisan zajednicki komunikacioni protokol za server i klijent;
postoji mogucnost povezivanja na bazu podataka iz komandne linije (command line processor).
Aplikativni program moze se razvijati na serveru ili na bilo kom klijentu na
kome je instaliran DB2 SDK softver. Aplikacija se moze izvrsavati ili na serveru ili
na bilo kom klijentu na kome je instaliran CAE (Client Application Enabler).
Da bi aplikativni program mogao da se izvrsava, neophodno je da prethodno
uspostavi vezu poveze se sa ciljnom bazom podataka. Uspostavljanjem veze
identifikuje se korisnik (svojom korisnickom identifikacijom) koji izvrsava program,
i server (svojim imenom) nad kojim se program izvrsava. U opstem slucaju aplikativni program moze u jednom trenutku da bude povezan samo sa jednim serverom
baza podataka; taj server se naziva tekucim serverom. U slucaju distribuirane
transakcije, aplikativni program moze se povezati sa vecim brojem servera baza
podataka, pri cemu je u svakom trenutku samo jedan od tih servera tekuci server.
Veza programa sa serverom baza podataka uspostavlja se eksplicitno iskazom
CONNECT koji treba da bude prvi izvrsni iskaz, ili implicitno vezom na podrazumevani server baza podataka (pri startovanju aplikativnog programa, ako je
omoguceno implicitno povezivanje). Program zatim moze da izvrsava proizvoljni
broj iskaza za manipulisanje podacima, definisanje i odrzavanje objekata baze po
dataka, kontrolnih operacija kao sto je dodela prava korisnicima, potvrdivanja
ili
ponistavanja promena. Veza sa bazom podataka prekida se izvrsavanjem iskaza
CONNECT RESET ili DISCONNECT.
18.1.4
Priprema i izvr
savanje aplikativnih porograma
330
331
bliskog masinskom; veznik pri tom proverava prava korisnika (koji ga poziva) za
izvrsenje pojedinih radnji.
Ako se aplikacija obraca vecem broju baza podataka, za svaku se mora kreirati
ako aplikacija ukljucuje veci broj posebno prekompiliranih
pristupni paket. Takode,
izvornih modula, za svaki moduo se kreira po jedan pristupni paket.
Ukoliko se struktura pristupnih puteva promeni (na primer, doda se novi indeks
ili ukloni postojeci), da bi aplikacija mogla da koristi nove mogucnosti pristupa,
veznik mora ponovo da se pozove i da se kreira novi pristupni paket. Ponovno
pozivanje veznika moze biti automatsko implicitno (na primer u slucaju uklanjanja indeksa koji je koriscen u pristupnom paketu) ili eksplicitno (na primer, u
slucaju dodavanja novog indeksa koji korisnik zeli da iskoristi).
do poziva
Aplikacija se izvrsava na klijentu; kada se izvrsavanjem programa dode
DB2 API funkcije (zahteva za operacijom nad bazom), upravljanje preuzima server
koji izvrsava odgovarajucu operaciju nad bazom, i vraca rezultat i kontrolu upravljanja programom klijentu.
Postupak pripreme i izvrsenja aplikativnog programa u klijent-server okruzenju
moze se prikazati shematski kao na slici 18.3. Maticni jezik je programski jezik
C. Pravougaonicima su predstavljeni sistemski programi koji se koriste u pripremi
i izvrsenju aplikacije, zakrivljenim kvadratima prikazuju se datoteke koje se koriste i proizvode u procesu pripreme, dok je valjkom predstavljena baza podataka,
ukljucujuci i katalog kao njen sistemski deo.
Prethodno razmatranje odnosi se na aplikativne programe sa statickim SQLom. Programi sa dinamickom pripremom i izvrsavanjem SQL iskaza (koriscenjem
PREPARE i EXECUTE ili EXECUTE IMMEDIATE) ne prekompiliraju se vec
ceo postupak obrade prolaze u vreme izvrsenja.
U aplikativnom programu moze da se koristi DB2 CLI sistem koji je baziran
na Microsoft Open Database Connectivity (ODBC) specifikaciji, i na ISO CLI
standardu. Ovaj sistem koristi dinamicke SQL iskaze kao argumente funkcija koji
se prosleduju
sistemu DB2 na obradu. U tom slucaju koraci prekompiliranja i
povezivanja aplikacije sa bazom (bind) nisu potrebni jer se koriste javni pristupni
332
izvorni
program P
na jeziku
C/SQL
?
vezna
modifikovani
prekompilator
- datoteka
program P
(db2 PREP)
(bind file)
na jeziku C
?
?
veznik
(db2 BIND)
C-kompilator
?
prevedeni
program
?
povezivac
(linker)
pristupni
paket
(plan
aplikacije)
biblioteke
?
katalog
baza
podataka
?
izvrsni
program
A
MREZ
DB2 KLIJENT
?
DB2
DB2 SERVER
18.1.5
333
Fizi
cka organizacija podataka u sistemu DB2
334
ON oznaka-uredaja
precizira slovo pridruzeno uredaju
na kome se kreira nova
baza podataka (npr. C:).
Ovom komandom se uvek, eksplicitno ili implicitno, kreira po jedan CATALOG, USER i TEMPORARY prostor tabela za katalog, korisnike i
privremene podatke (SYSCATSPACE, USERSPACE1, TEMPSPACE1, redom). Ako se odgovarajuce opcije ne navedu kreiraju se podrazumevani SMS
prostori tabela sa odgovarajucim brojem direktorijuma.
Definicija prostora tabela ukljucuje opcije vezane za tu vrstu objekta, kao
[REGULAR]
[LONG]
TABLESPACE ime-prostora-tabela
CREATE
[TEMPORARY]
[IN NODEGROUP ime-grupe-cvorova]
SYSTEM sistemska-skladista
]
[MANAGED BY
DATABASE skladista baze podataka
[BUFFERPOOL ime-reda-bafera]
[ostali-parametri].
Ovim iskazom kreira se novi prostor tabela u bazi podataka (sa kojom je
prethodno izvrseno povezivanje), dodeljuju mu se skladista i definicija novog
prostora tabela belezi u katalogu.
Prostor tabela, s obzirom na podatke koji se u njega mogu upisati, moze biti
REGULAR za sve podatke osim privremenih, LONG za LOB (Large Object)
kolone tabela i TEMPORARY za privremene tabele.
Opcija MANAGED BY opisuje da li prostorom tabela upravlja operativni
sistem (SYSTEM) ili upravljac bazama podataka (DATABASE); pri tom se
navode i skladista za prostor tabela imena direktorijuma u slucaju SMS
335
i mogucnosti navodenja
prostora tabela za tu tabelu (tipa REGULAR), kljuca
particioniranja (u slucaju particionirane baze podataka), prostora tabela za
indekse i dugacke (LONG) objekte, oblika
[ IN ime-prostora-tabela
[INDEX IN ime-prostora-tabela]
[LONG IN ime-prostora-tabela]]
[ PARTITIONING KEY (lista-kolona)]
SQL iskazom za kreiranje reda bafera, CREATE BUFFERPOOL kreira se
novi red bafera u tekucoj bazi podataka, i precizira se velicina u stranicama;
u slucju particionirane baze podataka, u iskazu se mogu navesti i cvorovi na
kojima ce se ovaj red bafera kreirati.
Ukoliko se pri kreiranju bilo kog od prethodnih objekata neki od parametara
fizicke strukture ne navede, uzimaju se podrazumevane sistemske vrednosti.
[TABLESPACE ime-prostora-tabela]
[TABLE ime-tabele]
Iskaz DROP
[INDEX ime-indeksa]
[BUFFERPOOL ime-reda-bafera]
uklanja odgovarajuci fizicki objekat, kao i sve objekte koji su posredno ili
neposredno zavisni od njega; iz kataloga se uklanja opis tog objekta a pristupni paketi koji od njega zavise oznacavaju se nevazecim.
DROP iskaz moze da se primeni i na paket, shemu, pogled, triger, proceduru
i druge kreirane objekte.
Pored SQL DROP iskaza, postoji i DB2 komanda za uklanjanje baze podataka,
DROP DATABASE ime-baze-podataka
koja se moze primeniti i samo na specificni cvor u particioniranoj bazi (MPP
konfiguraciji).
Iskaz izmene (ALTER) moze se primeniti na izmenu definicije tabele, prostora
tabela ili reda bafera, i odnosi se na fizicke parametre ovih objekata, odnosno
na dodavanje kolona i definisanje ili uklanjanje primarnog i stranog kljuca i
uslova ogranicenja u slucaju bazne tabele.
336
Detaljniji opis fizicke organizacije sistema DB2 moze se naci u [24], [27]. Detalji
sintakse i semantike SQL iskaza koji podrzavaju fizicku strukturu sistema opisani
su u [37], [?].
18.2
Pitanja i zadaci
zapamcena procedura
pristupni paket
Dodatak A
338
Sa druge strane, neke od pomenutih funkcija kojima se prosiruju relacioni sistemi (kompleksni objekti, nasledjivanje, ucaurenje) predstavljaju sastavni deo programske paradigme poznate kao objektno orijentisana1 paradigma. Ova programska paradigma privukla je posebnu paznju krajem osamdesetih godina, i predstavlja
vazan istrazivacki pravac u vecem broju racunarskih disciplina, kao sto su programski jezici, reprezentacija znanja, baze podataka, arhitektura racunara ([41]). Zato
jedan pravac razvoja oblasti baza podataka jeste definicija novog modela podataka,
objektno orijentisanog modela, i implementacija sistema za upravljanje bazama podataka nad tim modelom.
Baze podataka izgradjene nad objektno orijentisanim modelom su objektno orijentisane baze podataka, a sistem za upravljanje takvim bazama zove se, po analogiji
se relacionim i distribuiranim sistemima, objektno orijentisani sistem za upravljanje
bazama podataka, u oznaci OOSUBP. Objektno orijentisane baze podataka, zajedno
sa OOSUBP, obrazuju sistem objektno orijentisanih baza podataka. Za obe vrste
sistema koristi se i kraci termin, objektni sistem, kada je iz konteksta jasno na koju
vrstu sistema se termin odnosi.
Pored podrske novim svojstvima vezanim za objektno orijentisani model, pred
OOSUBP se koncepcijski postavljaju ista pitanja i zadaci kao i pred RSUBP (upitni jezik, integritetni deo, upravljanje transakcijama, fizicka organizacija, indeksi
i grupisanje objekata, konkurentnost i autorizacija); odgovori i resenja, medjutim,
sada zahtevaju sasvim drugacija razmatranja (v. odeljak A.2).
Mada objektno orijentisani pristup programiranju i projektovanju kompleksnih
programskih sistema dozivljava veliku popularnost u raznim disciplinama, ne postoji potpuna saglasnost o tome sta objektna orijentisanost uopste znaci i, posebno,
sta su to objektno orijentisane baze podataka. Za razliku od precizne definicije relacionog modela, ne postoji jedinstveni objektno orijentisani model podataka; zato
su objektni sistemi, koncepti na kojima su izgradjeni, kao i njihova funkcionalnost
dosta saroliki. Bez obzira na odsustvo jedinstva u konceptima i standarda u modelu,
arhitekturi i jezicima, postoji veci broj prototipskih i komercijalnih OOSUBP, npr.
GemStone ([10]), ObjectStore ([45]), Iris ([69]), ORION ([41]), O2 ([28]), itd. Kako
se funkcionalnost prosirenih relacionih sistema preklapa (a u nekim sistemima i poklapa) sa objektnim sistemima, i oni prvi se mogu smatrati objektnim sistemima
(npr. POSTGRES, [60], Starburst [47]).
U sledecim odeljcima bice prikazani koncepti objektno orijentisane paradigme
koji su znacajni za oblast baza podataka, i to objektno orijentisani model podataka
(jezgro i prosirenja), dugotrajne transakcije i objektno orijentisani upitni jezici.
Poslednji odeljak posvecen je sistemima baza podataka nove generacije.
A.1
339
Model podataka predstavlja logicku reprezentaciju objekata realnog sveta i njihovih odnosa, mogucnosti manipulisanja objektima i zadavanja pravila integriteta.
Osnovna ideja objektno orijentisanog modela je da podigne nivo apstrakcije podataka, tako da se, umesto bitovima, bajtovima, slogovima, poljima, n-torkama,
manipulise prirodnijim entitetima iz realnog sveta, objektima. Kao sto je vec
receno, jedinstveni objektno orijentisani model ne postoji. U prvom Manifestu
sistema objektno orijentisanih baza podataka, ideolozi ovih sistema odustaju od
namere za definisanjem apstraktnog objektno orijentisanog modela na kome bi se
bazirale implementacije OOSUBP, uz sledeci stav: U odnosu na specifikaciju (OO)
sistema primenjujemo darvinisticki pristup: nadamo se da ce se, iz niza eksperimentalnih prototipova koji su u izgradnji, iskristalisati jedinstveni objektno orijentisani
model ([5]).
U odsustvu jedinstvenog objektno orijentisanog modela podataka, pogodno je
identifikovati minimalni skup objektnih koncepata koje podrzava (na jedan ili drugi
nacin) svaki objektni sistem (jezgro OO modela podataka, [42]), i prepoznati moguce
koncepte nadgradnje tog minimalnog skupa, prisutne u implementaciji razlicitih sistema.
A.1.1
Objekat.
U OO modelu podataka objekat je svaki entitet realnog sveta, tj.
objekat je sve. Primitivna vrednost je objekat (npr. ceo broj 2 ili niska aaa),
ali objekat je i kompleksni entitet tipa OSOBA, kao i citav programski sistem.
Svaki objekat ima pridruzen jedinstveni (u sistemu) identifikator. Tako se nekoj
odredjenoj osobi tipa OSOBA moze pridruziti identifikator o1 . Postojanje identifikatora objekta vodi poreklo iz objektno orijentisanih programskih jezika, gde
je podrazumevano prisustvo objekta u unutrasnjoj memoriji i gde se pretrazivanje
objekata po svojstvu, tako karakteristicno za baze podataka, nije primenjivalo.
Jedinstveni identifikator ima i svoju specificnu ulogu u objektno orijentisanim
bazama. Naime, svaki objekat ima stanje i ponasanje. Stanje objekta opisuje se
340
341
NISKA ZNAKOVA
{OSOBA}
PRAVNO LICE
CEO BROJ
{POGLAVLJE}
NISKA ZNAKOVA
{ODELJAK}
NISKA ZNAKOVA
{PARAGRAF}
342
- NISKA ZN
KNJIGA
OSOBA
.. . ADRESA
- PR.LICE . . .
- CEO BROJ
..
.
- POGLAVLJE ODELJAK
..
.
PARAGRAF -
REC
...
343
KNJIGA
UDZBENIK
HH
HH
HH
j
?
ROMAN
...
HH
HH
...
UMETNICKA
HH
RODOLJUBIVA
...
POEZIJA
?
LJUBAVNA
HH
j
NARODNA
...
HH
H
j
REFLEKSIVNA
...
344
se, najcesce, sumedja OO baze podataka realizuje kroz dva razlicita jezika jedan
deklarativni, neproceduralni jezik za interaktivne (ad hoc) upite (npr. OSQL, [2])
i drugi aplikativni, proceduralni integrisani jezik baza podataka. Napomenimo
ovde, bez detaljnijeg razmatranja problema, da interaktivni upitni jezik nad OO
bazom, kao koncept, narusava princip ucaurenja, jer omogucuje pristup objektima
i njihovim svojstvima mimo definisanih metoda. Detaljnije o ovom problemu i
uslovima pod kojima interaktivni upitni jezik ne narusava ucaurenje objekata bice
reci u tacki A.2.2 (v. i [27]).
A.1.2
345
klase, kada se vrednosti atributa predstavljaju identifikatorima objekata primeraka tih slozenih klasa. Ovi identifikatori zovu se obracanja (reference) objektima
koje identifikuju. Ako obracanje nosi semantiku deo-od, onda se ono zove kompozitno obracanje ([41]) i pripada semantickom prosirenju objektnog modela, inace
je obracanje slabo i sastavni je deo semantike jezgra objektnog modela. Kompozitno obracanje moze biti ekskluzivno ili deljeno (kada je jedan objekat deo-od
samo jednog objekta odnosno kada jedan objekat moze biti deo-od veceg broja objekata), zavisno ili nezavisno (kada je postojanje objekta na koji postoji kompozitno
obracanje uslovljeno postojanjem objekta koji vrsi to obracanje, odnosno kada nije
time uslovljeno).
Kompozitni objekat je heterogena kolekcija objekata koja se sastoji od objekta
koji ima atribute kompozitna obracanja, i od svih objekata (komponentnih objekata) na koje se ta obracanja odnose. Atribut sa vrednostima kompozitnim
obracanjima zove se kompozitni atribut. Komponentni objekti pripadaju razlicitim
klasama, a te klase su organizovane u hijerarhiju koja se zove hijerarhija kompozitnog atributa. Svaka klasa ove hijerarhije zove se komponentna klasa, a sama hijerarhija je deo (podskup) hijerarhije kompozicije klasa. Tako, u primeru A.1 atribut
sadrzina jeste kompozitni atribut, a klase POGLAVLJE, ODELJAK, PARAGRAF
su komponentne klase hijerarhije kompozitnog atributa sadrzina klase KNi REC
JIGA. Kompozitni objekat se u tom primeru sastoji od odgovarajucih primeraka
346
PP
B
PP(verzija 1)
(verzija 0)
PP
P
q
)
B
@
B
@
B
@
B
@
R
R
@
BBN
Knjiga
(verzija 3)
Knjiga
(verzija 2)
347
348
A.2
A.2.1
Dugotrajne transakcije
Fundamentalna pretpostavka u osnovi tradicionalnog modela transakcija u relacionim sistemima jeste kratko trajanje transakcija. Za objektno orijentisani sistem
baza podataka, koji operise kompleksnim objektima, transakcija moze da traje
veoma dugo, satima ili danima. Transakcija je u objektnom sistemu, kao i u drugim
sistemima, jedinica kontrole konkurentnosti i oporavka. Zato za transakcije koje
traju dugo implementacija tradicionalnog modela transakcija moze, s jedne strane,
da izazove neprihvatljivo dugo cekanje na dobijanje katanca i pristup objektu. Sa
druge strane, ako se dugotrajna transakcija ponistava zbog zahteva korisnika, pada
349
transakcije ili sistema, kolicina izgubljenog posla moze da bude takodje neprihvatljivo velika.
Cilj modela transakcija je da, za definisani kriterijum konzistentnosti baze podataka, pod pretpostavkom konkurentnog izvrsenja skupa transakcija, kao i pod
pretpostavkom moguceg pada sistema, obezbedi osnovu za automatsko nametanje
tog kriterijuma. Kriterijum konzistentnosti u tradicionalnim transakcijama je linearizovanost. Ovaj kriterijum se namece odgovarajucim postupkom dobijanja
katanaca u slucaju konkurentnosti, odnosno koriscenjem dnevnika azuriranja i oporavka u slucaju pada sistema.
Dugotrajne transakcije ne moraju prihvatiti linearizovanost kao kriterijum
konzistentnosti. Problem sa dugotrajnim transakcijama je sto odgovarajuceg,
opsteg kriterijuma konzistentnosti jos nema. Bez obzira na to, postoje pokusaji
u pojedinim sistemima da se resi problem dugog cekanja na katance i skupog
ponistenja transakcije.
Dugotrajne transakcije imaju jedan od sledeca dva oblika. Ravne dugotrajne
transakcije su one koje u svom sastavu nemaju druge transakcije (podtransakcije) i
mogu da se posmatraju kao nizovi kratkotrajnih transakcija. Ugnjezdene transakcije predstavljaju hijerarhijsku organizaciju transakcija.
Za kontrolu konkurentnosti ravnih dugotrajnih transakcija moze se koristiti
neka od metoda koje se ne zasnivaju na katancima i zakljucavanju, npr. kontrola
konkurentnosti pomocu vise verzija ([27]), ako sistem uopste podrzava verzije. Objekat moze da se iskopira u radni prostor transakcije koja zahteva citanje ili upis u
taj objekat. Ako transakcija samo cita svoju kopiju, onda ona ne proizvodi efekte
na istoriju verzija tog objekta. Ako transakcija menja svoju kopiju, onda se ta
kopija, po zavrsetku transakcije, prijavljuje kao nova verzija objekta.
Zakljucavanje objekta u slucaju verzija zahteva se samo za vreme kopiranja
objekta u radni prostor transakcije, pa je potreba za dugotrajnim cekanjem na
katance eliminisana. Mehanizam verzija takodje omogucuje rad (najcesce eksperimentalne prirode) sa raznim varijantama jednog objekta, i obezbedjuje informacije
o istoriji verzija (istorijske podatke o objektu). Medjutim, odrzavanje istorije verzija znacajno uvecava prostor i kolicinu obrade podataka. Zbog toga se za kontrolu
konkurentnosti transakcija nad nekim objektima, pored mehanizma verzija, moraju
obezbediti i alternativni mehanizmi. Jedan od njih je mehanizam mekog katanca.
Naime, za kratkotrajne transakcije sistem postavlja kratkotrajne, tvrde katance,
koji se ne mogu osloboditi pre kompletiranja ili ponistenja transakcije. Za dugotrajne transakcije korisnik (a ne sistem) eksplicitno postavlja meke katance, koje
moze eksplicitno da oslobodi i u toku izvrsavanja transakcije, ili koji se (sistemski)
oslobadjaju na kraju transakcije. Meki katanac se eksplicitno oslobadja obicno na
zahtev druge transakcije koja je u konfliktu sa tim katancem.
Za oporavak od pada sistema, ravne dugotrajne transakcije obicno primenjuju koncept tacaka pamcenja. Tacke pamcenja omogucuju parcijalno ponistavanje
transakcija. Deo dugotrajne transakcije izmedju dve tacke pamcenja moze se tretirati kao kratkotrajna transakcija, koja je u tom slucaju jedinica oporavka. Ponekad
350
je potrebno ponistiti ili ponovo izvrsiti vise od jedne kratkotrajne transakcije (striktno unazad), sto predstavlja problem s obzirom da su katanci prethodnih kratkotrajnih transakcija (koje su izvrsile COMMIT operaciju) oslobodjeni. Tada se moze
primeniti tehnika vremenskih oznaka koje se dodeljuju COMMIT slogovima log
datoteke i objektima koji se azuriraju. Radnja ponistenja (ili ponovnog izvrsenja)
azuriranja objekta dopusta se samo ako je vremenska oznaka COMMIT sloga tekuce
kratkotrajne transakcije veca od vremenske oznake objekta, i ako objekat vec nije
zakljucan od strane druge kratkotrajne transakcije.
Ugnjezdene transakcije su uopstenje tacaka pamcenja i omogucuju, umesto serijske, hijerarhijsku organizaciju transakcije, a u slucaju potrebe, i hijerarhijsko
ponistavanje. Zato je iskaz pocetka transakcije, npr. BEGIN TRANSACTION,
prosiren tako da oznacava i pocetak podtransakcije; COMMIT i ROLLBACK operacije su takodje prosirene tako da se odnose i na podtransakciju, ali samo u opsegu
spoljasnje transakcije a ne i citavog sistema.
A.2.2
Upitni jezici
351
a 1);
Integer;
iskazi dodele
1. Dodela klase objektu oznacava mogucnost pripadnosti jednog objekta
vecem broju klasa. Na primer, objektu a1 (primerak klase Autor) moze
se dodeliti i klasa Recenzent, tj. autor a1 bice istovremeno i recenzent:
ADD TYPE Recenzent to
a 1;
352
= r 1;
SELECT
naslov(rd 1);
SELECT
naslov
FOR EACH Rad rd
WHERE
a 1 = autor(rd);
Interaktivni upitni jezici, mada siroko zastupljeni u objektnim sistemima za upravljanje bazama podataka, narusavaju princip ucaurenja podataka i operacija,
osim ako su objekti projektovani prema jednom specificnom, strogom kriterijumu.
Naime, princip ucaurenja podrazumeva da se objektima moze pristupiti samo
preko definisanih poruka, dok interaktivni upitni jezik omogucuje pristup svim
atributima (instancnim promenljivim) objekta. Dovoljan uslov za ucaurenost objekta i pri upotrebi ad hoc upita je da skup metoda, tj. poruka koje definisu
ponasanje objekata iz jedne klase, sadrzi jednu kompletnu mogucu reprezentaciju
objekta iz te klase. Ilustrujmo znacenje zahteva za kompletnoscu, kao i opcije
moguce reprezentacije.
353
A.3
354
355
cepta klase ([60], [69]), pristup koji se predlaze ovim manifestom polazi od izjednacavanja koncepta klase sa relacionim konceptom domena. Time se prevazilazi
niz teskoca kao sto su izrazavanje ad hoc upita nad objektnom bazom, realizacija
ucaurenja strukture i ponasanja objekta, karakterizacija tipa, preneto azuriranje
objekata, odrzavanje pravila integriteta, semantika operacija relacione algebre, itd.
([27]).
Medju dobrim svojstvima relacionog modela, koja treba podrzati u sistemima
baza podataka nove generacije, isticu se sledeca:
domen kao imenovani skup vrednosti proizvoljne slozenosti; vrednosti iz domena moze se pristupiti samo preko operacija definisanih nad domenom (vrednost domena, a ne n-torka relacije, odgovara objektu u objektno orijentisanom
modelu, pa je vrednost domena ucaurena);
skup n-arnih operacija za svaku uredjenu listu od n domena (ne obavezno
razlicitih), sa naznakom domena rezultata operacije;
fizicka reprezentacija razlicitih vrednosti jednog domena moze biti razlicita
(npr. dva prirodnojezicka dokumenta mogu biti priredjena razlicitim procesorima teksta);
za odredjenu strukturu n-torke (atribute i domene), moguce je definisati dva
nova domena jedan cije su vrednosti n-torke sa zadatom strukturom, i drugi
cije su vrednosti relacije sa zadatom strukturom; dakle, n-torka i relacija
su konstruktori domena;
uslov integriteta moze biti opsteg oblika formule relacionog racuna, i moze se
odnositi na domen, atribut, relaciju ili bazu podataka u celini.
Losa svojstva relacionih sistema, koja se ne smeju podrzati sistemom nove generacije (prema ovom manifestu), odnose se, pre svega, na svojstva SQL jezika kojima on odstupa od relacionog modela (npr. pozivanje na redosled atributa relacije,
neimenovani atributi, dupliranje n-torki, prisustvo fizicke reprezentacije i pristupnih puteva na logickom nivou, slogovno orijentisan pristup, brisanje i azuriranje
koriscenjem kursora, itd).
Medju novim svojstvima koja sistemi nove generacije treba da poseduju isticu
se provera tipova u vreme kompilacije, precizni model nasledjivanja (jednostrukog
ili visestrukog), ugnjezdene transakcije. Kao losa svojstva objektnih sistema prepoznaju se izjednacavanje relacije i klase objekata, postojanje identifikatora objekata,
koncept javnih i zasticenih instancnih promenljivih, itd. Zato sistemi baza podataka
nove generacije ne treba da podrze ova svojstva.
A.4
Pitanja i zadaci
polimorfizam
klasa
kompozitni objekti
objekat klase
poruka i metoda
verzije
ucaurenje
modifikacija sheme
nasledjivanje
OOSUBP
jednostruko nasledjivanje
dugotrajne transakcije
visestruko nasledjivanje
ugnjezdene transakcije
objektna shema
meki katanac
hijerarhija klasa
356
Bibliografija
[1] Alagic,S. Relacione baze podataka, Svjetlost, Sarajevo, 1984.
[2] Annevelink,J. i ost. Object SQL A language for the design and implementation of object databases, u [43].
[3] Armstrong,W.W. Dependency structures of data base relationships, Information Processing, 74, North-Holland Publ. Co., Amsterdam, 1974.
[4] Astrahan,M. i ost. System R: Relational approach to database management,
ACM ToDS, 1(2), 1976.
[5] Atkinson,M.i ost. The object-oriented database system manifesto, Deductive
and Object-Oriented Databases, Elsevier Science, 1990.
[6] ANSI/X3/SPARC Study Group on Database Management Systems. Interim
report, ACM SIGMOD bulletin, 7(2), 1975.
[7] Bernstein,P.A. Synthesizing third normal form relations from functional dependencies, ACM ToDS, 1(4), 1976.
[8] Bernstein,P.A. i ost. Concurrency control in a System for Distributed
Databases (SDD-1), ACM ToDS, 5(1), 1980.
[9] Boyce,R. i ost. Specifying queries as relational expressions: SQUARE, IBM
San Jose Research Reports, RJ-1291, 1973.
[10] Butterworth,P. i ost. The Gemstone object database management system,
Comm.ACM, 34(10), 1991.
[11] Chamberlin,D., Boyce,R. SEQUEL: A structured English query language,
ACM-SIGFIDET Workshop on Data Description, Access and Control, Ann
Arbor, MI, 1974.
[12] Chamberlin,D. i ost. SEQUEL2: A unified approach to data definition, manipulation, and control, IBM Journal of Research and Development, 20(6),
1976.
357
358
BIBLIOGRAFIJA
[13] Chen,P.P.-S. The Entity Relationship Model toward a unified view of data,
ACM ToDS, 1(1), 1976.
[14] Codd,E. A relational model of data for large shared data banks,
Comm.ACM, 13(6), 1970.
[15] Codd,E. A data base sublanguage founded on the relational calculus, ACMSIGFIDET Workshop on Data Description, Access and Control, San Diego,
CA, 1971.
[16] Codd,E. Further normalization of the data base relational model, Data Base
Systems (Rustin,R. ured.), Prentice-Hall, 1972.
[17] Codd,E. Relational completeness of data base sublanguages, Data Base Systems (Rustin,R. ured.), Prentice-Hall, 1972.
[18] Codd,E. Extending the database relational model to capture more meaning,
ACM ToDS, 4(4), 1979.
[19] Codd,E. The Relational Model for Database Management Version 2, Addison
Wesley Publ. Inc., 1990.
[20] Darwen,H., Date,C.J. The Third Manifesto, SIGMOD RECORD, 24(1),
1995.
[21] Date,C.J. An Introduction to Database Systems, vol. II, Addison Wesley Publ.
Inc., 1983.
[22] Date,C.J. An Introduction to Database Systems vol. I, 4. izdanje, Addison
Wesley Publ. Inc., 1986.
[23] Date,C.J. A Guide to INGRES, Addison Wesley Publ. Inc., 1987.
[24] Date,C.J., White,C.J. A Guide to DB2, Addison Wesley Publ. Inc., 1989.
[25] Date,C.J. (ured.) Relational Database Writings 19851989, Addison Wesley
Publ. Inc., 1990.
[26] Date,C.J., Darwen,H. (ured.) Relational Database Writings 19891991, Addison Wesley Publ. Inc., 1992.
[27] Date,C.J. An Introduction ta Database Systems, 6. izdanje, Addison Wesley
Publ. Inc., 1995.
[28] Deux,O. i ost. The O2 system, kao [45].
[29] Djordjevic,S. (ured.) Oksfordski recnik racunarstva, prevod sa engleskog, Nolit,
Beograd, 1990.
[30] Eswaran,K.P. i ost. The notions of consistency and predicate locks in a
database system, Comm.ACM, 19(11), 1976.
BIBLIOGRAFIJA
359
[31] Fagin,R. Multivalued dependencies and a new normal form for relational
databases, ACM ToDS, 2(3), 1977.
[32] Fagin,R. Normal forms and relational database operators, ACM SIGMOD
Conf., 1979.
[33] Fagin,R. A normal form for relational databases that is based on domains
and keys, ACM ToDS, 6(3), 1981.
[34] Fishman,D. i ost. Iris: An object-oriented database management system,
ACM ToIS, 5(1), 1987.
[35] Gray,J. i ost. The recovery manager of the System R data manager, ACM
Computing Surveys, 13(2), 1981.
[36] Hammer,M., McLeod,D. Database description with SDM: A semantic
database model, ACM ToDS, 6(3), 1981.
[37] IBM. IBM DATABASE 2 SQL Reference, IBM, 1992.
[38] IBM. IBM DB2 Application programming and SQL Guide, IBM, 1992.
[39] International Organization for Standardization (ISO). Database Language SQL
Document ISO/IEC 9075, 1992.
[40] Kim,W. On optimizing an SQL-like nested query, ACM ToDS, 7(3), 1982.
[41] Kim,W. Introduction to Object-Oriented Databases, MIT Press, 1990.
[42] Kim,W. Object-oriented databases: definition and research directions, IEEE
Trans. on Knowledge and Data Engineering, 2(3), 1990.
[43] Kim,W. (ured.) Modern Database Systems, ACM Press, 1995.
[44] Knuth,D. The Art of Computer Programming, vol. III, Sorting and Searching,
Addison Wesley Publ. Inc., 1968.
[45] Lamb,C. i ost. The Objectstore database system, Comm.ACM, 34(10), 1991.
[46] Lipski,Jr.W. On semantic issues connected with incomplete information
databases, ACM ToDS, 4(3), 1979.
[47] Lohman,G.M. i ost. Extensions to Starburst: objects, types, functions, and
rules, Comm.ACM, 34(10), 1991.
[48] Maier,D. The Theory of Relational Databases, Computer Science Press, 1983.
[49] Obermarck,R. Global deadlock detection algorithm, IBM Research Reports,
RJ2845, 1980.
[50] IBM. Query Management Facility: Planning and Administration Guide for
MVS, IBM, SC264235, 1992.
360
BIBLIOGRAFIJA
[51] Relational Technology Inc. EQUEL C Users Guide, Version 2.0 VAX/UNIX,
Berkeley, CA, 1983.
[52] Rolland,F.D. Relational Database Management with ORACLE, Addison Wesley Publ. Inc., 1989.
[53] Rothnie,J.B. i ost. Introduction to a System for Distributed Databases (SDD1), ACM ToDS, 5(1), 1980.
[54] Schmid,H.A., Swenson,J.R. On the semantics of the relational data model,
ACM SIGMOD Conf., 1975.
[55] Sedgewick,R. Algorithms in C, Addison Wesley Publ. Inc., 1988.
[56] Selinger,P.G. i ost. Access path selection in a relational database system,
ACM SIGMOD Conf., 1979.
[57] Smith,J.M., Chang,P.Y.T. Optimizing the performance of a relational algebra
database interface, Comm.ACM, 18(10), 1975.
[58] Smith,J.M., Smith,D.C. Database abstractions: aggregation and generalization, ACM ToDS, 1(1), 1976.
[59] Stonebraker,M. (ured.) The INGRES papers: Anatomy of a Relational
Database System, Addison Wesley Publ. Inc., 1986.
[60] Stonebraker,M., Rowe,L. The design of POSTGRES, ACM SIGMOD Conf.,
1986.
[61] Stroustrup,B. The C++ Programming Language, Addison Wesley Publ. Inc.,
1986.
[62] Teorey,T. Database Modeling and Design: The Entity-Relationship Approach,
Morgan Kauffman, 1990.
[63] The Committee for Advanced DBMS Function. Third generation database
system manifesto, SIGMOD RECORD, 19(3), 1990.
[64] Ullman,J.D. Principles of Database Systems, Computer Science Press, 1980.
[65] Ullman,J.D. Database and Knowledge-Base Systems, vol. I, Computer Science
Press, 1988.
[66] Ullman,J.D. Database and Knowledge-Base Systems, vol. II, Computer Science
Press, 1989.
[67] Wiederhold,G. Database Design, McGraw-Hill Book Co., 1977.
[68] Williams,R. i ost. R : An overview of the architecture, IBM Research Reports, RJ3325, 1981.
BIBLIOGRAFIJA
361
[69] Wilkinson,K. i ost. The Iris architecture and implementation, IEEE Trans.
on Knowledge and Data Engineering, 20(1), 1990.