Your SlideShare is downloading. ×
Uvod u relacione baze podataka
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Uvod u relacione baze podataka

2,007
views

Published on

Uvod u relacione baze podataka

Uvod u relacione baze podataka

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,007
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
50
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Uvod u relacione baze podataka Gordana Pavlovi´-Laˇeti´ c z c
  • 2. Sadrˇaj z0 Uvod 1I Relaciona tehnologija 51 Relacioni model podataka 7 1.1 O modelima podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Strukturni deo relacionog modela . . . . . . . . . . . . . . . . . . . . 14 1.3 Manipulativni deo relacionog modela . . . . . . . . . . . . . . . . . . 18 1.3.1 Nedostaju´e vrednosti . . . . c . . . . . . . . . . . . . . . . . . 19 1.4 Integritetni deo relacionog modela . . . . . . . . . . . . . . . . . . . 20 1.4.1 Primarni kljuˇ . . . . . . . . c . . . . . . . . . . . . . . . . . . 21 1.4.2 Strani kljuˇ . . . . . . . . . . c . . . . . . . . . . . . . . . . . . 22 1.4.3 Trigeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Manipulativni formalizmi relacionog modela 28 2.1 Relaciona algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.1.1 Unarne operacije . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.1.2 Binarne operacije . . . . . . . . . . . . . . . . . . . . . . . . 31 2.1.3 Proˇirena relaciona algebra . . . . . . s . . . . . . . . . . . . . 35 2.2 Relacioni raˇun . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . 37 2.2.1 Relacioni raˇun n-torki . . . . . . . . c . . . . . . . . . . . . . 38 2.2.2 Relacioni raˇun domena . . . . . . . . c . . . . . . . . . . . . . 41 2.3 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47II Relacioni upitni jezici 493 Upitni jezik SQL 52 3.1 Istorijat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2 Definisanje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.2.1 Shema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.2.2 Bazne tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 i
  • 3. ii ˇ SADRZAJ 3.2.3 Indeksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.2.4 Pogledi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.3 Manipulisanje podacima . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.3.1 Pretraˇivanje . . . . . . . . . . . . . . z . . . . . . . . . . . . . 63 3.3.2 Jednorelacioni upiti . . . . . . . . . . . . . . . . . . . . . . . 64 3.3.3 Upiti spajanja . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.3.4 Podupiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.3.5 Korelisani podupiti . . . . . . . . . . . . . . . . . . . . . . . . 73 3.3.6 Egzistencijalni kvantifikator . . . . . . . . . . . . . . . . . . . 74 3.3.7 Agregatne funkcije . . . . . . . . . . . . . . . . . . . . . . . . 76 3.3.8 Operator grupisanja . . . . . . . . . . . . . . . . . . . . . . . 79 3.3.9 Puni upitni blok . . . . . . . . . . . . . . . . . . . . . . . . . 81 ˇ 3.3.10 Operator uredenja i operator WITH . . . . . . . . . . . . . . 82 3.3.11 Naˇin izvrˇavanja SELECT iskaza . . c s . . . . . . . . . . . . . 85 3.3.12 Relaciona kompletnost SQL-a . . . . . . . . . . . . . . . . . . 86 3.3.13 Unoˇenje . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . 87 3.3.14 Aˇuriranje . . . . . . . . . . . . . . . . z . . . . . . . . . . . . . 90 3.3.15 Brisanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.4 Aplikativni SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.5 Dinamiˇki SQL . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . 103 3.6 Autorizacija i prava korisnika baze podataka . . . . . . . . . . . . . . 105 3.7 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084 Pogledi 111 4.1 Definisanje pogleda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.1.1 Kreiranje pogleda . . . . . . . . . . . . . . . . . . . . . . . . 111 4.1.2 Eksplicitno imenovanje kolona pogleda . . . . . . . . . . . . . 114 4.1.3 Kreiranje pogleda nad drugim pogledima . . . . . . . . . . . 115 4.1.4 Uklanjanje pogleda . . . . . . . . . . . . . . . . . . . . . . . 115 4.2 Pretraˇivanje pogleda . . . . . . . . . . . . . . . z . . . . . . . . . . . 115 4.3 Aˇuriranje, unoˇenje i brisanje nad pogledima . z s . . . . . . . . . . . 116 4.4 Prednosti pogleda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.5 Novi pristup pogledima . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.5.1 Unija, presek, razlika . . . . . . . . . . . . . . . . . . . . . . 121 4.5.2 Restrikcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4.5.3 Projekcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4.5.4 Prirodno spajanje . . . . . . . . . . . . . . . . . . . . . . . . 123 4.6 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235 Standardi SQL-a 125 5.1 Standardni jezik baza podataka SQL2 . . . . . . . . . . . . . . . . . 127 5.1.1 Definisanje podataka . . . . . . . . . . . . . . . . . . . . . . 127 5.1.2 Manipulisanje podacima . . . . . . . . . . . . . . . . . . . . 131 5.1.3 Aplikativni SQL . . . . . . . . . . . . . . . . . . . . . . . . . 134 5.2 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
  • 4. ˇSADRZAJ iii6 Upitni jezik QUEL 137 6.1 Interaktivni QUEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 6.1.1 Definisanje podataka . . . . . . . . . . . . . . . . . . . . . . . 137 6.1.2 Manipulisanje podacima . . . . . . . . . . . . . . . . . . . . . 138 6.1.3 Agregatne operacije i funkcije . . . . . . . . . . . . . . . . . . 140 6.1.4 Relaciona kompletnost QUEL-a . . . . . . . . . . . . . . . . . 141 6.1.5 Iskazi DEFINE i MODIFY . . . . . . . . . . . . . . . . . . . 142 6.2 Aplikativni QUEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6.3 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457 Optimizacija upita 147 7.1 Katalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 7.2 Sistematski pristup optimizaciji . . . . . . . . . . . . . . . . . . . . . 149 7.3 Optimizacija u SYSTEM R . . . . . . . . . . . . . . . . . . . . . . . 154 7.4 Optimizacija u INGRES-u . . . . . . . . . . . . . . . . . . . . . . . . 156 7.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158III Logiˇko projektovanje c 1608 Teorija zavisnosti 162 8.1 Funkcionalne zavisnosti i dekompozicija . . . . . . . . . . . . . . . . 162 ˇ 8.2 Aksiome izvodenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 8.3 Zatvorenje skupa funkcionalnih zavisnosti . . . . . . . . . . . . . . . 168 8.4 Pokrivanje skupa funkcionalnih zavisnosti . . . . . . . . . . . . . . . 170 8.5 Viˇeznaˇne zavisnosti . . . . . . . . . . . . s c . . . . . . . . . . . . . . . 173 8.6 Osnovne osobine viˇeznaˇnih zavisnosti . . s c . . . . . . . . . . . . . . . 175 8.7 Zavisnosti spajanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 8.8 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1789 Normalne forme 180 9.1 Druga normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . . 180 9.2 Tre´a normalna forma . . . . c . . . . . . . . . . . . . . . . . . . . . . 183 9.3 Boyce-Codd normalna forma . . . . . . . . . . . . . . . . . . . . . . 187 9.4 Dobre i loˇe dekompozicije . . s . . . . . . . . . . . . . . . . . . . . . . 189 ˇ 9.5 Cetvrta normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . 190 9.6 Peta normalna forma . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 9.7 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210 Semantiˇko modeliranje c 195 10.1 Proˇireni relacioni model RM/T s . . . . . . . . . . . . . . . . . . . . 199 10.1.1 Strukturni deo modela . . . . . . . . . . . . . . . . . . . . . . 200 10.1.2 Integritetni deo modela . . . . . . . . . . . . . . . . . . . . . 201 10.1.3 RM/T katalog . . . . . . . . . . . . . . . . . . . . . . . . . . 202 10.1.4 Manipulativni deo modela . . . . . . . . . . . . . . . . . . . . 203
  • 5. iv ˇ SADRZAJ 10.2 Proˇireni model entiteta i odnosa (PMEO) . s . . . . . . . . . . . . . . 204 10.3 Strukturni deo PMEO . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10.3.1 Primer logiˇkog projektovanja . . . c . . . . . . . . . . . . . . 210 10.4 Semantiˇki model baze podataka . . . . . . c . . . . . . . . . . . . . . 213 10.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214IV Fiziˇka organizacija podataka c 21611 Strukture podataka i pristupne metode 218 11.1 Fiziˇka reprezentacija relacije . . . . . . . . . . . . c . . . . . . . . . . 220 11.2 Sortiranje sekvencijalne datoteke . . . . . . . . . . . . . . . . . . . . 223 11.3 Sekvencijalna organizacija . . . . . . . . . . . . . . . . . . . . . . . . 228 11.3.1 Efikasnost izvrˇavanja jednorelacionih upita s . . . . . . . . . . 229 11.3.2 Izvrˇavanje viˇerelacionih upita . . . . . . . s s . . . . . . . . . . 231 11.4 Indeks-sekvencijalna organizacija . . . . . . . . . . . . . . . . . . . . 233 11.4.1 Efikasnost izvrˇavanja jednorelacionih upita s . . . . . . . . . . 235 11.4.2 Izvrˇavanje viˇerelacionih upita . . . . . . . s s . . . . . . . . . . 238 11.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23812 Indeksna organizacija 240 12.1 Efikasnost izvrˇavanja jednorelacionih upita . . s . . . . . . . . . . . . 241 12.1.1 Pretraˇivanje . . . . . . . . . . . . . . . z . . . . . . . . . . . . 241 12.1.2 Aˇuriranje, unoˇenje i brisanje . . . . . z s . . . . . . . . . . . . 242 12.2 Izvrˇavanje viˇerelacionih upita . . . . . . . . . s s . . . . . . . . . . . . 244 12.3 Struktura indeksa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 12.3.1 Pretraˇivanje indeksa . . . . . . . . . . z . . . . . . . . . . . . 247 12.3.2 Unoˇenje u indeks, brisanje i aˇuriranje s z . . . . . . . . . . . . 248 12.4 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25113 Direktna organizacija 253 13.1 Funkcija direktnog pristupa . . . . . . . . . . . . . . . . . . . . . . . 255 13.2 Reˇavanje kolizije – posebno ulanˇavanje s c . . . . . . . . . . . . . . . . 256 13.3 Reˇavanje kolizije – otvoreno adresiranje s . . . . . . . . . . . . . . . . 260 13.4 Efikasnost izvrˇavanja operacija . . . . . s . . . . . . . . . . . . . . . . 265 13.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267V Upravljanje transakcijama 26914 Transakcija, integritet i konkurentnost 271 14.1 Transakcija i integritet . . . . . . . . . . . . . . . . . . . . . . . . . . 271 14.2 Konkurentnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 14.2.1 Izvrˇenja skupa transakcija . . s . . . . . . . . . . . . . . . . . 274 14.3 Problemi konkurentnosti . . . . . . . . . . . . . . . . . . . . . . . . . 276 14.4 Zakljuˇavanje . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . 278
  • 6. ˇSADRZAJ v 14.4.1 Reˇenje problema konkurentnosti . . . . . . . . . . . . . . . . 282 s 14.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28415 Oporavak 286 15.1 Oporavak od pada transakcije . . . . . . . . . . . . . . . . . . . . . . 288 15.2 Oporavak od pada sistema . . . . . . . . . . . . . . . . . . . . . . . . 289 15.2.1 Poboljˇanje procedure oporavka s od pada sistema . . . . . . . 291 15.3 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294VI Distribuirane baze podataka 29516 Problemi distribuiranih sistema 297 16.1 O distribuiranim sistemima . . . . . . . . . . . . . . . . . . . . . . . 297 16.2 Fragmentacija podataka . . . . . . . . . . . . . . . . . . . . . . . . . 300 16.3 Distribuirana obrada upita . . . . . . . . . . . . . . . . . . . . . . . 301 16.4 Preneto aˇuriranje . . . . . . . z . . . . . . . . . . . . . . . . . . . . . 305 16.5 Upravljanje katalogom . . . . . . . . . . . . . . . . . . . . . . . . . 305 16.6 Heterogeni distribuirani sistemi . . . . . . . . . . . . . . . . . . . . 306 16.7 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30817 Distribuirano upravljanje transakcijama 309 17.1 Konkurentnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 17.2 Dvofazno zakljuˇavanje . . . . . . . . . c . . . . . . . . . . . . . . . . 311 17.3 Vremenske oznake . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 17.3.1 Klase transakcija . . . . . . . . . . . . . . . . . . . . . . . . . 315 17.3.2 Analiza grafa konflikta . . . . . . . . . . . . . . . . . . . . . . 316 17.4 Oporavak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 17.5 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32218 Klijent-server sistemi baza podataka 323 18.1 Jedna realizacija klijent-server RSUBP . . . . . . . . . . . . . . . . . 326 18.1.1 DB2 server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 18.1.2 DB2 klijent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 18.1.3 Ostali DB2 proizvodi . . . . . . . . . . . . . . . . . . . . . . . 327 18.1.4 Priprema i izvrˇavanje aplikativnih porograma s . . . . . . . . 329 18.1.5 Fiziˇka organizacija podataka u sistemu DB2 . c . . . . . . . . 333 18.2 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336A Objektno orijentisane baze podataka 337 A.1 Objektno orijentisani model podataka . . . . . . . . . . . . . . . . . 339 A.1.1 Jezgro objektno orijentisanog modela podataka . . . . . . . . 339 A.1.2 Ostali koncepti objektno orijentisanih modela podataka . . . 344 A.2 Objektno orijentisani sistemi baza podataka . . . . . . . . . . . . . . 348 A.2.1 Dugotrajne transakcije . . . . . . . . . . . . . . . . . . . . . . 348 A.2.2 Upitni jezici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
  • 7. A.3 Sistemi baza podataka nove generacije . . . . . . . . . . . . . . . . . 353 A.4 Pitanja i zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Bibliografija 357
  • 8. 0UvodTradicionalni pristup razvoju programskih sistema za ˇuvanje i obradu podataka, cdo pojave baza podataka krajem ˇezdesetih godina, bio je u suˇtini ad hoc: polaze´i s s cod definicije aplikacije, kreirala bi se datoteka ili skup datoteka podataka potrebnih ˇza definisanu aplikaciju, i pisali bi se programi koji obraduju podatke tih datotekau skladu sa aplikacijom ([52]). Sva proˇirenja definisane aplikacije realizovala bi se sdodavanjem novih datoteka i pisanjem dodatnih programa. Ovakav pristup je brzopokazao sve svoje nedostatke: • Ponavljanje istih podataka uz razliˇite aplikacije. Na primer, u jednom bibli- c oteˇkom okruˇenju, aplikacije za obradu knjiga, reversa i ˇitalaca mogle bi da c z c ˇ koriste odgovaraju´e datoteke – KNJIGE, REVERSI, CITAOCI, redom. pri c tom bi, s obzirom na potrebe ovih aplikacija, datoteka REVERSI sadrˇala sve z podatke o knjizi i ˇitaocu koji su ve´ sadrˇani i u datoteci KNJIGE odnosno c c z ˇ CITAOCI. • Nekonzistentnost podataka. Zbog ponavljanja istih podataka u raznim da- totekama, moˇe se dogoditi da se promena vrednosti primercima istog po- z datka ne izvede dosledno, tj. da se jednom primerku istog podatka vrednost promeni (namerno ili nenamerno), a da se to ne uˇini sa ostalim primercima c tog podatka. Na primer, adresa istog ˇitaoca moˇe da bude razliˇito zapisana c z c ˇ u datotekama CITAOCI i REVERSI, ˇto ´e proizvesti nekonzistentnost (neko- s c rektnost) podataka. • Programi za obradu podataka zavise od naˇina struktuiranja podataka. Tako c ´e ti programi biti razliˇiti u sluˇajevima razliˇite organizacije datoteka c c c c (sekvencijalna, indeks-sekvencijalna, direktna, indeksirana, itd). Zato pro- mena strukture podataka zahteva promenu programa. • Obrada podataka je skupa, s obzirom na nekonzistentnost i zavisnost pro- grama od organizacije podataka. 1
  • 9. 2 0 Uvod • Koriˇ´enje istih podataka od strane ve´eg broja korisnika je oteˇano. Na sc c z primer, istovremeni pokuˇaj dva ili viˇe korisnika da promene sadrˇaj datoteke s s z REVERSI zavrˇi´e se, u mnogim sluˇajevima, pam´enjem promena samo sc c c onog korisnika koji je poslednji zavrˇio rad sa datotekom. Ostali korisnici ni s na koji naˇin ne´e biti obaveˇteni o tome da njihove promene nisu upam´ene. c c s c U drugim sluˇajevima viˇekorisniˇkog pristupa podacima smeˇtenim u sistem c s c s datoteka, kada se pristup vrˇi istoj kopiji datoteke, mogu´i su i teˇi primeri s c z naruˇavanja korektnosti podataka. s • Neadekvatna realizacija oporavka od pada sistema. U sluˇaju pada sistema c (npr. nestanka elektriˇnog napajanja), aktivni poslovi nemaju mogu´nost c c poniˇtavanja svojih delimiˇnih izvrˇenja (ako su ona deo jedinstvene logiˇke s c s c celine), a ˇesto, po uspostavljanju sistema, ni evidenciju o svom delimiˇnom c c izvrˇenju. Na primer, ako bi svim ˇitaocima trebalo produˇiti (na reversu) s c z rok zaduˇenja za po 10 dana, i ako bi usred izvrˇavanja tog posla doˇlo do z s s pada sistema, po uspostavljanju rada ne bi postojala informacija o tome koji ˇ su reversi obradeni a koji joˇ nisu. s Da bi se mogle iskoristiti pogodnosti raˇunara za ˇuvanje podataka, neophodno c cje obezbediti i programske alate prenosa podataka, upravljanja podacima i komu-nikacije sa korisnikom. Zato nova organizacija podataka, nazvana baza podataka,zajedno sa programskim alatima koji je podrˇavaju, treba da obezbedi: z ˇ • nezavisnost struktura podataka od programa koji ih obraduju, i programa od struktura podataka (izmena podataka ne utiˇe na programe); c • minimalnost ponavljanja podataka; • da obrada podataka nije vezana za programski jezik opˇte namene, ve´ za viˇi s c s “upitni” jezik; • koriˇ´enje baze podataka od strane ve´eg broja korisnika. sc c Pojam baza podataka pojavio se krajem ˇezdesetih godina i oznaˇavao je skup s c ˇ ˇmedusobno povezanih podataka koji se ˇuvaju zajedno, i medu kojima ima samo conoliko ponavljanja koliko je neophodno za njihovo optimalno koriˇ´enje pri viˇe- sc skorisniˇkom radu. Podaci se pamte tako da budu nezavisni od programa koji ih ckoriste, i struktuiraju se tako da je omogu´en porast baze. Posle svake aktivnosti cnad bazom, koja predstavlja logiˇku celinu posla, stanje baze mora biti konzis- c ˇtentno (valjano); to znaˇi da podaci u bazi i odnosi medu njima moraju zadovol- cjavati unapred zadate uslove koji odslikavaju deo realnosti modelirane podacima ubazi. Za efikasan rad sa podacima i odrˇavanje konzistentnog stanja baze koristi zse specifiˇni programski proizvod – sistem za upravljanje bazama podataka (kra´e c cSUBP – DBMS, Data Base Management System). Baze podataka zajedno sa SUBPˇine sistem baza podataka. U ˇirem smislu, u sistem baza podataka spada i odgo-c s c ˇvaraju´i hardver, svi programski alati koji se nadgraduju na SUBP i olakˇavaju rad s
  • 10. 0 Uvod 3sa bazama, kao i raznorodni korisnici baza podataka (od krajnjih korisnika, prekoaplikativnih programera do administratora baza podataka). U razvoju sistema baza podataka moˇe se uoˇiti nekoliko generacija SUBP, koje z csu ili koegzistirale na trˇiˇtu ili smenjivale jedna drugu. Fundamentalna razlika zs ˇizmedu sistema ovih generacija je razlika u modelu podataka, koja se u imple-mentaciji odgovaraju´ih SUBP reflektuje na efikasnost pristupa podacima i obrade cpodataka, produktivnost korisnika, funkcionalnost sistema i podrˇku raznovrsnim saplikacijama. Tako se u prve dve generacije svrstavaju tzv. mreˇni (CODASYL) z ˇsistemi i hijerarhijski sistemi, koji su gotovo u potpunosti prevazideni, osamdesetihgodina, relacionom tehnologijom kao tre´om generacijom SUBP (Relacioni SUBP c– RSUBP). Sve tri generacije namenjene su pre svega poslovno-orijentisanim ap-likacijama. Ograniˇenja relacione tehnologije odnose se na neadekvatnu podrˇku aplikaci- c sjama nad podacima kompleksnijim od podataka u poslovnoj obradi, npr. nadprostornim ili tekstuelnim podacima. Zato se relacioni model podataka proˇiruje skonceptima objektnog modela, koji na adekvatniji naˇin apstrahuje svojstva kom- cpleksnih objekata; istovremeno, relaciona tehnologija se integriˇe sa objektnom stehnologijom grade´i tako novu, ˇetvrtu generaciju SUBP. Objektna tehnologija c cje joˇ uvek u istraˇivaˇkoj fazi, mada postoje i prototipske i komercijalne im- s z cplementacije sistema za upravljanje bazama podataka. Teorijske osnove objektnetehnologije, za razliku od relacione, joˇ nisu postavljene; ovo vaˇi i za sam objektni s zmodel. Ova knjiga odnosi se pre svega na relacionu tehnologiju baza podataka, poˇevˇi c sod osnovnih postavki relacionog modela i relacionih upitnih jezika, preko teorijelogiˇkog projektovanja relacione baze podataka i semantiˇkog modeliranja, pa do c cproblema i reˇenja vezanih za implementaciju pune funkcionalnosti RSUBP. s Osnovna komponenta sistema za upravljanje relacionim bazama podataka kojukorisnik vidi jeste relacioni upitni jezik. To je sredstvo kojim korisnik ostvaruje ko-munikaciju sa relacionom bazom podataka, kojim izraˇava i zadovoljava sve zahteve zvezane za podatke u bazi. Zato se, sa korisniˇke taˇke glediˇta, upitni jezik ˇesto c c s cidentifikuje sa kompleksnim sistemom za upravljanje bazama podataka, koji u stvarite zahteve izvrˇava, korektno i efikasno. Jedan od upitnih jezik koji se u ovoj knjizi sdetaljno izlaˇe i kojim se ilustruje funkcionalnost RSUBP jeste SQL. Bez obzira zna sve nedostatke, SQL je standard relacionih upitnih jezika, i daleko je najzas-tupljeniji u relacionim sistemima; zato je njegovo detaljno poznavanje neophodnoza efikasno koriˇ´enje tih sistema. Kako se varijante SQL-a u razliˇitim sistemima sc crazlikuju, ovde se, zbog preciznosti, izlaˇe jedna od tih varijanti – SQL sistema zIBM DB2 UDB (Universal DataBase) Verzija 5, bez specifiˇnosti tesno vezanih za covaj RSUBP. Sredstvo kojim sistem za upravljanje bazama podataka omogu´uje ve´em broju c ckorisnika istovremeni pristup podacima, uz punu bezbednost i korektnost podataka,jeste transakcija. Transakcija je logiˇka jedinica posla i moˇe da se sastoji od jedne c z c c ˇili ve´eg broja radnji nad bazom podataka, pri ˇemu obezbeduje uslov da podaci iodnosi meduˇ njima, posle zavrˇetka transakcije, korektno odraˇavaju realnost koja s z
  • 11. 4 0 Uvodse tim podacima modelira. Upravljanje transakcijama omogu´uje da se svi zahtevi ckorisnika korektno izvrˇavaju, a realizuje se posebnim komponentama koje koristi ssistem za upravljanje bazama podataka. Funkcija SUBP kojom se reguliˇu prava pristupa pojedinih korisnika pojedinim sobjektima (podacima i drugim resursima), kao i prava izvrˇenja raznih operacija snad tim objektima, zove se autorizacija. Ona se delom realizuje mehanizmompogleda, ali i specifiˇnim podsistemom autorizacije i prava korisnika. Naˇini real- c cizacije autorizacije predstavljeni su u ovoj knjizi. Poseban znaˇaj u radu sa relacionim bazama podataka ima struktuiranje i orga- cnizacija samih podataka. Podatke je na nivou korisnika potrebno struktuirati, a nafiziˇkom nivou organizovati tako da njihovo odrˇavanje bude najlakˇe, a operisanje c z snjima najefikasnije. Skup postupaka kojima se dolazi do dobro struktuiranih po-dataka u bazi podataka naziva se metodama logiˇkog projektovanja baze podataka. cSkup postupaka kojima se podaci fiziˇki organizuju u bazi, tako da im je pristup ci odrˇavanje najefikasnije, naziva se metodama fiziˇkog projektovanja, tj. meto- z cdama fiziˇke organizacije podataka. Zato metode logiˇkog projektovanja i fiziˇke c c corganizacije imaju posebno mesto u ovoj knjizi. Znaˇajan segment relacione tehnologije predstavljaju distribuirane baze po- cdataka. Mada su sistemi za upravljanje distribuiranim bazama podataka takode ˇrelacioni, problemi koji se u njima moraju reˇavati, kao i metode za njihovo sreˇavanje, znatno su sloˇeniji nego u centralizovanim sistemima. U ovoj knjizi s zrazmatraju se posebno karakteristiˇni problemi u realizaciji pune funkcionalnosti c ˇdistribuiranih sistema. Takode se izlaˇe i specijalni sluˇaj arhitekture distribuiranih z csistema – ˇiroko rasprostranjena klijent-server arhitektura. s Pored relacione tehnologije kojoj je ovaj udˇbenik posve´en, izuzetno aktuelnu z ctemu u oblasti baza podataka predstavljaju objektno orijentisane baze podataka.Objektna tehnologija nema tendenciju potiskivanja starije – relacione tehnologije.Umesto toga, integracija koncepata relacione i objektne tehnologije vidi se kaoosnov za izgradnju modelˆ i sistemˆ baza podataka nove generacije. Zato je kon- a aceptima objektno orijentisanih modela i nekim od kljuˇnih komponenti objektno corijentisanih sistema posve´en dodatak ovog udˇbenika. c z
  • 12. Deo IRelaciona tehnologija
  • 13. Deo I sastoji se od dve glave:• Glava 1, Relacioni model podataka, prikazuje relacioni model podataka i ˇ odreduje njegovo mesto u arhitekturi sistema baza podataka. Relacioni model se definiˇe preko tri bitne komponente modela; to su strukturni, manipulativni s i integritetni deo modela. Strukturni i integritetni deo relacionog modela izlaˇu se detaljno u ovoj glavi, dok je manipulativni deo samo naznaˇen. z c Zbog znaˇaja i kompleksnosti manipulativnih formalizama relacionog modela, c njihovo razmatranje izdvojeno je u posebnu, drugu glavu.• U glavi 2, Manipulativni formalizmi relacionog modela, izlaˇu se dva z osnovna formalizma za manipulisanje podacima u relacionom modelu, rela- ciona algebra i relacioni raˇun. S obzirom na znaˇajna odstupanja postoje´ih c c c relacionih implementacija od osnovnih postavki relacionog modela, pre svega u upitnim jezicima, aktuelizovano je istraˇivanje implikacijˆ manipulativnih z a formalizama relacionog modela na razvoj novih sistema. 6
  • 14. 1Relacioni model podataka1.1 O modelima podatakaArhitektura najve´eg broja sistema baza podataka odgovara predlogu ANSI/SPARC cstudijske grupe Ameriˇkog nacionalnog instituta za standarde, i poznata je kao cANSI arhitektura ([6]). Ova arhitektura predstavljena je hijerarhijom apstrak-cija, pri ˇemu svaki nivo hijerarhije ukljuˇuje specifiˇni naˇin predstavljanja, c c c c ˇreprezentaciju, objekata, odnosa medu objektima i operacija nad objektima. Hi-jerarhijska arhitektura omogu´uje prirodnu dekompoziciju i efikasni razvoj sistema cza upravljanje bazama podataka. Najniˇi nivo ANSI arhitekture je unutraˇnji nivo. On je najbliˇi fiziˇkoj z s z creprezentaciji baze podataka, koja u raˇunarskom sistemu jedina zaista postoji. cZbog toga se unutraˇnji nivo ˇesto i zove “nivo fiziˇke baze podataka”. Slede´i s c c cnivo ANSI arhitekture je konceptualni (logiˇki) i predstavlja naˇin na koji se po- c cdaci iz fiziˇke baze podataka predstavljaju korisniku u opˇtem sluˇaju. Najviˇi nivo c s c s ˇANSI arhitekture je spoljaˇnji nivo koji predstavu o podacima iz baze prilagodava spotrebama specifiˇnih korisnika ili grupa korisnika. c Globalna ANSI arhitektura sistema baza podataka moˇe se predstaviti shemom zna slici 1.1. Objasnimo neˇto detaljnije njenu strukturu. s Reprezentacija koja se nalazi na “srednjem”, konceptualnom nivou ANSI hije-rarhije zove se model podataka. Modelom podataka predstavlja se logiˇka struktura csvih podataka u bazi i skup operacija koje korisnik moˇe izvrˇiti nad tim podacima. z sTo znaˇi da se na konceptualnom nivou mogu “videti” svi podaci iz fiziˇke baze c cpodataka, samo ˇto je njihova reprezentacija pogodnija za korisnika od fiziˇke (na s cviˇem je nivou apstrakcije). s Pojedini korisnici ili grupe korisnika mogu imati svoja sopstvena specifiˇna cgledanja na model podataka (npr. iz razloga zaˇtite ili udobnosti), pa se pogledi s(podmodeli, spoljaˇnji nivo hijerarhije) nalaze iznad modela u hijerarhiji apstrak- scija. Isti podaci iz fiziˇke baze podataka (i sa konceptualnog nivoa), na ovom nivou c 7
  • 15. 8 1 Relacioni model podataka (spoljaˇnje sheme, s pogledi (podmodeli) spoljaˇnji nivo) s d s T   d   d  (konceptualna shema, model podataka logiˇki nivo) c T (fiziˇka baza podataka, c strukture podataka, procedure unutraˇnji nivo) s Slika 1.1: ANSI arhitektura sistema baza podatakamogu se raznim korisnicima predstaviti na razne naˇine, dok se postojanje nekih po- cdataka moˇe od nekih korisnika i sakriti. Zato postoji taˇno jedan model podataka z cu sistemu, koji se odnosi na celokupnost baze podataka, i ve´i broj spoljaˇnjih c spogleda, od kojih se svaki sastoji od apstraktne slike dela baze podataka. Na primer, baza podataka o studentima moˇe da sadrˇi podatke iz dosijea z zstudenata, sa liˇnim podacima i podacima o uspehu (predmetima, ocenama, da- ctumima polaganja, nagradama, kaznama) svakog studenta. Na konceptualnomnivou podaci mogu biti predstavljeni tabelama DOSIJE, NASTAVNI PLAN, NA-GRADE I KAZNE i POLAGANJE. Na spoljaˇnjem nivou, korisnicima statistiˇkih s cobrada ova baza podataka moˇe se predstaviti kao da sadrˇi samo podatke o us- z zpehu (npr. u virtuelnoj tabeli USPEH PO PREDMETIMA); ostali, liˇni podaci ckoji mogu da identifikuju studenta, skrivaju se od statistiˇkih aplikacija. Razliˇitim c cpodgrupama korisnika mogu odgovarati joˇ apstraktnije predstave o podacima, koje sodgovaraju viˇim nivoima podmodela. s Korisnik svoje zahteve za operacijama nad bazom podataka postavlja na koncep-tualnom ili spoljaˇnjem nivou, i to interaktivno, na posebnom “jeziku podataka”, ili sprogramski, kada je jezik podataka ugnjeˇden u neki programski jezik opˇte namene z s(tzv. matiˇni jezik, v. odeljak 3.4). c Na nivou fiziˇke baze podataka – unutraˇnjem nivou, model podataka pred- c sstavlja se specifiˇnim, fiziˇkim strukturama podataka (datotekama sa sekvenci- c cjalnim, indeksnim ili direktnim pristupom), i procedurama za fiziˇku realizaciju coperacija koje korisnik zadaje na viˇem nivou. s Primarni cilj modela podataka u kontekstu baza podataka jeste da obezbediformalni sistem za predstavljanje podataka i manipulisanje podacima u bazi po-dataka.
  • 16. 1.1 O modelima podataka 9 Model podataka se moˇe posmatrati kao kolekcija slede´a tri skupa: z c a) skup tipova objekata b) skup operacija nad objektima definisanih tipova c) skup pravila integriteta. Opiˇimo ukratko svaki od ovih skupova. s a) Skup tipova objekata ˇini strukturni deo modela. Tipovima objekata opisuju c ˇ se entiteti (objekti, stvari, lica, pojave, dogadaji od znaˇaja koji se mogu c jednoznaˇno identifikovati) koji su relevantni za korisnike baze (objekat i en- c titet ´e se nadalje uglavnom upotrebljavati sinonimno, osim ako se naglasi c drugaˇije). Sami tipovi entiteta karakteriˇu se svojstvima. c s c z z ˇ Na primer, izdavaˇka baza podataka moˇe da sadrˇi, izmedu ostalih, tipove ˇ entiteta KNJIGA, PISAC i IZDAVAC, sa odgovaraju´im svojstvima (slika c 1.2). Znaˇenje svojstava je uglavnom oˇigledno: svaka knjiga ima naslov i c c oblast kojoj pripada, uz pisca se kao znaˇajna svojstva navode njegovo ime, c broj objavljenih naslova i drˇava ˇiji je drˇavljanin, dok izdavaˇa karakteriˇu z c z c s njegov naziv, status (u funkciji broja izdatih naslova) i drˇava u kojoj je z registrovan. Specifiˇni model (npr. relacioni, mreˇni, hijerarhijski) izabra´e c z c specifiˇan naˇin za opisivanje ovih tipova entiteta i njihovih svojstava. c c KNJIGA naslov oblast PISAC ime br naslova drˇava z ˇ IZDAVAC naziv status drˇava z Slika 1.2: Tipovi entiteta izdavaˇke baze podataka c b) Skup operacija ˇini manipulativni deo modela. Operacijama se zadaju upiti c i radnje nad entitetima, tj. pretraˇivanje i menjanje (aˇuriranje) podataka o z z entitetima. Na primer, radnje nad pojedinaˇnim entitetima mogu biti: c – registrovati novu knjigu – rashodovati knjigu
  • 17. 10 1 Relacioni model podataka – izmeniti drˇavljanstvo pisca z – izmeniti status izdavaˇa. c Primer operacije kojom se zadaje upit nad pojedinaˇnim tipom entiteta moˇe c z biti: – ˇtampati spisak knjiga iz zadate oblasti. s c) Skup pravila integriteta ˇini integritetni deo modela. Pravila integriteta c definiˇu uslove integriteta podataka u bazi podataka, tj. svojstva podataka s ˇ ili odnosa medu podacima, koji moraju biti zadovoljeni da bi stanje baze bilo valjano. Na primer, uslovi integriteta pridruˇeni pojedinaˇnim tipovima entiteta mogu z c biti: – dva razna izdavaˇa ne mogu imati isti naziv c – pri promeni broja naslova pisca, novi broj naslova mora biti ve´i od c prethodnog (starog). Osim upita, radnji i uslova integriteta koji se odnose na pojedinaˇne tipove centiteta, kao u prethodnim primerima, neki upiti i radnje mogu se odnositi na viˇe stipova entiteta, kao na primer: – ˇtampati spisak svih knjiga datog pisca s – promeniti izdavaˇa za datu knjigu. c I upiti i radnje ove vrste (nad viˇe tipova entiteta) zadaju se nad odnosima s ˇ ˇmedu tipovima entiteta. Na primer, IZDAVASTVO se moˇe definisati kao odnos z ˇ ˇizmedu tipova entiteta IZDAVAC i KNJIGA, dok se AUTOR moˇe definisati kao z ˇodnos izmedu tipova entiteta PISAC i KNJIGA. Ti odnosi se mogu posmatrati ikao apstraktni tipovi entiteta u modelu (sa svojim svojstvima). Svojstva odnosa ˇIZDAVASTVO i AUTOR mogu se prikazati slikom 1.3. Redni broj mogao bi daoznaˇava da je dati pisac naveden kao prvi (drugi, tre´i, itd.) autor date knjige. c c ˇ IZDAVASTVO KNJIGA godina tiraˇ z ˇ IZDAVAC AUTOR PISAC redni broj KNJIGA Slika 1.3: Tipovi odnosa izdavaˇke baze podataka c Nad odnosima se mogu zadavati i uslovi integriteta, na primer:
  • 18. 1.1 O modelima podataka 11 – dva razna izdavaˇa ne mogu u istoj godini izdati istu knjigu. c Najpoznatiji klasiˇni modeli podataka su hijerarhijski, mreˇni i relacioni model. c zZa hijerarhijski i mreˇni model karakteristiˇno je da su nastali u procesu apstrak- z ccije ili indukcije iz postoje´ih implementacija SUBP, a ne kao apstraktni modeli. cSami mreˇni i hijerarhijski sistemi su prerelacioni i karakteriˇu se niˇim nivoom z s zapstrakcije nego relacioni sistemi, pre svega slogovnom prirodom podataka i ma-nipulisanja podacima. Detaljni opis hijerarhijskog i mreˇnog modela kao i elementi znjihovih najpoznatijih implementacija, IMS i IDMS redom, mogu se na´i u [22], ci u ovoj knjizi ne´e biti razmatrani. Umesto toga, ilustrujmo slede´im primerom c cnaˇin na koji se u hijerarhijskom, mreˇnom i relacionom sistemu realizuju delovi c zodgovaraju´ih modela. c ˇ ˇ Neka medu entitetima KNJIGA i IZDAVAC postoji funkcionalni odnos, tj. nekavaˇi da jednu knjigu moˇe da izdaje samo jedan izdavaˇ, dok jedan izdavaˇ moˇe da z z c c zizdaje ve´i broj knjiga. Strukturni deo hijerarhijskog modela u ovom sluˇaju sastoji c c ˇse od dva tipa entiteta – KNJIGA i IZDAVAC sa pripadnim svojstvima, i jednog ˇtipa funkcionalne veze – KNJIGA → IZDAVAC (slika 1.4). U ovoj funkcionalnoj ˇvezi tip entiteta IZDAVAC je tzv. roditeljski tip, a tip entiteta KNJIGA je tzv. tipdeteta. Jedan tip deteta moˇe imati najviˇe jedan roditeljski tip. z s ˇ IZDAVAC c KNJIGA Slika 1.4: Funkcionalna veza u hijerarhijskom modelu U hijerarhijskom SUBP IMS definicija baze ukljuˇuje naziv baze i, za svaki ctip entiteta, definiciju tog tipa (u IMS terminologiji – segment, SEGM). Definicijatipa entiteta ukljuˇuje ime entiteta, duˇinu odgovaraju´eg segmenta u bajtovima, c z cime roditeljskog tipa entiteta (PARENT) i imena atributa (u IMS terminologiji –polja, FIELD), a za svako polje – duˇinu u bajtovima, adresu prvog bajta polja u z ˇokviru segmenta, i eventualnu uredenost segmenata po tom polju (engl. sequencing,SEQ). Deo definicije hijerarhijske baze u naˇem sluˇaju mogao bi da ima slede´i s c coblik (polja I SIF, K SIF predstavljaju ˇifru izdavaˇa odnosno ˇifru knjige): s c s 1 DBD NAME = IZDAVASTVO 2 SEGM NAME = IZDAVAC, BYTES=44 3 FIELD NAME = (I SIF, SEQ), BYTES=2, START=1
  • 19. 12 1 Relacioni model podataka 4 FIELD NAME = NAZIV, BYTES=20, START=3 5 FIELD NAME = STATUS, BYTES=2, START=23 6 FIELD NAME = DRZAVA, BYTES=20, START=25 7 SEGM NAME = KNJIGA, PARENT = IZDAVAC, BYTES=52 8 FIELD NAME = (K SIF, SEQ), BYTES=2, START=1 9 FIELD NAME = NASLOV, BYTES=40, START=3 10 FIELD NAME = OBLAST, BYTES=10, START=43 Ova definicija hijerarhijske baze ukljuˇuje i integritetni deo u smislu da u bazi cne moˇe postojati informacija o knjizi ako ne postoji informacija o njenom izdavaˇu, z cjer se entitet tipa KNJIGA definiˇe u okviru “roditeljskog” entiteta tipa IZDAVAC s ˇ(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 traˇenom segmentu. zTako bi, na primer, zahtev za nalaˇenjem prve knjige – romana izdavaˇa ’Prosveta’ z cmorao da sadrˇi i precizno uputstvo kako se do odgovaraju´eg segmenta o toj knjizi z cdolazi, i pojednostavljenom sintaksom jezika za manipulisanje podacima sistemaIMS izrazio bi se u obliku GET UNIQUE IZDAVAC WHERE NAZIV = ’Prosveta’ KNJIGA WHERE OBLAST = ’roman’ ˇ(redosled navodenja entiteta je veoma bitan i mora da odgovara redosledu roditelj– dete iz definisane funkcionalne veze). Ovakav iskaz ne moˇe se zadavati interaktivno, ve´ iskljuˇivo iz programa na z c cprogramskom jeziku opˇte namene (npr. COBOL, PL/I). s ˇ ˇ U sluˇaju da medu tipovima entiteta IZDAVAC i KNJIGA ne postoji funkcio- cnalna veza, hijerarhijski model pokazuje svoje slabosti (jer ne moˇe da definiˇe viˇe z s sod jednog tipa roditelja za jedan tip entiteta). Mreˇni model dopuˇta da jedan z stip deteta moˇe imati ve´i broj roditeljskih tipova entiteta u okviru razliˇitih (ime- z c cnovanih) funkcionalnih veza. Svaki tip entiteta – domen funkcionalne veze zovese tip ˇlana te funkcionalne veze, a kodomen funkcionalne veze – tip vlasnika te cfunkcionalne veze. Tako se naˇ primer u mreˇnom modelu moˇe izraziti pomo´u s z z c ˇtri tipa entiteta – IZDAVAC, KNJIGA i “veznog” tipa entiteta IZDAVASTVO, i ˇpomo´u dve imenovane funkcionalne veze: c ˇ IZDAJE SE: IZDAVASTVO → KNJIGA IZDAJE: ˇ IZDAVASTVO → IZDAVAC (slika 1.5).ˇ U mreˇnom SUBP IDMS definicija baze ukljuˇuje naziv baze, definiciju tipa z centiteta za svaki tip entiteta (u IDMS terminologiji – slog, RECORD) i definicijuimenovanog tipa veze za svaki tip veze (u terminologiji IDMS – skup, SET). Manipulisanje podacima u mreˇnim sistemima, sliˇno hijerarhijskim, procedu- z cralno je orijentisano i izvrˇava se paketno – operacijama umetnutim u programski s
  • 20. 1.1 O modelima podataka 13 KNJIGA ˇ IZDAVAC IZDAJE SE IZDAJE c c ˇ IZDAVASTVO Slika 1.5: Imenovane funkcionalne veze – skupovi u mreˇnom modelu zjezik opˇte namene, npr. COBOL. Pri tome sintaksa operacija omogu´uje pre- s c ˇ ˇcizno navodenje puta kojim se pristupa pojedinom slogu, ukljuˇuju´i navodenje c cskupa, vlasnika skupa, prvog, slede´eg, poslednjeg ˇlana skupa za datog vlasnika, c citd. Tako bi se zahtev za nalaˇenjem prve knjige – romana izdavaˇa ’Prosveta’ z c z c ˇizrazio proceduralno, prvo nalaˇenjem prvog ˇlana (IZDAVASTVO) skupa IZDAJEu kome je izdavaˇ ’Prosveta’ vlasnik, zatim pronalaˇenjem vlasnika (KNJIGA) c z c c ˇskupa IZDAJE SE ˇiji je ˇlan – slog naden u prvom koraku i, najzad, ponavljanjem ˇprethodna dva koraka sve dok se ne dode do primerka sloga KNJIGA koji je roman.Izraˇen pojednostavljenom sintaksom, ovaj zahtev ima slede´i oblik: z c 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´eg sloga KNJIGA; c iza´i iz PERFORM petlje c END-IF FIND NEXT IZDAVASTVO WITHIN IZDAJE END-PERFORM Hijerarhijski i mreˇni model ne ostvaruju nezavisnost nivoa predstavljanja po- zdataka ANSI arhitekture. Na logiˇkom nivou prisutna je velika koliˇina informacija c co fiziˇkoj reprezentaciji i grupisanju podataka. Nasuprot njima, relacioni model po- c ˇdataka na logiˇkom nivou predstavlja i entitete i odnose medu njima na jedinstven cnaˇin – relacijama tabelarnog izgleda. Jezik za definisanje podataka i manipulisanje cpodacima je neproceduralan i ne ukljuˇuje informaciju o putu kojim se fiziˇki pris- c ctupa podacima. Tako bi se entiteti i odnosi iz prethodnog primera u relacionommodelu prikazali pomo´u tri tabele: c KNJIGA (K SIF, NASLOV, OBLAST) IZDAVAC (I SIF, NAZIV, STATUS, DRZAVA)
  • 21. 14 1 Relacioni model podataka IZDAVASTVO (I SIF, K SIF, GODINA, TIRAZ)a zahtev za nalaˇenjem svih romana izdavaˇa ’Prosveta’ izrazio bi se relacionim z cjezikom, na primer SQL-om, na slede´i naˇin: c c SELECT NASLOV FROM KNJIGA, IZDAVAC, IZDAVASTVO WHERE OBLAST = ’roman’ AND KNJIGA.K SIF = IZDAVASTVO.K SIF AND NAZIV = ’Prosveta’ AND IZDAVAC.I SIF = IZDAVASTVO.I SIF ˇ Redosled navodenja relacija u FROM liniji je nebitan jer sve relacije imaju ˇravnopravan tretman; isto vaˇi i za redosled poredenja u WHERE liniji. Prethodni zrelacioni iskaz moˇe se izvrˇavati i interaktivno i u okviru aplikativnog programa. z s Za izlaganje najznaˇajnijih aspekata sistema baza podataka koristi´e se rela- c ccioni model. Razlozi za ovaj izbor mogu se naslutiti iz prethodnog primera, a upotpunosti se mogu sagledati tek detaljnim upoznavanjem svih modela (v. [22]).Ti razlozi su mnogobrojni i prirodni, i nalaze se u svim bitnim karakteristikama ˇrelacionog modela. Najvaˇnije medu njima su: z • strukturna jednostavnost • formalno i strogo zasnivanje • ekonomiˇni upitni jezici c • razgraniˇenje nivoa predstavljanja podataka. c Relacioni model ´e biti izloˇen u narednim odeljcima u verziji koja je posluˇila c z zkao osnov za kasnija proˇirenja (RM/T, RM/2), i koju je autor relacionog modela sEdgar Codd (Edgar Kˆd) prikazao u [18], [19]. o1.2 Strukturni deo relacionog modelaDva osnovna tipa objekata koji karakteriˇu strukturu relacionog modela su domen si relacija. Domen je skup vrednosti istog tipa, kao ˇto je skup naslova knjiga, skup s ˇimena gradova ili skup datuma nekih dogadaja. Domen je jednostavan ako su musve vrednosti atomiˇne, tj. ako SUBP ne moˇe da ih razloˇi u komponente sa c z zspecifiˇnim znaˇenjem; u suprotnom, domen je kompozitan. U daljem tekstu ´e se c c cpodrazumevati da su svi domeni jednostavni (osim ako se naglasi drugaˇije).c Neka su D1 , D2 , . . . , Dn (n ∈ N) domeni (ne obavezno razliˇiti). Dekartov cproizvod tih domena, u oznaci D1 ×D2 ×· · ·× Dn , jeste skup n-torki (v1 , v2 , . . . , vn )takvih da je vi ∈ Di za sve i = 1, 2, . . . , n. Relacija R stepena n, definisana nadomenima D1 , D2 , . . . , Dn , je proizvoljni konaˇni podskup navedenog Dekartovog cproizvoda. Ova relacija, za razliku od matematiˇkog pojma relacije, je dinamiˇkog c c
  • 22. 1.2 Strukturni deo relacionog modela 15sadrˇaja, jer se neke njene n-torke1 tokom “ˇivota” relacije briˇu, neke se dodaju z z sa neke se menjaju. Ako se umesto skupa indeksa domenˆ {1, 2, . . . , n} uzme proizvoljni skup (ra- azliˇitih) imenovanih indeksa {A1 , A2 , . . . , An }, onda je svaki element vi n-torke crelacije R karakterisan ne samo domenom Di ve´ i indeksom Ai . Razliˇiti imeno- c cvani indeksi Ai (i = 1, 2, . . . , n) zovu se atributi relacije R i oznaˇavaju razliˇite c c z c ˇuloge (ne nuˇno razliˇitih) domena nad kojima je izgradena relacija R. Sada sesvaka n-torka relacije R moˇe posmatrati kao skup n parova (Ai , vi ), i = 1, 2, . . . , n, zgde je vi vrednost iz domena Di . Relacijom R predstavlja se neki tip entiteta E, dok se n-torkama relacije Rpredstavljaju pojedinaˇni entiteti tipa E. Zato se svaki atribut Ai relacije R moˇe c zinterpretirati kao preslikavanje tipa entiteta E u odgovaraju´i domen Di , tj. c Ai : E → Di . Sliˇno, svaki podskup {Ai1 , Ai2 , . . . , Aik } skupa atributa relacije R moˇe se in- c zterpretirati kao preslikavanje (Ai1 , Ai2 , . . . , Aik ) : E → Di1 × Di2 · · · × Dik . Mada je skup Di kodomen preslikavanja (tj. atributa) Ai , u terminologiji rela-cionog modela on se zove domen atributa Ai , ˇto se oznaˇava sa dom(Ai ). Sliˇno, s c csa dom(Ai1 , Ai2 , . . . , Aik ) oznaˇava se domen skupa atributa {Ai1 , Ai2 , . . . , Aik }, tj. cskup Di1 × Di2 · · · × Dik . Neka je e entitet tipa E. Tada je element vi ∈ Di vrednost atributa Ai entitetae (tj. odgovaraju´e n-torke) ako je Ai (e) = vi . Sliˇno, element (vi1 , vi2 , . . . , vik ) ∈ c cDi1 × Di2 · · · × Dik je vrednost skupa atributa {Ai1 , Ai2 , . . . , Aik } entiteta e (tj.odgovaraju´e n-torke) ako je (Ai1 , Ai2 , . . . , Aik )(e) = (vi1 , vi2 , . . . , vik ). c Ako su svi domeni atributa relacije R jednostavni, onda relacija R ima tabelarniizgled i nalazi se u prvoj normalnoj formi, u oznaci 1NF, tj. normalizovanaje (o viˇim normalnim formama bi´e reˇi u delu o logiˇkom projektovanju baze s c c cpodataka). Kolone tabele odgovaraju atributima relacije, a vrste – n-torkamarelacije.2 Takva tabela ima slede´e karakteristike: c – nema dupliranih vrsta (jer je relacija skup) – redosled vrsta je nebitan (jer je relacija skup) – redosled kolona je nebitan (jer atributi relacije ˇine skup) c – sve vrednosti u tabeli su atomiˇne. c 1 Kada je iz konteksta jasno kojoj relaciji pripada neka n-torka, ili kada to nije od znaˇaja, cn-torka ´e se jednostavno zvati torka; pri tome se za dimenziju torke uzima stepen odgovaraju´e c crelacije. 2 U daljem tekstu parovi termina relacija/tabela, atribut/kolona i n-torka/vrsta upotrebljava´e cse kao sinonimi; uobiˇajeno je da se u razmatranju samog relacionog modela upotrebljavaju prve ckomponente ovih parova, a u kontekstu implementacija relacionog modela – druge.
  • 23. 16 1 Relacioni model podatakaOznaka R(A1 : D1 , A2 : D2 , . . . , An : Dn ) koristi se za predstavljanje relacije Rˇiji atribut A1 uzima vrednost iz domena D1 , atribut A2 iz domena D2 , itd. iczove se relacijska shema relacije R. Kada je jasno o kojim se domenima radi, ilikada domeni (odnosno atributi) nisu bitni za izlaganje, za relaciju R upotrebljavase oznaka R(A1 , A2 , . . . , An ) (odnosno samo R). Umesto oznake za nabrajanjeatributa R(A1 , A2 , . . . , An ), ˇesto se, u identiˇnom znaˇenju, koristi i oznaka sa c c c ˇdopisivanjem atributa, R(A1 A2 . . . An ). Takode, ako su od znaˇaja dva istaknuta cdisjunktna podskupa X, Y skupa atributa relacije R (ˇija je unija jednaka celom cskupu), ona se obeleˇava i sa R(X, Y ). z Relaciona baza podataka je skup skupova podataka koji se na logiˇkom nivou cmogu posmatrati kao normalizovane relacije odgovaraju´ih stepena i dinamiˇkog c csadrˇaja. Skup relacijskih shema relacione baze podataka je shema relacione baze zpodataka. Bazne relacije su relacije koje su definisane nezavisno od drugih relacija ubazi podataka, i koje se ne mogu izvesti iz drugih baznih relacija. One su na fiziˇkom cnivou predstavljene odgovaraju´im strukturama podataka. Izvedene relacije su crelacije koje se mogu izvesti iz baznih relacija primenom skupa operacija. Oneobiˇno nemaju fiziˇku reprezentaciju, i predstavljaju razliˇite poglede koje razni c c ckorisnici mogu imati na istu bazu podataka. Neke druge definicije relacionog modela ne ukljuˇuju pojam domena u osnovne c ˇtipove objekata strukture relacionog modela. Medutim, ovaj pojam ima svoj ope- c s ˇracioni znaˇaj u tome ˇto domeni odreduju skup operacija koje se nad njihovimvrednostima mogu izvrˇavati. Tako se vrednosti atributa nad istim domenima smogu porediti (a vrednosti atributa nad razliˇitim domenima ne mogu), pa se nad catributima, definisanim nad istim domenima, mogu izvrˇavati i sve operacije koje s ˇukljuˇuju poredenje. Ve´ina upitnih jezika, kao ˇto je SQL, ne poznaje semantiˇki c c s caspekt domena, pa je mogu´e, na primer, postavljati upite kojima se porede naslovi cknjiga sa imenima drˇava (kao niske simbola). z Sva naredna razmatranja bi´e ilustrovana jednom aproksimacijom izdavaˇke c crelacione baze sa slede´om shemom: cP (P SIF, IME, BR NASLOVA, DRZAVA)I (I SIF, NAZIV, STATUS, DRZAVA)K (K SIF, NASLOV, OBLAST)KP (K SIF, P SIF, R BROJ)KI (K SIF, I SIF, IZDANJE, GODINA, TIRAZ) ˇ Prve tri relacije predstavljaju tipove entiteta PISAC, IZDAVAC i KNJIGA re-dom, i imaju sliˇnu strukturu kao i odgovaraju´i tipovi entiteta. Nov je prvi atribut c cu svakoj od relacija, koji predstavlja ˇifru, tj. jedinstveni identifikator pisca, iz- sdavaˇa i knjige. Na primer, ˇifra knjige, K SIF, moˇe biti ISBN (International c s zStandard Book Number), P SIF i I SIF mogu biti matiˇni broj pisca i izdavaˇa, c credom. Relacija KP predstavlja apstraktni tip entiteta AUTOR, tj. odnos izmedu ˇtipova entiteta KNJIGA i PISAC, dok relacija KI predstavlja apstraktni tip entiteta ˇ ˇIZDAVASTVO, tj. odnos izmedu tipova entiteta KNJIGA i IZDAVAC. ˇ
  • 24. 1.2 Strukturni deo relacionog modela 17 Neka je sadrˇaj3 tih relacija (koji ´e se podrazumevati u svim primerima) slede´i: z c c P P SIF IME BR NASLOVA DRZAVA p1 ´ c B.Copi´ 2 Jugoslavija p2 M.Benson 1 Engleska p3 ˇ c ˇ sc B.Sljivi´-Simˇi´ 1 Jugoslavija p4 D.Maksimovi´ c 2 Jugoslavija p5 C.J.Date 1 Amerika I I SIF NAZIV STATUS DRZAVA i1 Prosveta 30 Jugoslavija i2 Addison Wesley Publ. Comp. 20 Amerika i3 Deˇje novine c 10 Jugoslavija i4 Matica srpska 30 Jugoslavija K K SIF NASLOV OBLAST k1 Osma ofanziva roman k2 Nemam viˇe vremena s poezija k3 Pionirska trilogija roman k4 Srpskohrvatsko-engleski reˇnik c leksikografija k5 An Introduction to Database Systems raˇunarstvo c k6 Traˇim pomilovanje z poezija KP K SIF P SIF R BROJ k1 p1 1 k2 p4 1 k3 p1 1 k4 p2 1 k4 p3 2 k5 p5 1 k6 p4 1 KI K SIF I SIF IZDANJE GODINA TIRAZ k1 i1 2 1965 10000 k2 i1 2 1974 7000 k3 i1 1 1975 10000 k4 i1 2 1979 10000 k5 i2 4 1986 5000 k6 i3 1 1966 3000 k6 i4 3 1988 5000 3 Stvarni sadrˇaj ukljuˇio bi samo simbole iz dopuˇtenog skupa. z c s
  • 25. 18 1 Relacioni model podataka1.3 Manipulativni deo relacionog modelaManipulativni deo relacionog modela predstavlja formalizam za definisanje rela-cionog izraza opˇteg oblika, ˇija je vrednost proizvoljni podskup skupa podataka iz s cbaze. Definicija relacionog modela ukljuˇuje dva formalna jezika za rad sa relacijama, ckoja imaju traˇeno svojstvo: jedan algebarski u suˇtini – relaciona algebra, i drugi, z szasnovan na predikatskom raˇunu prvog reda – relacioni raˇun ([14]). Dokazana je c cekvivalentnost ovih formalizama u pogledu izraˇajne mo´i ([17]). Sami formalizmi z ckao i skica dokaza njihove ekvivalentnosti bi´e izloˇeni u slede´oj glavi. Da bismo c z cilustrovali mogu´nosti ovih formalizama, ovde ´emo samo neformalno uvesti pojam c crelacione algebre. Relaciona algebra je skup operacija nad relacijama. Relacioni izraz u relacionoj c ˇalgebri sastoji se od niza operacija nad odgovaraju´im relacijama. Medu vaˇnijim zoperacijama relacione algebre su projekcija, restrikcija i prirodno spajanje (slika1.6, [27]): • neka je X podskup skupa atributa relacije R; projekcija R[X] relacije R na atribute X je relacija koja sadrˇi (samo) kolone relacije R koje odgovaraju z atributima X (v. i taˇku 2.1.1); c • restrikcija R[X = x], za x ∈ dom(X), jeste relacija koja sadrˇi (samo) n-torke z relacije R ˇija je vrednost skupa atributa X jednaka x (v. i taˇku 2.1.1); c c • prirodno spajanje R ∗ S je dopisivanje torki relacije S na torke relacije R ako imaju iste vrednosti na zajedniˇkim atributima, uz eliminaciju po jednog c atributa iz svakog para zajedniˇkih atributa (v. i taˇku 2.1.2). c c Mada se operacije relacione algebre definiˇu nad relacijama, one se primenjuju i sna pojedinaˇne n-torke, jer su i n-torke – (jednoˇlane) relacije; na primer, projekcija c cn-torke (v1 , v2 , . . . , vn ) na prva dva atributa (A1 , A2 ) je (v1 , v2 , . . . , vn )[A1 A2 ] =(v1 , v2 ) (v. i taˇke 2.1.1, 2.1.2). c Specifiˇni sistemi relacionih baza podataka (kra´e – relacioni sistemi) imple- c cmentiraju manipulativni deo relacionog modela relacionim jezicima za definisanjepodataka i manipulisanje podacima, specifiˇne sintakse. Da bi jezik za definisanje cpodataka bio relacioni, mora da ima konstrukcije za definisanje osnovnih koncepatastrukture relacionog modela (ali i pravila integriteta, opˇtih i eventualno posebnih, sv. odeljak 1.4). Da bi jezik za manipulisanje podacima bio relacioni, mora dabude relaciono kompletan, tj. da ima izraˇajnu mo´ bar kolika je izraˇajna mo´ z c z crelacionog raˇuna ili relacione algebre. Osim toga, jezik za manipulisanje podacima cjednog relacionog sistema mora da ima joˇ neka svojstva. Naime, formalizam rela- scionog modela ima mogu´nost pretraˇivanja podataka, tj. pronalaˇenja podataka c z zkoji predstavljaju vrednost relacionog izraza. Pored ove mogu´nosti, relacioni jezik ctreba da omogu´i i aˇuriranje podataka u najˇirem smislu, tj. unoˇenje novih i c z s sbrisanje i izmenu postoje´ih podataka u bazi. Zahtev za pretraˇivanjem zove se c zupit, dok se zahtev za aˇuriranjem zove radnja. z
  • 26. 1.3 Manipulativni deo relacionog modela 19 projekcija restrikcija prirodno spajanje ¨ B rr ¨¨ T r j a1 b1 b1 c1 a1 b1 c1 a2 b1 b2 c2 a2 b1 c1 a3 b2 b3 c3 a3 b2 c2 Slika 1.6: Operacije projekcije, restrikcije i prirodnog spajanja Jezik za definisanje podataka i jezik za manipulisanje podacima zajedno ˇine cupitni jezik . Osnova za izgradnju upitnog jezika, s obzirom na potrebu za njegovomrelacionom kompletnoˇ´u, uvek leˇi u jednom od pomenutih formalizama. sc z1.3.1 Nedostaju´e vrednosti cU bazi podataka moˇe postojati potreba za registrovanjem semantiˇki razliˇitih z c cvrsta nedostaju´ih vrednosti, kao ˇto su trenutno nepoznata vrednost (npr. status c sizdavaˇa), ili neprimenljivo svojstvo (npr. vrednost atributa IME SUPRUZNIKA c ˇza osobu koja nije u braku). Semantika nedostaju´e vrednosti moˇe biti i drugaˇija c z c([46]) (npr. nepoznata vrednost koja je u poznatom intervalu), ali se prve dvenavedene vrste semantiˇki najviˇe razlikuju i najˇeˇ´e pojavljuju u realnosti. c s c sc Da bi se relacioni model proˇirio ovim dvema vrstama nedostaju´ih vrednosti, s c ˇneophodno je definisati proˇirene relacije poredenja nad vrednostima iz domena i srazliˇitim nedostaju´im vrednostima, kao i proˇirene relacije pripadnosti skupu i c c s ˇinkluzije. Rezultat poredenja sada moˇe biti, osim taˇno ili netaˇno, i drugaˇije z c c cokvalifikovan (npr. ’ne zna se’, ’moˇda’, itd). Tako se dolazi do viˇevalentnih logika z su relacionom modelu. Kako se definicije operacija relacione algebre baziraju na ˇ ˇporedenju vrednosti atributa n-torki, a rezultat tog poredenja moˇe biti taˇan, z cnetaˇan ili ’moˇda’, potrebno je za svaku operaciju relacione algebre definisati viˇe c z sod jedne operacije u proˇirenom modelu. Pored toga, i ostali koncepti relacionog s ˇmodela koji su bazirani na poredenju vrednosti (npr. funkcionalne, viˇeznaˇne s czavisnosti) dobijaju kompleksniju formu, ˇto dosta usloˇnjava sam model. Stoga po- s zstoje´i sistemi za upravljanje bazama podataka, ako uopˇte podrˇavaju nedostaju´e c s z cvrednosti, podrˇavaju samo jednu vrstu takve vrednosti. Jedno proˇirenje relacione z salgebre kao osnove za upitne jezike koji manipuliˇu i nedostaju´im vrednostima dao s cje Codd u radu [18]; ovo proˇirenje bi´e izloˇeno u taˇki 2.1.3 – Proˇirena relaciona s c z c salgebra.
  • 27. 20 1 Relacioni model podataka1.4 Integritetni deo relacionog modelaU integritetni deo relacionog modela spadaju uslovi koje treba da zadovolje podaciu bazi da bi stanje baze bilo valjano. Pri svakom aˇuriranju baze podataka sistem zza upravljanje bazom podataka proverava eksplicitno ili implicitno zadate uslove ˇintegriteta. Svaki uslov integriteta je neko tvrdenje (engl. assertion), tj. istinitosnaformula ˇija vrednost treba da bude ’taˇno’ u svakom valjanom stanju baze. Uslov c cintegriteta moˇe da se odnosi na pojedinaˇni atribut, domen ili relaciju, kao i na z ccelu bazu podataka. Uslovi integriteta mogu biti specifiˇni (odnose se na zadati atribut, relaciju, cbazu), pri ˇemu se zadaju eksplicitno, ili opˇti, koji se mogu primeniti na svaku c srelaciju ili bazu podataka, i koji su zato implicitni. Specifiˇni uslovi integriteta mogu biti dvojaki. Prva vrsta tih uslova odnosi cse na karakteristike pojedinaˇnih atributa ili njihovih domena, ili na vezu izmedu c ˇspecifiˇnih vrednosti atributˆ n-torki jedne ili viˇe relacija. Na primer, c a s – u relaciji K, svaka vrednost iz domena atributa K SIF je oblika slova k za kojim sledi jednocifren do trocifren ceo broj (karakteristika pojedinaˇnog do- c mena); ˇ – status jugoslovenskih izdavaˇa mora biti manji ili jednak 30 (veza izmedu c specifiˇnih vrednosti atributˆ n-torki jedne relacije); c a z c z ˇ – tiraˇ izdanja izdavaˇa ’Prosveta’ ne moˇe biti manji od 5000 (veza izmedu specifiˇnih vrednosti atributˆ n-torki dve relacije). c a c c ˇ Druga vrsta specifiˇnih uslova integriteta su logiˇke veze koje postoje izmeduatributˆ jedne relacije. Na primer, a s c c ˇ – u relaciji I, svaka ˇifra izdavaˇa, I SIF, jednoznaˇno odreduje vrednost atri- buta NAZIV, STATUS, DRZAVA (sadrˇaj relacije I zadovoljava ovaj uslov); z ˇ – u relaciji I, vrednost atributa DRZAVA jednoznaˇno odreduje vrednost atri- c buta STATUS (sadrˇaj relacije I ne zadovoljava ovaj uslov, ali ako bi on bio z eksplicitno zadat, svi izdavaˇi iz iste drˇave morali bi da imaju isti status). c z Opˇti uslovi integriteta (koji se mogu primeniti na svaku relaciju) bi´e ilus- s ctrovani kroz slede´a dva primera: c ˇ – u relaciji I atribut I SIF mora imati definisanu i odredenu vrednost (iz odgo- varaju´eg domena) u svakoj n-torci, tj. njegova vrednost ne sme biti ne- c dostaju´a; razne n-torke relacije I moraju imati razliˇite vrednosti atributa c c I SIF (integritet entiteta); – u relaciji KI ne sme postojati n-torka ˇiji atribut I SIF ima vrednost koja c ne postoji na atributu I SIF relacije I (integritet obra´anja, referencijalni c integritet).
  • 28. 1.4 Integritetni deo relacionog modela 21 Opˇti uslovi integriteta bi´e vezani za koncepte primarnog odnosno stranog s ckljuˇa, koji ´e precizno biti definisani u narednim taˇkama. Ovi uslovi integriteta c c cmoraju da vaˇe uvek, u svakoj relaciji, za njen primarni odnosno strani kljuˇ (ako z crelacija ima strani kljuˇ). c ˇ Medu specifiˇnim uslovima integriteta, uslovi druge vrste (logiˇke veze) mogu c c ˇse formalizovati kroz koncept zavisnosti medu atributima. Razne vrste zavisnostii njihove implikacije na logiˇko projektovanje baze bi´e razmotrene u glavama 8 i c c9. Ovde ´e biti opisan najˇeˇ´e koriˇ´eni oblik zavisnosti – funkcionalna zavisnost c c sc sckoja se koristi i u definiciji primarnog kljuˇa. cDefinicija 1.1 Neka su X, Y ⊆ {A1 , A2 , . . . , An } neprazni podskupovi skupa atri-buta relacije R(A1 , A2 , . . . , An ). Oznaˇimo sa R[XY ] projekciju relacije R na uniju catributa X, Y (eventualni preseˇni atributi uzimaju se samo jednom). Tada, izmedu c ˇskupova atributa X i Y postoji funkcionalna zavisnost, u oznaci X → Y , ako usvakom trenutku postojanja relacije R, R[XY ] jeste funkcija R[X] → R[Y ], tj. akoza svaki par n-torki t1 , t2 ∈ R, takav da je t1 [X] = t2 [X], vaˇi da je i t1 [Y ] = t2 [Y ]. z c z ˇU tom sluˇaju kaˇe se da skup atributa X funkcionalno odreduje atribute skupa Y,tj. da skup atributa Y funkcionalno zavisi od atributa skupa X.Napomena 1.1 Uslov koji definiˇe funkcionalnu zavisnost X → Y ekvivalentan sje uslovu da R[X = x][Y ] ima najviˇe jednu n-torku za proizvoljno x ∈ dom(X) s(R[X = x][Y ] je projekcija na atribute Y restrikcije relacije R po uslovu X = x). Primeri funkcionalnih zavisnosti su: I SIF → NAZIV I SIF → STATUS I SIF → DRZAVA DRZAVA → STATUS ˇPrva funkcionalna zavisnost ˇita se kao “I SIF funkcionalno odreduje NAZIV (iz- cdavaˇa)”, ili “NAZIV (izdavaˇa) funkcionalno zavisi od I SIF”. Analogno je i ˇitanje c c costalih funkcionalnih zavisnosti.1.4.1 Primarni kljuˇ cDefinicija 1.2 Neka je X ⊆ {A1 , A2 , . . . , An } podskup skupa atributa relacijeR(A1 , A2 , . . . , An ). Kaˇe se da je X kljuˇ (ili kandidat za kljuˇ) relacije R ako su z c cispunjena slede´a dva uslova: 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 podskupX ⊂ X postoji 1 ≤ j ≤ n tako da X → Aj . Nadkljuˇ je svaki skup atributa za koji vaˇi samo svojstvo a). c z Na primer, atribut I SIF je kljuˇ relacije I. c Svaka relacija ima bar jedan kljuˇ, jer u svakoj relaciji R(A1 , A2 , . . . , An ) vaˇi c zfunkcionalna zavisnost {A1 , A2 , . . . , An } → Ai , za svako 1 ≤ i ≤ n. Dakle, skup
  • 29. 22 1 Relacioni model podataka{A1 , A2 , . . . , An } svih atributa relacije R je nadkljuˇ. Ako ne postoji pravi podskup cX ⊂ {A1 , A2 , . . . , An } sa tim svojstvom, onda je skup {A1 , A2 , . . . , An } kljuˇ. Ako ctakav pravi podskup X postoji, kljuˇ je najmanji podskup od X sa tim svojstvom. c Jedna relacija moˇe imati viˇe kljuˇeva. (Na primer, relacija I moˇe imati i kljuˇ z s c z cNAZIV ako vaˇi funkcionalna zavisnost NAZIV → I SIF, ˇto bi postoje´i sadrˇaj z s c zrelacije I zadovoljio). Jedan od kljuˇeva bira se za primarni kljuˇ, koji jedinstveno c cidentifikuje entitete predstavljene n-torkama relacije. Primarni kljuˇ moˇe se sa- c zstojati od jednog ili viˇe atributa. Svaka relacija u relacionom modelu mora imati sprimarni kljuˇ. c Prvo opˇte pravilo integriteta, integritet entiteta, koje implicitno mora da vaˇi za s zprimarni kljuˇ svake relacije, iskazuje se, koriˇ´enjem prethodne definicije, slede´im c sc czahtevima: – dve razne n-torke jedne relacije ne mogu imati identiˇne vrednosti primarnog c kljuˇa; c – nijedan od atributa primarnog kljuˇa relacije ne sme imati nedostaju´u vred- c c nost ni u jednoj n-torci relacije.1.4.2 Strani kljuˇ cNa osnovu primarnog kljuˇa jedne relacije mogu´e je definisati koncept stranog c ckljuˇa druge relacije. cDefinicija 1.3 Skup STK jednog ili viˇe atributa bazne relacije T2 je njen strani skljuˇ koji se odnosi na baznu relaciju T1 ako su ispunjena slede´a dva uslova: c c a) svaka vrednost skupa atributa STK n-torke iz T2 je ili u potpunosti ne-dostaju´a ili u potpunosti nije nedostaju´a (element je odgovaraju´eg Dekartovog c c cproizvoda); b) bazna relacija T1 ima primarni kljuˇ PRK takav da je svaka vrednost skupa catributa STK n-torke iz T2 , koja nije nedostaju´a, identiˇna PRK-vrednosti neke c cn-torke iz T1 . Za relaciju T2 kaˇe se da je zavisna od relacije T1 . z Na primer, atribut I SIF u relaciji KI je strani kljuˇ relacije KI koji se odnosi cna relaciju I. Drugo opˇte pravilo integriteta, referencijalni integritet ili integritet obra´anja, s cdefinisano je upravo uslovom b) iz definicije 1.3. Ono mora implicitno da vaˇi u z ˇsvakoj relaciji za koju je definisan strani kljuˇ, jer obezbeduje njegove korektne cvrednosti. Ovo pravilo integriteta moˇe imati i drugu, ekvivalentnu formulaciju. Ona ko- zristi semantiˇki aspekt pojma domen (v. odeljak 1.2), i zahteva da svaki atribut cjedne relacije koji je definisan na domenu na kome je definisan atribut primarnogkljuˇa druge relacije ima svojstva koja karakteriˇu strani kljuˇ. c s c
  • 30. 1.4 Integritetni deo relacionog modela 23 Relacije T1 , T2 ne moraju biti razliˇite. Na primer, relacija RADNIK moˇe c z ˇ ˇsadrˇati, pored ostalih, atribute MATICNI BROJ i MATICNI BROJ SEFA; prvi z ˇnavedeni atribut je primarni kljuˇ, dok je drugi navedeni atribut – strani kljuˇ koji c cse odnosi na primarni kljuˇ iste relacije, jer ˇef moˇe biti samo neko ko je radnik c s ztog preduze´a. c Problem odrˇavanja integriteta entiteta i referencijalnog integriteta javlja se pri zsvakoj operaciji izmene sadrˇaja baznih relacija. Posebno, referencijalni integritet zmoˇe biti naruˇen pri unoˇenju novih n-torki u relaciju nad kojom je definisan strani z s skljuˇ, pri izmeni vrednosti neke n-torke na atributu iz primarnog ili stranog kljuˇa, c ckao i pri brisanju n-torki iz relacije na koju se odnosi strani kljuˇ druge relacije. Ovi cproblemi i naˇini njihovog reˇavanja bi´e detaljnije ilustrovani primerima u taˇki c s c c3.3.14 o operacijama aˇuriranja upitnog jezika SQL. z ˇ Svi implementirani relacioni sistemi obezbeduju u izvesnoj meri podrˇku uslovi- s s ˇma integriteta, pre svega opˇtim uslovima integriteta. Medutim, to nije uvek sluˇaj csa specifiˇnim uslovima integriteta. Prvi kompletni relacioni prototipski sistem, cSystem R IBM-ove istraˇivaˇke laboratorije iz San Hozea u Kaliforniji, imao je z ciskaz za zadavanje specifiˇnih uslova integriteta koji se odnose bilo na stanje baze c(vrednosti atributa, sadrˇaj relacije ili cele baze), bilo na promenu stanja baze. z z z ˇTaj iskaz moˇe da sadrˇi proizvoljno tvrdenje upitnog jezika. Na primer, uslovintegriteta koji se name´e pri promeni statusa izdavaˇa je da novi status mora biti c cve´i od starog, i u sintaksi System R zadaje se iskazom c ASSERT ON UPDATE TO I: New STATUS = Old STATUS Izmena podataka koja naruˇava uslov integriteta se odbija. Uslov integriteta s z c ˇmoˇe da se odnosi na pojedinaˇnu n-torku ili na skup n-torki (kada je u tvrdenjuprisutna agregatna funkcija, v. taˇku 3.3.7). c Komercijalni proizvodi razvijeni iz prototipskog sistema System R ne podrˇavaju zna prethodni, deklarativni naˇin, specifiˇne uslove integriteta. Tako, na primer, c cneke verzije DB2 sistema nude mogu´nost programiranja procedurˆ za odrˇavanje c a zproizvoljnih (specifiˇnih) uslova integriteta, ali je te procedure obavezno pisati u cAssembler 370 jeziku, ˇto ih ˇini praktiˇno neupotrebljivim za krajnjeg korisnika, s c ci svakako veoma udaljenim od ideje deklarativne specifikacije. Sistem DB2 UDBVerzija 5 ima mogu´nost deklarativnog zadavanja specifiˇnih ograniˇenja koja se c c codnose na jednu ili viˇe kolona jedne tabele, i koja mora da zadovolji svaka vrsta te stabele. Ta ograniˇenja zadaju se u okviru CONSTRAINT – CHECK opcije iskaza cza kreiranje tabele (CREATE) odnosno iskaza za izmenu strukture tabele (ALTERTABLE). Na primer, u tabeli KI (izdavaˇtvo), ograniˇenje da svako izdanje starije s cod 1980. godine mora imati tiraˇ bar 5000, u DB2 UDB iskazuje se CONSTRAINT zopcijom pomenutih iskaza oblika CONSTRAINT GODTIR CHECK (GODINA = 1980 OR TIRAZ =5000) Opcija CONSTRAINT omogu´uje zadavanje ”statiˇnih” ograniˇenja, tj. ograni- c c cˇenja koja se odnose na vrednosti pojedinih kolona u svakoj pojedinaˇnoj vrstic c
  • 31. 24 1 Relacioni model podataka ˇtabele, u svakom trenutku, i koja ne mogu izraziti odnos izmedu starih i novihvrednosti kolona pri aˇuriranju, kakav je bio prethodni primer ograniˇenja pri z caˇuriranju kolone STATUS. Ova druga mogu´nost u DB2 UDB sistemu ostvarena z cje kroz opˇtiji koncept – koncept trigera kojima je posve´ena slede´a taˇka. s c c c1.4.3 TrigeriSvi dosad pomenuti oblici uslova integriteta ukljuˇuju, eksplicitno ili implicitno, c ˇ ˇpored tvrdenja, i akciju koju sistem preduzima u sluˇaju da tvrdenje nije taˇno. c cNa primer, kod specifiˇnih uslova integriteta koji se odnose na strukturu domena, cpokuˇaj da se unese vrednost atributa koja nije iz odgovaraju´eg domena odbija s cse. To odbijanje da se registruje vrednost predstavlja akciju koja se preduzima usluˇaju da uslov integriteta nije zadovoljen. Pokuˇaj da se izbriˇe n-torka iz jedne c s srelacije, sa vrednoˇ´u primarnog kljuˇa koja postoji kao vrednost stranog kljuˇa sc c cn-torke zavisne relacije, odbija se, ili proizvodi kaskadno brisanje odgovaraju´ih cn-torki iz zavisne relacije, odnosno postavljanje markera nedostaju´ih vrednosti cstranog kljuˇa u odgovaraju´e n-torke zavisnih relacija (o ovim efektima brisanja c cbi´e viˇe reˇi u odeljku o SQL podrˇci brisanju). c s c s Opˇtija forma uslova integriteta, kojom se moˇe zadati proizvoljna akcija u s z ˇsluˇaju proizvoljnog (navedenog) dogadaja nad objektom u bazi, zove se triger c(okidaˇ, engl. trigger). c Triger je proceduralni mehanizam koji specifiˇnoj op- ceraciji modifikovanja podataka – triger operaciji, nad specifiˇnom baznom relacijom, cpridruˇuje niz SQL iskaza, triger proceduru, koja se ”aktivira” tj. izvrˇi kadgod se z sizvrˇi triger operacija. s Triger se moˇe koristiti za validaciju ulaznih podataka, za automatsko gener- zisanje vrednosti unesene vrste, za ˇitanje iz ili upis u druge tabele u cilju us- c ˇpostavljanja medusobnih veza, za podrˇku uzbunjivanju (alarmiranju) kroz poruke selektronske poˇte. Koriˇ´enje trigera omogu´uje brˇi razvoj aplikacija, globalno s sc c znametanje ograniˇenja (uslova integriteta) i lakˇe odrˇavanje aplikacija i podataka. c s z U sistemima koji podrˇavaju mehanizam trigera uobiˇajeno je da za svaku od z coperacija unoˇenja, izmene i brisanja postoje po dve vrste trigera kojima se definiˇu s sprocedure koje ta operacija aktivira: triger ˇija se triger procedura aktivira pre cizvrˇenja same operacije (pre-triger) i triger ˇija se triger procedura aktivira posle s cizvrˇenja operacije (posle-triger). Pre-trigeri koriste se najˇeˇ´e za proveru nekih s c scuslova pre izvrˇenja triger procedure. Posle-trigeri koriste se za propagiranje vred- s ˇnosti prema potrebi, ili za izvodenje drugih zadataka kao ˇto je slanje poruke, koji smogu biti deo triger operacije.Primer 1.1 Za relacije P (pisac) i KP (autor), sa pripadnim atributima, u DB2UDB sistemu mogao bi da definiˇe slede´i triger vezan za registraciju novog au- s ctorskog dela, tj. za unoˇenje n-torke u relaciju KP: s CREATE TRIGGER KP UNOS AFTER INSERT ON KP
  • 32. 1.4 Integritetni deo relacionog modela 25 REFERENCING NEW AS NKP FOR EACH ROW MODE DB2SQL UPDATE P SET BR NASLOVA = BR NASLOVA + 1 WHERE P SIF = NKP.P SIF(ovaj se triger odnosi na automatsko uve´anje broja naslova autora za 1, a aktivira cse kadgod se unese podatak o novoj knjizi tog autora; dakle, triger operacija jeoperacija unoˇenja – INSERT – u tabelu KP, a triger procedura sastoji se od jednog sjedinog SQL iskaza – aˇuriranja – UPDATE – tabele P; uve´anje u tabeli P izvrˇava z c sse posle – AFTER – izvrˇenog unosa u tabelu KP; nova uneta vrsta u tabelu KP sdobija ”ime” NKP opcijom REFERENCING; triger se aktivira za svaku novu unetuvrstu u tabelu KP – FOR EACH ROW, dok je DB2SQL jedini podrˇani vid trigera zu ovom sistemu). Na sliˇan naˇin mogu se definisati i trigeri pri brisanju, odnosno izmeni podatka c co autorskom delu: CREATE TRIGGER KP BRIS AFTER DELETE ON KP REFERENCING OLD AS OKP FOR EACH ROW MODE DB2SQL UPDATE P SET BR NASLOVA = BR NASLOVA - 1 WHERE P SIF = OKP.P SIF) CREATE TRIGGER KP AZUR AFTER UPDATE OF P SIF ON KP REFERENCING NEW AS NKP OLD AS OKP FOR EACH ROW MODE DB2SQL BEGIN ATOMIC UPDATE P SET BR NASLOVA = BR NASLOVA - 1 WHERE P SIF = OKP.P SIF; UPDATE P SET BR NASLOVA = BR NASLOVA + 1 WHERE P SIF = NKP.P SIF END(poˇto se triger procedura poslednjeg trigera sastoji od dva SQL iskaza, neophodno sje ”zagraditi” ih BEGIN ATOMIC – END konstrukcijom, koja ukazuje da se ilioba iskaza moraju izvrˇiti uspeˇno ili nijedan). s s Uslov integriteta koji kontroliˇe odnos starih i novih vrednosti kolona pri saˇuriranju moˇe se sada izraziti trigerom ˇija se triger procedura sastoji od iskaza z z cgenerisanja greˇke u sluˇaju da odnos nije valjan, i izveˇtavanja o toj greˇci. s c s s
  • 33. 26 1 Relacioni model podatakaPrimer 1.2 Zahtev da pri promeni statusa izdavaˇa (atribut STATUS tabele I), cnovi status mora biti ve´i od starog, inaˇe se promena ne izvrˇava ve´ se izdaje c c s cporuka o greˇci, moˇe biti realizovan slede´im trigerom u sistemu DB2: s z c 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 izvrˇenja operacije aˇuriranja – BEFORE – a triger procedura s zne proizvodi aktiviranje drugih trigera – NO CASCADE; kˆd greˇke – niskovna o s ˇkonstanta ’85000’ bira se prema utvrdenim sintaksnim pravilima). Koriˇ´enjem trigera mogu se izraziti i opˇti uslovi integriteta, integritet entiteta sc si referencijalni integritet. Na primer, referencijalni integritet nad relacijama I, KIsa kaskadnim brisanjem, ukoliko zavisne n-torke postoje u zavisnoj relaciji, moˇe zse izraziti slede´im trigerom u sistemu DB2: c CREATE TRIGGER REFINT AFTER DELETE ON I REFERENCING OLD AS OI FOR EACH ROW MODE DB2SQL DELETE FROM KI WHERE KI.I SIF = OI.I SIF Ipak, zbog znaˇaja koji opˇti uslovi integriteta imaju, neuporedivo je bolje imati c sposebnu, jednostavnu i deklarativnu (neproceduralnu) formu za njihovo zadavanje.1.5 Pitanja i zadaci 1. Definisati slede´e pojmove: c ANSI arhitektura sistem baza podataka logiˇka reprezentacija c strukturni deo modela konceptualna shema manipulativni deo modela upitni jezik fiziˇka reprezentacija c integritetni deo modela pogled relacioni model podataka model podataka relaciona baza podataka baza podataka strukturni deo relacionog modela sistem za upravljanje bazama atribut podataka domen
  • 34. 1.5 Pitanja i zadaci 27 relacija normalizovana relacija bazna relacija relacijska shema izvedena relacija shema relacione baze podataka 2. U ˇemu se razlikuje sistem za upravljanje bazama podataka od datoteˇkog c c sistema? ˇ 3. Cime je predstavljen manipulativni deo relacionog modela? ˇ 4. Sta je to relaciona kompletnost? 5. Objasniti razliˇite vrste uslova integriteta. Kako se one predstavljaju u rela- c cionom modelu? 6. Definisati slede´e pojmove: c funkcionalna zavisnost integritet entiteta primarni kljuˇ c referencijalni integritet nadkljuˇc triger strani kljuˇ c uslov i procedura trigera 7. Navesti primer specifiˇnog uslova integriteta. c 8. Navesti sve funkcionalne zavisnosti, primarne i strane kljuˇeve relacija I, K, c P, KI, KP. 9. Navesti primer trigera. 10. Razmotriti primer relacione baze podataka o studentima. Koje se relacije i ˇ koje funkcionalne zavisnosti medu njihovim atributima mogu uoˇiti? c 11. Navesti primer upita i radnji nad relacionom bazom iz primera 10. 12. Koje su najvaˇnije karakteristike relacionog modela? z 13. Koji su tipovi objekata u hijerarhijskom a koji u mreˇnom modelu? z 14. Uporediti relacioni, hijerarhijski i mreˇni model. z ˇ 15. Sta su to nedostaju´e vrednosti? c 16. Pored raznih definicija “klasiˇnog” relacionog modela, postoji ˇitav niz mo- c c dela koji predstavljaju specifiˇne varijante relacionog modela. Takvi su, na c primer, binarni relacioni modeli koji se zasnivaju na konceptu binarne relacije, nesvodivi relacioni modeli koji se baziraju na relacijama koje se nikako ne mogu dekomponovati bez gubljenja informacije, funkcionalni modeli, bazi- ˇ rani na unarnim relacijama i funkcijama medu njima ([21]), itd. Kako bi u binarnom relacionom modelu izgledala shema baze podataka iz primera 10?
  • 35. 2Manipulativni formalizmirelacionog modelaKao ˇto je ve´ pomenuto u odeljku 1.3, formalizmi za manipulisanje podacima, koji s csu sastavni deo relacionog modela, jesu relaciona algebra i relacioni raˇun. Upitni cjezici u sastavu SUBP imaju svoj osnov u jednom od ova dva formalizma, ili unjihovoj kombinaciji. Skup svojstava koja treba da podrˇi svaki upitni jezik bi´e u slede´em odeljku z c cprikazan kroz formalizam relacione algebre, jer je ovaj formalizam, u odnosu narelacioni raˇun, jednostavniji za razumevanje pri prvom susretu sa pojmovima, i colakˇava objaˇnjenje koncepata kao ˇto su, na primer, uslovi integriteta, mehanizmi s s sautorizacije ili algoritmi aˇuriranja pogleda. Uprkos pogodnosti relacione algebre zu prezentaciji i razjaˇnjavanju koncepata, relacioni raˇun pokazuje prednosti u im- s cplementaciji koncepata kroz relacioni upitni jezik. Zato ´e u odeljku 2.2 biti izloˇen c zi formalizam relacionog raˇuna. c2.1 Relaciona algebraPrema originalnoj Codd-ovoj definiciji, relacionu algebru ˇini skup od devet ope- cracija nad relacijama, izabranih tako da se njihovim komponovanjem moˇe pristu- zpiti svakom podatku u bazi. Kompozicija operacija zajedno sa relacijama na kojese primenjuju obrazuje relacioni izraz u relacionoj algebri ili izraz relacione algebre.Vrednost takvog izraza je uvek relacija. Operacije relacione algebre su relacionianalogoni skupovnih operacija unije, preseka, razlike i Dekartovog proizvoda, kao ispecifiˇne relacione operacije: unarne – projekcija i restrikcija, i binarne – prirodno cspajanje, slobodno spajanje i relaciono deljenje. Upotrebljena notacija za operacije relacione algebre je jedna od mogu´ih no-ctacija i koristi se za ilustrovanje elemenata i koncepata formalizma. Skup operacijatreba interpretirati kao jednu definiciju mo´i koju svaki relacioni jezik mora da cposeduje.28
  • 36. 2.1 Relaciona algebra 29 Osnovne operacije relacione algebre bi´e definisane na slede´im dvema (apstrak- c ctnim) relacijama: R(A1 , A2 , . . . , An ), S(B1 , B2 , . . . , Bm ).2.1.1 Unarne operacijePod unarnim relacionim operacijama podrazumevaju se operacije koje se izvrˇavaju snad pojedinaˇnom relacijom. To su operacije projekcije i restrikcije. c Osim operanda – imena relacije, uz ove operacije se navodi joˇ po jedan operand stipa skupa atributa (u sluˇaju operacije projekcije), odnosno logiˇkog izraza (u c csluˇaju operacije restrikcije). cProjekcija. Neka je X podskup skupa atributa {A1 , A2 , . . . , An } relacije R, a Y– komplement skupa X u odnosu na ceo skup atributa {A1 , A2 , . . . , An }. Tada sepromenom redosleda atributa relacija R moˇe predstaviti kao R(X, Y )1 . Operacija zprojekcije relacije R na skup atributa X obeleˇava se sa R[X] i definiˇe na slede´i z s cnaˇin: c R[X] = {x | x ∈ dom(X) i postoji y ∈ dom(Y ) takav da (x, y) ∈ R(X, Y )}.2Dakle, rezultat operacije projekcije relacije R na skup atributa X je relacija kojaukljuˇuje samo atribute iz skupa X. Drugim reˇima, operacijom projekcije se c ciz tabele kojom je predstavljena relacija R biraju samo kolone koje odgovarajuatributima iz skupa X, i to bez ponavljanja dupliranih torki. Operacija projekcije moˇe se primeniti i na pojedinaˇnu torku, s obzirom da se z ctorka moˇe tretirati kao relacija koja sadrˇi taˇno tu torku. Tako, ako je r(A1 : z z cv1 , A2 : v2 , . . . , An : vn ) – n-torka, onda se operacija projekcije n-torke r na skupatributa {Ai1 , Ai2 , . . . , Aik } definiˇe sa: s r[Ai1 , Ai2 , . . . , Aik ] = (vi1 , vi2 , . . . , vik ). Analogno se i ostale operacije relacione algebre, definisane nad relacijama, moguprimeniti i na pojedinaˇne torke. cPrimer 2.1 Rezultat operacije projekcije relacije K na atribut OBLAST, u oznaciK[ OBLAST ], jeste relacija koja ima jedan atribut (OBLAST) i koja sadrˇi sve zrazliˇite oblasti iz kojih su knjige registrovane u bazi: c OBLAST roman poezija leksikografija raˇunarstvo c 1 Umesto oznake R(X, Y ) koristi se i oznaka R(XY ). 2 Umesto oznake torke (x, y), koristi´e se i oznaka xy. c
  • 37. 30 2 Manipulativni formalizmi relacionog modela Pokazuje se da je relaciona projekcija algebarski analogon egzistencijalnog kvan-tifikatora koji se primenjuje u relacionom raˇunu. Intuitivno, ako za relaciju cR(X, Y ) sa dva disjunktna podskupa skupa atributa X, Y vaˇi da je x ∈ R[X], zonda u relaciji R postoji n-torka r takva da je r[X] = x.Restrikcija. Neformalno govore´i, operacijom restrikcije biraju se n-torke (u ccelosti) zadate relacije koje zadovoljavaju logiˇki izraz naveden u oznaci operacije. c ˇArgumenti logiˇkog izraza su poredenja vrednosti dva atributa zadate relacije (defi- c ˇnisana nad istim domenima), ili poredenja jednog atributa te relacije sa konstantomiz odgovaraju´eg domena; operacije logiˇkog izraza su logiˇke operacije NOT, OR c c ci AND (uz uobiˇajena pravila prioriteta). c Za formalno definisanje operacije restrikcije koristi se uˇi pojam Θ-restrikcije, zkoji se uvodi na slede´i naˇin. Neka je Θ relacijska operacija iz skupa {=, =, , ≤ c c, , ≥}, i neka su Ai , Aj – atributi relacije R sa zajedniˇkim domenom nad kojim je cdefinisana operacija Θ; neka je a – vrednost iz tog domena. Tada zapis R[Ai ΘAj ](ili R[Ai Θa]) oznaˇava operaciju Θ-restrikcije, definisanu sa: c R[Ai ΘAj ] = {x | x ∈ R i x[Ai ]Θx[Aj ]} (sliˇno za R[Ai Θa]). c ˇ ˇ Poredenja Ai ΘAj , Ai Θa zovu se termi poredenja. Relacioni logiˇki izraz je: c ˇ • term poredenja; • NOT (relacioni logiˇki izraz); c • (relacioni logiˇki izraz) AND (relacioni logiˇki izraz); c c • (relacioni logiˇki izraz) OR (relacioni logiˇki izraz). c c Neka je P relacioni logiˇki izraz. Tada se izrazu P moˇe pridruˇiti preslikavanje c z zkoje svaku vrstu relacije R preslikava u ’taˇno’ ili ’netaˇno’. Operacija restrikcije (ili c cproˇirene Θ-restrikcije, [19]) relacije R po relacionom logiˇkom izrazu3 P obeleˇava s c zse sa R[P ] i definiˇe se na slede´i naˇin: s c c R[P ] = {x | x ∈ R i P (x)}.Primer 2.2 Rezultat restrikcije relacije K po uslovu OBLAST = ’roman’, u oznaciK[OBLAST = ’roman’], jeste relacija sa istom shemom kao i relacija K, i sa dvetrojke: K SIF NASLOV OBLAST k1 Osma ofanziva roman k3 Pionirska trilogija roman 3 U daljem tekstu, umesto “relacioni logiˇki izraz” koristi´e se i termin “logiˇki izraz”. U istom c c cznaˇenju koristi se i termin “logiˇki uslov”. c c
  • 38. 2.1 Relaciona algebra 312.1.2 Binarne operacijePrvi skup binarnih operacija relacione algebre predstavljaju relacioni analogoniklasiˇnih skupovnih operacija unije, preseka, razlike i Dekartovog proizvoda. cRelaciona unija, presek, razlika i Dekartov proizvod. Operacija relacioneunije je specifiˇna u odnosu na tu operaciju u matematici. Ova operacija u mate- cmatici dopuˇta uniranje raznorodnih skupova, kao ˇto su skupovi knjiga, izdavaˇa s s ci autora, dok relaciona operacija unije dopuˇta uniranje skupa knjiga sa drugim sskupom knjiga, skupa izdavaˇa sa drugim skupom izdavaˇa, skupa autora sa drugim c cskupom autora. Relaciona operacija unije treba da obezbedi predstavljanje jednomrelacijom svih objekata (n-torki) iz dve odabrane relacije, pod uslovom da su objektiu tim relacijama iste vrste. Objekti u dve relacije su iste vrste ako su te relacijeunijski kompatibilne, pri ˇemu se unijska kompatibilnost definiˇe na slede´i naˇin: c s c crelacije R i S su unijski kompatibilne ako su istog stepena (m = n), i za bar jedno1 − 1 preslikavanje skupa atributa relacije R u skup atributa relacije S vaˇi dazodgovaraju´i parovi atributa relacija R, S uzimaju vrednosti iz istih domena. Pri crelacionoj operaciji unije, redosled atributa u relaciji R i redosled njihovih slikau relaciji S, pri jednom takvom preslikavanju, mora biti implicitno ili eksplicitnonaznaˇen, nezavisno od principa da je redosled atributa relacije nebitan. Pod tim cuslovima, R ∪ S = {t | t ∈ R ili t ∈ S}. Treba naglasiti da, kao ˇto i skupovna definicija kaˇe, operacija uniranja po- s zdrazumeva i eliminaciju duplikata, kako bi rezultat bio relacija.Primer 2.3 Ako su atributi DRZAVA u relacijama P (pisac) i I (izdavaˇ) defini- csani nad istim domenom, onda se moˇe izraˇunati unija projekcijˆ ovih relacija na z c azajedniˇki atribut: c P[ DRZAVA ] ∪ I[ DRZAVA ] = DRZAVA Jugoslavija Engleska Amerika Pod istim uslovima kao i za operaciju unije, definiˇu se operacije preseka i razlike sna slede´i naˇin: c c 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, jesterelacija R1 × R2 sa n1 + n2 atributa ˇije su vrste dobijene dopisivanjem vrsta c
  • 39. 32 2 Manipulativni formalizmi relacionog modelarelacije R2 na vrste relacije R1 . Ako je t1 = (t1 , . . . , t1 1 ) proizvoljna n1 - 1 ntorka relacije R1 a t2 = (t2 , . . . , t2 2 ) proizvoljna n2 -torka relacije R2 , tada je 1 n(t1 , t2 ) = (t1 , t1 , . . . , t1 1 , t2 , t2 , . . . , t2 2 ) odgovaraju´a n1 + n2 -torka relacije R1 × R2 . 1 2 n 1 2 n c Dekartov proizvod k relacija (k 2) R1 , R2 , . . . , Rk definiˇe se kao (R1 × R2 × s· · · × Rk−1 ) × Rk . Ova operacija se uglavnom uvodi iz koncepcijskih razloga, aveoma retko zaista i izvrˇava, s obzirom na veliˇinu relacije (broj i duˇinu vrsta) s c zkoju proizvodi kao rezultat.Primer 2.4 Rezultat Dekartovog proizvoda relacija K i I je slede´a relacija sa 7 catributa i 24 sedmorke: K SIF NASLOV OBLAST I SIF NAZIV STAT. DRZAVA k1 Osma ofan. roman i1 Prosveta 30 Jugoslav. k1 Osma ofan. roman i2 Addison. . . 20 Amerika k1 Osma ofan. roman i3 Deˇje. . . c 10 Jugoslav. k1 Osma ofan. roman i4 Matica. . . 30 Jugoslav. k2 Nemam v.v. poezija i1 Prosveta 30 Jugoslav. k2 Nemam v.v. poezija i2 Addison. . . 20 Amerika k2 Nemam v.v. poezija i3 Deˇje. . . c 10 Jugoslav. k2 Nemam v.v. poezija i4 Matica. . . 30 Jugoslav. ... ... ... ... ... ... ... k6 Traˇim pom. z poezija i4 Matica. . . 30 Jugoslav.(skra´enja oznaka su iz prostornih razloga). cSlobodno (Θ) spajanje. Operacija slobodnog spajanja (ili Θ-spajanja) prime-njuje se na dve relacije, R i S, i proizvodi kao rezultat relaciju sa m + n atributa.Ta relacija sadrˇi n-torke relacije R na koje su dopisane m-torke relacije S, ali samo zako su vrednosti naznaˇenih atributa Ai odnosno Bj tih torki u relaciji Θ. c Neka je Θ relacijska operacija iz skupa {=, =, , ≤, , ≥}, i neka su Ai , Bjatributi relacija R, S, redom. Tada se operacija slobodnog (Θ) spajanja relacijaR, S po atributima Ai , Bj , redom, obeleˇava sa R[Ai ΘBj ]S i definiˇe na slede´i z s cnaˇin: c R[Ai ΘBj ]S = {(r, s) | r ∈ R i s ∈ S i r[Ai ]Θs[Bj ]}.Prirodno spajanje. Operacija prirodnog spajanja je specijalni (i najˇeˇ´i) c scsluˇaj operacije slobodnog spajanja, a to je spajanje po jednakosti. Ovo spajanje cse moˇe izvesti po jednakosti podskupova atributa dveju relacija (a ne samo po zjednakosti pojedinaˇnih atributa), pri ˇemu se iz rezultata iskljuˇuje jedan od tih c c cpodskupova. Neka su za relacije R, S uoˇeni podskupovi atributa X ⊂ {A1 , A2 , . . . , An } i cY ⊂ {B1 , B2 , . . . , Bm }, koji imaju jednak broj elemenata a odgovaraju´i parovi c(prvih, drugih, itd.) atributa imaju iste domene. Tada se komplementi skupova
  • 40. 2.1 Relaciona algebra 33atributa X odnosno Y , u odnosu na skup svih atributa relacije R odnosno S, moguobeleˇiti sa Z odnosno W . Permutacijom skupova atributa, relacije R, S mogu zse predstaviti sa R(Z, X), S(Y, W ). Tada se operacija prirodnog spajanja relacijaR, S po skupovima atributa X, Y, redom, obeleˇava sa R[X ∗ Y ]S i definiˇe na z sslede´i naˇin: c c R[X ∗ Y ]S = {(z, x, w) | (z, x) ∈ R i (y, w) ∈ S i x = y}.Kada su X i Y – svi zajedniˇki atributi relacija R i S, operacija prirodnog spajanja cse obeleˇava sa R ∗ S. zPrimer 2.5 Rezultat operacije prirodnog spajanja relacija P i I (spajanje po jed-nakosti atributˆ DRZAVA) je slede´a relacija sa 7 atributa i 10 sedmorki od kojih a cse svaka odnosi na pisca i izdavaˇa iz iste zemlje: c P SIF IME BR N. DRZAVA I SIF NAZIV STATUS p1 ´ c B.Copi´ 2 Jugoslav. i1 Prosveta 30 p1 ´ c B.Copi´ 2 Jugoslav. i3 Deˇje novine c 10 p1 ´ c B.Copi´ 2 Jugoslav. i4 Matica srpska 30 p3 ˇˇ B.S.S. 1 Jugoslav. i1 Prosveta 30 p3 ˇˇ B.S.S. 1 Jugoslav. i3 Deˇje novine c 10 p3 ˇˇ B.S.S. 1 Jugoslav. i4 Matica srpska 30 p4 D.Maks. 2 Jugoslav. i1 Prosveta 30 p4 D.Maks. 2 Jugoslav. i3 Deˇje novine c 10 p4 D.Maks. 2 Jugoslav. i4 Matica srpska 30 p5 C.J.Date 1 Amerika i2 Addison Wesley 20(skra´enja oznaka su iz prostornih razloga). cDeljenje. Relaciona operacija deljenja relacije R(X, Y ) po zadatom skupuatributa Y drugom relacijom T proizvodi rezultat (analogan celobrojnom delukoliˇnika pri deljenju celih brojeva) koji se sastoji od projekcijˆ n-torki relacije R c ana atribute X, i to samo onih projekcija n-torki koje se, (Dekartovski) pomnoˇene zsvakom vrstom relacije T , sadrˇe u relaciji R. z Neka je, kao i do sada, R(A1 , A2 , . . . An ) relacija, i neka je Y = {Y1 , Y2 , . . . , Yk }⊂ {A1 , A2 , . . . , An }, a X = {A1 , A2 , . . . , An } Y . Neka relacija T (Z1 , Z2 , . . . , Zk )ima isti broj atributa kao skup Y , pri ˇemu su parovi odgovaraju´ih atributa c cdefinisani nad istim domenima. Oznaˇimo simbolom Z skup atributa relacije T . cTada se operacija deljenja relacije R po skupu atributa Y relacijom T obeleˇava sa zR[Y ÷ Z]T i definiˇe sa: s R[Y ÷ Z]T = {x | x ∈ R[X] i {x} × T (Z) ⊆ R(X, Y )}.Dakle, rezultat operacije deljenja je maksimalni podskup projekcije R[X] ˇiji je cDekartov proizvod sa T (Z) sadrˇan u R(X, Y ). z
  • 41. 34 2 Manipulativni formalizmi relacionog modela z s ´ cPrimer 2.6 Neka je TEMP – relacija koja sadrˇi sve ˇifre knjiga Branka Copi´a,tj. ´ c ((P[IME = ’B.Copi´’]) ∗ KP) [ K SIF] = TEMP K SIF k1 k3(o mogu´nosti dodeljivanja vrednosti relacionog izraza nekoj relaciji bi´e reˇi na c c ckraju izlaganja o relacionoj algebri). ˇ ´ c Sifre izdavaˇa koji su ˇtampali sve knjige Branka Copi´a mogu se dobiti delje- c snjem, relacijom TEMP, projekcije relacije KI na atribute K SIF, I SIF: (KI[ K SIF, I SIF ]) [ K SIF ÷ K SIF ] TEMP = I SIF i1Dakle, jedini takav izdavaˇ je ’Prosveta’ sa ˇifrom i1. c s Za dve proizvoljne relacije R, S vaˇi da je (R × S) ÷ S = R, tj. operacija zrelacionog deljenja je inverzna operaciji mnoˇenja (Dekartovog proizvoda). Otuda zi naziv “deljenje” za razmatranu operaciju. Pokazuje se da je operacija deljenja algebarski analogon univerzalnog kvantifika-tora. Intuitivno, ako za relaciju R(X, Y ) sa dva disjunktna podskupa atributa X, Yi relaciju T (Z), vaˇi da x ∈ R[Y ÷ Z]T, onda za svaku vrednost z ∈ T vaˇi da je z z(x, z) ∈ R(X, Y ).Primer 2.7 Primer izraza relacione algebre, koji ukljuˇuje nekoliko njenih ope- cracija, je nalaˇenje naziva jugoslovenskih izdavaˇa koji su ˇtampali bar jednu knjigu z c sengleskog pisca, kao i imenˆ takvih pisaca i naslova njihovih knjiga: a((I[ DRZAVA = ’Jugoslavija’ ] × P[ DRZAVA = ’Engleska’ ]) ∗ KI ∗ KP ∗ K) [NAZIV, IME, NASLOV] Osim operacija relacione algebre koje je uveo Codd, relaciona algebra se, udob-nosti radi, ˇesto proˇiruje sa dve dodatne operacije, redovno podrˇane i u upitnim c s zjezicima ([22]): • definisanje aliasa – drugog imena za relaciju, ˇto se posebno koristi pri s izraˇunavanju Dekartovog proizvoda relacije sa samom sobom, da se ne bi c ponovila imena atributa u relaciji rezultatu: DEFINE ALIAS ime-relacije-1 FOR ime-relacije-2 • dodela, kojom se rezultat relacionog izraza dodeljuje novoj relaciji: relacija-1 := relacioni izraz. Relaciona algebra, kako je ovde izloˇena, u izvesnom smislu je maksimalna: ona z z z ˇsadrˇi sve operacije relacione algebre. Moˇe se, medutim, dokazati, da taj skup
  • 42. 2.1 Relaciona algebra 35operacija nije minimalan, u smislu da se neke od operacija mogu iskljuˇiti a da cpreostali skup operacija zadrˇi istu izraˇajnu mo´. Jedan minimalni, ekvivalentni z z cskup operacija relacione algebre ˇine operacije unije, razlike, Dekartovog proizvoda, cprojekcije i restrikcije ([64]).2.1.3 Proˇirena relaciona algebra sProˇirenje relacione algebre koje se u ovoj taˇki razmatra odnosi se na podrˇku s c sjednoj vrsti nedostaju´e vrednosti, kao i na ˇire definisanje operacija unije, preseka, c srazlike i operacija spajanja. Izlaˇemo Codd-ovo proˇirenje relacionog modela i z srelacione algebre ([18]). Domen svakog atributa proˇiren je jednom oznakom nedostaju´e vrednosti, koja s cse moˇe upotrebiti za oznaku bilo koje (svake) nedostaju´e vrednosti, bez obzira na z cnjenu semantiku. Tada se i skup istinitosnih vrednosti {T, F} proˇiruje “nepozna- stom” istinitosnom vrednoˇ´u (oznaˇimo je sa ω), i postaje {T, F, ω}. Primetimo sc cda je semantika nepoznate istinitosne vrednosti razliˇita od semantike nedostaju´e c cvrednosti za atribut (mada mogu biti isto oznaˇene), jer je nepoznata istinitosna cvrednost – vrednost iz domena istinitosnih vrednosti, dok nedostaju´a vrednost catributa to nije. Proˇirena relacija jednakosti (u oznaci =) je sada trovalentna, tj. s ˙ τ (a=b) ∈ {T, F, ω}, ˙ ˇa takve su i druge relacije poredenja, pripadnosti skupu i inkluzije. Specijalno, ˙ ˙τ (ω ∈S) = ω i τ ({ω}⊆S) = ω, za svaki neprazni skup S i nedostaju´u vrednost cistog tipa, ω. Da bi se definisao logiˇki izraz u ovoj trovalentnoj logici, potrebno je definisati ci odgovaraju´e (trovalentne) logiˇke operacije, koje se zadaju slede´im tablicama: c c c AND T F ω OR T F ω NOT T T F ω T T T T T F F F F F F T F ω F T ω ω F ω ω T ω ω ω ω Proˇireni logiˇki izraz dobija se primenom proˇirenih logiˇkih operacija na s c s c ˇproˇirena poredenja. Pri tom, on treba da ima istinitosnu vrednost ω ako i samo sako su ispunjena slede´a dva uslova: c • svako pojavljivanje nedostaju´e vrednosti ω u izrazu moˇe se zameniti odre- c z ˇ denom vrednoˇ´u iz odgovaraju´eg domena tako da izraz dobije vrednost T; sc c • svako pojavljivanje nedostaju´e vrednosti ω u izrazu moˇe se zameniti odre- c z ˇ denom vrednoˇ´u iz odgovaraju´eg domena tako da izraz dobije vrednost F.4 sc c 4 Uoˇeno c je da postoji niz problema u interpretaciji nedostaju´ih vrednosti, posebno trovalentne c
  • 43. 36 2 Manipulativni formalizmi relacionog modela 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 = a, vrednost poredenja postaje F). Proizvoljni upit sa zadatim logiˇkim izrazom sada se interpretira kao – “na´i c csve podatke za koje se zna da je vrednost logiˇkog izraza ’taˇno’ (a ne “na´i sve c c cpodatke za koje je vrednost logiˇkog izraza ’taˇno’ ”), pa ne moraju da vaˇe sve c c ztautologije dvovalentne logike. Razlike u definiciji proˇirenih logiˇkih izraza u trovalentnoj logici (u odnosu s cna odgovaraju´u definiciju onih u dvovalentnoj logici) reflektuju se i na raz- clike u definiciji operacija proˇirene relacione algebre. Naime, za svaku operaciju srelacione algebre, s obzirom da u svoju definiciju ukljuˇuje neku od proˇirenih c s ˇrelacija (poredenje, pripadnost skupu, inkluzija), uvode se po dve nove operacije: ˇ ˇ“TACNA” i “MOZDA” operacija, ˇiji su rezultati, redom, skup podataka za koje cse zna da pripadaju rezultatu operacije, i skup podataka za koje se ne zna da li ˇpripadaju rezultatu operacije. Tako se TACNA restrikcija relacije R po logiˇkom cuslovu P , u oznaci R[PT ], moˇe definisati na slede´i naˇin: z c c R[PT ] = {x | x ∈ R i τ (P ) = T }. ˇNa primer, TACNA restrikcija relacije R po Θ relacijskoj operaciji na atributimaAi i Aj , u oznaci R[Ai ΘT Aj ], definiˇe se kao s ˙ R[Ai ΘT Aj ] = {x | x ∈ R i τ (x[Ai ]Θx[Aj ]) = T }. c ˇSliˇno, MOZDA restrikcija relacije R po logiˇkom uslovu P , u oznaci R[Pω ], moˇe c zse definisati na slede´i naˇin: c c R[Pω ] = {x | x ∈ R i τ (P ) = ω}. ˇNa primer, MOZDA restrikcija relacije R po Θ relacijskoj operaciji na atributimaAi i Aj , u oznaci R[Ai Θω Aj ], definiˇe se kao s ˙ R[Ai Θω Aj ] = {x | x ∈ R i τ (x[Ai ]Θx[Aj ]) = ω}.Sliˇno vaˇi i za operacije spajanja (Θ i prirodnog), kao i za operaciju deljenja. c z ˇ Uvodenje nedostaju´e vrednosti u relacioni model omogu´uje i proˇirenje ope- c c sracija unije, preseka i razlike, sa unijski kompatibilnih relacija na relacije koje tologike ([25]). Tako ´e neki logiˇki izraz, striktnom primenom proˇirenih logiˇkih operacija, dobiti c c s cvrednost ω, mada jedan od navedenih uslova nije ispunjen ([27]). Na primer, ako relacija R imasamo jedan atribut, A, i jednu ”n-torku” – vrednost a, a relacija S – dva atributa, B, A, i jednu”n-torku” – par (b, ω), tada ´e proˇireni logiˇki izraz τ (R.A=S.A) AND τ (S.A= a1 ), primenom c s c ˙ ˙proˇirenih logiˇkih operacija, dobiti vrednost ω (ω AND ω = ω), mada prema navedenim uslovima s cizraz treba da ima vrednost F. Zbog ovakvih problema neki autori sugeriˇu da se u relacione sisteme si ne ukljuˇuju nedostaju´e vrednosti, dok drugi preporuˇuju paˇljivu preradu komponenti RSUBP, c c c zposebno optimizatora, da bi se ovakvi problemi reˇili. s
  • 44. 2.2 Relacioni raˇun c 37nisu. Tako se za relacije R(A, B) i S(B, C) (A, B, C su skupovi atributa) operacija ◦spoljaˇnje unije, u oznaci R ∪ S, definiˇe kao s s ◦ R ∪ S = R1 ∪ S1 , gde je R1 = R × (C : ω)5 i S1 = (A : ω) × S.Sliˇno se definiˇu i proˇirene – spoljaˇnje operacije preseka i razlike. c s s s Spoljaˇnje slobodno spajanje relacija R, S definiˇe se tako da rezultuju´a relacija s s csadrˇi sve podatke tih relacija, ˇak i kada njihove projekcije na atribute spajanja z cnisu jednake. Tako, za relacije R(A, B) i S(C, D) spoljaˇnje Θ-spajanje po paru s ◦atributa B i C, u oznaci R[B Θ C]S, definiˇe se kao unija tri skupa: s ◦ R[B Θ C]S = T ∪ (R1 × (C : ω, D : ω)) ∪ ((A : ω, B : ω) × S1 );relacija T je rezultat obiˇnog Θ-spajanja, a relacije R1 i S1 su delovi relacija R i cS, redom, koji se ne mogu spojiti Θ-spajanjem sa drugom relacijom, tj. T = R[BΘC]S, R1 = R T [A, B], S1 = S T [C, D]. Spoljaˇnje prirodno spajanje definiˇe se na sliˇan naˇin kao spoljaˇnje slobodno s s c c sspajanje; sada se za Θ uzima relacijska operacija =, a iz rezultata se uklanjanjukolone dupliranih vrednosti: ◦ R[B ∗ C]S = T [A, B, D] ∪ (R1 × (D : ω)) ∪ ((A : ω) × S1 )(relacije T, R1 i S1 su kao i ranije, samo sa ’=’ umesto ’Θ’). Ovako definisana spoljaˇnja spajanja zovu se i puna spajanja (engl. FULL sJOIN), za razliku od obiˇnih, unutraˇnjih spajanja (engl. INNER JOIN). Ako se iz c sprethodnih definicionih izraza izostavi druga odnosno tre´a komponenta (R1 × . . . , codnosno · · ·×S1 ), dolazi se do definicije desnog (engl. RIGHT) odnosno levog (engl.LEFT) spoljaˇnjeg spajanja. s Detaljne informacije o proˇirenoj trovalentnoj logici, ’taˇnim’, ’moˇda’ i spo- s c zljaˇnjim operacijama relacione algebre, kao i primeri trovalentnih logiˇkih izraza i s cproˇirenih operacija, mogu se na´i u [18], [25], [26]. s c2.2 Relacioni raˇun cDrugi formalizam kojim se moˇe opisati manipulativni deo relacionog modela je zrelacioni raˇun. Dok relaciona algebra daje skup eksplicitnih operacija za izgradnju crelacije rezultata, relacioni raˇun pruˇa notaciju za opisivanje svojstava relacije c zrezultata. Tako relaciona algebra predstavlja recepturni, proceduralni pristup, arelacioni raˇun – deskriptivni, neproceduralni. c 5 Oznaka (X : ω) oznaˇava relaciju sa jednim atributom – X i jednom “vrstom” – ω; sliˇno c cvaˇi i za par (X : ω, Y : ω). z
  • 45. 38 2 Manipulativni formalizmi relacionog modela Na primer, zahtev za nalaˇenjem naslova knjiga koje je izdalo izdavaˇko pre- z cduze´e ’Prosveta’, mogao bi se, u terminima operacija relacione algebre, preciznim c ˇnavodenjem redosleda izvrˇavanja operacija, izraziti na slede´i naˇin : s c c – izvrˇiti restrikciju relacije I po uslovu NAZIV=’Prosveta’; s ˇ – izvrˇiti prirodno spajanje dobijenog medurezultata i relacije KI; s ˇ – izvrˇiti prirodno spajanje dobijenog medurezultata i relacije K; s ˇ – projektovati medurezultat na atribut NASLOV. Isti zahtev bi se, manje proceduralnom notacijom relacionog raˇuna, izrazio copisom slede´ih svojstava rezultata: c – na´i naslove knjiga za koje postoje izdanja izdavaˇa ˇiji je naziv ’Prosveta’. c c c Relacioni raˇun je baziran na predikatskom raˇunu prvog reda. Dve varijante c covog raˇuna definisao je, kao i relacioni model, Edgar Codd; jedna je relacioni raˇun c cn-torki, a druga – relacioni raˇun domena. c2.2.1 Relacioni raˇun n-torki cKao ˇto relaciona algebra predstavlja skup operacija nad relacijama, kojima se moˇe s zizgraditi izraz relacione algebre, tako relacioni raˇun n-torki predstavlja formalizam cza izgradnju relacionog izraza, izraza relacionog raˇuna. c Bitno svojstvo relacionog raˇuna n-torki predstavlja n-torna promenljiva. To cje promenljiva koja je definisana nad specifiˇnom relacijom za koju je vezana, tj. cpromenljiva koja kao svoje vrednosti uzima n-torke te relacije, i samo njih. Relacijaza koju je vezana n-torna promenljiva zove se i dijapazon te n-torne promenljive.S obzirom da je relacioni raˇun formalni koncept, razne implementacije usvajaju crazliˇite sintakse za opis njegovih konstrukcija, i naˇin na koji se jednoj n-tornoj c cpromenljivoj dodeljuje njen dijapazon. Jedna varijanta originalne Codd-ove definicije i sintakse izraza relacionog raˇuna cn-torki (alfa-izraza) moˇe se opisati slede´im elementima ([17], [64]). z c Izraz relacionog raˇuna n-torki je oblika c {(t1 , t2 , . . . , tk ) : f },pri ˇemu vaˇi: c z 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.
  • 46. 2.2 Relacioni raˇun c 39 2. f je formula (kvalifikacioni izraz) koja se gradi od atoma i operacija na slede´i c naˇin: c a1) ako je R ime relacije, a s – n-torna promenljiva vezana za relaciju R, onda oznaka R(s) oznaˇava to vezivanje i zove se atom pripadnosti; c a2) ako su s, u n-torne promenljive, a – konstanta, a Θ – operacija pore- ˇ denja (=, =, , ≤, , ≥), onda oznaka s[i]Θu[j] (odnosno s[i]Θa) oznaˇavac ˇ poredenje i-te komponente promenljive s sa j-tom komponentom promenljive ˇ u (odnosno konstantom a) i zove se atom poredenja; f1) svaki atom je formula; sve n-torne promenljive atoma su slobodne promenljive u toj formuli; f2) ako su f, g formule, onda su i f AND g, f OR g i NOT f – for- mule; pojavljivanje promenljive je slobodno ili vezano u f AND g, f OR g, NOT f , taˇno onakvo kakvo je odgovaraju´e pojavljivanje te promenljive u c c f odnosno u g; f3) ako je f formula, onda su i (∃s)(f ) i (∀s)(f ) formule; n-torna promenljiva s ima definisan dijapazon u formuli f ; ona je slobodna u for- muli f i vezana egzistencijalnim (odnosno univerzalnim) kvantifikatorom u formuli (∃s)(f ) (odnosno u formuli (∀s)(f )); f4) ako je f formula, onda je i (f ) formula; f5) niˇta drugo nije formula relacionog raˇuna n-torki. s c 3. Slobodne promenljive u formuli f su one i samo one n-torne promenljive koje su sadrˇane u ciljnoj listi. zPrimer 2.8 Neka su r, s, t imena n-tornih promenljivih, i neka su K(r), P(t),KP(s) atomi pripadnosti relacijama K, P, KP, redom. Oznaˇimo sa r[i] – i-ti catribut promenljive r (analogno znaˇenje imaju s[j], t[k]; pretpostavlja se da je c ˇskup atributa relacije ureden). Tada su primeri izraza relacionog raˇuna: c {r[2] : K(r)} ( naslovi svih knjiga) {r[2] : K(r) AND r[3] =’roman’} (naslovi svih romana) {(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 ˇifre knjiga ˇiji bar jedan autor ima jugoslovensko drˇavljanstvo). s c z Jedna specifiˇna sintaksa zadavanja izraza relacionog raˇuna n-torki, koja je c cbliska sintaksi upitnih jezika zasnovanih na relacionom raˇunu, opisana je u [22] i cbi´e ovde ukratko prikazana. c Za deklaraciju n-torne promenljive i njeno vezivanje za relaciju, u ovoj sintaksikoristi se iskaz oblika
  • 47. 40 2 Manipulativni formalizmi relacionog modela RANGE OF ime-promenljive IS ime- relacije(npr. RANGE OF k IS K). Upit se u ovoj sintaksi izraˇava izrazom relacionog raˇuna (kra´e: izrazom) koji z c cu Bekusovoj notaciji ima slede´i oblik: c izraz ::= ciljni-atributi | ciljni-atributi WHERE formula ciljni-atributi ::= promenljiva.atribut{,promenljiva.atribut} formula ::= ˇ poredenje | (formula) | NOT formula | formula AND formula | formula OR formula | EXISTS promenljiva (formula) | FORALL promenljiva (formula) ˇ poredenje ::= promenljiva.atribut (= | = | | ≤ | | ≥) (promenljiva.atribut | konstanta )(pod “promenljiva” podrazumeva se ime n-torne promenljive; “atribut” je imeatributa). Dakle, izraz relacionog raˇuna je oblika c X1 .A1 , X2 .A2 , . . . , Xk .Ak WHERE f ,pri ˇemu su X1 , X2 , . . . , Xk – n-torne promenljive, A1 , A2 , . . . ,Ak su atributi crelacija – dijapazona promenljivih X1 , X2 , . . . , Xk , redom, a f je formula kojakoristi taˇno X1 , X2 , . . . , Xk kao slobodne promenljive. Neka rel(X) oznaˇava c crelaciju – dijapazon n-torne promenljive X. Tada vrednost izraza relacionog raˇunacjeste projekcija na atribute A1 , A2 , . . . , Ak onog podskupa Dekartovog proizvoda rel(X1 )×rel(X2 ) × · · · × rel(Xk )za koji f dobija vrednost ’taˇno’. cPrimer 2.9 Izrazi relacionog raˇuna iz primera 2.8 u ovoj sintaksi imaju slede´i c coblik:
  • 48. 2.2 Relacioni raˇun c 41 RANGE OF k IS K RANGE OF kp IS KP RANGE OF p IS P k.NASLOV (naslovi svih knjiga) k.NASLOV WHERE k.OBLAST =’roman’ (naslovi svih romana) 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 ˇifre knjiga ˇiji bar jedan autor ima jugoslovensko drˇavljanstvo). s c z2.2.2 Relacioni raˇun domena cRelacioni raˇun domena liˇi na relacioni raˇun n-torki, s tim ˇto je promenljiva c c c stog raˇuna deklarisana nad domenom atributa (domenska promenljiva) a ne nad crelacijom. Prema Codd-ovoj definiciji relacionog raˇuna, izraz relacionog raˇuna domena c cima oblik {x1 x2 . . . xk | f },pri ˇemu vaˇi: c z 1. x1 , x2 , . . . , xk su domenske promenljive; 2. f je formula relacionog raˇuna domena ˇije su slobodne promenljive upravo c c promenljive x1 , x2 , . . . , xk ; pri tome se ta formula definiˇe na isti naˇin kao s c i formula relacionog raˇuna n-torki, osim ˇto sada atom moˇe imati neˇto c s z s modifikovan oblik: a1’) ako je R relacija stepena n, a y1 , y2 , . . . , yn – konstante ili domenske promenljive nad domenima odgovaraju´ih atributa, onda je R(y1 y2 . . . yn ) c atom; znaˇenje ovog atoma je da vrednosti od yi (za one yi koji su domenske c 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 xΘy i xΘa atomi; znaˇenje ovih atoma je da par vrednosti c ˇ x, y (odnosno vrednost x) mora biti izabran tako da je poredenje Θ taˇno. cPrimer 2.10 Izrazi relacionog raˇuna domena su: c a) Na´i ˇifru i status izdavaˇa ˇiji je naziv ’Prosveta’: c s c c {xy| (∃z)(I(x’Prosveta’yz))} b) Na´i imena pisaca jugoslovenskih drˇavljana: c z {x| (∃y)(∃z)(P(yxz’Jugoslavija’))}
  • 49. 42 2 Manipulativni formalizmi relacionog modela c) Na´i ime i ˇifru autora ’Osme ofanzive’: c s {xy| (∃z)(∃u)(∃v)(∃w)(∃t) (K(z’Osma ofanziva’u) AND KP(zyv) AND P(yxwt))} Specifiˇna sintaksa relacionog raˇuna n-torki, opisana u [22] i prikazana u c cprethodnoj taˇki, moˇe se modifikovati tako da obuhvati i relacioni raˇun do- c z c ˇmena. Formula obuhvata sada joˇ jedan oblik “poredenja” – tzv. uslov pripad- snosti . Naime, ako je R(A1 , . . . , An ) relacija sa atributima A1 , . . . , An , onda jeR(Ai1 : ai1 , . . . , Aik : aik ) – uslov pripadnosti, gde je aij ili domenska promenljivanad domenom atributa Aij ili konstanta iz domena atributa Aij . Za n-torku r ∈ Rvrednost uslova pripadnosti je ’taˇno’ ako su konstante iz uslova pripadnosti jednake cvrednostima odgovaraju´ih atributa n-torke r. Uslov pripadnosti eliminiˇe navo- c sˇdenje egzistencijalno kvantifikovanih domenskih promenljivih koje nisu od interesaza dati upit (npr. u prethodnom primeru promenljive u, v, w, t). U izrazu relacionog raˇuna domena, domenske promenljive navode se umesto c ˇciljnih atributa (ciljne domenske promenljive), a takode i umesto atributa u pore-ˇdenju. Ostali elementi sintakse formule (i izraza) relacionog raˇuna n-torki i rela- ccionog raˇuna domena su isti. cPrimer 2.11 Ako su KX, PX, IX, STATUSX, IMEX, NASLOVX domenskepromenljive deklarisane nad domenima atributa K SIF, P SIF, I SIF, STATUS,IME, NASLOV, redom, onda izrazi relacionog raˇuna domena iz prethodnog cprimera u ovoj sintaksi imaju slede´i oblik: c a) Na´i ˇifru i status izdavaˇa ˇiji je naziv ’Prosveta’: c s c c IX, STATUSX, WHERE I( I SIF:IX, STATUS:STATUSX, NAZIV:’Prosveta’); b) Na´i imena pisaca jugoslovenskih drˇavljana: c z IMEX WHERE P( IME:IMEX, DRZAVA:’Jugoslavija’); c) Na´i ime i ˇifru autora ’Osme ofanzive’: c s 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 raˇun domena je mehanizam ekvivalentan relacionom raˇunu n-torki, c cu smislu da za svaki izraz relacionog raˇuna domena postoji izraz u relacionom craˇunu n-torki koji ima istu vrednost, i obratno (dokaz u [64]). Osim toga, moˇe se c zdokazati da je relaciona algebra ekvivalentna, u istom smislu, sa relacionim raˇunom cn-torki. Dokaz svodljivosti izraza relacione algebre na izraz relacionog raˇuna n- ctorki, izraza relacionog raˇuna n-torki na izraz relacionog raˇuna domena, a izraza c crelacionog raˇuna domena na izraz relacione algebre, moˇe se na´i, za razliˇite c z c c
  • 50. 2.2 Relacioni raˇun c 43sintakse relacione algebre i relacionog raˇuna, u [64], [48]. Otuda sledi, posebno, cekvivalentnost relacione algebre i relacionog raˇuna (u bilo kojoj od dve varijante). c c ˇOvde ´e biti skiciran algoritam svodenja izraza relacionog raˇuna n-torki (direktno) cna izraz relacione algebre, koji je Codd dao joˇ 1972. godine ([17]). s ˇAlgoritam 1 (svodenje izraza relacionog raˇuna n-torki na izraz relacione calgebre)Algoritamski koraci: 1. Za svaku n-tornu promenljivu izraza relacionog raˇuna, pretraˇiti odgo- c z ˇ varaju´u relaciju, uz izvodenje operacije restrikcije ako postoji uslov restrik- c cije nad tom relacijom. 2. Napraviti Dekartov proizvod relacija dobijenih u koraku 1. 3. Izvrˇiti restrikciju Dekartovog proizvoda dobijenog u koraku 2 prema uslovu s ˇ spajanja iz formule, tj. prema poredenju razliˇitih n-tornih promenljivih. c 4. Primeniti kvantifikatore zdesna ulevo na slede´i naˇin: c c – za kvantifikator EXISTS T, ako je T n-torna promenljiva nad relacijom ˇ R, eliminisati atribute iz R iz relacije – medurezultata; ˇ – za kvantifikator FORALL T, podeliti relaciju – medurezultat relacijom R (tj. onim njenim delom koji je dobijen posle eventualne primene restrikcije u koraku 1). 5. Projektovati dobijenu relaciju na skup atributa iz ciljne liste.Primer 2.12 Ilustrujmo rad algoritma 1 na izdavaˇkoj bazi podataka. Upit “na´i c cˇifre i nazive jugoslovenskih izdavaˇa ˇiji je status ve´i od 10, i koji su 1979. godines c c cˇtampali sve knjige6 nekog inostranog pisca” moˇe se preformulisati u upit “na´is z cˇifru i naziv svakog jugoslovenskog izdavaˇa ˇiji je status ve´i od 10, i za kojegs c c cpostoji inostrani pisac takav da za svaku izdatu knjigu vaˇi slede´e: ako je autor z cknjige taj pisac, onda je tu knjigu 1979. godine izdao taj izdavaˇ”. Ovaj se upit cmoˇe u relacionom raˇunu n-torki formulisati slede´im izrazom (o sistematiˇnoj z c c cobradi implikacije “ako – onda” v. taˇku 3.3.6): c 6 “Sve knjige” ovde znaˇi – sve knjige o kojima postoji informacija u bazi, tj. primenjuje se cpretpostavka o zatvorenoj interpretaciji baze.
  • 51. 44 2 Manipulativni formalizmi relacionog modela RANGE OF i IS I RANGE OF p IS P RANGE OF ki IS KI RANGE OF kp IS KP i.I SIF, i.NAZIV WHERE i.DRZAVA = ’Jugoslavija’ AND i.STATUS 10 AND EXISTS p (p.DRZAVA = ’Jugoslavija’ AND FORALL kp (kp.P SIF = p.P SIF OR EXISTS ki (ki.GODINA = 1979 AND ki.K SIF = kp.K SIF AND ki.I SIF = i.I SIF))) Kada se algoritam primeni na ovaj primer, njegovi pojedini koraci daju slede´i c ˇniz medurezultata, tj. rezultat. Posle koraka 1 pretraˇena je kompletna relacija KP i slede´i delovi relacija I, P, z cKI: I I SIF NAZIV STATUS DRZAVA i1 Prosveta 30 Jugoslavija i4 Matica srpska 30 Jugoslavija P P SIF IME BR NASLOVA DRZAVA p2 M.Benson 1 Engleska p5 C.J.Date 1 Amerika KI K SIF I SIF IZDANJE GODINA TIRAZ k4 i1 2 1979 10000 Posle koraka 2 dobija se relacija Rez2 koja ima 16 atributa i 2×2 ×1×7 = 2816-torki (oznake su maksimalno skra´ene zbog prostornog ograniˇenja): c cI SIF NAZIV ... P SIF IME ... K SIF I SIF ... K SIF P SIF ...i1 Prosveta ... p2 Benson ... k4 i1 ... k1 p1 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k2 p4 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k3 p1 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k4 p2 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k4 p3 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k5 p5 ...i1 Prosveta ... p2 Benson ... k4 i1 ... k6 p4 ..... . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .i4 Matica s. . . . p5 Date ... k4 i1 ... k6 p4 ...
  • 52. 2.2 Relacioni raˇun c 45 Korak 3 predstavlja restrikciju dobijenog Dekartovog proizvoda po uslovu spa-janja relacija I, P, KI, KP. Uslov spajanja u ovom primeru je implikacija tipa: akosu pisac (P) i autor knjige (KP) isti, onda ta knjiga treba da je izdanje (KI) izdavaˇa cI, 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 = 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-torkekoje zadovoljavaju prvi ˇlan disjunkcije (pisac i autor knjige nisu isti), i sve 16- ctorke koje zadovoljavaju drugi ˇlan disjunkcije, tj. 16-torke kod kojih su pisac i cautor knjige isti a knjiga je u izdanju navedenog izdavaˇa. Dakle, relacija Rez3 cdobija se iz relacije Rez2 izbacivanjem samo onih vrsta koje ne zadovoljavaju nijedan ˇlan disjunkcije, tj. za koje vaˇi: P.P SIF = KP.P SIF AND (KP.K SIF = c zKI.K SIF OR KI.I SIF = I.I SIF) (pisac i autor knjige su isti, ali knjiga nije uizdanju izdavaˇa iz te 16-torke); vrste koje se u koraku 3 izbacuju su: c (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 kvan-tifikatora na n-tornu promenljivu tabele KI (EXISTS ki), dobija se relacija REZ4analogna relaciji REZ3 , samo bez atributˆ relacije KI: a REZ4 I SIF NAZIV ... P SIF IME ... K SIF P SIF ... i1 Prosveta ... p2 Benson ... k1 p1 ... i1 Prosveta ... p2 Benson ... k2 p4 ... . . . . . . . . . . . . . . . . . . . . . . . . . . . i4 Matica s. . . . p5 Date . . . k6 p4 ... Ova tabela ima 11 atributa i dvadeset pet 11-torki. Posle druge primene koraka 4, koja odgovara primeni univerzalnog kvantifika-tora na n-tornu promenljivu tabele KP (FORALL kp), dobija se relacija sa 8atributa i samo jednom osmorkom. Ona predstavlja izdavaˇa (Prosvetu) koji zado- cvoljava traˇeni uslov da je izdao sve knjige inostranog pisca, zajedno sa svim takvim zpiscima (u ovom sluˇaju samo M.Benson): cREZ4 I SIF NAZIV ST DRZAVA P SIF IME BR N DRZAVA i1 Prosveta 30 Jugoslavija p2 Benson 1 Engleska
  • 53. 46 2 Manipulativni formalizmi relacionog modela Posle tre´e primene koraka 4, koja odgovara primeni egzistencijalnog kvantifika- ctora na n-tornu promenljivu tabele P (EXISTS p), dobija se relacija sa 4 atributai jednom ˇetvorkom: c REZ4 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 poˇetnicupit: REZ5 I SIF NAZIV i1 Prosveta Ovo je i krajnji rezultat (vrednost) polaznog izraza relacionog raˇuna. Redosled cizvrˇavanja odgovaraju´ih operacija relacione algebre rezultuje slede´im izrazom s c crelacione algebre, dobijenim transformacijom izraza relacionog raˇuna: c ((((( I[ DRZAVA = ’Jugoslavija’ AND STATUS 10] ) × (P[ DRZAVA = ’Jugoslavija’]) × (KI[ GODINA = 1979]) × KP ) [ KP.P SIF = 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] ˇ Dokaz korektnosti algoritma svodenja Codd bazira na svodljivosti logiˇkih ope- cracija AND, OR, NOT u formulama relacionog raˇuna na odgovaraju´e skupovne c c ˇoperacije ∩, ∪, , kao i na analogiji koja postoji izmedu operacije projekcije i egzis-tencijalnog kvantifikatora, odnosno izmedu ˇ operacije deljenja i univerzalnog kvan-tifikatora. I relaciona algebra i relacioni raˇun su suviˇe formalni jezici za krajnjeg koris- c snika, pa se prirodno javlja potreba za izgradnjom jednostavnijih i prirodnijih zaupotrebu upitnih jezika baza podataka. Jedan od opisana dva formalizma (ili nji-hova kombinacija) koristi se kao osnov za izraˇajnije upitne jezike. Za upitni jezik zzahteva se da bude relaciono kompletan, tj. da se u tom jeziku mogu izraziti bar svi ˇizrazi relacionog raˇuna. Prethodna tvrdenja ustanovljavaju relacionu kompletnost crelacione algebre. Dok je relaciona algebra pogodna za izlaganje koncepata rela-cionog modela, relacioni raˇun pokazuje prednosti u implementaciji koncepata kroz crelacioni upitni jezik. Relacioni raˇun je neproceduralan i pogodniji je (od relacione calgebre) za izraˇavanje sloˇenih upita jednim jedinstvenim izrazom. Ovo svojstvo z zˇini upitni jezik zasnovan na relacionom raˇunu pogodnijim za optimizaciju, ˇto jec c sveoma znaˇajno u realizaciji upitnog jezika. Naime, optimizatori postoje´ih SUBP c c
  • 54. 2.3 Pitanja i zadaci 47proizvoda nisu u mogu´nosti da optimizuju istovremeno ve´i broj izraza (tj. iskaza), c cpa je njihova produktivnost ve´a ako se viˇe aktivnosti “upakuje” u jedan jedini c sizraz. To je i razlog zbog kojeg Codd preporuˇuje upotrebu “logiˇkog” jezika – c crelacionog raˇuna, u odnosu na “algebarski” jezik – relacionu algebru, kao osnove cza implementaciju upitnog jezika ([19]).2.3 Pitanja i zadaci 1. Definisati slede´e pojmove: c relaciona algebra proˇirena relaciona algebra s projekcija spoljaˇnja unija s restrikcija spoljaˇnje slobodno spajanje s relaciona unija, presek, razlika spoljaˇnje prirodno spajanje s Dekartov proizvod relacioni raˇun c slobodno (Θ) spajanje relacioni raˇun n-torki c prirodno spajanje n-torna promenljiva relaciono deljenje relacioni raˇun domena c 2. Kako se izraz relacionog raˇuna n-torki svodi na izraz relacione algebre? c Navesti primer. 3. Dokazati komutativnost i asocijativnost operacija relacione unije, preseka i prirodnog spajanja. 4. Izraziti operacije prirodnog spajanja, relacionog preseka i deljenja pomo´u o- c peracija relacione unije, razlike, Dekartovog proizvoda, projekcije i restrikcije. 5. Navesti primere operacija relacione algebre. 6. Da li su operacije Dekartovog proizvoda i deljenja relacija inverzne? Da li definicija operacije deljenja dopuˇta deljenje praznom relacijom? Objasniti. s 7. Izraˇunati rezultat relacionog izraza P∗KP∗KI∗I. Po kojim atributima se c izvrˇava svaka od operacija spajanja? s 8. Objasniti razloge zbog kojih su potrebna proˇirenja relacione algebre. Navesti s primere operacija proˇirene relacione algebre. s 9. Kako biste u relacionom modelu sa nedostaju´im vrednostima definisali c funkcionalnu zavisnost? 10. Izrazima relacione algebre, relacionog raˇuna n-torki i relacionog raˇuna do- c c mena formulisati slede´e upite: c
  • 55. 48 2 Manipulativni formalizmi relacionog modela • Na´i sve informacije o piscima. c • Na´i ˇifre izdavaˇa koji izdaju knjigu sa ˇifrom k1. c s c s c z ˇ • Na´i sva izdanja sa tiraˇem izmedu 4000 i 8000. • Na´i parove (ˇifra izdavaˇa, ˇifra pisca) iz iste drˇave. c s c s z • Na´i naslove knjiga jugoslovenskih pisaca. c • Na´i naslove knjiga engleskih pisaca u izdanju jugoslovenskih izdavaˇa. c c • Na´i parove drˇava takve da izdavaˇ iz prve drˇave izdaje knjigu pisca c z c z iz druge drˇave. z • Na´i sve parove ˇifara knjiga koje izdaje isti izdavaˇ. c s c • Na´i ˇifre pisaca kojima je bar jednu knjigu izdao neki jugoslovenski c s izdavaˇ. c • Na´i ˇifre izdavaˇa koji nisu izdali ni jedan roman jugoslovenskog pisca. c s c • Na´i imena pisaca ˇije je sve knjige objavio izdavaˇ sa ˇifrom i1. c c c s • Na´i naslove knjiga ˇiji je bar jedan autor jugoslovenski drˇavljanin, ili c c z ih je objavio jugoslovenski izdavaˇ. c • Na´i nazive izdavaˇa koji su izdali bar sve knjige koje je izdao i izdavaˇ c c c sa ˇifrom i3. s
  • 56. Deo IIRelacioni upitni jezici
  • 57. Relacioni upitni jezici su praktiˇni rezultat formalnih istraˇivanja relacionog c zmodela i njegovih manipulativnih formalizama. Zasnovani su na relacionoj algebriili relacionom raˇunu, ali poseduju znatno ve´e mogu´nosti za izraˇavanje opˇtijih c c c z s c ˇradnji nad relacijama baze. Naˇin formulacije upita prilagoden je ˇirokom krugu skorisnika baza podataka i, posebno, korisnicima ograniˇenih znanja iz matematike ci programiranja. Jezici za komunikaciju sa bazom podataka (upitni jezici u ˇirem smislu) mogu se sklasifikovati u jezike dobijene nadgradnjom programskih jezika opˇte namene, jezike s ˇizgradene po modelu relacionog raˇuna (n-torki ili domena), jezike zasnovane na crelacionoj algebri, i SQL-olike jezike, koji ukljuˇuju konstrukcije kako relacione calgebre, tako i relacionog raˇuna. c Najve´i broj implementacija relacionih upitnih jezika 80-tih godina 20. veka cbio je zasnovan na upitnom jeziku SQL (Structured Query Language), proizvodaistraˇivaˇke IBM laboratorije u San Hozeu (San Jose) u Kaliforniji. Bez obzira na z cizvesne nedostatke i odstupanja od principa relacionog modela, aktuelni standard ˇrelacionog upitnog jezika je takode SQL upitni jezik. ˇ Gotovo svi komercijalni RSUBP proizvodi podrˇavaju i SQL jezik. Medu onima zkoji su razvijani kao SQL sistemi znaˇajniji su, na primer, SQL/DS, DB2, MRS, cOracle, AIM/RDB, INFORMIX. Ve´ina relacionih upitnih jezika ima svoju interaktivnu i aplikativnu varijantu. cPrva omogu´uje postavljanje ad hoc upita nad relacionom bazom, dok druga omogu- c´uje ugradnju upitnog jezika u matiˇni programski jezik i razvoj sloˇenih aplikacijac c z c sc s ˇnad relacionom bazom. Princip dualnosti, koji se najˇeˇ´e poˇtuje, obezbeduje dase sve radnje interaktivne varijante upitnog jezika mogu izraziti i u aplikativnoj (ida obratno, naravno, ne vaˇi). z Deo II sastoji se od 5 glava: • Glava 3, Upitni jezik SQL, prikazuje evoluciju SQL-a i njegove mogu´nostic u definisanju podataka, manipulisanju podacima i definisanju uslova in- tegriteta, kako u interaktivnoj tako i u aplikativnoj varijanti. Ova glava ukljuˇuje i mogu´nosti SQL-a u definisanju autorizacije, dodeli i oduzimanju c c ˇ prava korisnicima za izvrˇavanje odredenih operacija (i posebno SQL iskaza) s ˇ nad odredenim podacima u bazi podataka (ili bazom podataka u celini). Izloˇeni su bitni aspekti autorizacije i kontrole prava korisnika kao jedne od z funkcija SUBP. • Glava 4, Pogledi, odnosi se na spoljaˇnji nivo ANSI arhitekture sistema baza s podataka. Pogledi se predstavljaju prvo u obliku u kome je njihovo definisanje i manipulisanje njima podrˇano SQL-om, a zatim se izlaˇe jedan novi pristup z z pogledima koji na dosledniji naˇin tretira ovaj koncept. c • U glavi 5, Standardi SQL-a, izlaˇe se evolucija standardˆ SQL-a, i posebno z a specifiˇnosti aktuelnog standarda SQL2. c 50
  • 58. 51• Glava 6, Upitni jezik QUEL, sadrˇi prikaz osnovnih elemenata relacionog z upitnog jezika QUEL. Mada daleko manje prisutan od SQL-a, ovaj jezik pred- stavlja, po miˇljenju ve´ine struˇnjaka, superiorniji upitni jezik od SQL-a po s c c nizu svojstava.• Najzad, glava 7, Optimizacija upita, posve´ena je strategijama i tehnikama c optimizovanja izvrˇavanja upita u relacionim upitnim jezicima. s
  • 59. 3Upitni jezik SQL3.1 IstorijatUpitni jezik SQL predstavlja zavrˇnu fazu evolucije klase jezika razvijene u IBM sistraˇivaˇkoj laboratoriji u San Hozeu, Kalifornija. Ovu evoluciju upitnih jezika z ckarakteriˇe odstupanje od jezika relacione algebre i pribliˇavanje jezicima relacionog s zraˇuna. Svi jezici ove klase su skupovno orijentisani, u znaˇajnoj meri neprocedu- c cralni, i omogu´uju zadavanje onoga ˇta se ˇeli dobiti, bez preciznog navodenja c s z ˇnaˇina kako ´e se ˇeljeni rezultat dobiti. c c z Prvi od jezika u ovoj klasi bio je upitni jezik SQUARE (Specifying QUeriesAs Relational Expressions) ([9]), implementiran u prvom potpunom prototipskomrelacionom sistemu SYSTEM R ([4]). Sˆm SQUARE ima mogu´nosti koje ne a c ˇpoznaje relaciona algebra, kao ˇto je poredenje skupova inkluzijom ili imenovanje sn-torki relacije (slobodne promenljive). Jezik je relaciono kompletan i ima prepoz-natljivu sintaksu za sve operacije relacione algebre. Osim toga, SQUARE ima agre-gatne funkcije COUNT, AVG, MIN, MAX i SUM kojima se skup vrednosti nekogatributa relacije preslikava u numeriˇku vrednost ili vrednost iz odgovaraju´eg dom- c cena. Tako, u jeziku SQUARE, zapis A1 ,...,An RB1 ,...,Bm (Θ1 b1 , . . . , Θm bm )oznaˇava projekciju na atribute A1 , . . . , An restrikcije relacije R po logiˇkom izrazu c cB1 Θ1 b1 AND . . . AND Bm Θm bm (A1 , . . . , An , B1 , . . . , Bm su neki od atributarelacije R); kompozicija ovakvih operacija (u oznaci ◦) omogu´uje realizaciju o- cperacije spajanja, odnosno osnovnih operacija relacione algebre. Na primer, zapis A,B,C RC◦C SD (= d1 )oznaˇava projekciju na atribute A, B, C rezultata prirodnog spajanja relacije R i crestrikcije relacije S po uslovu D = d1 . S druge strane, zapis52
  • 60. 3.1 Istorijat 53 (t1 )α1 ∈ R1 , . . . , (tk )αk ∈ Rk : ψu jeziku SQUARE moˇe se smatrati analogonom izraza relacionog raˇuna n-torki i z coznaˇava projekciju na atribute αi torki ti relacijˆ Ri (1 ≤ i ≤ k), koje zadovolja- c avaju logiˇki uslov ψ. Promenljive ti su slobodne promenljive, a uslov ψ ukljuˇuje, c ckao operande, konstante, promenljive ti , ili neke projekcije tih promenljivih. Ovajzapis ujedno predstavlja okvir za istovremenu obradu (u jednom upitu) ve´eg broja crelacija. Neprivlaˇnu matematiˇku sintaksu jezika SQUARE trebalo je da popravi njegov c csledbenik SEQUEL (Structured English QUEry Language) ([11]). “English” (en- ˇgleski) u njegovom imenu odnosi se na uvodenje rezervisanih reˇi engleskog jezika cza oznaˇavanje uloge koju pojedini atributi relacije imaju u upitu, dok “struc- ctured” (struktuirani) oznaˇava postojanje blokova od kojih se gradi (struktuira) cupit, umetanjem jednog u drugi. Tako prvi SQUARE zapis u SEQUEL-u imaoblik SELECT A1 , . . . , An FROM R WHERE B1 Θ1 b1 AND . . . AND Bm Θm bm . Odgovaraju´a sintaksa za slobodnu promenljivu t relacije R u SEQUEL-u je c SELECT ... FROM R t WHERE ... . c z ˇ Operisanje ve´im brojem relacija postiˇe se navodenjem imena tih relacija uFROM liniji, npr. SELECT ∗ FROM R, S. I SEQUEL je relaciono kompletan jezik koji podrˇava iste agregatne funkcije zkao i SQUARE. Upitni jezik SEQUEL je kasnije, uz izvesne izmene (preko jezika SEQUEL/2,implementiranog 1976. [12], i de facto podrˇanog u poslednjoj verziji System R), zi iz preteˇno pravnih razloga, preimenovan u SQL (Structured Query Language). zPod tim imenom je doˇiveo niz verzija i standarda. z Do 1986. godine nije bilo standarda upitnog jezika baza podataka, ni inter-nacionalnog, ni doma´eg. Prvi takav standard objavila je komisija X3H2 za baze cpodataka Ameriˇkog instituta za standarde. Bio je to ANSI SQL/86, koji se po- cjavio kao reakcija na postoje´e stanje na trˇiˇtu (“reakcioni” standard, [43]), i c zskoji je sadrˇavao zajedniˇke komponente raznih realizovanih verzija SQL jezika. z cOvaj standard bio je pra´en i odgovaraju´im ISO standardom. Standard SQL/86 c c ˇobezbedivao je samo tabelarni model podataka, nezavisan od jezika, definiciju ˇsheme, poglede i kursore za sumede (engl. interface) ka slogovno orijentisanimprogramskim jezicima. Standard SQL-a koji je objavljen 1989, SQL/89, bio je ˇiroko prihva´en na s c ˇtrˇiˇtu. On je funkcionalno kompletniji od SQL/86, obezbeduje referencijalni in- zstegritet i ugnjeˇdenje SQL-a u programske jezike Ada, C, COBOL, FORTRAN, zPascal i PL/I.
  • 61. 54 3 Upitni jezik SQL Aktuelni standard SQL jezika je SQL/92 (SQL2, SQL-92) ili, pod punim ˇnazivom, “Medunarodni standardni jezik baza podataka (1992)” (“InternationalStandard Database Language SQL (1992)”, [39]). SQL2 je anticipatorni standard, c zs c ˇˇto oznaˇava njegovu pretenziju da vodi i usmerava trˇiˇte. Ukljuˇuje, izmedusostalih, i slede´a svojstva: c • jezik za definisanje podataka • dinamiˇki SQL kroz PREPARE i EXECUTE iskaze ([24]) c • spoljaˇnje spajanje s • kaskadno aˇuriranje i brisanje z • privremene tabele • skupovne operacije unije, preseka i razlike • definiciju domena u shemi ˇ • nove ugradene tipove podataka • nivoe konzistentnosti transakcija • odloˇenu proveru uslova integriteta z • SQL dijagnostiku, itd. SQL2 standardu posve´ena je glava 5. c Za 1995. godinu planirano je bilo objavljivanje novog standarda SQL-a, SQL3,kompatibilnog sa SQL2, ali oboga´enog objektnim aspektom podataka (o objekt- cnom modelu podataka bi´e reˇi u Dodatku), izraˇunljivo kompletnog (sa kontrol- c c cnim strukturama, bez potrebe ugnjeˇdenja u programske jezike opˇte namene). O z sstatusu pojedinih komponenti SQL3 standarda v. glavu 5. U preostalom delu ove glave bi´e detaljno opisana sintaksa i semantika SQL-a. cRadi konkretizacije jezika i mogu´nosti programiranja na njemu (bilo interaktivnog cili aplikativnog), izlaganje ´e se odnositi na jednu implementaciju SQL-a, za RSUBP cDB2 UDB (Universal Data Base) Verzija 5.2 (pod operativnim sistemima Windows95, Windows NT, OS/2). Bez obzira na to, najve´i deo razmatranja odnosi se na cSQL uopˇte, nezavisno od implementacije. s3.2 Definisanje podatakaOsnovni iskazi definisanja podataka u SQL-u su iskazi za kreiranje i iskazi za u-klanjanje baznih tabela, indeksa i pogleda, kao i iskazi za izmenu strukture baznihtabela i pogleda. Pored ovih objekata, novije verzije SQL-a (ukljuˇuju´i i standard c cSQL2, v. 5.1), podrˇavaju koncept sheme, razliˇit od koncepta relacijske sheme z ckako je definisana relacionim modelom – v. 1.2, a sliˇan konceptu sheme relacione cbaze podataka, kao i iskaze za definisanje, izmenu i uklanjanje sheme.
  • 62. 3.2 Definisanje podataka 55 Mogu´nost izvrˇenja ovih iskaza u bilo kom trenutku, a ne samo na poˇetku c s crazvoja aplikacije, ˇini SQL sisteme vrlo fleksibilnim; proces projektovanja baze c ˇpodataka je osloboden potrebe da celokupni posao logiˇkog i fiziˇkog projektovanja c c ˇ(definisanja tabela i pristupnih puteva kao ˇto su indeksi) mora biti uraden odjed- snom i perfektno. S obzirom na specifiˇnost virtuelnih tabela – pogleda, koje fiziˇki ne postoje, c cve´ postoji samo njihova definicija saˇuvana u sistemskom katalogu (v. odeljak c c7.1 – Katalog), definisanju pogleda, kao i ostalim operacijama nad pogledima bi´ecposve´ena glava 4. Zato ´e u ovom odeljku biti opˇirnije razmatrani samo iskazi za c c sdefinisanje shema, baznih tabela i indeksa.3.2.1 Shema ˇShema je kolekcija imenovanih objekata baze podataka, koja obezbeduje logiˇkucklasifikaciju tih objekata. Neki od objekata baze podataka koje shema moˇe da zsadrˇi jesu tabele, pogledi, trigeri, paketi, itd. z I sama shema se moˇe posmatrati kao objekat baze podataka. Shema se kreira zizvrˇavanjem CREATE SCHEMA iskaza, kojim se mogu kreirati i drugi objekti u stoj shemi i dodeliti korisnicima prava pristupa tim objektima (v. 3.6). Iskaz zakreiranje sheme ima slede´i oblik: c CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE TABLE iskaz {, CREATE TABLE iskaz }]| [ CREATE VIEW iskaz {, CREATE VIEW iskaz }] | [ CREATE INDEX iskaz {, CREATE INDEX iskaz}] | [ GRANT iskaz {, GRANT iskaz } ] Ako se AUTHORIZATION opcija ne navede, podrazumevani vlasnik kreiranesheme je korisnik koji izvrˇava CREATE SCHEMA iskaz. s Pri kreiranju nekog objekta izvan CREATE SCHEMA iskaza, ime objekta semoˇe kvalifikovati imenom sheme. Tada objekat ima dvodelno ime, pri ˇemu je z cprvi deo imena – ime sheme kojoj se objekat dodeljuje. Ako se ime sheme nenavede, objekat se dodeljuje podrazumevanoj (engl. default) shemi ˇije je ime c– identifikacija korisnika koji izvrˇava iskaz kreiranja objekta. Sliˇno, ako se pri s c ˇnavodenju objekta (npr. u SELECT iskazu) izostavi ime sheme, podrazumevase shema imenovana imenom korisnika koji taj iskaz zadaje. Ovo svojstvo bi´e ckoriˇ´eno u svim primerima SQL-a. sc Shema se moˇe i ukloniti iskazom oblika z DROP SCHEMA ime-sheme RESTRICTpri ˇemu pravilo RESTRICT zabranjuje uklanjanje sheme ako ona sadrˇi bilo koji c zobjekat baze podataka.
  • 63. 56 3 Upitni jezik SQL3.2.2 Bazne tabeleIskaz kreiranja. Osnovni oblik iskaza za kreiranje bazne tabele je CREATE TABLE ime-bazne-tabele ( def-kolone {, def-kolone} [, def-prim-kljuˇa] c [, def-str-kljuˇa {, def-str-kljuˇa}] c c [, uslov-ograniˇenja {, uslov-ograniˇenja}) c c [ drugi-parametri] Ime bazne tabele je identifikator (maksimalne duˇine 18 znakova u DB2), ˇiji je z cprvi znak slovo a ostali znaci su slova, cifre ili podvlaka (’ ’). Ovako definisano ime ˇje nekvalifikovano, a moˇe se kvalifikovati navodenjem lokacije (sheme) i vlasnika ztabele. Definicija kolone def-kolone ima oblik: ime-kolone tip-podataka [NOT NULL] [[WITH] DEFAULT [ vrednost]]gde tip-podataka moˇe biti:1 z • INTEGER ili INT, 32-bitni ceo broj; • SMALLINT, 16-bitni ceo broj; • BIGINT, 64-bitni ceo borj; • DECIMAL(p,q) ili DEC(p,q), decimalni broj; p je ukupni broj cifara deci- malnog broja, dok je q broj cifara razlomljenog dela (1 ≤ p ≤ 31, 0 ≤ q ≤ p); • FLOAT(p), broj u pokretnom zarezu, jednostruke (1 ≤ p ≤ 24) ili dvostruke (25 ≤ p ≤ 53) taˇnosti; c • CHARACTER(m) ili CHAR(m), niska znakova fiksne duˇine m (1 ≤ m ≤ z 254). Mogu se koristiti slede´e skra´enice: c c DECIMAL(p) ≡ DECIMAL(p,0), DECIMAL ≡ DECIMAL(5), FLOAT ≡ FLOAT(53), DOUBLE [PRECISION] ≡ FLOAT, REAL ≡ FLOAT(24), CHAR ≡ CHAR(1), CHARACTER ≡ CHAR(1). 1 Skup tipova podataka sistema DB2 je bogatiji i ukljuˇuje i tipove datuma, vremena (DATE, cTIME), niski znakova promenljive duˇine (VARCHAR, LONG VARCHAR), tipove grafiˇkih niski z c(GRAPHIC, VAR GRAPHIC), binarnih i znakovnih velikih objekata (BLOB, CLOB, DBCLOB), ˇkorisniˇki definisane tipove bazirane na ugradenim SQL tipovima ([37]). c
  • 64. 3.2 Definisanje podataka 57 Opcija “[NOT NULL] [[WITH] DEFAULT [vrednost]]” odnosi se na kolonukoja ne dozvoljava nedostaju´e – NULL vrednosti, tj. na mogu´nost supstitucije c cnedostaju´e vrednosti navedenom (DEFAULT) vrednoˇ´u iz domena (na primer, c scvrednost moˇe biti konstanta 0 ili 1 za sluˇaj kolone tipa INTEGER). Ako se vred- z cnost u opciji DEFAULT ne navede, nedostaju´a vrednost se sistemski zamenjuje cpodrazumevanom (DEFAULT) vrednoˇ´u za odgovaraju´i domen (na primer, be- sc clina tj. blank za tip CHAR, 0 za tip INTEGER, itd). Opcija DEFAULT moˇe da zse koristi i samostalno (bez NOT NULL) i to u sluˇaju kolone koja dopuˇta NULL c svrednosti; pri tome se kao podrazumevana vrednost moˇe navesti i NULL. z Definicije primarnog i stranog kljuˇa predstavljaju posebne oblike uslova ograni- cc ˇˇenja, pa im je i sintaksa prilagodena opˇtoj sintaksi ovih uslova. s Definicija primarnog kljuˇa je oblika c [CONSTRAINT ime] PRIMARY KEY ( ime-kolone {, ime-kolone})pri ˇemu svaka kolona ˇije je ime navedeno u ovoj definiciji mora biti eksplicitno c cdefinisana kao NOT NULL. Primarni kljuˇ koji se sastoji od jedne kolone moˇe se zadati i u samoj definiciji c z ˇte kolone, navodenjem opcije [CONSTRAINT ime] PRIMARY KEY. U sistemu DB2, tabela ne mora imati definisan primarni kljuˇ (ˇto predstavlja c sodstupanje od principa relacionog modela), ali je veoma poˇeljno da ga ima jer on z ˇobezbeduje jedinstvenost vrsta. Definicija stranog kljuˇa je oblika c [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 ˇine primarni ckljuˇ. Tabela u kojoj je definisan strani kljuˇ je zavisna od odnosne tabele. Ne c czahteva se postojanje indeksa po kolonama stranog kljuˇa, ali je to ˇesto pogodno iz c crazloga performansi (npr. kod operacije spajanja nad primarnim i stranim kljuˇemcili kod odrˇavanja referencijalnog integriteta). z Strani kljuˇ koji se sastoji od jedne kolone moˇe se zadati i u samoj definiciji te c z ˇkolone, navodenjem kompletne definicije stranog kljuˇa.c Pri brisanju (DELETE) vrsta iz odnosne tabele, moˇe se primeniti jedno od zslede´ih pravila brisanja (tj. efekat u ON DELETE opciji moˇe biti slede´i): c z c • NO ACTION: omogu´uje brisanje vrste u odnosnoj tabeli samo ako ne pos- c toji vrsta u zavisnoj tabeli koja zavisi od vrste koja se briˇe (tj. ako ne postoji s vrsta u zavisnoj tabeli ˇija je vrednost stranog kljuˇa jednaka vrednosti pri- c c marnog kljuˇa vrste koja se briˇe). U suprotnom, sistem odbija da izvrˇi c s s brisanje iz odnosne tabele i javlja greˇku. Ovo je i podrazumevani efekat koji s se primenjuje ukoliko se niˇta ne navede. s
  • 65. 58 3 Upitni jezik SQL • RESTRICT: efekat je isti kao NO ACTION, razlikuju se samo po vremenu kada se primenjuju. Naime, u sluˇaju da se operacija brisanja reflektuje c na ve´i broj tabela sa razliˇitim efektima pri brisanju, RESTRICT efekat c c primenjuje se pre svih drugih efekata, a NO ACTION – posle svih drugih efekata. Zato u nekim (retkim) situacijama ovi efekti mogu da dovedu do razliˇitih rezultata. 2 c • SET NULL: omogu´uje brisanje vrste u odnosnoj tabeli i postavljanje NULL c vrednosti u kolone stranog kljuˇa zavisne tabele koje to dopuˇtaju (nisu NOT c s NULL); NULL vrednosti se postavljaju u vrste zavisne tabele koje zavise (u smislu opisanom uz prethodni efekat) od vrste koja se briˇe. Aktivnost s postavljanja NULL vrednosti ograniˇena je na neposredno zavisne tabele (ne c prenosi se dalje). Efekat SET NULL se ne moˇe primeniti ako je neka od z kolona stranog kljuˇa NOT NULL kolona. c • CASCADE: omogu´uje brisanje naznaˇene vrste odnosne tabele i brisanje c c svih zavisnih vrsta zavisne tabele, uz poˇtovanje pravila brisanja njihovih s zavisnih tabela. Pri aˇuriranju (UPDATE) vrsta odnosne tabele, i to na kolonama koje ulaze zu primarni kljuˇ, dopuˇteno pravilo je samo NO ACTION (podrazumevano) ili c sRESTRICT. To znaˇi da se vrednost primarnog kljuˇa p1 odnosne tabele moˇe c c zzameniti drugom vrednoˇ´u samo ako u zavisnoj tabeli ni jedna vrsta nema na scodgovaraju´em stranom kljuˇu vrednost p1 . c c Uslov ograniˇenja je logiˇki izraz ˇiji su argumenti kolone tabele, konstante i c c cizrazi nad njima, i predstavlja ograniˇenje nad podacima koji se unose u tabelu. cSintaksa opcije zadavanja uslova ograniˇenja je c CONSTRAINT ime CHECK ( uslov) Uslov ograniˇenja koji se odnosi samo na jednu kolonu tabele moˇe se zadati i c zu definiciji te kolone, istom sintaksom. Provera uslova ograniˇenja kao i referencijalnog integriteta moˇe biti, posebnim c ziskazom (SET CONSTRAINT), odloˇena (deaktivirana) i aktivirana. Deaktivi- zranje provere uslova ograniˇenja posebno je korisno kod masovnog unosa podataka cu bazu. 2 Na primer, neka tabela T3 ima dva strana kljuˇa koji se odnose na tabele T1 i T2, i neka cje pravilo pri brisanju za tabelu T2 – CASCADE. Neka je, dalje, definisan pogled (v. glavu 4 –Pogledi) V1 slede´im iskazom: cCREATE VIEW V1 AS SELECT * FROM T1 UNION ALL SELECT * FROM T2 Tada se rezultat izvrˇavanja iskaza sDELETE FROM V1razlikuje u sluˇajevima kada je pravilo pri brisanju iz tabele T1 RESTRICT odnosno NO AC- cTION.
  • 66. 3.2 Definisanje podataka 59 Ostali elementi iskaza za kreiranje tabele, drugi-parametri, odnose se na ele-mente fiziˇke reprezentacije bazne tabele (u sistemu DB2 takvi elementi su prostor ctabela u koji se tabela smeˇta i njegove karakteristike, prostor tabela u koji ´e se s csmestiti svaki budu´i indeks nad tabelom, kao i prostor tabela u koji se smeˇtaju c sveliki objekti, itd; v. taˇku 18.1.5 – Fiziˇka reprezentacija podataka u sistemu c cDB2).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 RESTRICTON 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 imepo kome je sistemu poznat korisnik koji zadaje CREATE TABLE iskaz. U okvirusheme xyz (tj. korisnik xyz) moˇe se obra´ati ovim tabelama kvalifikovanim imenom z cxyz.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. Pokuˇaj da se briˇe vrsta u tabeli K sa vrednoˇ´u k u koloni K SIF bi´e uspeˇan s s sc c ssamo kada u tabeli KI ne postoji vrsta sa istom vrednoˇ´u k u koloni K SIF, jer scstrani kljuˇ K SIF u tabeli KI ima pravilo brisanja DELETE RESTRICT. Sliˇno, c cpokuˇaj da se vrednost k u koloni K SIF neke vrste promeni bi´e uspeˇan samo s c sako u tabeli KI ne postoji vrsta sa vrednoˇ´u k u koloni K SIF (ON UPDATE scRESTRICT). Brisanje vrste u tabeli I sa vrednoˇ´u i atributa I SIF proizvodi brisanje svih scvrsta u tabeli KI sa vrednoˇ´u i kolone I SIF, jer strani kljuˇ I SIF u tabeli KI sc c
  • 67. 60 3 Upitni jezik SQLima pravilo brisanja DELETE CASCADE. Ovde se brisanje zavrˇava jer nema sviˇe zavisnih tabela (tj. vrsta). Ako bi postojala tabela zavisna od tabele KI, tj. sod njene kolone I SIF, i na nju bi se primenilo pravilo brisanja definisano za njen c s c ˇstrani kljuˇ. Ovakvo kaskadno brisanje se zavrˇava i u sluˇaju da se dode do zavisnetabele za koju je definisan strani kljuˇ sa pravilom brisanja DELETE SET NULL. cZa promenu vrednosti vrste tabele I na koloni I SIF vaˇi isto ˇto i za tabelu K i z skolonu K SIF (podrazumevano pravilo aˇuriranja NO ACTION ima isto dejstvo zkao i RESTRICT).Iskaz izmene. Postoje´a bazna tabela moˇe se u svako doba promeniti doda- c zvanjem novih kolona, dodavanjem ili uklanjanjem primarnog, stranog kljuˇa, ili cuslova ograniˇenja u opˇtem sluˇaju, ili promenom fiziˇkih parametara tabele. Iskaz c s c cpromene bazne tabele ima oblikALTER TABLE bazna-tabela ADD ime-kolone tip-podataka [NOT NULL [WITH] DEFAULT [ vrednost]] | ADD def-prim-kljuˇac | ADD def-str-kljuˇa c | ADD uslov-ograniˇenja c | DROP def-prim-kljuˇa c | DROP def-str-kljuˇa c | DROP uslov-ograniˇenja c | drugi parametripri ˇemu svi uvedeni identifikatori (npr. vrednost, def-prim-kljuˇa, itd.), imaju isto c cznaˇenje kao i u CREATE TABLE iskazu. Posebno, za novu dodatu kolonu vaˇe c ziste mogu´nosti kao i za definisanu kolonu u CREATE TABLE iskazu. Na primer, c ALTER TABLE KI ADD CENA INTEGER Ovaj iskaz dodaje kolonu CENA tabeli KI. Sve postoje´e vrste tabele KI cproˇiruju se ˇestom kolonom koja uzima vrednost NULL (ili 0 u sluˇaju opcije s s cNOT NULL WITH DEFAULT). Opcija NOT NULL (bez kvalifikacije WITH DE-FAULT) u ALTER iskazu nije dozvoljena. Primarni kljuˇ se moˇe dodati ako tabela ve´ nema definisan primarni kljuˇ i c z c cako sve kolone koje se ukljuˇuju u primarni kljuˇ imaju svojstvo NOT NULL. c c Pri uklanjanju primarnog kljuˇa (DROP PRIMARY KEY) definicije stranih ckljuˇeva koje su se prethodno odnosile na uklonjeni primarni kljuˇ ukidaju se au- c ctomatski. Iskazom ALTER TABLE ne moˇe se menjati tip podataka postoje´ih kolona z c(osim duˇine VARCHAR kolone), niti se mogu uklanjati postoje´e kolone. z c Ako jedan ALTER TABLE iskaz sadrˇi viˇe radnji dodavanja, uklanjanja z s(kolona, primarnog, stranog kljuˇa, itd.) ili promene tabele, prvo se izvrˇava radnja c sdodavanja kolona, a ostale radnje se izvrˇavaju u redosledu kojim su navedene. s
  • 68. 3.2 Definisanje podataka 61Iskaz uklanjanja. Postoje´a bazna tabela moˇe se ukloniti SQL iskazom c z DROP TABLE bazna-tabela Izvrˇavanjem ovog iskaza, opis te bazne tabele uklanja se iz kataloga, a svi sindeksi, pogledi, uslovi ograniˇenja ukljuˇuju´i primarni i strane kljuˇeve, definisani c c c cnad tom baznom tabelom, kao i sve definicije stranih kljuˇeva koje se odnose na tu ctabelu – automatski se uklanjaju. Pri tome se pravila brisanja za strane kljuˇeve cne primenjuju (npr. uklanjanje tabele I ne proizvodi brisanje vrsta iz tabele KI).DROP iskaz moˇe se primentiti i na druge objekte – indekse, poglede, prostore ztabela, uslove ograniˇenja, itd. c3.2.3 Indeksi z ˇIndeks se moˇe posmatrati kao uredeni skup pokazivaˇa na vrste bazne tabele, fiziˇki c codvojen od podataka u tabeli. Svaki indeks baziran je na vrednostima podatakajedne ili viˇe kolona tabele. s Indeks je veoma koristan mehanizam koji ubrzava pristup vrstama tabele. Kaoˇto je u pronalaˇenju nekog pojma u knjizi koristan indeks, koji eliminiˇe potrebus z sza prelistavanjem knjige stranu po stranu, tako je i u pretraˇivanju vrsta tabele po znekom uslovu mnogo efikasnije koristiti indeks po koloni koja uˇestvuje u uslovu, cnego pretraˇivati tabelu sekvencijalno, vrstu po vrstu. Tako, na primer, ako nad ztabelom K postoji indeks po koloni OBLAST, pristup knjigama po uslovu da jeknjiga – roman, mnogo je brˇi nego ako takav indeks ne postoji. z Izvrˇavanjem iskaza za kreiranje indeksa, RSUBP gradi odgovaraju´u strukturu s cpodataka i odrˇava je automatski. O naˇinu organizovanja, izgradnje i koriˇ´enja z c scindeksa kao metode pristupa vrstama tabele, bi´e opˇirno reˇi u glavi 12. U ovoj c s ctaˇki bi´e naveden samo naˇin na koji SQL podrˇava rad sa indeksima. c c c zIskaz kreiranja. Nad indeksima se mogu izvrˇavati samo SQL iskazi za defini- ssanje, tj. iskazi za kreiranje i uklanjanje indeksa. Iskaz kreiranja indeksa je oblikaCREATE [UNIQUE] INDEX ime-indeksa ON bazna-tabela ( ime-kolone [redosled] {, ime-kolone [redosled]}) [ drugi-parametri] Opcija UNIQUE precizira da dve razne vrste u baznoj tabeli nad kojom se kreiraindeks ne mogu uzeti istovremeno istu vrednost na indeksnoj koloni ili njihovojkombinaciji. Redosled uz svaku kolonu – komponentu indeksa je ili ASC (rastu´i)cili DESC (opadaju´i); ASC se podrazumeva ako se redosled ne navede. Nizanje ckolona sleva na desno odgovara glavnom-ka-sporednom redosledu kolona, pri ˇemu c ˇsu vrste indeksa uredene po zadatom redosledu (ASC, DESC) vrednosti navedenihkolona. Uz izvesna ograniˇenja, nad svakom kolonom se moˇe izgraditi indeks (npr. c zDB2 sistem ne podrˇava indekse nad kolonama ”dugaˇkih” – LONG – tipova kao z c
  • 69. 62 3 Upitni jezik SQLˇto su dugaˇki niskovni ili grafiˇki tip promenljive duˇine, veliki binarni objektis c c zitd). Drugi-parametri odnose se na fiziˇke karakteristike indeksa, npr. prostor tabela cu koji se smeˇta indeks, ili da li je indeks grupiˇu´i ili negrupiˇu´i (v. odeljak 12). s s c s c Jedna od komponenti RSUBP-a, upravljaˇ podacima (engl. data manager), cautomatski odrˇava jednom kreirani indeks, tako da on odslikava aˇuriranja bazne z ztabele, sve dok se indeks ne ukloni. U iskazu CREATE INDEX XKIC ON KI (CENA)opcija UNIQUE se ne navodi jer ve´i broj izdanja moˇe imati istu cenu. c zIskaz uklanjanja. Iskaz za uklanjanje indeksa ima oblik DROP INDEX ime-indeksa Izvrˇavanjem ovog iskaza opis indeksa se uklanja iz kataloga. U sistemu DB2, ssvaki pristupni paket (v. refsec:klijserv) koji koristi takav indeks oznaˇava se c z c ˇnevaˇe´im i izgraduje se ponovo pre slede´eg izvrˇenja. c s3.2.4 PoglediPogledi su virtuelne tabele koje nisu predstavljene fiziˇkim podacima, ve´ je njihova c cdefinicija (u terminima drugih tabela) zapam´ena u katalogu. c 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. taˇku 3.3.9), i zato c´e pogledi biti prikazani detaljnije u posebnoj glavi o pogledima. CHECK opcija secodnosi na primenu ograniˇenja navedenih u logiˇkom izrazu WHERE linije upitnog c cbloka, pri unoˇenju i izmeni podataka u pogledu. Na primer, s CREATE VIEW JUGIZD AS SELECT I SIF, NAZIV FROM I WHERE DRZAVA=’Jugoslavija’ Kada se izvrˇi ovaj CREATE iskaz, podupit SELECT-FROM-WHERE se ne sizvrˇava, ve´ se samo definicija upita saˇuva u katalogu. s c c Pogled JUGIZD je “prozor”, i to dinamiˇki, na tabelu I. Izmene nad pogle- cdom JUGIZD automatski se izvrˇavaju nad tabelom I, a izmene nad tabelom I s
  • 70. 3.3 Manipulisanje podacima 63automatski se odraˇavaju (“vide”) na pogled JUGIZD (ako zadovoljavaju uslove zkoji definiˇu taj pogled). s Korisnik moˇe ali i ne mora biti svestan da pogled nije bazna tabela, jer se nad zpogledom mogu postavljati upiti (gotovo svi) kao i nad baznom tabelom. Iskaz za uklanjanje pogleda ima oblik DROP VIEW ime-pogledaNa primer DROP VIEW JUGIZD Definiciju pogleda nije mogu´e menjati.3 c3.3 Manipulisanje podacimaSQL podrˇava ˇetiri manipulativna iskaza: z c • SELECT – pretraˇivanje z • INSERT – umetanje • UPDATE – aˇuriranje z • DELETE – brisanje U ovom odeljku bi´e, navedenim redosledom, postupno izloˇena sintaksa i se- c zmantika ovih iskaza.3.3.1 Pretraˇivanje zOsnovni oblik iskaza pretraˇivanja u SQL-u sastoji se od tzv. jednostavnog upitnog zbloka oblika 4 SELECT lista-kolona FROM ime-tabele WHERE logiˇki-izraz c Lista-kolona je spisak kolona iz tabele ime-tabele. Logiˇki-izraz ukljuˇuje pore- c cˇdenja atributa, konstanti i izraza (odgovaraju´eg tipa) u kojima atributi i konstante cuˇestvuju, kao i ispitivanje pripadnosti vrednosti takvih izraza zadatom skupu. cPripadne relacijske operacije su =, , , =, , =, IN, BETWEEN, LIKE, IS 3 SQL sistema DB2 ima iskaz ALTER VIEW ali se on odnosi samo na jednu specifiˇnu karak- cteristiku postoje´ih kolona pogleda. c 4 Upitni blok ovog oblika osnovna je komponenta i ostalih manipulativnih iskaza; isto vaˇi i za ztzv. puni upitni blok (v. 3.3.9.
  • 71. 64 3 Upitni jezik SQLNULL (NOT IN, NOT BETWEEN, NOT LIKE, IS NOT NULL); od kvantifikatoradopuˇten je egzistencijalni kvantifikator. Mogu´a struktura logiˇkog izraza bi´e s c c cprikazana primerima koji slede. Svi primeri odnose se na tabele izdavaˇke baze cpodataka opisane u odeljku 1.2 (o strukturnom delu relacionog modela). Rezultat operacije koju definiˇe SELECT upitni blok je tabela koja je izvedena s ˇiz tabele navedene u FROM liniji, pri ˇemu su njene kolone odredene listom kolona ca vrste – taˇnoˇ´u logiˇkog izraza: samo one vrste tabele iz FROM linije za koje c sc clogiˇki izraz ima vrednost ’taˇno’ pojavljuju se u rezultuju´oj tabeli. c c cPrimer 3.2 Na´i ˇifre i statuse izdavaˇa iz Amerike. c s c SELECT I SIF, STATUS Rezultat: FROM I I SIF STATUS WHERE DRZAVA=’Amerika’ i2 20 Imena kolona mogu se (a nekad i moraju, kao ˇto ´e biti pokazano) kvalifikovati s cimenima tabela iz kojih potiˇu, pa se prethodni primer ekvivalentno zapisuje kao c SELECT I.I SIF, I.STATUS FROM I WHERE I.DRZAVA=’Amerika’ SELECT iskaz ima mnogo opˇtiju strukturu i izraˇajne mogu´nosti. One ´e s z c c c c ˇu slede´im taˇkama biti uvodene redom, od svojstava jednostavnog upitnog bloka(taˇke 3.3.2 do 3.3.8), preko punog upitnog bloka (taˇka 3.3.9) do opˇte strukture c c sSELECT iskaza (3.3.10).3.3.2 Jednorelacioni upitiDve osnovne klase jednorelacionih upita (upita nad jednom tabelom) jesu upiti ne-kvalifikovanog pretraˇivanja, u kojima nema WHERE linije, pa se sve vrste tabele zkandiduju za rezultat, i upiti kvalifikovanog pretraˇivanja, koji sadrˇe WHERE z zliniju i kriterijum odabira vrsta.Primer 3.3 (zadrˇavanje duplikata) z Na´i ˇifre svih izdatih knjiga. c s Rezultat: SELECT K SIF K SIF FROM KI k1 k2 ili, ekvivalentno: k3 k4 SELECT ALL K SIF k5 FROM KI k6 k6
  • 72. 3.3 Manipulisanje podacima 65 Rezultat izvrˇavanja ovog upita sadrˇi i duplikate (pa relacija rezultat nije skup, s zsuprotno definiciji relacije u relacionom modelu).Primer 3.4 (eliminacija duplikata) Rezultat: K SIF Na´i sve razliˇite ˇifre izdatih knjiga. c c s k1 k2 SELECT DISTINCT K SIF k3 FROM KI k4 k5 k6 Relacija rezultat izvrˇavanja ovog upita jeste skup. sPrimer 3.5 (pretraˇivanje cele tabele) z Na´i sve podatke o svim izdavaˇima. c cSELECT * (ekvivalentno sa SELECT I SIF, NAZIV, STATUS, DRZAVAFROM I FROM I) Rezultat izvrˇavanja upita je kopija cele tabele I. sPrimer 3.6 (skalarni izrazi u SELECT liniji) Za svaku izdatu knjigu, na´i ˇifru izdavaˇa, ˇifru knjige, izdanje i tiraˇ izdanja c s c s zu hiljadama primeraka (tiraˇ knjige u tabeli KI je u primercima). zSELECT K SIF, I SIF, IZDANJE, ’Tiraz u hiljadama=’, TIRAZ/1000FROM KI Rezultat: K SIF I SIF IZDANJE 4 5 k1 i1 2 Tiraz u hiljadama= 10 k2 i1 2 Tiraz u hiljadama= 7 k3 i1 1 Tiraz u hiljadama= 10 k4 i1 2 Tiraz u hiljadama= 10 k5 i2 4 Tiraz u hiljadama= 5 k6 i3 1 Tiraz u hiljadama= 3 k6 i4 3 Tiraz u hiljadama= 5 Oznake ”4” i ”5” umesto (nepostoje´ih) imena kolona uvodi sˆm sistem, kao c aredne brojeve neimenovanih kolona u relaciji rezultatu. Sistem DB2 (kao i standardSQL2) omogu´uje imenovanje kolona nastalih od izraza, pa se prethodni iskaz moˇe c zzapisati i na slede´i naˇin: c c
  • 73. 66 3 Upitni jezik SQLSELECT K SIF, I SIF, IZDANJE, ’Tiraz u hiljadama=’ AS KOMENTAR, TIRAZ/1000 AS TIRHILJFROM KI ˇ Cetvrta i peta kolona rezultuju´e tabele sada ´e imati naziv KOMENTAR, c cTIRHILJ, redom. Kao ˇto nekvalifikovani oblik SELECT iskaza omogu´uje izbor kolona navedene s c ˇtabele, navodenje logiˇkog izraza u WHERE liniji tog iskaza omogu´uje i izbor c csamo onih vrsta za koje je vrednost tog izraza ’taˇno’. Sve opcije navedene uz cnekvalifikovano pretraˇivanje u prethodnim primerima odnose se i na kvalifikovano zpretraˇivanje. Osim toga, WHERE linija ovih upita moˇe da ukljuˇi i specifiˇne z z c coperacije, pa se razlikuju slede´e podklase upita kvalifikovanog pretraˇivanja. c z ˇPrimer 3.7 (poredenja i logiˇke operacije u logiˇkom izrazu) c c Na´i ˇifre izdavaˇa iz Jugoslavije sa statusom ve´im od 20. c s c c Rezultat: SELECT I SIF I SIF FROM I i1 WHERE DRZAVA=’Jugoslavija’ AND STATUS20 i4 c ˇ Umesto uobiˇajenih operacija poredenja, u logiˇkom izrazu moˇe se pojaviti i c zneka od specifiˇnih relacijskih operacija: IN, BETWEEN, LIKE, IS NULL (NOT cIN, NOT BETWEEN, NOT LIKE, IS NOT NULL).Primer 3.8 (BETWEEN) Na´i ˇifre izdavaˇa ˇiji je status u intervalu od 15 do 30, kao i njihove statuse. c s c c Rezultat: SELECT I SIF, STATUS I SIF STATUS FROM I i1 30 WHERE STATUS BETWEEN 15 AND 30 i2 20 i4 30 Kao i BETWEEN, relacijska operacija IN (tj. NOT IN) je skra´eni zapis za c ˇdisjunkciju (OR) niza poredenja na jednakost (odnosno konjunkciju – AND – niza ˇporedenja na razliˇitost). cPrimer 3.9 (IN) Na´i ˇifre izdavaˇa ˇiji je status 20 ili 30, kao i njihove statuse. c s c c SELECT I SIF, STATUS FROM I WHERE STATUS IN (20, 30)
  • 74. 3.3 Manipulisanje podacima 67 Za dati sadrˇaj tabele I (odeljak 1.2) ovaj upit ima isti rezultat kao i upit iz zprethodnog primera. Relacijska operacija LIKE (odnosno NOT LIKE) omogu´uje izbor vrednosti iz cdate kolone (obavezno tipa CHAR(n)) na osnovu sliˇnosti (odnosno razliˇitosti) sa c cnavedenim obrascem istog tipa.Primer 3.10 (LIKE) Na´i ˇifre izdavaˇa iz drˇava koje u imenu imaju bar jedno ’u’, kao i te drˇave. c s c z z Rezultat: SELECT I SIF, DRZAVA I SIF DRZAVA FROM I i1 Jugoslavija WHERE DRZAVA LIKE ’%u%’ i3 Jugoslavija i4 Jugoslavija Relacijska operacija IS NULL (odnosno IS NOT NULL) omogu´uje testiranje cnedostaju´e (NULL) vrednosti zadatog atributa. cPrimer 3.11 (IS NULL) Na´i sve ˇifre izdavaˇa i izdanja knjige sa ˇifrom k1 ˇiji je tiraˇ poznat u bazi c s c s c z(nema nedostaju´u vrednost). c SELECT I SIF, IZDANJE Rezultat: FROM KI I SIF IZDANJE WHERE K SIF = ’k1’ AND i1 2 TIRAZ IS NOT NULL
  • 75. 68 3 Upitni jezik SQL3.3.3 Upiti spajanjaSpajanje tabela predstavlja mogu´nost istovremenog pretraˇivanja podataka iz viˇe c z s ˇtabela, i moˇe se izvesti po jednoj od operacija poredenja (=, , =, , =, ) znad uporedivim kolonama dve tabele. Ova operacija uˇestvuje u izgradnji logiˇkog c cizraza u WHERE liniji, a sve tabele koje uˇestvuju u spajanju navode se u FROM cliniji. U sluˇaju istih imena kolona u dve tabele, njihova pojavljivanja moraju c ˇbiti kvalifikovana navodenjem imena tabela iz kojih potiˇu. Izdvaja se nekoliko ckarakteristiˇnih tipova upita spajanja: cPrimer 3.12 (spajanje dve tabele) Na´i sve informacije o izdavaˇima i piscima iz iste drˇave. c c zSELECT * ( ekvivalentno sa: SELECT I.*, P.*FROM I, P FROM I, PWHERE I.DRZAVA = P.DRZAVA WHERE I.DRZAVA = P.DRZAVARezultat: I SIF NAZIV ST. DRZ. P SIF IME BR N. DRZ. i1 Prosveta 30 Jugosl. p1 ´ c B.Copi´ 2 Jugosl. i1 Prosveta 30 Jugosl. p3 ˇ si´ B.Simˇ c 1 Jugosl. i1 Prosveta 30 Jugosl. p4 D.Maksimovi´ c 2 Jugosl. i2 Add.Wesley 20 Amer. p5 C.J.Date 1 Amer. i3 D.novine 10 Jugosl. p1 ´ c B.Copi´ 2 Jugosl. i3 D.novine 10 Jugosl. p3 ˇ sc B.Simˇi´ 1 Jugosl. i3 D.novine 10 Jugosl. p4 D.Maksimovi´ c 2 Jugosl. i4 M.srpska 30 Jugosl. p1 ´ c B.Copi´ 2 Jugosl. i4 M.srpska 30 Jugosl. p3 ˇ sc B.Simˇi´ 1 Jugosl. i4 M.srpska 30 Jugosl. p4 D.Maksimovi´ c 2 Jugosl.(skra´enja oznaka vrednosti su iz prostornih razloga) cPrimer 3.13 Na´i sve parove ˇifara izdavaˇa/pisca iz iste drˇave, pri ˇemu je sta- c s c z ctus izdavaˇa ve´i od 20. c c Rezultat: I SIF P SIF SELECT I.I SIF, P.P SIF i1 p1 FROM I, P i1 p3 WHERE I.DRZAVA = P.DRZAVA i1 p4 AND I.STATUS 20 i4 p1 i4 p3 i4 p4
  • 76. 3.3 Manipulisanje podacima 69 Najznaˇajniji oblik spajanja je prirodno spajanje koje predstavlja spajanje po crelacijskoj operaciji =, ali sa izostavljanjem jedne od dve identiˇne kolone. U SQL- c ˇu to se postiˇe eksplicitnim navodenjem svih kolona tabela koje se spajaju, osim zpo jedne iz svakog para identiˇnih kolona dobijenih pri spajanju. cPrimer 3.14 (prirodno spajanje) Na´i sve informacije o izdavaˇima i piscima iz iste drˇave, pri ˇemu se drˇava c c z c zpojavljuje samo kao jedna kolona. SELECT I SIF, NAZIV, STATUS, I.DRZAVA, P SIF, IME, BR NASLOVA FROM I, P WHERE I.DRZAVA = P.DRZAVARezultat izvrˇavanja upita je isti kao u primeru 3.12, samo bez druge kolone sDRZAVA.Primer 3.15 (spajanje n (n 2) tabela) Na´i sve parove drˇava takve da izdavaˇ iz prve drˇave izdaje knjigu pisca iz c z c zdruge drˇave. z SELECT DISTINCT I.DRZAVA AS IDRZAVA, P.DRZAVA AS PDRZAVA 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 Rezultat: IDRZAVA PDRZAVA Jugoslavija Jugoslavija Jugoslavija Engleska Amerika AmerikaPrimer 3.16 (spajanje tabele sa samom sobom) Na´i sve parove ˇifara izdavaˇa iz iste drˇave. c s c z Upit se moˇe razmatrati po analogiji sa primerom 3.12, tj. sa upitom “na´i sve z cparove ˇifara izdavaˇa/pisca iz iste drˇave”, koji se izraˇava SELECT iskazom s c z zSELECT I.I SIF, P.P SIFFROM I, PWHERE I.DRZAVA = P.DRZAVA U novom upitu se, koncepcijski, i umesto tabele P pojavljuje (joˇ jednom) tabela sI (sliˇno, I SIF umesto P SIF), pa je problem koji se javlja – nejednoznaˇnost imena c cI u logiˇkom izrazu WHERE linije. Koncepcijsko reˇenje sastoji se u slede´em: c s ctreba posmatrati dve identiˇne kopije tabele I (RSUBP, npr. DB2 ih, naravno, ne crealizuje fiziˇki), “prvu” i “drugu”. Sada se posmatraju svi parovi vrsta iz “prve” c
  • 77. 70 3 Upitni jezik SQLi “druge” kopije i odabiraju oni parovi sa jednakom drˇavom. Ove kopije potrebno zje razliˇito imenovati (ˇto je omogu´eno tzv. korelacionim imenom tabele u sintaksi c s cFROM linije), pri ˇemu se upit svodi na upit analogan prethodnom:5 c Rezultat: I SIF I SIF i1 i1 i1 i3 i1 i4 SELECT PRVI.I SIF, DRUGI.I SIF i2 i2 FROM I PRVI, I DRUGI i3 i1 WHERE PRVI.DRZAVA = DRUGI.DRZAVA i3 i3 i3 i4 i4 i1 i4 i3 i4 i4 Upotrebljeni oblik FROM linije identifikuje ime PRVI sa tabelom I, kao i imeDRUGI sa istom tabelom. Nasuprot ovom koncepcijskom reˇenju, u realizaciji sovakvog upita nije neophodno imati dve kopije iste tabele. Dovoljno je obezbeditimehanizam za obra´anje dvema vrstama tabele I istovremeno. Taj mehanizam su cdve n-torne promenljive (PRVI, DRUGI, u ovom sluˇaju), od kojih svaka, kao skup cmogu´ih vrednosti, ima skup vrsta tabele I, tj. u svakom trenutku izvrˇavanja upita c sima kao svoju vrednost jednu vrstu te tabele (nezavisnu od vrednosti druge n-tornepromenljive). Poˇto u prethodnom rezultatu ima suviˇnih parova (npr. (i1, i1) kao i jedan od s sparova (i1, i3), (i3, i1)), upit se moˇe dopuniti uslovom PRVI.I SIF DRUGI.I SIF, ztj. 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 Dopuˇteno je upotrebiti n-torne promenljive (korelaciono ime tabele) i u kontek- sstu u kome nisu neophodne. Njihova dosledna upotreba smatra se odrazom dobrog ˇstila. Staviˇe, kadgod n-torna promenljiva nije eksplicitno dodeljena tabeli, SQL suvodi implicitnu n-tornu promenljivu sa istim imenom kao i ime tabele.3.3.4 PodupitiˇCinjenica da je rezultat izvrˇavanja upitnog bloka nad tabelom opet tabela somogu´uje ugnjeˇdenje SELECT upitnih blokova. c z 5 Korelaciono ime tabele je nekvalifikovani identifikator; kolone u SELECT i WHERE linijamakvalifikuju se korelacionim imenom tabele.
  • 78. 3.3 Manipulisanje podacima 71 Podupit je SELECT upitni blok umetnut u logiˇki izraz WHERE linije drugog cSELECT upitnog bloka (ili iskaza aˇuriranja). Svojstvo ugnjeˇdenja SELECT upi- z ztnih blokova je osnovno svojstvo na kome je SQL utemeljen (Structured u nazivuSQL ukazuje upravo na ovu vrstu struktuiranosti). Podupit se koristi za: c c ˇ • predstavljanje pojedinaˇne vrednosti koja uˇestvuje u operaciji poredenja; • predstavljanje skupa vrednosti ˇija se nepraznost ispituje primenom EXISTS c (NOT EXISTS) kvantifikatora, koji se pretraˇuje IN (NOT IN) relacijskom z operacijom, ili koji se kvantifikuje kvantifikatorima SOME, ANY ili ALL i ˇ zatim uˇestvuje u operaciji poredenja. c Ugnjeˇdenje blokova moˇe biti viˇestruko, ali u gotovo svim primenama na z z srealne probleme ugnjeˇdenje do nivoa 3 zadovoljava. z Ugnjeˇdeni SELECT upitni blok se, po pravilu, moˇe zameniti upitom spajanja, z zˇije je izvrˇenje ˇesto efikasnije.c s cPrimer 3.17 (relacijska operacija IN) Na´i nazive izdavaˇa koji izdaju knjigu sa ˇifrom k6. c c s SELECT I.NAZIV Rezultat: FROM I NAZIV WHERE I.I SIF IN Deˇje novine c (SELECT KI.I SIF Matica srpska FROM KI WHERE KI.K SIF=’k6’) Iskaz se izvrˇava prvo izvrˇavanjem podupita koji vra´a skup vrednosti – ˇifara s s c sizdavaˇa koji izdaju knjigu sa ˇifrom k6 (ovaj podupit izvrˇava se samo jedanput pri c s sjednom izvrˇavanju celog iskaza). Zatim se pretraˇuje tabela I, i za svakog izdavaˇa s z cˇija je ˇifra u izraˇunatom skupu izdaje se naziv tog izdavaˇa. U sluˇaju da izostanec s c c ceksplicitno kvalifikovanje imena (I SIF umesto I.I SIF i KI.I SIF), primenjuje seimplicitno kvalifikovanje imena (I.I SIF za kolonu I SIF ispred IN i KI.I SIF zakolonu I SIF iza IN). Ovo je saglasno pravilu da se nekvalifikovano ime kolonekvalifikuje imenom tabele (ili imenom n-torne promenljive) koja je navedena uFROM liniji koja je najdirektnije deo istog upita ili podupita. Zato je prethodniiskaz ekvivalentan slede´em iskazu (tj. ima identiˇan rezultat kao i taj iskaz): c c SELECT NAZIV FROM I WHERE I SIF IN (SELECT I SIF FROM KI WHERE K SIF=’k6’) Isti upit moˇe se formulisati i upotrebom operacije spajanja, bez podupita: z
  • 79. 72 3 Upitni jezik SQL SELECT I.NAZIV FROM I, KI WHERE I.I SIF = KI.I SIF AND KI.K SIF = ’k6’Primer 3.18 (podupit i spoljaˇnji upit nad istom tabelom) s Na´i ˇifre izdavaˇa koji izdaju bar jednu knjigu koju izdaje i izdavaˇ sa ˇifrom c s c c si3. SELECT DISTINCT I SIF FROM KI WHERE K SIF IN (SELECT K SIF FROM KI WHERE I SIF=’i3’)Analogno prethodnim primerima formuliˇu se i drugi oblici iskaza – kvalifikovanjem simena i operacijom spajanja umesto podupita.Primer 3.19 (viˇestruki nivo ugnjeˇdenja) s z Na´i nazive izdavaˇa koji izdaju bar jedan roman. c c Rezultat: SELECT I.NAZIV FROM I NAZIV WHERE I.I SIF IN Prosveta (SELECT KI.I SIF FROM KI WHERE KI.K SIF IN (SELECT K.K SIF FROM K WHERE K.OBLAST=’roman’))Primer 3.20 (operacija poredenja) ˇ Na´i ˇifre izdavaˇa iz iste drˇave kao izdavaˇ sa ˇifrom i1. c s c z c s SELECT iskaz kojim se zadaje ovaj upit moˇe da koristi implicitne ili eksplicitne zn-torne promenljive, tj. slede´a dva iskaza su ekvivalentna: c SELECT I SIF SELECT IX.I SIF FROM I FROM I IX WHERE DRZAVA = WHERE IX.DRZAVA = (SELECT DRZAVA (SELECT IY.DRZAVA FROM I FROM I IY WHERE I SIF=’i1’) WHERE IY.I SIF=’i1’)
  • 80. 3.3 Manipulisanje podacima 73 c c ˇ Ovakvi podupiti ˇiji nekvantifikovani rezultat uˇestvuje u operaciji poredenjaopravdani su samo kada se unapred zna da rezultat podupita sadrˇi najviˇe jedan z selement. Slede´a dva primera ilustruju koriˇ´enje podupita ˇiji rezultati sadrˇe c sc c zviˇe od jednog elementa, ali im kvantifikatori SOME, ANY, ALL, omogu´uju s c ˇ ˇuˇestvovanje u operaciji poredenja (tzv. kvantifikovano poredenje). c ˇPrimer 3.21 (kvantifikovano poredenje – kvantifikator SOME) Na´i nazive izdavaˇa koji izdaju knjigu sa ˇifrom k6 c c s SELECT NAZIV FROM I WHERE I SIF = SOME(SELECT I SIF FROM KI WHERE K SIF=’k6’) Parafraza ovog iskaza je da se traˇe nazivi onih izdavaˇa ˇija je ˇifra jednaka sa z c c sNEKOM (SOME) ˇifrom izdavaˇa koji izdaje knjigu sa ˇifrom ’k6’. Isto je znaˇenje s c s ci kvantifikatora ANY. ˇPrimer 3.22 (kvantifikovano poredenje – kvantifikator ALL) Na´i sve informacije o izdanjima ˇiji je tiraˇ manji od svakog tiraˇa izdanja c c z zizdavaˇa sa ˇifrom ’i1’. c s Rezultat: SELECT * K SIF I SIF IZD. GOD. TIRAZ FROM KI k5 i2 4 1986 5000 WHERE TIRAZ k6 i3 1 1966 3000 ALL (SELECT TIRAZ k6 i4 3 1988 5000 FROM KI WHERE I SIF=’i1’)3.3.5 Korelisani podupitiPored strukture upita u kojoj se podupit izvrˇava samo jedanput pri jednom sizvrˇavanju celog upita, mogu´a je struktura u kojoj podupit zavisi od tabele iz s cFROM linije spoljaˇnjeg upita (tj. sadrˇi n-tornu promenljivu koja odgovara ovoj s ztabeli). Tada se podupit mora izvrˇiti za svaku vrstu tabele iz spoljaˇnjeg upita, s sda bi se utvrdilo da li se ta vrsta kvalifikuje za rezultat celog upita ili ne. Takavpodupit zove se korelisani podupit.Primer 3.23 Isti upit kao u primeru 3.17 (“na´i nazive izdavaˇa koji izdaju knjigu c csa ˇifrom k6”) moˇe se preformulisati tako da ukljuˇi korelisani podupit na slede´i s z c cnaˇin: c
  • 81. 74 3 Upitni jezik SQL SELECT I.NAZIV FROM I WHERE ’k6’ IN (SELECT KI.K SIF FROM KI WHERE KI.I SIF=I.I SIF)U podupitu je neophodno eksplicitno kvalifikovati ime kolone I.I SIF da bi se raz-likovalo od nekvalifikovanog imena kolone I SIF, koja ima implicitnu kvalifikacijuKI.I SIF. Ovaj iskaz se izvrˇava na slede´i naˇin: za svaku vrstu tabele I, i specifiˇnu s c c cvrednost Ix njene kolone I SIF (ˇifra izdavaˇa), izvrˇava se podupit s c s (SELECT K SIF FROM KI WHERE I SIF=’Ix’) Ako pretraˇeni skup ˇifara knjiga K SIF sadrˇi ˇifru ’k6’, posmatrana vrsta z s z s ˇtabele I se dalje obraduje i izdaje se vrednost njene kolone NAZIV; postupak seponavlja za slede´u vrstu tabele I. c Prethodni podupit zove se korelisani podupit jer je u neposrednoj zavisnosti odspoljaˇnjeg upitnog bloka. s Analogna forma upita odgovara i sluˇaju kada se korelisani podupit i spoljaˇnji c supitni blok odnose na istu tabelu. U ovom sluˇaju se moraju uvesti eksplicitne cn-torne promenljive razliˇite od imena tabele. cPrimer 3.24 Na´i ˇifre svih knjiga koje izdaje viˇe od jednog izdavaˇa. c s s c Rezultat: SELECT DISTINCT KIX.K SIF FROM KI KIX K SIF WHERE KIX.K SIF IN k6 (SELECT KIY.K SIF FROM KI KIY WHERE KIY.I SIF KIX.I SIF)3.3.6 Egzistencijalni kvantifikatorU SQL-u, egzistencijalno kvantifikovani logiˇki izraz je oblika EXISTS (SELECT c. . . FROM . . . ) (odnosno NOT EXISTS (SELECT . . . FROM . . . )). Ovaj izrazizraˇunavanjem dobija vrednost ’taˇno’ ako i samo ako je rezultat podupita pred- c cstavljenog konstrukcijom ’SELECT . . . FROM . . . ’ neprazan (odnosno prazan).
  • 82. 3.3 Manipulisanje podacima 75Primer 3.25 Na´i nazive izdavaˇa koji izdaju knjigu sa ˇifrom k3. c c s 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 izdavaˇa za koje postoji vrsta u tabeli izdavaˇtva c s(KI) sa istom ˇifrom izdavaˇa i ˇifrom knjige k3. Na primer, prva vrsta tabele I ima s c snaziv izdavaˇa ’Prosveta’ i ˇifru izdavaˇa i1. U tabeli KI postoji vrsta sa ˇifrom c s c sizdavaˇa i1 i ˇifrom knjige k3, pa je ’Prosveta’ jedan (i jedini) od naziva koji se c spojavljuju u rezultatu. Egzistencijalni kvantifikator je mo´an mehanizam SQL-a. Forma prethodnog cupita je samo preformulacija upita izraˇenog bez egzistencijalnog kvantifikatora, jer zse svaki upit formulisan IN relacijskom operacijom moˇe formulisati i koriˇ´enjem z scEXISTS kvantifikatora. Da obratno ne vaˇi, sugeriˇe slede´i primer. z s c c c ´ cPrimer 3.26 Na´i nazive izdavaˇa koji izdaju sve knjige Branka Copi´a. Ovaj upit je ve´ razmatran kao ilustracija operacije deljenja u relacionoj algebri c(odeljak 2.1). Pogledajmo ˇta on novo donosi kada je u pitanju SQL. s Prirodna formulacija upita ukljuˇila bi univerzalni kvantifikator “za svaki” c(FORALL), koji nije podrˇan u SQL-u. Univerzalni kvantifikator se moˇe izraziti z znegacijom egzistencijalnog kvantifikatora, tj. (FORALL x)p(x) ≡ NOT (EXISTS x)(NOT(p(x))),gde je x – promenljiva, a p – logiˇki izraz koji ukljuˇuje promenljivu x. c c ´ c Tako se izraz “nazivi izdavaˇa takvih da, za svaku knjigu Branka Copi´a, postoji c ˇvrsta u KI tabeli koja utvrduje da taj izdavaˇ izdaje tu knjigu”, moˇe preformulisati c z ´ cu ekvivalentni izraz “nazivi izdavaˇa takvih da ne postoji knjiga Branka Copi´a c ˇtakva da ne postoji vrsta u KI tabeli koja utvrduje da taj izdavaˇ izdaje tu knjigu”. c ´ cDa bi se pojednostavio upit, izdvojmo prvo sve knjige Branka Copi´a u virtuelnutabelu – pogled K BC slede´im SQL iskazom: c CREATE VIEW K BC AS (SELECT * FROM K WHERE K SIF IN (SELECT K SIF FROM KP WHERE P SIF = (SELECT P SIF FROM P WHERE IME = ’Branko ´opi´’))) C c
  • 83. 76 3 Upitni jezik SQL z c ´ c Sada se nalaˇenje naziva izdavaˇa koji su izdali sve knjige Branka Copi´a moˇe zizraziti slede´im SQL iskazom: c 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 izraˇavanju komplikovanog upita, kakav je poslednji z ˇprimer, pode od pseudo SQL iskaza koji ukljuˇuje FORALL kvantifikator, a zatim cizvrˇi konverzija u pravi SQL upit koji ukljuˇuje NOT EXISTS kvantifikator umesto s cuniverzalnog kvantifikatora FORALL ([24]). Druga korisna sugestija za formulaciju sloˇenih upita je da se, kadgod to odgo- z ˇvara prirodi upita, pode od implikacije, a da se ona zatim preformuliˇe u logiˇki s cizraz koji je korektan u SQL-u. Tako bi se prethodni primer prirodno formulisaokao “na´i naziv izdavaˇa (npr. Ix) takvog da za svaku knjigu vaˇi implikacija: ako c c z ´ cje autor knjige Branko Copi´, onda je izdavaˇ Ix izdao tu knjigu”. c Implikacija “ako p onda q” ekvivalentna je izrazu “NOT (p) OR q”, pa se s z ´ cimplikacija iz naˇeg primera moˇe izraziti kao “autor knjige nije Branko Copi´ ili jeizdavaˇ Ix izdao tu knjigu”. Zajedno sa prethodnim razmatranjem kvantifikatora cFORALL, 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: “Na´i naziv izdavaˇa (npr. Ix) c c z c c ´ cza kojeg vaˇi slede´e: ne postoji knjiga ˇiji je autor Branko Copi´ a koju nijeizdao izdavaˇ Ix” (ovo je upravo formulacija izraˇena SQL-om). Opisani postupak c zpredstavlja sistematiˇni pristup obradi univerzalnog kvantifikatora i implikacije. c3.3.7 Agregatne funkcijeZa razliku od skalarnih funkcija, ˇiji je argument skalarna vrednost, tj. jedna cvrednost iz jednog domena, agregatne funkcije preslikavaju skup vrednosti jednekolone (obiˇno izvedene tabele) u skalarnu vrednost. Pod izvedenom tabelom ovde cse podrazumeva rezultat primene logiˇkog izraza iz WHERE linije na tabele iz cFROM linije. SQL podrˇava ˇirok spektar skalarnih funkcija, od konverzionih (npr. funkcija z sza pretvaranje celobrojnog ili realnog tipa u decimalni tip, DECIMAL, za pre-tvaranje brojevnih tipova u znakovni tip, realni tip dvostruke taˇnosti ili celobro- c
  • 84. 3.3 Manipulisanje podacima 77jni tip – DIGITS, FLOAT, INTEGER, redom), preko opˇtih (npr. funkcija koja svra´a duˇinu podatka u bajtovima – LENGTH) i aritmetiˇkih (ABS, TAN, SQRT, c z cTRUNC), do funkcijˆ za obradu znakovnih podataka (npr. SUBSTR – vra´a pod- a cnisku niske, navedene duˇine, od pozicije kao poˇetka, ili POSSTR – vra´a poziciju z c cprvog pojavljivanja jedne niske u drugoj), kao i druge funkcije vezane za specifiˇne c ˇtipove odredenog sistema (npr. TIME, YEAR, CHAR, DATE, DAY – nad po-dacima tipa TIME, DATE, TIMESTAMP). Poziv skalarne funkcije moˇe se navesti zkao operand u izrazu odgovaraju´eg tipa. cPrimer 3.27 Izdati nazive izdavaˇa i nazive njihovih drˇava prevedene na engleski c zjezik. Iskaz kojim se realizuje ovaj upit ilustrova´e skalarnu funkciju SUBSTR i mogu´- c cnost SQL-a sistema DB2 u selektivnoj dodeli vrednosti skalarnom izrazu tabele-rezultata. Rezultat: SELECT NAZIV, CASE SUBSTR(DRZAVA,1,1) NAZIV DRZAVA ENG 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 pretraˇivanje svakog po- zjedinaˇnog podatka iz baze podataka (relaciono je kompletan), bez mehanizma cagregatnih funkcija on ne omogu´uje izraˇavanje praktiˇnih i ˇesto potrebnih upita c z c ctipa “Koliko ima izdavaˇa?” c SQL podrˇava agregatne funkcije COUNT, SUM, AVG, MAX i MIN6 , sa zslede´im znaˇenjem: c c COUNT – broj vrednosti u koloni SUM – zbir vrednosti u koloni AVG – srednja vrednost u koloni MAX – najve´a vrednost u koloni c MIN – najmanja vrednost u koloni. Agregatna funkcija se poziva tako ˇto se navede njeno ime sa argumentom – simenom kolone u zagradi. Poziv agregatne funkcije moˇe se na´i u SELECT liniji z cbilo glavnog bilo ugnjeˇdenog upita. Ako se takav poziv navede, odgovaraju´a z cSELECT linija mora se sastojati samo od takvih poziva (izuzetak su upiti kojiukljuˇuju GROUP BY liniju, v. taˇku 3.3.8). Poziv agregatne funkcije ne moˇe se c c zna´i u WHERE liniji upita. c 6 SQL sistema DB2 podrˇava i agregatne funkcije standardne devijacije i varijanse – STDDEV, zVARIANCE.
  • 85. 78 3 Upitni jezik SQL Argument za funkcije SUM i AVG mora biti kolona brojevnih vrednosti. Argu-mentu moˇe da prethodi rezervisana reˇ DISTINCT, koja ukazuje na eliminaciju z cduplikata u koloni–argumentu pre primene funkcije, ili rezervisana reˇ ALL (ˇto se c si podrazumeva) kada se funkcija primenjuje na sve vrednosti u koloni, ukljuˇuju´i c ci duplikate. Agregatna funkcija COUNT mora imati DISTINCT opciju ispred argumenta,osim u svom specijalnom obliku COUNT(∗) kojim se prebrojavaju vrste (a ne vred-nosti kolone) koje zadovoljavaju zadati logiˇki uslov; ovaj oblik agregatne funkcije c ˇCOUNT ne dozvoljava navodenje DISTINCT opcije i podrazumeva opciju ALL. Za sve agregatne funkcije (osim COUNT(∗)) vaˇi da se primenjuju samo na ne- zNULL vrednosti kolone–argumenta iz onih vrsta odgovaraju´e tabele koje zadovo- cljavaju logiˇki uslov WHERE linije upita; agregatna funkcija COUNT(∗) primenjuje cse na sve vrste koje zadovoljavaju zadati uslov. Argument agregatne funkcije moˇe biti i izraz u kome uˇestvuje kolona (npr. z cTIRAZ/1000), ali samo kada opcija DISTINCT nije navedena. Pojedini sistemi primenjuju i niz drugih pravila i ograniˇenja za upotrebu agre- cgatnih funkcija ([37], [24]).Primer 3.28 (COUNT) Na´i ukupan broj izdavaˇa koji su izdali bar po jednu knjigu. c c Rezultat: SELECT COUNT(DISTINCT I SIF) 1 FROM KI 4Primer 3.29 (COUNT(∗)) Na´i broj izdanja knjige sa ˇifrom k6. c s SELECT COUNT(∗) Rezultat: FROM KI 1 WHERE KI.K SIF=’k6’ 2Primer 3.30 (SUM) Na´i ukupni tiraˇ knjige sa ˇifrom k6 (svih izdanja svih izdavaˇa). c z s c SELECT SUM(TIRAZ) Rezultat: FROM KI 1 WHERE KI.K SIF=’k6’ 8000Primer 3.31 (MAX) Na´i ˇifre izdavaˇa ˇiji je status niˇi od maksimalnog statusa u I tabeli. c s c c z
  • 86. 3.3 Manipulisanje podacima 79 Rezultat: SELECT I.I SIF I SIF FROM I i2 WHERE STATUS i3 (SELECT MAX(STATUS) FROM I)Primer 3.32 (AVG) Na´i ˇifru, status i drˇavu izdavaˇa ˇiji je status viˇi ili jednak proseˇnom statusu c s z c c s cizdavaˇa iz te drˇave (ovo je ujedno i primer agregatne funkcije u korelisanom c zpodupitu). SELECT IX.I SIF, IX.STATUS, IX.DRZAVA Rezultat: FROM I IX I SIF STATUS DRZAVA WHERE IX.STATUS = i1 30 Jugoslavija (SELECT AVG(STATUS) i2 20 Amerika FROM I IY i4 30 Jugoslavija WHERE IY.DRZAVA = IX.DRZAVA)3.3.8 Operator grupisanjaNa jednostavni SELECT upitni blok mogu´e je primeniti i operator grupisanja c GROUP BY ime-kolone ˇkoji preureduje (logiˇki) tabelu iz FROM linije u particije ili grupe tako da unu- ctar jedne grupe sve vrste imaju istu vrednost u koloni iz GROUP BY operatora. ˇTakode vaˇi i da su sve vrste tabele sa istom vrednoˇ´u kolone iz GROUP BY z scoperatora – u jednoj grupi. Za potrebe grupisanja, sve NULL vrednosti u koloni izGROUP 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, na´i ˇifru knjige i ukupni tiraˇ u kome je c s zizdata. Rezultat: SELECT K SIF, SUM(TIRAZ) K SIF 2 FROM KI k1 10000 GROUP BY K SIF k2 7000 k3 10000 k4 10000 k5 5000 k6 8000
  • 87. 80 3 Upitni jezik SQL Svaki izraz u SELECT liniji mora biti singlton (jednoˇlan skup) za svaku grupu, ctj. mora biti jedna od kolona iz GROUP BY operatora, konstanta ili agregatnafunkcija nad svim vrednostima neke kolone unutar te grupe. Precizirajmo sadapravilo iz taˇke 3.3.7: ukoliko se agregatna funkcija javlja u SELECT liniji upita u ckome se ne primenjuje GROUP BY operator na istom nivou ugnjeˇdenja, ta linija zne sme da sadrˇi ime kolone, konstantu ili izraz. z Ukoliko u SELECT upitnom bloku postoji WHERE linija, vrste koje ne zado-voljavaju logiˇki izraz iz WHERE linije eliminiˇu se pre bilo kakvog grupisanja. c sPrimer 3.34 Za svaku knjigu, na´i ˇifru knjige i maksimalni tiraˇ izdanja te knjige, c s ziskljuˇuju´i izdanja izdavaˇa sa ˇifrom i1. c c c s SELECT K SIF, MAX(TIRAZ) Rezultat: FROM KI K SIF 2 WHERE I SIF ’i1’ k5 5000 GROUP BY K SIF k6 5000 GROUP BY operator moˇe se primeniti, sa analognom semantikom, i na bilo zkoju kombinaciju kolona tabele iz FROM linije.Kvalifikovano grupisanje. Kao ˇto pretraˇivanje vrstˆ tabele SELECT upi- s z atnim blokom moˇe biti kvalifikovano WHERE logiˇkim izrazom kojim se biraju z codnosno eliminiˇu vrste tabele iz FROM linije, tako i pretraˇivanje grupa dobijenih s zGROUP BY operatorom moˇe biti kvalifikovano primenom logiˇkog izraza kojim z cse biraju one grupe na koje ´e se SELECT linija primenjivati, odnosno eliminiˇu c sostale grupe. Taj novi logiˇki izraz zadaje se operatorom c HAVING logiˇki-izraz cIzrazi koji uˇestvuju u logiˇkom izrazu HAVING operatora moraju imati jedin- c cstvenu vrednost po grupi.Primer 3.35 Na´i ˇifru knjige za svaku knjigu koja ima viˇe izdanja: c s s SELECT K SIF Rezultat: FROM KI K SIF GROUP BY K SIF k6 HAVING COUNT(*) 1 Operatori GROUP BY i HAVING mogu se primeniti i u podupitima. Znaˇajno je da se svaki upit formulisan GROUP BY i HAVING operatorom cmoˇe preformulisati u oblik koji ih ne koristi. Tako se poslednji primer moˇe izraziti z zi na slede´i naˇin: c c
  • 88. 3.3 Manipulisanje podacima 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]) preporuˇuju se alternativne formulacije upita (koje ne koriste GROUP BY – cHAVING konstrukcije).3.3.9 Puni upitni blokPored osnovnog oblika iskaza pretraˇivanja SQL-a sa strukturom jednostavnog up- zitnog bloka koja ukljuˇuje sve dosad pomenute mogu´nosti, iskaz pretraˇivanja c c zmoˇe imati i oblik punog upitnog bloka. Neformalno, puni upitni blok se dobija zprimenom (0 ili viˇe) skupovnih operacija unije, preseka i/ili razlike na jednostavne sili druge pune upitne blokove7 . Mogu´nost primene skupovnih operacija na upitne blokove posledica je ˇinjenice c cda je rezultat izvrˇavanja svakog upitnog bloka – (izvedena) relacija tj. skup – sskup vrsta. Operacije unije (UNION), preseka (INTERSECT) i razlike (EXCEPT)u SQL-u se mogu primenjivati samo na unijski kompatibilne relacije (u smislu ukome je unijska kompatibilnost uvedena u taˇki 2.1.2). Ako su odgovajuju´e kolone c c ˇjednako imenovane, kolona tabele-rezultata nasleduje to ime. U suprotnom, kolonarezultuju´e tabele je neimenovana (tj. dobija sistemski generisano ime). c Obzirom da je eliminacija duplikata, kao sastavni deo ovih skupovnih operacija,(vremenski) skupa operacija, SQL nudi mogu´nost da se ona ne izvrˇi (opcija ALL c suz svaku od skupovnih operacija). Ovo je naroˇito pogodno kada se unapred zna cda rezultat ne´e imati duplikata. cPrimer 3.36 Na´i ˇifre knjiga koje su romani ili ih izdaje izdavaˇ sa ˇifrom i2 (ili c s c sza koje vaˇe oba uslova). z Rezultat: SELECT K SIF K SIF FROM K k1 WHERE OBLAST = ’roman’ k3 UNION k5 SELECT K SIF FROM KI WHERE I SIF = ’i2’Primer 3.37 Na´i nazive drˇava u kojima su registrovani i izdavaˇi i pisci. c z c 7 Dakle, i jednostavni upitni blok jeste puni upitni blok.
  • 89. 82 3 Upitni jezik SQL Rezultat: SELECT DRZAVA DRZAVA FROM I Amerika INTERSECT Jugoslavija SELECT DRZAVA FROM P Ako se u ovom primeru operacija INTERSECT zada sa opcijom ALL (INTER-SECT ALL), u rezultatu ´e se dobiti i ponovljene vrednosti: c Rezultat: SELECT DRZAVA DRZAVA FROM I Amerika INTERSECT ALL Jugoslavija SELECT DRZAVA Jugoslavija FROM PPrimer 3.38 Izdati nazive drˇava u kojima su registrovani pisci ali ne i izdavaˇi. z c SELECT DRZAVA Rezultat: FROM P DRZAVA EXCEPT Engleska SELECT DRZAVA FROM I Isti bi se rezultat dobio, u naˇem primeru, i za operaciju EXCEPT ALL, zato ˇto s sje u relacijama P i I jednak broj vrsta sa istim vrednostima atributa DRZAVA (po 1 sc sc ˇsa vrednoˇ´u ’Amerika’ i po tri sa vrednoˇ´u ’Jugoslavija’). Medutim, kada bi, npr.u relaciji P bilo registrovano ˇetiri pisca iz Jugoslavije a u relaciji I – tri izdavaˇa c ciz Jugoslavije, tada bi operacija EXCEPT ALL u naˇem primeru proizvela, pored svrednosti ’Engleska’, i vrednost ’Jugoslavija’. Ovo je u suprotnosti sa skupovnimpojmom razlike pa i sa samim relacionim modelom. Pri viˇestrukoj primeni skupovnih operacija, redosled njihovog izvrˇavanja je s ssleva nadesno (”odozgo naniˇe”), pri ˇemu operacija preseka (INTERSECT) ima z cprioritet. Redosled izvrˇenja se moˇe zagradama menjati. s z Puni upitni blok, pa prema tome i skupovne operacije UNION, INTERSECT,EXCEPT, mogu se primeniti i u podupitima iskaza pretraˇivanja, ali i u drugim ziskazima SQL-a – npr. u iskazu za kreiranje pogleda (CREATE VIEW, v. 4), iliiskazima za unoˇenje, brisanje i aˇuriranje (v. 3.3.13, 3.3.15, 3.3.14). s z3.3.10 ˇ Operator uredenja i operator WITHKompletni iskaz pretraˇivanja – SELECT iskaz, pored strukture jednostavnog i z ˇpunog upitnog bloka, moˇe imati i dodatne operatore – operator uredenja po vred- z
  • 90. 3.3 Manipulisanje podacima 83nostima izabranih kolona rezultuju´e tabele (ORDER BY) i operator kojim se pre- ctraˇivanje punim upitnim blokom primenjuje nad imenovanom izvedenom tabelom z– rezultatom izvrˇavanja nekog punog upitnog bloka (WITH operator). sPrimer 3.39 (pretraˇivanje sa uredenjem) z ˇ Prikazati ˇifre i statuse izdavaˇa u opadaju´em redosledu statusa. s c c Rezultat: I SIF STATUS SELECT I SIF, STATUS i1 30 FROM I i4 30 ORDER BY STATUS DESC i2 20 i3 10 ˇ Uredenje se moˇe zadati na isti naˇin kao u CREATE INDEX iskazu. Osim z copadaju´eg (DESC), mogu´ je i rastu´i poredak (ASC) koji se i podrazumeva. c c cKolone u ORDER BY liniji (moˇe ih biti viˇe) mogu se identifikovati i svojim rednim z sbrojevima (sleva nadesno u rezultuju´oj tabeli) umesto imenima; ako je kolona – cneimenovani skalarni izraz, ona se mora identifikovati svojim rednim brojem. ˇPrimer 3.40 Uredenje tabele iz primera 3.6 u rastu´em poretku ˇifara izdavaˇa c s cunutar rastu´ih tiraˇa u hiljadama postiˇe se SELECT iskazom c z z SELECT K SIF, I SIF, IZDANJE, ’Tiraz u hiljadama =’, TIRAZ/1000 FROM KI ORDER BY 5, I SIF Rezultat: K SIF I SIF IZDANJE 4 5 k6 i3 1 Tiraz u hiljadama = 3 k5 i2 4 Tiraz u hiljadama = 5 k6 i4 3 Tiraz u hiljadama = 5 k2 i1 2 Tiraz u hiljadama = 7 k1 i1 2 Tiraz u hiljadama = 10 k3 i1 1 Tiraz u hiljadama = 10 k4 i1 2 Tiraz u hiljadama = 10Primer 3.41 Pretraˇivanje nad imenovanom izvedenom tabelom z Iz tabele sa parovima (IME, NAZIV) koja sadrˇi imena pisaca i nazive izdavaˇa z c ´ ckoji izdaju knjige tih pisaca, izdati nazive svih izdavaˇa Branka Copi´a. c WITH PI AS (SELECT DISTINCT IME, NAZIV FROM P, I, KP, KI WHERE P.P SIF=KP.P SIF AND KP.K SIF=KI.K SIF AND
  • 91. 84 3 Upitni jezik SQL KI.I SIF=I.I SIF) SELECT NAZIV FROM PI WHERE IME=’B.Copic’ Rezultat: NAZIV Prosveta Operatori WITH i ORDER BY mogu se primeniti u istom SELECT iskazu, ˇda bi se dobilo uredenje po vrednostima kolona rezultata pretraˇivanja imenovane zizvedene tabele. U prethodnom primeru, na kraju SELECT iskaza mogao bi senavesti operator ORDER BY NAZIV kako bi se dobili nazivi izdavaˇa knjiga Branka c´ c ˇCopi´a uredeni po abecednom redu.
  • 92. 3.3 Manipulisanje podacima 853.3.11 Naˇin izvrˇavanja SELECT iskaza c sSELECT iskaz koji ne sadrˇi skupovne operacije UNION, INTERSECT, EXCEPT, zmoˇe biti dosta sloˇen, i moˇe da ukljuˇi slede´e linije, obavezno u navedenom z z z c credosledu:SELECT ...FROM ...WHERE ...GROUP BY ...HAVING ...ORDER BY ... Ovakav SELECT iskaz moˇe, osim toga, da ukljuˇi i podupite. Redosled u z ckome se (konceptualno) izvrˇavaju linije ovakvog SELECT iskaza je isti kao i re- sdosled u kome su zapisane, osim SELECT linije koja se izvrˇava “pretposlednja” s– neposredno ispred ORDER BY operatora. Tako algoritam izvrˇavanja SELECT siskaza sadrˇi slede´e korake: z c 1. izraˇunati Dekartov proizvod tabelˆ iz FROM linije; c a 2. iz rezultata prethodnog koraka eliminisati sve n-torke koje ne zadovoljavaju logiˇki izraz WHERE linije; c 3. rezultat prethodnog koraka grupisati po vrednostima kolona navedenih u GROUP BY liniji; 4. iz rezultata prethodnog koraka eliminisati grupe koje ne zadovoljavaju logiˇki c izraz HAVING linije; 5. za svaku grupu iz rezultata prethodnog koraka proizvesti po jednu n-torku, prema sadrˇaju SELECT linije; z ˇ 6. uredenjem rezultata prethodnog koraka prema kolonama u ORDER BY liniji dobiti konaˇni rezultat SELECT iskaza. c Ukoliko se u SELECT iskazu nalazi ugnjeˇden podupit, onda se sve (prisutne) zlinije izvrˇavaju navedenim redom u podupitu, pa zatim u spoljaˇnjem upitu. s s Prethodni algoritam je samo konceptualan zato ˇto daje korektan rezultat, ali bi snjegovo striktno izvrˇavanje bilo veoma neefikasno. Zbog toga se pristupa raznim s ˇtehnikama optimizacije koje obezbeduju istu korektnost u izvrˇavanju SELECT siskaza, ali uz maksimalnu efikasnost. Ako SELECT iskaz sadrˇi skupovnu operaciju, prvo se izvrˇavaju njeni operandi z s(pojedinaˇni SELECT–FROM–WHERE–itd. blokovi), prema prethodnoj koncep- ctualnoj metodi, ali bez eventualnih ORDER BY operatora. Zatim se na rezultateizvrˇavanja ovih blokova primenjuje skupovna operacija, i najzad operator OR- sDER BY, ako postoji (u jednom SELECT iskazu mogu´e je navesti najviˇe jedan c sORDER BY operator i to na kraju iskaza).
  • 93. 86 3 Upitni jezik SQL3.3.12 Relaciona kompletnost SQL-aZa SQL se moˇe jednostavno dokazati da je relaciono kompletan, tako ˇto se z spokazuje da podrˇava sve operacije relacione algebre (za koju je pokazano da je zrelaciono kompletna, v. odeljak 2.2). U ovoj taˇki koristi´e se formalniji termin c c“relacija” (a ne njegov sinonim “tabela”, uobiˇajen u terminologiji SQL-a), jer je cizlaganje tesno vezano za formalizam relacionog modela – relacionu algebru. 1. Skupovne operacije unije, preseka i razlike SQL podrˇava direktno operaci- z jama UNION, INTERSECT, EXCEPT. 2. Skupovna operacija Dekartovog proizvoda relacija R i S realizuje se upitom spajanja SELECT ∗ FROM R, S 3. Operacija projekcije relacije R na atribute Ai1 , . . . , Aik realizuje se upitom bez WHERE linije SELECT Ai1 , . . . , Aik FROM R 4. Operacija restrikcije po logiˇkom izrazu Ψ realizuje se upitom sa WHERE c linijom SELECT ∗ FROM R WHERE Ψ 5. Operacija slobodnog Θ spajanja relacija R i S po paru atributa Ai , Bj real- izuje se upitom spajanja SELECT ∗ FROM R, S WHERE R.Ai Θ S.Bj 6. Operacija prirodnog spajanja relacija R(A1 , . . . , An ), S(B1 , . . . , Bm ) po atributima Ai i Bj realizuje se upitom spajanja SELECT A1 , . . . , An , B1 , . . . , Bj−1 , Bj+1 , . . . , Bm FROM R, S WHERE Ai = Bj 7. Operacija deljenja relacije R(A, B) relacijom S(C), po atributu B, ima slede´u interpretaciju: na´i skup vrednosti atributa A, takvih da je svaka c c vrednost u relaciji R sa svakom vrednoˇ´u iz S, tj. na´i skup vrednosti sc c a ∈ R[A] takvih da za svaku vrednost c ∈ S postoji n-torka (par) t ∈ R,
  • 94. 3.3 Manipulisanje podacima 87 takva da je t = (a, c); primenom ekvivalencije (∀x)P (x) ≡ (¬∃x)¬P (x), in- terpretacija je ekvivalentna slede´oj: na´i skup vrednosti a ∈ R[A], sa svo- c c jstvom da ne postoji vrednost c ∈ S za koju ne postoji n-torka t ∈ R takva da je t = (a, c), ˇto se u SQL-u moˇe neposredno izraziti slede´im iskazom: s z c 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)) (sliˇno i za relaciju R sa n atributa, odnosno relaciju S sa m atributa). c Dakle, SQL je relaciono kompletan.3.3.13 Unoˇenje sNove vrste se unose u tabelu iskazom INSERT ˇija sintaksa ima jedan od slede´a c cdva 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 pojedinaˇna vrsta sa nave- cdenim konstantnim vrednostima u navedenim kolonama. Broj konstanti mora bitijednak broju kolona, a pridruˇivanje se vrˇi u navedenom redosledu. U kolone koje z snisu navedene unose se NULL (odnosno podrazumevane) vrednosti ako kolona nijedefinisana kao NOT NULL kolona; pod istim uslovom vrednost NULL moˇe se i zeksplicitno navesti kao konstanta. Drugim oblikom INSERT iskaza u tabelu se upisuje jedna ili viˇe vrsta, koje spredstavljaju rezultat izvrˇavanja punog upitnog bloka; pri tom i-ta kolona rezul- stata izvrˇavanja punog upitnog bloka odgovara i-toj koloni u zapisu iskaza. Ako sje rezultat izvrˇavanja punog upitnog bloka prazan, INSERT iskazom se ne dodaje snijedna vrsta tabeli. U oba sluˇaja, redosled u kome se kolone navode ne mora da odgovara redosledu ckolona u tabeli u koju se unosi. Ako se imena kolona ne navedu, vrednosti sedodeljuju kolonama u redosledu definisanom tabelom. U oba sluˇaja, takode, za c ˇ ˇsvaku vrstu koja se unosi mora biti obezbedena vrednost u svakoj NOT NULLkoloni koja nije podrˇana DEFAULT opcijom. z
  • 95. 88 3 Upitni jezik SQL s ˇPrimer 3.42 Dodati tabeli K knjigu sa ˇifrom k7, sa naslovom – ’Carobna ˇuma’ si sa trenutno nepoznatom oblaˇ´u. sc INSERT INTO K (K SIF, NASLOV) VALUES (’k7’, ’ˇarobna ˇuma’) C s Uneta vrsta ima nedostaju´u (NULL) vrednost u koloni OBLAST. c Isti efekat proizvodi i slede´i iskaz: c INSERT INTO K (K SIF, NASLOV, OBLAST) VALUES (’k7’, ’ˇarobna ˇuma’, NULL) C s Operacijom unoˇenja moˇe da bude naruˇen neki od uslova integriteta baze s z spodataka, pri ˇemu takvu operaciju sistem odbija da izvrˇi. c sPrimer 3.43 Iskaz INSERT INTO KI (K SIF, I SIF, IZDANJE, TIRAZ) VALUES (’k20’, ’i20’, 3, 10000)bio bi odbijen, jer bi se njegovim izvrˇavanjem realizovalo unoˇenje vrste u tabelu s sizdanja KI, koja se odnosi na izdavaˇa (i20) koji nije poznat u tabeli izdavaˇa I (i na c cknjigu k20 koja nije poznata u tabeli knjiga K); time bi bio naruˇen referencijalni sintegritet (v. taˇku 1.4.2). cPrimer 3.44 Uneti u tabelu KI KOPIJA vrste tabele KI koje se odnose na iz-davaˇe i1 i i2. c Tabela KI KOPIJA moˇe da se kreira prema obrascu tabele KI (analognim zCREATE TABLE iskazom), sa istim kolonama kao i tabela KI. Izvrˇavanjem sslede´eg iskaza, u tabelu KI KOPIJA unosi se odgovaraju´i sadrˇaj: c c z INSERT INTO KI KOPIJA SELECT K SIF, I SIF, IZDANJE, TIRAZ FROM KI WHERE I SIF IN (’i1’, ’i2’) KI KOPIJA: K SIF I SIF IZDANJE GODINA TIRAZ k1 i1 2 NULL 10000 k2 i1 2 NULL 7000 k3 i1 1 NULL 10000 k4 i1 2 NULL 10000 k5 i2 4 NULL 5000
  • 96. 3.3 Manipulisanje podacima 89 Tabeli se mogu dodati i vrste koje su rezultat operacije spajanja dve ili viˇe stabela, kao ˇto pokazuje slede´i primer: s cPrimer 3.45 Kreirati tabelu IP DRZAVA sa kolonama I SIF, P SIF, DRZAVA iuneti u tu tabelu sve parove ˇifara izdavaˇa i pisaca iz iste drˇave, kao i odgovaraju´e s c z cdrˇave. z 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 iskazakreira trajnu (baznu) tabelu IP DRZAVA koja se moˇe pretraˇiti slede´im SELECT z z ciskazom: SELECT * Rezultat: FROM IP DRZAVA I SIF P SIF DRZAVA i1 p1 Jugoslavija i1 p3 Jugoslavija i1 p4 Jugoslavija i2 p5 Amerika i3 p1 Jugoslavija i3 p3 Jugoslavija i3 p4 Jugoslavija i4 p1 Jugoslavija i4 p3 Jugoslavija i4 p4 Jugoslavija Drugi oblik INSERT iskaza omogu´uje i da se puni upitni blok primeni na cimenovanu izvedenu tabelu WITH operatorom (sliˇno kao kod SELECT iskaza). cPrimer 3.46 Kreirati tabelu IZD BC sa jednom kolonom NAZIV (izdavaˇa) i u c ´ cnju upisati sve izdavaˇe koji izdaju knjige Branka Copi´a. c c ´ c Nazive svih izdavaˇa knjiga Branka Copi´a dobi´emo iz izvedene tabele sa cparovima (IME, NAZIV) koja sadrˇi imena pisaca i nazive izdavaˇa koji izdaju z cknjige tih pisaca. CREATE TABLE IZD BC(NAZIV CHAR(20) NOT NULL)
  • 97. 90 3 Upitni jezik SQL INSERT INTO IZD BC WITH PI AS(SELECT DISTINCT IME, NAZIV FROM P, I, KP, KI WHERE P.P SIF=KP.P SIF AND KP.K SIF=KI.K SIFAND KI.I SIF=I.I SIF) SELECT NAZIV FROM PI WHERE IME=’B.Copic’ Rezultat: NAZIV Prosveta3.3.14 Aˇuriranje zZa aˇuriranje u uˇem smislu, tj. za izmenu postoje´ih vrednosti u tabeli, koristi se z z cUPDATE iskaz. Sintaksa iskaza ima oblik: UPDATE ime-tabele [ ime n-torne promenljive] SET ime-kolone = izraz {,ime-kolone = izraz} [ WHERE logiˇki-izraz ] c U UPDATE iskazu navodi se ime tabele ˇiji se sadrˇaj menja. To moˇe biti c z zime bazne tabele ili ime pogleda. Ime n-torne promenljive (ili korelaciono ime)upotrebljava se u sluˇaju da logiˇki izraz WHERE linije ukljuˇuje upitni blok nad c c ctabelom koja se aˇurira, i u ˇijoj WHERE liniji figuriˇe tabela iz UPDATE iskaza. z c s U SET liniji navode se sve kolone koje se menjaju kao i izraz po kome seizraˇunava vrednost za svaku kolonu. c Kao argumente, izraz moˇe da ukljuˇi konstante, druge kolone, programske z cpromenljive (u aplikativnom SQL-u), pri ˇemu se vrednost kolone ime-kolone u cpojedinoj vrsti zamenjuje izraˇunatom vrednoˇ´u odgovaraju´eg izraza za tu istu c sc cvrstu. Ako se WHERE linija ne navede, vrednosti navedenih kolona menjaju se usvim vrstama tabele; ako se navede, vrednosti se menjaju u svakoj vrsti tabele kojazadovoljava logiˇki izraz WHERE linije. cPrimer 3.47 Uve´ati tiraˇe svih izdanja izdavaˇa i3 za 10%. c z c UPDATE KI SET TIRAZ = TIRAZ * 1.1 WHERE I SIF=’i3’
  • 98. 3.3 Manipulisanje podacima 91 s ˇ Ako pri izvrˇavanju UPDATE iskaza dode do greˇke, izvrˇavanje se obustavlja. s sPri tome ni jedna vrsta tabele nije promenjena, odnosno ako su promene nad nekimvrstama ve´ izvrˇene, bi´e poniˇtene. Do greˇke moˇe do´i, na primer, u sluˇaju c s c s s z c cda je nova vrednost suviˇe velika za datu kolonu, s obzirom na definiciju te kolone. sIzvrˇavanje UPDATE iskaza moˇe da bude odbijeno i u sluˇaju da se njime naruˇava s z c sreferencijalni integritet. Ako tabela koja se aˇurira ima primarni kljuˇ koji je strani kljuˇ drugih tabela, z c cUPDATE iskaz nad kolonama koje ukljuˇuju primarni kljuˇ odnosne tabele tj. c cstrani kljuˇ zavisne tabele izvrˇava se prema navedenim pravilima aˇuriranja u c s zdefiniciji stranih kljuˇeva zavisnih tabela. Operacija aˇuriranja definisana UP- c zDATE iskazom ´e biti uspeˇna samo ako su pravila aˇuriranja svih zavisnih tabela c s zzadovoljena. Pravila aˇuriranja (UPDATE RESTRICT, UPDATE NO ACTION) opisana su zu taˇki 3.2.2. Tako, ne moˇe se promeniti vrednost kolone – primarnog kljuˇa, za c z c c c ˇkoju postoji odgovaraju´a vrednost stranog kljuˇa u zavisnoj tabeli. Takode, ako semenja vrednost kolone – stranog kljuˇa, nova vrednost mora postojati kao vrednost codgovaraju´e kolone tabele u kojoj je ta kolona deo primarnog kljuˇa. c cPrimer 3.48 Zahtev za izvrˇenje iskaza s UPDATE KI SET I SIF = ’i6’ WHERE I SIF = ’i4’bi´e odbijen, jer vrednost i6 ne postoji u tabeli I u kojoj je kolona I SIF – primarni ckljuˇ. cPrimer 3.49 Uve´ati tiraˇ svih izdanja izdavaˇa iz Jugoslavije za 10%. c z c UPDATE KI SET TIRAZ = TIRAZ * 1.1 WHERE I SIF IN (SELECT I SIF FROM I WHERE DRZAVA = ’Jugoslavija’)3.3.15 BrisanjeZa brisanje vrsta iz tabele upotrebljava se iskaz oblika DELETE FROM ime-tabele [ ime n-torne promenljive] [ WHERE logiˇki-izraz ] c
  • 99. 92 3 Upitni jezik SQL Izvrˇavanjem ovog iskaza iz tabele ime-tabele briˇu se sve vrste te tabele koje s szadovoljavaju logiˇki izraz. Vrste se briˇu u celosti (nije mogu´e izbrisati samo c s cneke vrednosti iz date vrste). Ako se WHERE linija ne navede, briˇu se sve vrste snavedene tabele. Tabela moˇe biti i pogled, pri ˇemu se vrste briˇu iz bazne tabele z c snad kojom je pogled definisan.Primer 3.50 Izbrisati iz tabele KI sva izdanja izdavaˇa i4. c DELETE FROM KI WHERE I SIF=’i4’ Izvrˇavanjem ovog iskaza iz tabele KI briˇe se jedna vrsta. s s s ˇ Ako za vreme izvrˇavanja DELETE iskaza dode do greˇke, izvrˇavanje iskaza se s sprekida. Sadrˇaj tabele ne´e biti promenjen. Greˇka moˇe biti, na primer, rezultat z c s znaruˇenog referencijalnog integriteta. s Ako tabela iz koje se briˇe ima primarni kljuˇ koji je strani kljuˇ drugih tabela, s c cDELETE iskaz se izvrˇava prema navedenim pravilima brisanja u definiciji stranih skljuˇeva zavisnih tabela. Operacija brisanja definisana DELETE iskazom ´e biti c cuspeˇna samo ako su pravila brisanja svih zavisnih tabela zadovoljena. s Pravila brisanja (DELETE RESTRICT, DELETE CASCADE, DELETE SETNULL) opisana su u taˇki 3.2.2. Na primer, ne moˇe se izbrisati knjiga iz tabele K c zako postoji izdanje te knjige u tabeli KI (jer je K SIF u tabeli KI strani kljuˇ sa cpravilom brisanja DELETE RESTRICT, a kolona K SIF je primarni kljuˇ u tabelicK). S druge strane, mogu´e je obrisati izdavaˇa i3 iz tabele izdavaˇa I iskazom c c c DELETE FROM I WHERE I SIF=’i3’Izvrˇavanjem ovog iskaza briˇu se i sve vrste u tabeli KI koje se odnose na izdavaˇa s s ci3, jer strani kljuˇ I SIF u tabeli KI ima pravilo brisanja DELETE CASCADE. cOvde se prenoˇenje brisanja zavrˇava jer nema tabela koje, preko svog stranog s skljuˇa, zavise od tabele KI. Ako bi postojala tabela zavisna od tabele KI, tj. od cnjene kolone I SIF, i na nju bi se primenilo pravilo brisanja definisano za njen strani s z s c ˇkljuˇ. Prenoˇenje brisanja moˇe se zavrˇiti i u sluˇaju da se dode do zavisne tabele cˇiji strani kljuˇ ima pravilo brisanja DELETE SET NULL.c c U logiˇkom izrazu WHERE linije (kao i u sluˇaju UPDATE iskaza) moˇe se c c zna´i i predikat koji ukljuˇuje (ugnjeˇdeni) puni upitni SELECT blok. c c zKorelisani podupit u aˇuriranju u brisanju. z U WHERE liniji DELETE(UPDATE) iskaza moˇe se primeniti i korelisani podupit koji se izvrˇava po jedan z sput za svaku vrstu tabele iz DELETE (UPDATE) iskaza, da bi se odredilo da li seta vrsta briˇe (aˇurira) ili ne. s zPrimer 3.51 Izbrisati izdavaˇe koji izdaju knjigu sa ˇifrom k3. c s
  • 100. 3.4 Aplikativni SQL 93 DELETE FROM I WHERE ’k3’ IN (SELECT KI.K SIF FROM KI WHERE KI.I SIF = I.I SIF)3.4 Aplikativni SQLVe´ina SQL proizvoda podrˇava dva vida izvrˇavanja SQL iskaza: interaktivni – c z sizvrˇavanje samostalnih SQL iskaza preko on-line terminala, i aplikativni – izvrˇava- s snje SQL iskaza umetnutih u program na viˇem programskom jeziku, pri ˇemu se s cSQL iskazi mogu izvrˇavati naizmeniˇno sa iskazima programskog jezika. Program s cna aplikativnom SQL-u prolazi kroz prekompiliranje kao prvu fazu svoje obrade.Aplikativni SQL, dalje, moˇe da ukljuˇi dve vrste SQL iskaza: z c • statiˇke SQL iskaze koji ve´ u fazi pisanja programa imaju precizan oblik i c c c ˇ ˇija se analiza (utvrdivanje tipa iskaza i objekata koji u njemu uˇestvuju – c npr. tabela, pogleda, kolona, itd.) i priprema za izvrˇenje moˇe u potpunosti s z obaviti u fazi prekompiliranja; • dinamiˇke SQL iskaze koji se zadaju u obliku niske znakova koja se dodeljuje c programskoj promenljivoj, i ˇija se analiza i priprema moˇe obaviti tek u fazi c z izvrˇavanja programa kada je poznat njihov precizni oblik. s Pored ovakvog naˇina koriˇ´enja baze podataka u programu na programskom c scjeziku, postoje i druge mogu´nosti ugradnje blokova za komunikaciju sa SUBP u cprogram. U sluˇaju sistema DB2, te mogu´nosti su direktni pozivi DB2 funkcija c c(Call Level Interface – CLI) i upotreba ODBC standarda (Open Database Con- ˇnectivity). ODBC standard odnosi se na standardizovanje sumede korisnika i ˇ ˇmedusistema (prema SUBP), nezavisno od SUBP kome ´e medusistem proslediti ckorisniˇki zahtev. Pri tome, nemogu´e je koristiti specifiˇnosti pojedinog sistema (u c c covom sluˇaju DB2), a svi upiti upu´eni sistemu DB2 preko ODBC-a izvrˇavaju se c c sdinamiˇki. S druge strane, direktni pozivi DB2 funkcija (CLI-sistem) su specifiˇni c cza DB2 sistem i koriste sve njegove mogu´nosti (kao i aplikativni SQL), mada su cmaksimalno usaglaˇeni sa ODBC pristupom (v. ??). Za razliku od programa na ap- slikativnom SQL-a koji mora da se prekompilira, kompilira, poveˇe sa bazom i najzad zizvrˇi, DB2 CLI aplikacija ne mora ni da se prekompilira ni da se povezuje sa bazom; sona koristi standardni skup funkcija za izvrˇenje SQL iskaza u vreme izvrˇenja pro- s sgrama. Na taj naˇin DB2 CLI aplikacija postaje ”prenosivija” u odnosu na ap- clikaciju u aplikativnom SQL-u (bar kada su razne DB2 platforme u pitanju), ali jeosnovna prednost aplikativnog SQL-a u tome ˇto moˇe da koristi statiˇki SQL i ˇto s z c sje u znaˇajnoj meri standardizovan pa se moˇe koristiti (u manjoj ili ve´oj meri) i c z c ˇmedu razliˇitim SUBP-platformama. c U sluˇaju da aplikacija zahteva prednosti oba mehanizma (DB2 CLI i aplika- ctivnog SQL-a), mogu´e je koristiti statiˇki SQL unutar DB2 CLI aplikacije kreira- c cnjem zapam´enih procedura napisanih na statiˇkom SQL-u. Zapam´ena procedura c c c
  • 101. 94 3 Upitni jezik SQLse poziva iz DB2 CLI aplikacije i izvrˇava se na serveru. Jednom napisanu za- spam´enu proceduru moˇe da pozove bilo koja DB2 CLI ili ODBC aplikacija. Naime, c zaplikacija moˇe biti projektovana tako da se izvrˇava u dva dela – jedan na klijentu z sa drugi na serveru. Zapam´ena procedura je deo koji se izvrˇava na serveru, a c smoˇe biti napisana i koriˇ´enjem DB2 CLI funkcija. Zapam´ene procedure imaju z sc cniz prednosti, od smanjenja mreˇnog saobra´aja pri prenosu podataka do koncepta z cuˇaurenja (v. A) koji pove´ava bezbednost podataka. O konceptu i implementaciji c cdirektnih poziva DB2 funkcija, ODBC standarda i zapam´enih procedura u sistemu cDB2 moˇe se viˇe detalja na´i u priruˇniku [?]. z s c c SQL kakav je opisan u prethodnim odeljcima odnosi se na interaktivni vidizvrˇavanja – tzv. interaktivni SQL. U ovom i slede´em odeljku bi´e opisan ap- s c clikativni SQL i to statiˇki i dinamiˇki SQL, redom. c c Potreba za umetanjem SQL-a u viˇi programski jezik javlja se zbog odsustva skontrolnih struktura u upitnom jeziku, ˇesto neophodnih pri obradi podataka iz cbaze podataka. Umetanjem (tzv. ugnjeˇdenjem) SQL-a u viˇi programski jezik z s(tzv. matiˇni jezik – engl. host language), kao ˇto su C, FORTRAN, COBOL, c sPL/I, Pascal, Ada ili Assembler, dobija se aplikativni SQL, na kome se mogu pisatikompleksni programi (aplikacije) za najraznovrsnije obrade. Osnovni princip svihaplikativnih SQL jezika je princip dualnosti, prema kome se svaki interaktivni SQLiskaz moˇe izraziti i u aplikativnom SQL-u, ali obratno ne vaˇi (ˇto i opravdava z z s ˇovakva umetanja). Svaki program na aplikativnom SQL-u obraduje se u neko-liko faza; o njima ´e biti reˇi u odeljku 18.1.4 – Priprema i izvrˇenje aplikativnog c c sprograma. Izvrˇavanje SQL upita (interaktivnog ili aplikativnog) proizvodi uvek tabelu, skoja u opˇtem sluˇaju sadrˇi ve´i broj redova. U sluˇaju aplikativnog SQL-a, u s c z c ckome se rezultat izvrˇavanja upita predaje programu na dalju obradu, ta skupovna spriroda rezultata SQL upita je u suprotnosti sa “slogovnom” prirodom program- ˇskih jezika (oni mogu da obraduju samo po jedan slog, red ili podatak u jednom ˇtrenutku). Mehanizam kojim se premoˇ´uje ova razlika izmedu programske i upitne sc(slogovne i skupovne) komponente aplikativnog SQL-a zove se kursor. Kursor jeoblik pokazivaˇa na vrstu u rezultuju´oj tabeli, koji moˇe da prelazi preko svake c c zvrste, ostvaruju´i njihovu programsku obradu jednu po jednu. Ukoliko rezultat cizvrˇavanja upita jeste tabela sa jednom vrstom, kursor nije potreban; tada se u sSELECT iskaz uvodi joˇ jedan red (INTO linija) kojim se navodi u koje se pro- sgramske promenljive (ili u koju se programsku strukturu) smeˇtaju komponente sjedine vrste tabele – rezultata. Neke od osnovnih karakteristika ugnjeˇdenja SQL-a u matiˇni jezik su: z c 1. Svaki umetnuti SQL iskaz poˇinje rezervisanim prefiksom EXEC SQL koji c omogu´uje prekompilator lakˇe razlikovanje SQL iskaza od iskaza matiˇnog c s c jezika.
  • 102. 3.4 Aplikativni SQL 95 2. SQL iskaz moˇe da ukljuˇi matiˇne promenljive (promenljive matiˇnog jezika) z c c c tako ˇto im dodeljuje vrednost, ili tako ˇto njihovu vrednost upisuje u bazu. s s Svaka matiˇna promenljiva (ili struktura) koja se koristi u SQL iskazu mora c biti deklarisana pre koriˇ´enja; deklarisanje se vrˇi u okviru posebne sekcije sc s koja poˇinje deklarativnim iskazom c EXEC SQL BEGIN DECLARE SECTION a zavrˇava se deklarativnim iskazom s EXEC SQL END DECLARE SECTION Ovakvih sekcija moˇe biti viˇe u programu. z s 3. Obra´anju matiˇnoj promenljivoj u okviru SQL iskaza prethodi dvotaˇka, c c c koja razlikuje tu promenljivu od imena atributa SQL-a. Matiˇna promenljiva se moˇe na´i bilo gde u SQL iskazu gde moˇe i konstanta, c z c z kao i u INTO liniji, pri ˇemu mora da se uskladi tip matiˇne promenljive c c i odgovaraju´eg atributa sa kojim se poredi, ili kojoj se vrednost atributa c dodeljuje. Matiˇna promenljiva i atribut mogu imati isto ime. Na primer, c EXEC SQL SELECT NASLOV, OBLAST INTO :KNJIGA, :OBLAST FROM K WHERE K SIF = :DATI K SIF Kako je atribut K SIF primarni kljuˇ, rezultat prethodnog upita je samo jedna c n-torka, tj. tabela sa jednom vrstom ˇije se vrednosti atributa NASLOV, c OBLAST upisuju, redom, u programske promenljive KNJIGA, OBLAST. U sluˇaju da je vrednost atributa OBLAST u n-torci iz prethodnog primera c bila NULL, doˇlo bi do greˇke pri izvrˇenju SELECT iskaza, jer programska s s s promenljiva OBLAST ne moˇe da primi NULL vrednost. Zato se uz matiˇne z c promenljive uvode indikatorske promenljive koje “amortizuju” ovu nesaglas- nost tipa matiˇne promenljive i NULL vrednosti atributa. Sada je obra´anje c c matiˇnoj promenljivoj oblika :V1:V2,8 gde je V1 – matiˇna promenljiva, a V2 c c – indikatorska promenljiva. U sluˇaju SELECT – INTO iskaza, ako je vred- c nost atributa u SELECT liniji NULL, vrednost matiˇne promenljive V1 se c ne´e promeniti, a indikatorska promenljiva V2 ´e dobiti negativnu vrednost. c c Prethodni SELECT iskaz bi, uz koriˇ´enje indikatorske promenljive, imao sc oblik: 8 Puno obra´anje je oblika :V1 INDICATOR :V2. c
  • 103. 96 3 Upitni jezik SQL EXEC SQL SELECT NASLOV, OBLAST INTO :KNJIGA, :OBLAST:O1 FROM K WHERE K SIF = :DATI K SIF U ovom sluˇaju ne dolazi do greˇke u izvrˇenju SELECT iskaza, ˇak i ako c s s c atribut OBLAST ima vrednost NULL. Za matiˇnu promenljivu KNJIGA nije c potrebno uvoditi indikatorsku promenljivu jer se promenljivoj KNJIGA do- deljuje vrednost atributa NASLOV koji je definisan opcijom NOT NULL WITH DEFAULT; ovaj atribut ne uzima NULL vrednost (eventualno po- drazumevanu vrednost – belinu). 4. Program koji sadrˇi izvrˇne SQL iskaze komunicira sa sistemom DB2 preko z s memorijskog prostora koji se zove SQL prostor za komunikaciju (engl. SQL Communication Area, SQLCA). SQLCA je struktura koja se aˇurira posle z izvrˇenja svakog SQL iskaza. U ovu strukturu upisuju se informacije o s izvrˇenom SQL iskazu.9 s Najˇeˇ´e koriˇ´ena promenljiva SQLCA strukture je SQLCODE. To je indika- c sc sc tor uspeˇnosti izvrˇenja SQL iskaza, koji moˇe da dobije slede´e vrednosti: s s z c s s ˇ – 0, ako je izvrˇenje uspeˇno (u prethodnom primeru – ako je nadena taˇno c jedna vrsta u rezultuju´oj tabeli), c – pozitivnu vrednost, ako se pri uspeˇnom izvrˇenju dogodilo neˇto s s s izuzetno (npr. +100 ako je rezultuju´a tabela prazna), c – negativnu vrednost, ako se zbog nastale greˇke iskaz nije izvrˇio uspeˇno. s s s SQLCA prostor se u program ukljuˇuje iskazom c EXEC SQL INCLUDE SQLCA koji mora da se navede pre prvog izvrˇnog SQL iskaza. s Provera statusa izvrˇenja SQL iskaza, saˇuvanog u promenljivoj SQLCODE, s c zadaje se direktivom prekompilatoru da umetne odgovaraju´e IF – THEN c iskaze u program. Direktiva je deklarativni iskaz oblika EXEC SQL WHENEVER uslov akcija uslov moˇe biti: z ˇ – NOT FOUND (nije naden – drugi zapis za SQLCODE = 100), 9 I program za interaktivno izvrˇenje SQL iskaza komunicira sa sistemom DB2 preko SQLCA. sTako se i pri interaktivnom izvrˇenju SQL iskaza, razmatranom u prethodnim odeljcima, u SQLCA supisuju informacije o izvrˇenju tih iskaza. s
  • 104. 3.4 Aplikativni SQL 97 – SQLERROR (indikator greˇke – drugi zapis za SQLCODE 0) ili s – SQLWARNING (indikator upozorenja – drugi zapis za SQLCODE 0 AND SQLCODE 100); akcija je – CONTINUE – program nastavlja sa izvrˇenjem ili s – GOTO obeleˇje – skok na deo programa u kome se nastavlja obrada, z npr. izveˇtavanje o uzroku nastalog uslova. s Dakle, deklarativni iskaz WHENEVER omogu´uje programeru da zada naˇin c c na koji ´e se proveravati SQLCODE posle svakog izvrˇnog SQL iskaza. c s Ovakvih iskaza moˇe biti ve´i broj u programu. Svaki WHENEVER iskaz z c odnosi se na sve SQL iskaze (u redosledu njihovog zapisa, ne izvrˇenja) do s ˇ navodenja slede´eg WHENEVER iskaza. c Na primer, iskaz oblika EXEC SQL WHENEVER SQLERROR CONTINUE obezbedi´e nastavak izvrˇenja programa i u sluˇaju da je pri izvrˇavanju SQL c s c s iskaza doˇlo do greˇke. To znaˇi da program ne´e imati prinudni zavrˇetak, s s c c s ali, sa druge strane, to obavezuje programera da posle svakog SQL iskaza u programu eksplicitno ispituje vrednost promenljive SQLCODE; u sluˇaju c s s ˇ greˇke kontrolu upravljanja treba preneti na deo kojim se greˇka obraduje. Osim promenljive SQLCODE, SQLCA struktura ukljuˇuje i ve´i broj drugih c c ˇ promenljivih. Najvaˇnija medu njima je promenljiva SQLSTATE tipa z CHAR[5] koja sliˇno promenljivoj SQLCODE sadrˇi kˆd rezultata izvrˇavanja c z o s SQL iskaza (npr. prva dva karaktera ’01’ promenljive SQLSTATE predstavl- jaju grupu kodova – upozorenja i ukazuju, sliˇno SQLCODE0, da je doˇlo c s do pojave koja rezultuje upozorenjem). Tako, uslov NOT FOUND u direktivi WHENEVER predstavlja, u stvari, disjunkciju uslova vrednosti promenljivih SQLCODE i SQLSTATE: SQLCODE=100 OR SQLSTATE=’02000’. Medu ˇ ostalim zanimljivijim promenljivim SQLCA strukture je niz celih brojeva SQLERRD[6] koji se odnosi na razne vrste informacija o nastaloj greˇci ili s rezultatu izvrˇavanja SQL iskaza, kao i skup CHAR(1) promenljivih SQL- s WARN0 – SQLWARN10 koje sadrˇe informacije o uzroku upozorenja. Znaˇe- z c nje nekih od ovih elemenata SQLCA strukture je slede´e (opis kompletne c SQLCA strukture moˇe se na´i u [37]): z c z ˇ – SQLERRD[3] sadrˇi broj vrsta obradenih (unetih, aˇuriranih ili izbrisa- z nih) izvrˇavanjem poslednjeg INSERT, UPDATE ili DELETE iskaza s (ne raˇunaju se vrste izbrisane kao posledica kaskadnog brisanja; v. c prethodni odeljak);
  • 105. 98 3 Upitni jezik SQL – SQLERRD[5] sadrˇi ukupan broj izbrisanih, unetih ili aˇuriranih vrsta, z z direktno ili indirektno, izvrˇavanjem odgovaraju´eg iskaza; s c – SQLwarn0 sadrˇi ’W’ ako bar jedna od preostalih SQLwarni promen- z ljivih sadrˇi upozorenje (’W’); tako uslov SQLWARNING u direktivi z WHENEVER predstavlja disjunkciju uslova (SQLCODE 0 AND SQL- CODE 100 ) OR SQLWARN0 = ’W’; – SQLWARN1 sadrˇi ’W’ ako je pri dodeli promenljivoj matiˇnog jezika z c odeseˇena vrednost kolone tipa niske znakova (CHAR(m)); c – SQLWARN2 sadrˇi ’W’ ako je doˇlo do eliminacije NULL vrednosti pri z s primeni agregatne funkcije. 5. Ugnjeˇdeni SQL, pored izvrˇnih SQL iskaza (koje sadrˇi i interaktivni SQL), z s z sadrˇi i deklarativne SQL iskaze. Takav je, npr. iskaz EXEC SQL DECLARE z s c z ˇ CURSOR koji se ne izvrˇava, ve´ pomaˇe prekompilatoru u izvodenju sintak- snih provera. Deklarativni SQL iskazi se piˇu u delu programa predvidenom s ˇ za deklaracije matiˇnog jezika (npr. na poˇetku programa), dok se izvrˇni c c s SQL iskazi mogu navesti na bilo kom mestu u programu gde se mogu navesti i izvrˇni iskazi matiˇnog jezika. Svaki kursor koji se koristi u programu mora s c se prethodno deklarisati. Tako se slede´im deklarativnim iskazom moˇe uvesti c z kursor nad rezultatom navedenog upita: EXEC SQL DECLARE X CURSOR FOR SELECT I SIF, NAZIV, STATUS FROM I WHERE DRZAVA = :Y Ako ´e se kursor koristiti samo za ˇitanje vrsta tabele – rezultata izvrˇavanaja c c s SELECT iskaza, uz deklaraciju kursora moˇe se navesti i opcija FOR FETCH z ONLY (FOR READ ONLY). To omogu´uje racionalniji pristup podacima c ve´em broju korisnika jer sistem za upravljanje bazama podataka ”zna” da c ´e se podaci samo ˇitati i da ne zahtevaju ekskluzivan pristup. c c Ukoliko je potrebno aˇurirati neke kolone rezultata SELECT iskaza nad ko- z jim je deklarisan kursor, kursor se deklariˇe kao kursor za aˇuriranje nad s z navedenim kolonama, dodavanjem linije FOR UPDATE OF lista-kolona Tabela – rezultat SELECT iskaza nad kojim je deklarisan kursor ne moˇe z se aˇurirati (tj. kursor se ne moˇe deklarisati kao kursor za aˇuriranje) ako z z z SELECT iskaz ukljuˇuje neku od slede´ih konstrukcija: c c – DISTINCT opciju u spoljaˇnjoj SELECT liniji; s
  • 106. 3.4 Aplikativni SQL 99 – skupovnu (UNION, INTERSECT, EXCEPT) operaciju osim UNION ALL; – agregatnu funkciju u spoljaˇnjoj SELECT liniji; s – GROUP BY ili HAVING liniju u spoljaˇnjem SELECT iskazu; s – ORDER BY liniju; – podupit nad istom tabelom; – dve ili viˇe tabela u FROM liniji s – tabelu-pogled (u FROM liniji) koja se ne moˇe aˇurirati; z z – FOR FETCH ONLY (FOR READ ONLY) opciju. Ako se kursor koristi samo za pretraˇivanje vrsta rezultata SELECT iskaza, z z c ˇ vrste se mogu pretraˇivati u specifiˇnom redosledu navodenjem ORDER BY linije. Pre nego ˇto se prethodno deklarisanim kursorom moˇe “uzeti” (FETCH) po- s zjedina vrsta rezultuju´e tabele, i zatim izvrˇiti obrada te vrste, potrebno je nad c skursorom izvrˇiti operaciju otvaranja (OPEN). Time se upit kojim je deklarisan skursor izvrˇava, a pokazivaˇ vrste priprema za pozicioniranje na prvu vrstu rezul- s ctata. Po zavrˇenoj obradi i poslednje vrste vrˇi se operacija zatvaranja kursora s s(CLOSE). Na primer,EXEC SQL OPEN X; /* otvaranje kursora */WHILE (SQLCODE == 0) /* ima joˇ vrsta i FETCH se uspeˇno izvrˇava */ s s s { EXEC SQL FETCH X INTO :I SIF, :NAZIV, :STATUS; /* uzimanje sledece vrste */ ... }EXEC SQL CLOSE X Ovi iskazi se navode u proceduralnom delu programa. Otvaranjem kursora(OPEN X) SELECT iskaz iz deklaracije kursora se izvrˇava, a zatim se, iskazom sFETCH X, pretraˇuje jedna po jedna vrsta, redom, iz tabele koja je dobijena zizvrˇavanjem SELECT iskaza. Vrednosti komponenti pretraˇene vrste dodeljuju s zse programskim promenljivim I SIF, NAZIV, STATUS. I FETCH iskaz, kao i SE-LECT INTO, moˇe da ukljuˇi indikatorske promenljive gdegod je to potrebno, pa z cje prethodni primer FETCH iskaza bolje zapisati u obliku EXEC SQL FETCH X INTO :I SIF, :NAZIV, :STATUS:IND; FETCH iskaz je jedini iskaz kojim se moˇe pomerati kursor. Poˇto, u opˇtem z s ssluˇaju, rezultuju´a tabela sadrˇi ve´i broj vrsta, pretraˇivanje vrste iz rezultuju´e c c z c z ctabele obiˇno se stavlja u petlju (WHILE, na primer, u C-u). Petlja se ponavlja sve c
  • 107. 100 3 Upitni jezik SQLdok ima vrstˆ u rezultuju´oj tabeli. Po izlasku iz petlje kursor se zatvara (CLOSE a cX). Ako je kursor X u jednom trenutku pozicioniran na neku vrstu (“teku´a” vrsta ckursora X, u oznaci CURRENT OF X), ta vrsta moˇe se aˇurirati ili izbrisati, z ziskazima UPDATE ili DELETE – CURRENT OF X. Sintaksa tih iskaza ilustrovanaje slede´im primerom: c EXEC SQL UPDATE I SET STATUS = STATUS + :POVECANJE WHERE CURRENT OF X Jedan program moˇe imati ve´i broj deklaracija (razliˇitih) tabela i kursora. Na z c cprimer, pove´anje statusa (za 10%) svim izdavaˇima koji su izdali knjigu sa ˇifrom c c skoja se nalazi u programskoj promenljivoj “knjiga”, moˇe se izraziti programskom zstrukturom slede´eg oblika: c#include stdio.h#include stdlib.hEXEC SQL INCLUDE SQLCA;EXEC SQL BEGIN DECLARE SECTION; char knjiga[5]; char i[6]; char naziv[20]; short status; char drzava[20]; short n_ind, s_ind, d_ind;EXEC SQL END DECLARE SECTION;void greska(char *poruka){ . . . printf(SQL greska, SQLCODE = %i, %sn , SQLCODE, poruka); EXEC SQL ROLLBACK; exit(0);}main(){ EXEC SQL CONNECT to izdavastvo;
  • 108. 3.4 Aplikativni SQL 101 if (SQLCODE 0) greska( pri otvaranju konekcije); EXEC SQL DECLARE Z CURSOR FOR SELECT I SIF, NAZIV, STATUS, DRZAVA FROM I WHERE EXISTS (SELECT * FROM KI WHERE KI.I SIF = I.I SIF AND KI.K SIF = :knjiga) FOR UPDATE OF STATUS EXEC SQL WHENEVER NOT FOUND CONTINUE; EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL WHENEVER SQLWARNING CONTINUE; . . . EXEC SQL OPEN Z; if (SQLCODE 0) greska( pri otvaranju kursora Z); EXEC SQL FETCH Z INTO :i, :naziv:n_ind, :status:s_ind, :drzava:d_ind; if (SQLCODE == 100) greska( nema izdavaca koji su izdali datu knjigu); if (SQLCODE 0) greska( pri prvom uzimanju vrste o trazenom izdavacu); while(SQLCODE 100) { printf(naziv izdavaca je %s, naziv); EXEC SQL UPDATE I SET STATUS = STATUS * 1.1 WHERE CURRENT OF Z; if ((SQLCODE 0)) greska( pri azuriranju tekuceg izdavaca); EXEC SQL FETCH Z INTO :i, :naziv:n_ind, :status:s_ind, :drzava:d_ind; if ((SQLCODE 0) (SQLCODE 100)) greska( pri uzimanju (FETCH) sledeceg izdavaca); } EXEC SQL CLOSE Z; if (SQLCODE 0) greska( pri zatvaranju kursora Z); EXEC SQL COMMIT; if (SQLCODE 0) greska( pri operaciji COMMIT); EXEC SQL CONNECT RESET; if (SQLCODE 0) greska( pri zatvaranju konekcije);} Znaˇenje iskaza CONNECT i CONNECT RESET je uspostavljanje i zatvaranje ckonekcije sa bazom podataka (u ovom primeru ”izdavastvo”) koja je na serveru,
  • 109. 102 3 Upitni jezik SQLu sluˇaju klijent/server RSUBP (v. 18). Pre pripreme i izvrˇenja ovog programa c sneophodno je da je takva baza kreirana. Znaˇenje iskaza COMMIT je da se, u sluˇaju uspeˇnog izvrˇenja jednog ili viˇe c c s s sSQL iskaza, promene koje ti iskazi prouzrokuju i koje su privremenog karaktera,trajno upiˇu u bazu. Znaˇenje iskaza ROLLBACK je da se, u sluˇaju greˇke s c c su nekom koraku izvrˇavanja jednog ili viˇe SQL iskaza, sve privremene promene s sponiˇte. Greˇka u izvrˇenju moˇe da nastane, na primer, zbog uslova prekoraˇenja. s s s z cProgram moˇe zatim normalno da zavrˇi sa radom, kao u prethodnom primeru z s(exit(0)) u kome moduo greska obavlja i funkciju ROLLBACK-a, ili moˇe da znastavi sa izvrˇenjem slede´e grupe svojih iskaza – slede´e transakcije (v. deo ?? – s c cUpravljanje transakcijama). Izvrˇavanjem COMMIT odnosno ROLLBACK iskaza szatvaraju se i svi otvoreni kursori.
  • 110. 3.5 Dinamiˇki SQL c 1033.5 Dinamiˇki SQL cKao ˇto je naglaˇeno u prethodnom odeljku, svaki ugnjeˇdeni statiˇki SQL iskaz u s s z c ˇfazi prekompilacije sasvim je precizno odreden u smislu da je poznat njegov tip (npr.SELECT, UPDATE, INSERT), i da su poznata imena tabela i kolona koje u njemuuˇestvuju; SQL iskaz se zamenjuje pozivom (u matiˇnom jeziku) odgovaraju´e CLI c c cprocedure, ali se izvrˇavanjem programa taj poziv (pa dakle i sˆm SQL iskaz) ne s amenja. Za razliku od ovog, statiˇkog SQL-a, u dinamiˇkom SQL-u iskazi nisu poznati c cu vreme pisanja aplikativnog programa i preciziraju se tek u fazi izvrˇavanja pro- sgrama. Takvi SQL iskazi, umesto da se eksplicitno navode u programu, zadajuse u obliku niske znakova koja se dodeljuje matiˇnoj promenljivoj. SQL iskaz c ˇse tada izgraduje na osnovu podataka programa (npr. vrednost odgovaraju´e cmatiˇne promenljive moˇe da se dobije preko terminala). Kako vrednost matiˇne c z cpromenljive moˇe da se menja u toku izvrˇavanja programa, to i SQL iskaz dodeljen z s c ˇtoj matiˇnoj promenljivoj takode moˇe da se menja u toku izvrˇavanja programa. z s Da bi dinamiˇki SQL iskaz mogao da se izvrˇi, potrebno je pripremiti ga za c sizvrˇenje ugnjeˇdenim (statiˇkim) iskazom PREPARE. Zatim se dinamiˇki iskaz s z c cmoˇe izvrˇiti ugnjeˇdenim (statiˇkim) iskazom EXECUTE. z s z cPrimer 3.52 Neka je V1 matiˇna promenljiva tipa niske znakova, koja je u pro- cgramu dobila vrednost – nisku znakova nekog izvrˇnog SQL iskaza. Tada iskaz s EXEC SQL PREPARE S1 FROM :V1kreira izvrˇni SQL iskaz ˇije je ime S1, od niske znakova kojom je iskaz zadat u s cmatiˇnoj promenljivoj V1. Posle provere uspeˇnosti izvrˇenja PREPARE iskaza c s smoˇe se ve´i broj puta izvrˇiti EXECUTE iskaz oblika z c s EXEC SQL EXECUTE S1 Dinamiˇki se mogu pripremiti i izvrˇiti samo izvrˇni SQL iskazi, i to najve´i deo c s s cnjih (ne svi). Neki od tih iskaza su: ALTER, COMMIT, CREATE, DELETE,DROP, INSERT, ROLLBACK, SELECT, SET, UPDATE. Potpuna lista ovihiskaza moˇe se na´i u [37]. z c Mogu´e je koristiti i ugnjeˇdeni (statiˇki) iskaz EXECUTE IMMEDIATE da bi c z cse u jednom koraku pripremio i izvrˇio dinamiˇki SQL iskaz (primenjuje se obiˇno s c ckada je dinamiˇki SQL iskaz potrebno izvrˇiti samo jedanput). c sPrimer 3.53 Ako vrednost matiˇne promenljive V1 jeste niska znakova “DELETE cFROM KI WHERE K SIF = ’k1’ ”, onda iskaz EXEC SQL EXECUTE IMMEDIATE :V1
  • 111. 104 3 Upitni jezik SQLizvrˇava DELETE iskaz nad tabelom KI, pri ˇemu se briˇu sva izdanja knjige sa s c sˇifrom k1.s Dinamiˇki SQL iskaz ne sme da sadrˇi obra´anja matiˇnim promenljivim. c z c cUmesto toga mogu se koristiti oznake parametara. Oznaka parametra je znakpitanja (?) i navodi se na mestu na kome bi se navela matiˇna promenljiva kada bi ciskaz bio statiˇki. U vreme izvrˇavanja pripremljenog SQL iskaza, oznake parame- c stara se zamenjuju teku´im vrednostima matiˇnih promenljivih (ili strukture) koje c cse navode u EXECUTE iskazu.Primer 3.54 Ako je vrednost matiˇne promenljive V1 niska znakova “INSERT cINTO K VALUES (?, ?, ?)”, posle izvrˇenja iskaza s EXEC SQL PREPARE K INSERT FROM :V1moˇe se izvrˇiti iskaz z s EXEC SQL EXECUTE K INSERT USING :KSIFRA, :KNASLOV, :KOBLASTKSIFRA, KNASLOV i KOBLAST su matiˇne promenljive (tipa CHAR(5), cCHAR(50), CHAR(20), redom) koje odgovaraju shemi tabele K, tj. atributimaK SIF, NASLOV, OBLAST, redom. Kada se, koriˇ´enjem EXECUTE ili EXECUTE IMMEDIATE iskaza, izvrˇi neki sc sdinamiˇki SQL iskaz, uspeˇnost izvrˇenja tog dinamiˇkog SQL iskaza registruje se c s s cu promenljivoj SQLCODE prostora SQLCA, i moˇe se ispitivati na isti naˇin kao z ci u statiˇkom SQL-u. c ˇ Medu izvrˇnim SQL iskazima koji ne mogu da se izvrˇavaju dinamiˇki nalaze s s cse, na primer, i slede´i iskazi: c CLOSE FETCH DECLARE OPEN EXECUTE PREPARE EXECUTE IMMEDIATE WHENEVER Dinamiˇki pripremljeni SELECT iskaz se moˇe izvrˇiti koriˇ´enjem kursora, c z s sctako ˇto se izvrˇe slede´i koraci (u sluˇaju fiksne liste atributa): s s c c 1. priprema iskaza 2. deklarisanje kursora nad imenom iskaza 3. otvaranje kursora 4. uzimanje vrsta iz rezultuju´e tabele c
  • 112. 3.6 Autorizacija i prava korisnika baze podataka 105 5. zatvaranje kursora.Primer 3.55 Neka program pretraˇuje ˇifre knjiga i ˇifre izdavaˇa iz tabele KI, z s s cdinamiˇkim izvrˇavanjem SELECT iskaza oblika c s SELECT K SIF, I SIF FROM KI WHERE ...Iskaz se ˇita sa terminala, pri ˇemu korisnik zadaje WHERE liniju. Neka je iskaz do- c cdeljen matiˇnoj promenljivoj tipa niske znakova, KI NISKA. Izvrˇenje dinamiˇkog c s ciskaza realizova´e se izvrˇenjem slede´ih statiˇkih iskaza: c s c c 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; Dinamiˇki SQL nudi potpunu fleksibilnost programiranja. U kompleksnom pro- cgramu koji treba da izvrˇava razliˇite tipove i strukture SQL iskaza, teˇko je (ili s c sˇak nemogu´e) modelirati sve te iskaze. Tada je pogodno koristiti dinamiˇki SQL.c c cTakav program je svaki program za interaktivno izvrˇavanje SQL iskaza koji moˇe s zda prihvati i izvrˇi gotovo svaki SQL iskaz. Cena ove fleksibilnosti je dodatna ssloˇenost programiranja, kao i smanjena brzina izvrˇavanja programa. Posebno je z ssloˇeno dinamiˇko izvrˇavanje SQL SELECT iskaza koji ima promenljivu SELECT z c slistu ([38]).3.6 Autorizacija i prava korisnika baze podatakaDa bi baza podataka mogla bezbedno i efikasno da se koristi, svaki korisnik moraimati autorizaciju (engl. authorization) za pristup sistemu za upravljanje bazamapodataka, tj. svakom korisniku mora da bude dodeljeno korisniˇko ime kojim se cpredstavlja tom sistemu. Pored ovog, prvog nivoa sigurnosti baze, SUBP obiˇno podrˇava i viˇe nivoe c z sbezbednosti. Na primer, razliˇitim korisnicima ili grupama korisnika moˇe se c zomogu´iti da obavljaju razliˇite opˇte zadatke nad bazama podataka, kao ˇto su c c s s
  • 113. 106 3 Upitni jezik SQLpovezivanja sa bazom, kreiranje tabela ili administriranje sistema. Za korisnikese tada kaˇe da se razlikuju po nivoima autorizacije. S druge strane, razliˇitim z ckorisnicima ili grupama korisnika mogu se dodeliti razliˇita prava (engl. privile- cgies) pristupa i izvrˇenja specifiˇnih operacija nad specifiˇnim objektima u bazi. s c cNa primer, da bi jedan korisnik mogao da menja podatke u nekoj tabeli, on moraimati pravo (dodeljeno eksplicitno ili implicitno) za promenu podataka u toj tabeli.Upravljanje autorizacijom i pravima je jedna od funkcija SUBP. Sistem autorizacije i prava pristupa i manipulisanja objektima predstavlja hi-jerarhiju. Autorizacija viˇeg nivoa ukljuˇuje mogu´nosti autorizacije niˇeg nivoa, s c c zdok neka prava ukljuˇuju skup drugih prava; na primer, pravo aˇuriranja ukljuˇuje c z c ˇi pravo ˇitanja podataka. Postoji i veza izmedu nivoa autorizacije i prava kojima craspolaˇe korisnik sa tim nivoom autorizacije. z Nivo autorizacije dodeljuje se korisniku eksplicitno. Pravo (ili skup prava) na ˇodredenom objektu baze podataka korisniku se moˇe dodeliti eksplicitno ili implic- zitno. Za eksplicitnu dodelu koristi se SQL iskaz GRANT ˇija je sintaksa oblika c 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 omogu´ilo da to cpravo prenese na tre´eg korisnika (”prenosivo pravo”), ono se mora dodeliti GRANT ciskazom sa opcijom WITH GRANT OPTION. Na primer, korisniku STUDENTmogu se dodeliti prava ˇitanja i unosa u tabelu tabela, sa pravom da ta prava cprenese, iskazom GRANT SELECT, INSERT ON tabela TO USER STUDENT WITH GRANT OPTION Implicitno se dodela prava grupi korisnika vrˇi dodelom nivoa autorizacije (npr. skorisnik sa najviˇim nivoom autorizacije ima sva prava nad svim objektima baza), sizvrˇavanjem nekih operacija (npr. operacija kreiranja baze podataka obezbedu- s ˇje svim korisnicima prava povezivanja na tu bazu i kreiranja tabela u njoj), ili ˇizvodenjem iz opˇtijeg prava (na primer, pravo aˇuriranja objekta implicira pravo s zˇitanja vrednosti objekta).c Prethodno dodeljeno (implicitno ili eksplicitno) pravo nad pojedinim tipovimaobjekata u bazi podataka moˇe se oduzeti korisniku SQL iskazom REVOKE oblika z REVOKE lista-prava ON objekat FROM lista-korisnika. Na primer, REVOKE SELECT, INSERT ON tabela FROM STUDENT
  • 114. 3.6 Autorizacija i prava korisnika baze podataka 107 U sistemu DB2 postoje dva nivoa autorizacije upravljanja bazama podatakai dva nivoa autorizacije sistemske kontrole (v. sliku 3.1). Autorizacija upravl-janja podacima ima odgovornost za bezbednost i integritet podataka. Najviˇi snivo autorizacije celokupnog sistema jeste autorizacija za administriranje SUBP ˇ(SYSADM) koja obezbeduje kontrolu nad svim resursima (alatima i objektima)upravljaˇa bazama podataka, i ukljuˇuje sva niˇe nivoe autorizacije – DBADM, c c zSYSCTRL, SYSMAINT, kao i pravo da dodeli ili oduzme DBADM autorizaciju. Drugi nivo autorizacije upravljanja bazama podataka (DBADM) vezan je zaadministriranje specifiˇne baze podataka. On ukljuˇuje prava kreiranja objekata, c cizdavanja SQL komandi i pristup podacima u svakoj tabeli. Ovaj nivo autorizacijeukljuˇuje pravo dodele ili oduzimanja najopˇtijeg prava nad specifiˇnim objektom c s c(CONTROL prava) kao i pojedinaˇnih prava. c Autorizacija nivoa sistemske kontrole odnosi se samo na operacije koje se tiˇu csistemskih resursa i ne dopuˇta direktan pristup podacima. Najviˇi nivo sistemske s skontrole (SYSCTRL) omogu´uje prava kreiranja, aˇuriranja i uklanjanja baze po- c zdataka odnosno prostora tabela. Drugi nivo sistemske kontrole – nivo odrˇavanja zsistema (SYSMAINT), ukljuˇuje prava odrˇavanja baze podataka – aˇuriranje kon- c z zfiguracije baze podataka, pravljenje sigurnosnih kopija baze podataka ili prostoratabela, restauraciju i pra´enje postoje´e baze podataka. c c U hijerarhiji prava, najviˇi nivo pripada CONTROL pravu nad objektom baze spodataka koje ukljuˇuje punu kontrolu nad tim objektom, kao i pravo dodele c(GRANT) i oduzimanja (REVOKE) svih prava (osim CONTROL) nad tim ob-jektom drugim korisnicima. Na primer, kreiranjem tabele odnosno pogleda stiˇe se cautomatski CONTROL pravo nad tom tabelom, kao i nad pogledom ako se pose-duje CONTROL pravo nad svim tabelama i pogledima nad kojima je taj pogleddefinisan. U sistemu DB2, iskazom GRANT mogu se dodeliti, kako prava, tako i nivoiautorizacije. Tako, nivo autorizacije DBADM moˇe dodeliti samo korisnik sa zSYSADM autorizacijiom. Za dodelu ostalih nivoa autorizacije potrebno je da ko-risnik ima neku od autorizacija administriranja SUBP. Ako je objekat u sintaksiGRANT iskaza – baza podataka (DATABASE), mogu´a prava vezana su za bazu u ccelini (npr. CONNECT za povezivanje na bazu, CREATETAB za kreiranje tabelau bazi, itd.), inaˇe, ako je objekat – neki objekat baze podataka (npr. tabela, cpogled, shema, indeks, itd.), lista prava koja se mogu nad tim objektom dodelitikorisnicima zavisi od vrste objekta (v. [?]). Dodeljeno pravo je ”prenosivo” (opci-jom WITH GRANT OPTION) u sistemu DB2 samo za neke vrste objekata (npr.sheme, tabele, poglede). Lista-korisnika moˇe biti lista pojedinaˇnih korisnika (USER sa navedenim z cimenima), grˆpa korisnika (GROUP sa navedenim imenom grupe) ili svih koris- unika (PUBLIC). Na primer, GRANT UPDATE ON TABLE I TO PUBLIC
  • 115. 108 3 Upitni jezik SQL SYSADM (administrator sistema) DBADM SYSCTRL (administrator) (administrator baze podataka) sistemskih resursa) SYSMAINT (administrator odrˇavanja sistema) zKorisnici baza podataka sa pravima Slika 3.1: Hijerarhija nivoa autorizacije i pravasvim korisnicima daje pravo aˇuriranja tabele I u teku´oj bazi podataka. Ovaj z ciskaz moˇe da izvrˇi korisnik koji ima bar DBADM autorizaciju, CONTROL pravo z snad tabelom I, ili mu je pravo UPDATE nad tabelom I dodeljeno uz opciju WITHGRANT OPTION.3.7 Pitanja i zadaci 1. Kako se mogu klasifikovati relacioni upitni jezici? 2. Koji su jezici prethodili SQL-u i ˇta ih karakteriˇe? s s 3. Navesti iskaze za manipulisanje podacima u SQL-u. 4. Definisati slede´e pojmove SQL-a: c
  • 116. 3.7 Pitanja i zadaci 109 jednostavni upitni blok operator grupisanja puni upitni blok interaktivni SQL SELECT iskaz aplikativni SQL podupit statiˇki SQL c korelisani podupit dinamiˇki SQL c agregatna funkcija kursor 5. Dokazati relacionu kompletnost SQL-a. 6. Iskazima SQL-a formulisati upite iz zadatka 10 glave 2. 7. Iskazima SQL-a formulisati slede´e upite: c • Na´i ukupni broj knjiga koje izdaje izdavaˇ sa ˇifrom i1. c c s • Na´i ukupni tiraˇ knjige sa ˇifrom k6. c z s • Na´i ukupni tiraˇ knjiga ˇiji je jedan od autora pisac sa ˇifrom p2. c z c s • Za svaku knjigu koju izdaje neki izdavaˇ na´i ˇifru knjige, ˇifru izdavaˇa c c s s c i odgovaraju´i ukupni tiraˇ. c z • Na´i ˇifre knjiga koje je izdao samo izdavaˇ sa ˇifrom i1. c s c s • Na´i ˇifre autora knjiga koje su izdali svi izdavaˇi. c s c • Na´i ˇifre izdavaˇa koji izdaju knjigu sa ˇifrom k6 u izdanjima ˇiji je c s c s c proseˇni tiraˇ manji od najmanjeg tiraˇa izdavaˇa i1. c z z c 8. Navesti primere iskaza unoˇenja, brisanja i aˇuriranja koji se korektno s z izvrˇavaju, i onih ˇije izvrˇenje sistem odbija. Objasniti. s c s 9. Iskazima SQL-a formulisati slede´e zahteve: c • Pove´ati tiraˇ svim izdanjima izdavaˇa ’Prosveta’ za 10%. c z c • Iz izdavaˇke baze podataka izbrisati sve podatke o knjizi koja nije izdata. c • U tabelu I uneti podatke o izdavaˇu sa ˇifrom i10 ˇiji status joˇ nije c s c s poznat. 10. Koje su osnovne karakteristike aplikativnog SQL-a? ˇ 11. Sta su kursori i koje se operacije nad kursorima mogu izvrˇavati? s 12. Navesti mogu´e vrednosti promenljive SQLCODE i objasniti njihovo znaˇenje. c c 13. Napisati program na aplikativnom SQL-u umetnutom u programski jezik C, koji ˇtampa sve podatke o izdavaˇima u rastu´em poretku njihovih naziva. s c c Uz svakog izdavaˇa program treba da ˇtampa i sve podatke o knjigama koje c s taj izdavaˇ izdaje, u rastu´em poretku naslova knjiga. c c 14. Definisati slede´e pojmove: c
  • 117. 110 3 Upitni jezik SQL statiˇki SQL c oznaka parametra dinamiˇki SQL c autorizacija PREPARE iskaz nivo autorizacije EXECUTE iskaz pravo pristupa podacima EXECUTE IMMEDIATE iskaz prenosivo pravo 15. Da li su iskazi PREPARE i EXECUTE dinamiˇki ili statiˇki? c c 16. Koji se iskazi SQL-a mogu dinamiˇki izvrˇavati, a koji ne mogu? Navesti c s primere. 17. Navesti primer izvrˇavanja dinamiˇkog SELECT iskaza pomo´u kursora. s c c 18. Koje prednosti a koje nedostatke ima dinamiˇki SQL? c 19. Koji su nivoi autorizacije u sistemu DB2? 20. Kakav je odnos nivoa autorizacije i skupa prava? 21. Opisati strukturu i semantiku GRANT i REVOKE iskaza 22. Navesti primer iskaza dodele prenosivog prava aˇuriranja tabele svim koris- z nicima.
  • 118. 4PoglediU ovoj glavi bi´e predstavljene virtuelne relacije (tabele) – pogledi, u obliku u ckome je njihovo definisanje i manipulisanje njima podrˇano u SQL standardima i zaktuelnim implementacijama SQL-a. Jedan novi pristup pogledima, koji razreˇavasmnoge nelogiˇnosti u njihovom tretmanu u SQL-u, bi´e prikazan u poslednjem c codeljku ove glave ([27]).4.1 Definisanje pogleda4.1.1 Kreiranje pogledaPogledi su virtuelne tabele koje nemaju odgovaraju´u fiziˇku reprezentaciju, ve´ je c c cnjihova definicija, u terminima drugih tabela, zapam´ena u sistemskom katalogu. c Iskaz za kreiranje pogleda u SQL-u ima slede´i osnovni oblik: c CREATE VIEW pogled [( kolona{,kolona})] AS podupit [WITH CHECK OPTION]Na primer, CREATE VIEW IJUG AS SELECT I SIF, STATUS, DRZAVA FROM I WHERE DRZAVA = ’Jugoslavija’ Kada se izvrˇi ovaj CREATE iskaz, podupit SELECT... se ne izvrˇava, ve´ se s s csamo struktura upita saˇuva u katalogu. c Pogled IJUG je “prozor”, i to dinamiˇki, na tabelu I. Izmene nad pogledom cIJUG automatski se odraˇavaju na baznu tabelu I, a izmene nad baznom tabelom I zautomatski se projektuju na pogled IJUG, pod uslovom da se odnose na deo tabele I 111
  • 119. 112 4 Pogledinad kojim je pogled IJUG definisan, tj. pod uslovom da se izmene odnose na ˇifru, sstatus ili drˇavu jugoslovenskog izdavaˇa. Svaki upit pretraˇivanja ili aˇuriranja z c z znad pogledom IJUG sistem konvertuje u ekvivalentni upit nad baznom tabelom I.Na primer, iskaz SELECT * FROM IJUG WHERE STATUS 20SQL kompilator konvertuje u ekvivalentni iskaz nad tabelom I: SELECT I SIF, STATUS, DRZAVA FROM I WHERE STATUS 20 AND DRZAVA = ’Jugoslavija’ Konverzija se vrˇi zdruˇivanjem SELECT iskaza koji zadaje korisnik i SELECT s ziskaza zapam´enog u katalogu pri definisanju pogleda. Iz kataloga se zakljuˇuje c cda FROM IJUG zapravo znaˇi FROM I, da se svaki izbor iz IJUG mora dodatno c ˇkvalifikovati poredenjem DRZAVA = ’Jugoslavija’ u logiˇkom izrazu WHERE linije, ca da SELECT ∗ znaˇi SELECT I SIF, STATUS, DRZAVA. c Sliˇno bi se izvrˇio i iskaz unoˇenja, brisanja ili aˇuriranja nad tabelom – pogle- c s s zdom IJUG. Podupit u CREATE VIEW iskazu je puni upitni blok (v. 3.3.9) a ne SELECTiskaz u najopˇtijem obliku, pa ne moˇe, na primer, da ukljuˇi operaciju uredenja s z c ˇORDER BY (ˇto vaˇi za podupite uopˇte). s z s CHECK opcija oznaˇava da se operacije UPDATE i INSERT nad pogledom cizvrˇavaju samo ako vrsta koja se menja odnosno unosi zadovoljava WHERE logiˇki s cuslov podupita. Mada su pogledi virtuelne tabele nad kojima je mogu´e vrˇiti gotovo sve op- c seracije kao i nad baznom tabelom, neka ograniˇenja u radu sa tabelama – pogledima cipak postoje. To su, na primer, slede´a ograniˇenja: c c • Operacija INSERT nad tabelom IJUG uvodi nedostaju´u vrednost na koloni c NAZIV bazne tabele I ako ona nije definisana kao NOT NULL, odnosno belinu ako je kolona definisana kao NOT NULL WITH DEFAULT. Ako je kolona NAZIV definisana kao NOT NULL kolona, operacija INSERT nije dopuˇtena. s • Kako se aˇuriranja nad pogledom izvrˇavaju kao aˇuriranja nad baznom tabe- z s z lom, nije dopuˇteno pogledu dodavati vrstu sa vrednoˇ´u primarnog kljuˇa s sc c koja je ve´ prisutna u baznoj tabeli, ˇak i kada nije “vidljiva” u pogledu; c c na primer, ˇifra izdavaˇa i2 nije vidljiva kroz pogled IJUG, ali se vrsta (i2, s c 30, Jugoslavija) ipak ne moˇe dodati INSERT iskazom pogledu IJUG kao z ni baznoj tabeli I, a ne moˇe se ni UPDATE iskazom vrednost kolone I SIF z izmeniti na i2. Takva operacija se odbija. • Operacija
  • 120. 4.1 Definisanje pogleda 113 UPDATE IJUG SET DRZAVA = ’Srbija’ WHERE I SIF=’i1’ izbacila bi iz pogleda aˇuriranu vrstu, a operacija z 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 ukljuˇena u pogled IJUG. c Poslednje dve operacije ne bi mogle da se izvrˇe nad pogledom ˇija defini- s ccija ukljuˇuje CHECK opciju (npr. ako definicija pogleda IJUG ukljuˇuje WITH c cCHECK OPTION). CHECK opcija se moˇe zadati samo ako je pogled takav da zse moˇe aˇurirati (v. 4.3). Ako je UPDATE operacija dozvoljena samo na nekim z zkolonama, onda se i CHECK opcija primenjuje samo na te kolone. Sistem DB2 podrˇava i precizniji ali i opˇtiji oblik definisanja pogleda. Tako, z sCHECK opcija moˇe da ima dva pojavljivanja: LOCAL i CASCADED (podrazu- zmevano). Ako je pogled V definisan sa opcijom WITH CASCADED CHECK OPTION, ˇonda on nasleduje uslove kojima je definisan svaki pogled od koga zavisi (koji sepojavljuje, neposredno ili posredno, u FROM liniji pogleda V). Osim toga, i pogledi ˇdefinisani nad V nasleduju sve te uslove. Dakle, nad uslovima kojima je definisanpogled V i svi pogledi od kojih V zavisi, vrˇi se operacija konjunkcije (AND) i njen srezultat predstavlja uslov koji se primenjuje na unoˇenje i aˇuriranje pogleda V i s zsvakog pogleda koji je definisan nad V. Ako je pogled V definisan sa opcijom WITH LOCAL CHECK OPTION, ondase na unoˇenje i aˇuriranje pogleda V primenjuje samo uslov kojim je pogled V s zdefinisan. Isto ovaˇi i za poglede definisane nad pogledom V. z Na primer, neka je definisan slede´i niz pogleda (P oznaˇava pojavljivanje c cCHECK opcije i moˇe biti LOCAL ili CASCADED): z V1 je definisan nad baznom tabelom T V2 je definisan nad pogledom V1 WITH P CHECK OPTION V3 je definisan nad pogledom V2 V4 je definisan nad pogledom V3 WITH P CHECK OPTION V5 je definisan nad pogledom V4 Tada pogledi V1–V5, u zavisnosti od opcije LOCAL/CASCADED, pri unoˇenju sili aˇuriranju podleˇu proveri uslova slede´ih pogleda: z z c P LOCAL P CASCADED V1 – – V2 V2 V2,V1 V3 V2 V2,V1 V4 V2, V4 V4,V3, V2,V1 V5 V2, V4 V4,V3, V2,V1
  • 121. 114 4 Pogledi Dalje, kao ˇto SELECT iskaz moˇe da realizuje pretraˇivanje punim upitnim s z zblokom nad imenovanom izvedenom tabelom – rezultatom izvrˇavanja nekog up- sitnog bloka (WITH operatorom), sliˇnu mogu´nost ima i definicija pogleda: podupit c ckojim se pogled definiˇe moˇe se primeniti na izvedenu imenovanu tabelu. Tada je s zsintaksa 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 izdavaˇi ˇiji je c cstatus20,moˇe se definisati i slede´im iskazom: z c CREATE VIEW ijugw AS WITH ijug1 AS (SELECT I_SIF, STATUS, DRZAVA FROM I WHERE DRZAVA = ’Jugoslavija’) SELECT * FROM ijug1 WHERE STATUS20 WITH CHECK OPTION4.1.2 Eksplicitno imenovanje kolona pogledaU iskazu kojim se kreira pogled IJUG nisu eksplicitno imenovane kolone tog ˇpogleda. Imena kolona nasledena su od rezultata podupita kojim je pogled defin-isan (I SIF, STATUS, DRZAVA). U sluˇaju pogleda IJUG mogu´e je i eksplicitno c cimenovanje kolona pogleda CREATE VIEW IJUG (I SIF, STATUS, DRZAVA)pri ˇemu imena kolona pogleda mogu biti razliˇita od onih u rezultatu podupita, c cali mora ih biti isti broj. Postoje sluˇajevi u kojima pogled ne moˇe da nasledi imena kolonˆ od podupita c z akoji ga definiˇe, pa je eksplicitno imenovanje kolonˆ pogleda neophodno. To se s adeˇava kada je neka kolona pogleda izvedena, funkcijom ili izrazom, iz kolone tabele snad kojom je pogled definisan (pa ne postoji ime koje bi nasledila), ili ako dve iliviˇe kolona pogleda treba da imaju isto ime. Ovi sluˇajevi su ilustrovani slede´im s c cprimerima.Primer 4.1 Kreirati pogled koji prikazuje ˇifre izdatih knjiga i njihove ukupne stiraˇe. z CREATE VIEW KNJIGATIR (K SIF, UK TIRAZ) AS SELECT K SIF, SUM(TIRAZ) FROM KI GROUP BY K SIF
  • 122. 4.2 Pretraˇivanje pogleda z 115Primer 4.2 Kreirati pogled koji prikazuje parove drˇava takvih da izdavaˇ iz prve z cdrˇave izdaje knjigu pisca iz druge drˇave (primer ujedno ilustruje i pogled definisan z znad ve´im brojem baznih tabela). cCREATE 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 SIF4.1.3 Kreiranje pogleda nad drugim pogledimaKako SELECT iskaz moˇe da se izvrˇava nad pogledom, mogu´e je i da SELECT z s ciskaz kojim se pogled definiˇe, u svojoj FROM liniji ima neki prethodno definisani spogled. Na primer, CREATE VIEW DOBRIIJUG AS SELECT I_SIF, STATUS FROM IJUG WHERE STATUS 20Opcija provere (CHECK) nad pogledom koji je definisan nad drugim pogledomrealizuje se, u zavisnosti od pojavljivanja (LOCAL, CASCADED) prema pravilimaiz prethodne taˇke. c4.1.4 Uklanjanje pogledaDefinisani pogled moˇe se ukloniti SQL iskazom z DROP VIEW ime-pogleda Definicija pogleda se uklanja iz kataloga, i svi pogledi definisani nad tim pogle-dom postaju neoperativni (oni joˇ uvek postoje tako da se njihovo ime ne moˇe s zkoristiti za druge objekte dok se eksplicitno, DROP iskazom, i oni ne uklone, alise ne mogu koristiti dok se ponovo ne kreiraju definicijom identiˇnom inicijalnoj). cAko se ukloni bazna tabela, svi pogledi definisani nad njom ili nad pogledima defin- ˇisanim nad tom tabelom, takode postaju neoperativni. Iskaz ALTER VIEW omogu´uje izmenu vrlo spcifiˇnih svojstava kolona pogleda, c ckoji su izvan dometa naˇeg interesovanja. Zato ´emo smatrati da se definicija s cjednom kreiranog pogleda ne moˇe menjati. z4.2 Pretraˇivanje pogleda zKonverzija upita pretraˇivanja pogleda u upite pretraˇivanja baznih tabela moˇe z z zse sprovesti kao ˇto je opisano ranije (taˇka 4.1.1), pri ˇemu je taj proces obiˇno s c c cjednostavan i pravolinijski. Problemi mogu da nastupe u nekim sluˇajevima, kao c
  • 123. 116 4 Pogledikada se, na primer, kolona pogleda koja je izvedena primenom agregatne funkcijepretraˇuje kao konvencionalna kolona. zPrimer 4.3 Neka se nad prethodno definisanim pogledom KNJIGATIR (primer4.1) izvrˇi SELECT iskaz pretraˇivanja s z SELECT * FROM KNJIGATIR WHERE UK TIRAZ 7000Primenom mehanizma konverzije dobio bi se SELECT iskaz koji ima slede´u neko- crektnu formu u SQL-u: SELECT K SIF, SUM(TIRAZ) FROM KI WHERE SUM(TIRAZ) 7000 GROUP BY K SIFTa forma je nekorektna jer se u WHERE liniji ne sme na´i agregatna funkcija c(SUM). Odgovaraju´i korektni iskaz imao bi oblik c SELECT K SIF, SUM(TIRAZ) FROM KI GROUP BY K SIF HAVING SUM(TIRAZ) 7000ali neki SQL kompilatori “ne umeju” da naprave takvu konverziju. U sistemu DB2 mogu´e je pretraˇivati sve poglede na isti naˇin kao i bazne c z ctabele.4.3 Aˇuriranje, unoˇenje i brisanje nad pogledima z sAˇuriranje pogleda u ovom odeljku razmatra´e se u najˇirem smislu, koji ukljuˇuje z c s ci unoˇenje, i brisanje, i izmenu (tj. aˇuriranje u uˇem smislu). s z z Mada se pogledi, onako kako su ovde uvedeni, mogu (gotovo) svi pretraˇiti, zsamo njihov manji deo moˇe se aˇurirati SQL-om. z z Postoje pogledi za koje se znaˇenje aˇuriranja moˇe precizno opisati (kaˇe se c z z zda se ti pogledi teorijski mogu aˇurirati), a postoje i pogledi za koje takav opis zne postoji (oni se ni teorijski ne mogu aˇurirati). Primer za prvu grupu pogleda zje pogled IJUG: tu je jasno ˇta znaˇi uneti vrstu (i5, 40, Italija) (u tabelu I unosi s cse vrsta (i5, ’ ’, 40, Italija)), brisanje vrste (i1, 30, Jugoslavija) izvrˇava se kao sbrisanje iz tabele I vrste (i1, Prosveta, 30, Jugoslavija), a izmena drˇave izdavaˇa z c
  • 124. 4.3 Aˇuriranje, unoˇenje i brisanje nad pogledima z s 117i1 sa ’Jugoslavija’ na ’Srbija’ izvrˇava se kao izmena na istoj koloni i vrsti u baznoj stabeli. Nemogu´nost teorijskog aˇuriranja nekih pogleda proistiˇe iz strukture tih c z c ˇpogleda, a ne iz neprilagodenosti jezika ili sistema da to aˇuriranje realizuju. Na zprimer, u pogledu PARDRZAVA nije jasno ˇta bi uopˇte znaˇilo izbrisati vrstu s s c(Jugoslavija, Jugoslavija) koja pripada tom pogledu, tj. ne postoji izmena baznihtabela I, P koja ima taˇno efekat brisanja para (Jugoslavija, Jugoslavija) i niˇeg c cdrugog. Sliˇno vaˇi i za aˇuriranje u uˇem smislu i unoˇenje u ovaj pogled. c z z z s Upitni jezik SQL omogu´uje aˇuriranje nekog podskupa skupa pogleda koji se c zteorijski mogu aˇurirati. Taj podskup se opisuje na slede´i naˇin. z c c Pogled koji se definiˇe nad jednom baznom tabelom, eliminacijom nekih vrsta si nekih kolona te tabele, naziva se pogledom koji je podskup vrsta i kolona. SQLomogu´uje aˇuriranje samo pogleda koji su podskupovi vrsta i kolona. Ranije c zkreirani pogled IJUG upravo je takvog tipa pa je njegovo aˇuriranje u SQL-u z ˇmogu´e. Medutim, SQL name´e i specifiˇna ograniˇenja da bi ovakvi pogledi mogli c c c cda se aˇuriraju: z (a) Ako je kolona pogleda izvedena od izraza u kome se primenjuje skalarna operacija, skalarna funkcija ili konstanta, onda INSERT operacije nad pogle- dom 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 ope- racija odrazila na baznu kolonu TIRAZ), a DELETE operacija je dopuˇtena s i izvrˇava se brisanjem odgovaraju´e vrste iz bazne tabele. s c (b) Ako je kolona pogleda izvedena od agregatne funkcije, onda taj pogled ne moˇe da se aˇurira; na primer, nad pogledom z z CREATE VIEW UT (UK TIRAZ) AS SELECT SUM(TIRAZ) FROM KI oˇigledno nema smisla ni jedna od operacija INSERT, UPDATE, DELETE. c (c) Ako definicija pogleda ukljuˇuje GROUP BY ili HAVING operatore, pogled se c ne moˇe aˇurirati. Na primer, na pogled KNJIGATIR (primer 4.1) ne moˇe se z z z primeniti INSERT operacija, niti UPDATE operacija na koloni UK TIRAZ. DELETE operacije i UPDATE operacija na koloni K SIF teorijski se mogu izvrˇiti tako da izbriˇu ili izmene sve odgovaraju´e vrste u baznoj tabeli KI, s s c ali SQL sistema DB2 ni te operacije ne dopuˇta. s
  • 125. 118 4 Pogledi (d) Ako definicija pogleda ukljuˇuje DISTINCT opciju, pogled se ne moˇe c z aˇurirati. Ovo je posledica pretpostavke da odabrana polja, ˇim su kvali- z c ˇ fikovana DISTINCT opcijom, ne odreduju jednoznaˇno vrstu tabele, tj. ne c ukljuˇuju njen primarni kljuˇ. U takav pogled ne mogu se unositi vrste jer bi c c to dovelo do unoˇenja NULL vrednosti na kolonama bazne tabele koje ulaze s u primarni kljuˇ. Na primer, u pogled c CREATE VIEW KBIB AS SELECT DISTINCT K SIF, I SIF FROM KI ne mogu se unositi vrste (INSERT operacija nad tabelom KI podrazumeva unoˇenje vrednosti i za kolonu IZDANJE koja je definisana kao NOT NULL s kolona). Za UPDATE i DELETE operacije vaˇe ista razmatranja kao u z sluˇaju (c). c U sluˇaju pogleda c CREATE VIEW KO AS SELECT DISTINCT K SIF, OBLAST FROM K sistem DB2 (SQL) nije “svestan” ˇinjenice da se u ovaj pogled moˇe, teorijski, c z i unositi, i menjati, i brisati, jer je pogled ekvivalentan (u smislu identiˇnosti c sadrˇaja) pogledu definisanom bez DISTINCT opcije (K SIF je primarni z kljuˇ); te operacije nisu dozvoljene nad ovim pogledom zbog njegove sin- c takse. Sistem DB2 (tj. kompilator njegovog SQL jezika) nema mogu´nost c analize semantike pogleda. (e) Ako podupit kojim je pogled definisan sadrˇi neku od skupovnih operacija z (osim UNION ALL), pogled se ne moˇe aˇurirati. U sluˇaju UNION ALL z z c operacije, u pogled se ne moˇe vrˇiti unoˇenje; da bi operacije brisanja i z s s aˇuriranja u uˇem smislu mogle da se izvrˇe, postoje dalja ograniˇenja: o- z z s c perandi UNION ALL operacije ne smeju biti definisani nad istom baznom tabelom, a odgovaraju´e kolone tih operanada moraju imati identiˇne tipove. c c Na primer, nad pogledom CREATE VIEW I 20 JUG AS SELECT I SIF, NAZIV, STATUS, DRZAVA FROM I WHERE STATUS 20 UNION ALL SELECT I SIF, NAZIV, STATUS, DRZAVA FROM I WHERE DRZAVA = ’Jugoslavija’
  • 126. 4.4 Prednosti pogleda 119 INSERT operacija nije dozvoljena (jer definicija pogleda ukljuˇuje UNION c ALL operaciju), ali nisu dozvoljene ni UPDATE i DELETE operacije (jer su operandi UNION ALL operacije definisani nad istom baznom tabelom). (f) Ako FROM linija u definiciji pogleda ukljuˇuje (eksplicitno ili implicitno) ve´i c c broj n-tornih promenljivih, pogled se ne moˇe aˇurirati. Na primer, pogled z z CREATE VIEW K6 IZDAVACI AS SELECT I.I SIF, NAZIV, STATUS, DRZAVA FROM I, KI WHERE I.I SIF=KI.I SIF AND KI.K SIF=’k6’ ima rezultat koji je podskup vrsta i kolona (bazne tabele I), ali SQL kom- pilator to ne “prepoznaje” jer se u FROM liniji SELECT iskaza nalaze dve tabele. Ovaj pogled zato ne moˇe da se aˇurira u SQL-u, mada ga je teorijski z z ˇ mogu´e aˇurirati. Medutim, kada se ovaj pogled predefiniˇe na slede´i naˇin, c z s c c dobija se ekvivalentan pogled koji se moˇe aˇirirati i u SQL-u: z z CREATE VIEW K6 IZDAVACI AS SELECT I SIF, NAZIV, STATUS, DRZAVA FROM I WHERE I SIF IN (SELECT I SIF FROM KI WHERE K SIF = ’k6’) U ovom pogledu nema viˇestrukih n-tornih promenljivih u FROM liniji pa se s “prepoznaje” da je pogled podskup vrsta i kolona.4.4 Prednosti pogledaMehanizam pogleda, kao realizacija koncepta podmodela, omogu´ava znaˇajna c colakˇanja u manipulisanju podacima relacione baze podataka. Zbog toga se podrˇka s smehanizmu pogleda, mada ne spada u minimalni skup svojstava koja odreduju ˇRSUBP, smatra vaˇnim konceptom koji podrˇavaju svi ozbiljniji prototipski i z zkomercijalni relacioni sistemi za upravljanje bazama podataka. Neke od prednosti mehanizma pogleda su slede´e: c • izvesna koliˇina logiˇke nezavisnosti podataka; ako se baza podataka prepro- c c jektuje, pri ˇemu su iste informacije organizovane u nove tabele, programi c ne moraju da se menjaju jer mehanizam pogleda moˇe da se upotrebi da z “simulira” postojanje starih tabela; • iste podatke razni korisnici mogu videti na razne naˇine; ovaj aspekt je c naroˇito vaˇan ako postoji ve´i broj raznorodnih grupa korisnika baze po- c z c dataka;
  • 127. 120 4 Pogledi • pojednostavljena korisniˇka predstava o bazi i manipulisanje njom; na primer, c pretraˇivanje tabele PARDRZAVA je znatno jednostavnije od pretraˇivanja z z istih informacija iz pripadnih baznih tabela; • skrivanje podataka kao naˇin kontrole ovlaˇ´enja; na primer, ne moˇe se pri´i c sc z c izdavaˇu i2 preko pogleda IJUG. Ako je skrivanje informacije o izdavaˇu i2 c c znaˇajno za neke grupe korisnika, najjednostavnije je to skrivanje ostvar- c iti mehanizmom pogleda. Ubedljiv primer ovog aspekta pogleda je grupa ˇ korisnika baze podataka o gradanima, koja se bavi statistiˇkim obradama. c Ovakvoj grupi se, kroz odgovaraju´i pogled, ne dopuˇta uvid u specifiˇne c s c ˇ podatke o odredenom licu.4.5 Novi pristup pogledimaU ovom odeljku bi´e izloˇen jedan novi pristup pogledima ([27]), koji na formalan c zi dosledan naˇin tretira poglede kao imenovane izraze relacione algebre ili rela- ccionog raˇuna. Iz ovog pristupa formalno logiˇki sledi niz svojstava pogleda koja se c codnose na mogu´nost pretraˇivanja i aˇuriranja pogleda, eliminiˇu´i sasvim potrebu c z z s cza ad hoc pravilima u ovim domenima; takva pravila su inaˇe karakteristiˇna za c csve standarde SQL-a, kao i za postoje´e implementacije (v. prethodne odeljke cove glave). Ovaj pristup omogu´uje i aˇuriranje znatno ˇire klase pogleda (npr. c z spogleda definisanih nad ve´im brojem tabela) nego ˇto je to sluˇaj sa prethodno c s c z c ˇizloˇenim, klasiˇnim pristupom pogledima. Takode, kako se relacioni izraz kojidefiniˇe pogled zadaje relacionom algebrom ili relacionim raˇunom, pojmovi kao s cˇto su operatori grupisanja GROUP BY i HAVING ili opcija DISTINCT, karakte-sristiˇni za specifiˇni (i u znatnoj meri manjkavi) upitni jezik SQL, ne uˇestvuju viˇe c c c su razmatranju mogu´nosti pretraˇivanja i aˇuriranja pogleda. c z z Ovaj odeljak se odnosi na poglede kao koncept koji, u obliku u kome se izlaˇe, znema podrˇku SQL-a. Stoga ´e i primeri i pravila biti izraˇeni u terminima relacione s c zalgebre kao formalizma koji je u direktnoj vezi (za razliku od SQL-a) sa relacionimmodelom. Iskaz kreiranja pogleda ukljuˇuje ime pogleda i relacioni izraz. Imena kolona c ˇpogleda nasleduju se od rezultata relacionog izraza, s tim ˇto u relacionom izrazu smoˇe da uˇestvuje (viˇe puta) i operacija proˇirene relacione algebre za preimeno- z c s svanje 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 pretraˇuju ili konverzijom upita nad pogledom u upit nad baznom ztabelom, ˇija je restrikcija pojaˇana uslovima koji definiˇu sˆm pogled, ili materija- c c s alizacijom pogleda (kao privremene bazne tabele) i izvrˇavanjem upita nad materija- slizovanim pogledom. Mehanizam aˇuriranja pogleda mora da zadovolji slede´e osnovne principe. z c
  • 128. 4.5 Novi pristup pogledima 121 • Mogu´nost aˇuriranja pogleda mora biti bazirana na semantici pogleda a ne c z na njegovoj sintaksi, tj. ne sme se dogoditi da je pogled definisan na jedan naˇin mogu´e aˇurirati, a da je isti pogled, definisan na drugi naˇin, nemogu´e c c z c c aˇurirati (v. pogled K6 IZDAVACI, odeljak 4.3). z • Mogu´nost aˇuriranja pogleda definisanog binarnom operacijom mora biti c z simetriˇna (npr. brisanje iz pogleda koji je definisan operacijom preseka dve c relacije mora poˇtovati princip brisanja iz obe relacije). s • Operacije unoˇenja, brisanja i aˇuriranja pogleda moraju se izvrˇavati kao s z s odgovaraju´e operacije (unoˇenja, brisanja, aˇuriranja, redom) nad tabelama c s z nad kojima je pogled definisan. • Pravila aˇuriranja pogleda moraju biti rekurzivno primenljiva, jer pogled z moˇe biti definisan nad drugim pogledom. z • Ako se pogled moˇe aˇurirati, onda to treba da vaˇi za sve operacije aˇuriranja z z z z u ˇirem smislu – unoˇenje, brisanje i aˇuriranje u uˇem smislu. s s z z • Za svaki pogled podrazumeva se CHECK opcija, tj. pogled striktno ograniˇava skup n-torki kojima se moˇe pristupiti, na samo one n-torke c z koje zadovoljavaju definiciju pogleda. Pravila za aˇuriranje pogleda sada se zadaju u zavisnosti od operacije relacione zalgebre kojom je definisan pogled, i to za svaku operaciju posebno. Pravila zaaˇuriranje pogleda koji je definisan izrazom koji ukljuˇuje ve´i broj operacija rela- z c ccione algebre dobijaju se kombinovanjem pravila za pojedinaˇne operacije. Ovde c´e biti razmotreno nekoliko karakteristiˇnih operacija.c c4.5.1 Unija, presek, razlikaU ovoj taˇki razmatra´emo samo uniju, ali odgovaraju´a razmatranja vaˇe i za c c c zpresek i razliku. Unoˇenje n-torke u pogled oblika R ∪ S, gde su R i S kompatibilni relacioni sizrazi, izvrˇava se kao unoˇenje u rezultat onog relacionog izraza ˇije restrikcije s s cn-torka zadovoljava. Na primer, u pogled definisan unijom (I[ STATUS = 20]) ∪ (I[DRZAVA = ’Jugoslavija’]),moˇe se uneti ˇetvorka (i5, ’Mladost’, 10, ’Jugoslavija’), jer zadovoljava restrikciju z c ˇdrugog relacionog izraza. Cetvorka se u pogled unosi unoˇenjem u baznu relaciju I. s Iz unije se n-torka briˇe tako ˇto se izbriˇe iz svakog operanda unije ˇiju restrik- s s s cciju zadovoljava. Izmena n-torke je dopuˇtena samo ako i ta n-torka i njena izmenjena vrednost szadovoljavaju uslov date unije, tj. restrikciju jednog ili drugog (ne obavezno istog)njenog operanda.
  • 129. 122 4 Pogledi4.5.2 RestrikcijaUnoˇenje (brisanje, aˇuriranje) u pogled oblika R [logiˇki izraz] moˇe se izvrˇiti s z c z ssamo ako n-torka koja se unosi (briˇe, aˇurira, kao i aˇurirana vrednost) zado- s z zvoljava strukturu (i eventualne uslove) relacionog izraza R i logiˇkog izraza koji c ˇodreduje restrikciju. Unoˇenje (brisanje, aˇuriranje) se izvrˇava kao unoˇenje u s z s srezultat relacionog izraza R (brisanje iz R, aˇuriranje u R). Na primer, u pogled zdefinisan relacionim izrazom I[DRZAVA = ’Jugoslavija’],moˇe se uneti ˇetvorka (i5, ’Mladost’, 10, ’Jugoslavija’), jer zadovoljava i strukturu z c ˇ ˇtabele I i logiˇki izraz koji odreduje restrikciju. Cetvorka se unosi u baznu tabelu I, ci istovremeno se “vidi” kroz pogled. S druge strane, unoˇenje koje naruˇava uslove s sintegriteta bazne tabele (npr. jedinstvenost primarnog kljuˇa) ne´e se izvrˇiti. c c s4.5.3 ProjekcijaPogled koji je definisan projekcijom relacije R na neki podskup X njenih atributamoˇe se aˇurirati ako skup atributa X sadrˇi primarni kljuˇ relacije R. U tom z z z csluˇaju unoˇenje u pogled vrˇi se popunjavanjem ostalih atributa relacije R ne- c s sdostaju´im vrednostima, pri ˇemu se poˇtuju pravila integriteta, npr. jedinstvenost c c sprimarnog kljuˇa. Pri brisanju iz pogleda briˇe se cela n-torka relacije R, dok se pri c sizmeni menjaju vrednosti navedenih atributa projekcije – pogleda, ukoliko se timene naruˇavaju uslovi integriteta. Na primer, u pogled definisan relacionim izrazom s I[I SIF, STATUS],moˇe se uneti par (i5, 20) (kao ˇetvorka (i5, NULL, 20, NULL) u tabelu I), ali z cse ne moˇe uneti par (i1, 10), jer je vrednost i1 primarnog kljuˇa tabele I ve´ z c cprisutna u tabeli I. Iz ovog pogleda moˇe se izbrisati par (i1, 30) i to brisanjem zˇetvorke (i1, ’Prosveta’, 30, ’Jugoslavija’) iz tabele I. Izmena para (i1, 30) u parc(i1, 20) realizuje se kao izmena ˇetvorke (i1, ’Prosveta’, 30, ’Jugoslavija’) tabele I c ˇu ˇetvorku (i1, ’Prosveta’, 20, ’Jugoslavija’); medutim, izmena para (i1, 30) u par c(i2, 30) nije dopuˇtena, jer naruˇava jedinstvenost primarnog kljuˇa I SIF. s s c Aˇuriranje pogleda koji je definisan projekcijom na atribute koji ne ukljuˇuju z cprimarni kljuˇ relacije predstavlja problem. c Unoˇenje u takav pogled nije sdopuˇteno, jer bi podrazumevalo unoˇenje nedostaju´ih vrednosti na atributima s s ciz primarnog kljuˇa, koji nisu ukljuˇeni u atribute projekcije. Brisanje iz takvog c cpogleda bi se realizovalo kao brisanje svih n-torki cele relacije koje zadovoljavajulogiˇki izraz kojim je definisano brisanje. Aˇuriranje n-torke ovakvog pogleda se c zodnosi, opet, na aˇuriranje svih n-torki odgovaraju´e relacije koje zadovoljavaju z clogiˇki izraz kojim je definisano aˇuriranje. Primer ovakvog pogleda je pogled c zPARDRZAVA (iz primera 4.2), definisan relacionim izrazom ((I RENAME DRZAVA AS IDRZAVA) ∗ KI ∗ KP ∗ (P RENAME DRZAVA AS PDRZAVA) ) [ IDRZAVA, PDRZAVA ].
  • 130. 4.6 Pitanja i zadaci 123 Ovaj relacioni izraz ukljuˇuje projekciju relacije, koja je rezultat prirodnog spa- cjanja ˇetiri relacije, na atribute IDRZAVA, PDRZAVA. Ovi atributi ne ukljuˇuju c cprimarni kljuˇ relacije koja se projektuje, pa u pogled definisan ovom projekcijom, cprema prethodnom, nije dopuˇteno unoˇenje. s s4.5.4 Prirodno spajanjeNovi pristup pogledima koji se u ovom odeljku izlaˇe ima za rezultat mogu´nost z caˇuriranja svih pogleda koji su definisani operacijom prirodnog spajanja. Aˇuriranje z z z c c ˇtakvih pogleda moˇe da ima izvesne boˇne efekte, ali ti boˇni efekti obezbedujuintegritet aˇuriranog pogleda, tj. relacijˆ nad kojima je pogled definisan. z a Pretpostavimo, na primer, da tabela KI nema strani kljuˇ I SIF, i da je u tabeli cKI prisutna petorka (i5, k5, 1, 1990, 10000) koja se odnosi na izdavaˇa sa ˇifrom c si5 o kome ne postoji informacija u tabeli I. Neka je pogled definisan relacionimizrazom I ∗ KIi neka se u pogled unosi osmorka (i5, ’Mladost’, 20, ’Jugoslavija’, k6, 2, 1995, 5000).Ovo unoˇenje se realizuje kao unoˇenje ˇetvorke (i5, ’Mladost’, 20, ’Jugoslavija’) u s s c ˇtabelu I, i petorke (i5, k6, 2, 1995, 5000) u tabelu KI. Medutim, unoˇenje u tabelu sI proizvodi, kao boˇni efekat, unoˇenje joˇ jedne osmorke u pogled – to je osmorka c s s(i5, ’Mladost’, 20, ’Jugoslavija’, k5, 1, 1990, 10000). Uopˇte, unoˇenje n-torke u u pogled definisan operacijom prirodnog spajanja s sdveju relacija, R ∗ S, realizuje se kao unoˇenje u relaciju R dela n-torke u koji se sodnosi na atribute iz R i, ako to nije ve´ postignuto boˇnim efektom, kao unoˇenje c c su relaciju S dela n-torke u koji se odnosi na atribute iz S. Sliˇno se izvrˇavaju c soperacija brisanja i operacija izmene n-torki. Nijedna od ovih operacija ne sme danaruˇi uslove integriteta relacija R, S. s Detaljnije razmatranje izloˇenog pristupa pogledima, sa specifiˇnostima efekata z cpojedinih operacija aˇuriranja na pojedine relacione izraze koji definiˇu poglede, z smoˇe se na´i u [27]. z c4.6 Pitanja i zadaci ˇ 1. Sta je pogled? 2. Objasniti iskaz za definisanje pogleda u SQL-u. 3. Kako se izvrˇava iskaz pretraˇivanja pogleda u SQL-u? s z 4. Kada je neophodno eksplicitno imenovati kolone pogleda? 5. Koji se pogledi mogu aˇurirati u SQL-u? z 6. Koje su prednosti pogleda?
  • 131. 124 4 Pogledi 7. Opisati novi, sistematiˇni prilaz pogledima i razmotriti njegove prednosti. c 8. Kreirati pogled nad izdavaˇkom bazom podataka koji se sastoji od svih iz- c ´ c davaˇa koji su izdali neki roman Branka Copi´a. c 9. Kreirati pogled nad izdavaˇkom bazom podataka koji se sastoji od svih iz- c davaˇa, knjiga koje su izdali i autora tih knjiga. c 10. Neka je data slede´a definicija pogleda: c CREATE VIEW V TIRAZ AS SELECT * FROM KI WHERE TIRAZ 5000 Formulisati SQL iskaze nad baznim tabelama kojima se izvrˇavaju slede´i s c iskazi pretraˇivanja i aˇuriranja pogleda: z z • SELECT * FROM V TIRAZ WHERE K SIF ’k3’ • UPDATE V TIRAZ SET TIRAZ = TIRAZ * 1.1 WHERE GODINA 1990 • DELETE FROM V TIRAZ WHERE GODINA 1960 • INSERT INTO V TIRAZ VALUES (’k1’, ’i1’, 1, 1960, 5000)
  • 132. 5Standardi SQL-aCilj standardizovanja jezika baza podataka je da obezbedi prenosivost definicijabaza podataka i aplikativnih programa medju implementacijama koje su saglasne sastandardom. Za razmenu definicija baza podataka i pogleda specifiˇnih za aplikaciju cmoˇe se koristiti jezik za definisanje podataka. Jezik za manipulisanje bazama zpodataka obezbedjuje operacije nad podacima koje omogu´uju razmenu kompletnih caplikacionih programa. Od 1986. godine, kada je prvi put standardizovan (ANSI – American NationalStandard Institute, ameriˇki standard i ISO – International Standard Organization, c ˇmedunarodni standard), jezik baza podataka SQL je u neprestanom razvoju odstrane ve´eg broja organizacija za standardizaciju (ANSI, ISO, FIPS – Federal In- cformation Processing Standards for the US federal government, IEC – InternationalElectrotechnical Commision, itd). Najnovija puna verzija standarda publikovana je1992. godine, ANSI X3.135-1992 i ISO/IEC 9075:1992. Puni naziv ovog standarda ˇje “Medunarodni standardni jezik baza podataka (1992)” (“International StandardDatabase Language SQL (1992)” [?]), mada se sre´e i pod nazivom SQL2, SQL-92. c SQL2 znaˇajno proˇiruje standarde iz 1986. i 1989. godine, ukljuˇenjem jezika c s cza manipulisanje shemom, tabelˆ za informacije o shemama, novih olakˇica za a sdinamiˇko kreiranje SQL iskaza, novih tipova podataka i domena. Ostale novine cSQL2 standarda ukljuˇuju spoljaˇnje spajanje, kaskadno aˇuriranje i brisanje kod c s zreferencijalnog integriteta, skupovnu algebru nad tabelama, nivoe konzistentnostitransakcija, skrolovane kursore, odloˇenu proveru uslova ograniˇenja, i znaˇajno z c cproˇirenje dijagnostike, tj. izveˇtavanje o izuzecima i greˇkama. SQL2 eliminiˇe s s s sveliki broj ograniˇenja kako bi jezik postao ˇto fleksibilniji i neprotivureˇniji ([?], c s c[?]). Detaljniji opis reˇenja ovog standarda izloˇen je u slede´oj taˇki. s z c c Dalja proˇirenja i poboljˇanja SQL standarda su u razvoju, i odnose se na s spromociju SQL-a u izraˇunljivo kompletan jezik za definisanje i upravljanje perzis- ctentnim, kompleksnim objektima. Za 1995. godinu planirano je bilo objavljivanjenovog standarda SQL-a, SQL3, kompatibilnog sa SQL2, ali oboga´enog objekt- cnim aspektom podataka (o objektnom modelu podataka bi´e reˇi u Dodatku). c c 125
  • 133. 126 5 Standardi SQL-aSQL3 ukljuˇuje korisniˇki definisane i apstraktne tipove podataka (ATP, koji se c cgrade po uzoru na C++ klase), sa hijerarhijama generalizacije i specijalizacije i ˇviˇestrukim nasledivanjem, objekte kao njihove instance, metode, polimorfizam i suˇaurenje (enkapsulaciju). SQL3 je izraˇunljivo kompletan jezik (ima kontrolne c cstrukture i ne zahteva ugnjeˇdenja u programske jezike opˇte namene). z s Razna svojstva ukljuˇena u predlog SQL3 standarda su u razliˇitim fazama c crazvoja, i imaju razliˇite statuse. Godine 1993, ANSI i ISO komiteti za razvoj codluˇili su da razloˇe budu´i razvoj SQL-a u viˇedelni standard. Ti delovi su: c z c s I Opis strukture dokumenta. II Jezgro specifikacije, ukljuˇuju´i ATP i svojstva objektnog SQL-a. c c 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 podrˇku novim svojstvima u s ostalim delovima SQL-a, u razvoju je. IV SQL/PSM: specifikacija zapam´enih procedura (engl. Persistent Stored Mod- c ules). Ova komponenta ukljuˇuje sve aspekte izraˇunljive kompletnosti jezika c c – promenljive, iskaze dodele, grananja, iteracije, strukturu bloka, poziv procedura i funkcija, obradu greˇke; posebno je znaˇajna za klijent/server s c okruˇenje. Jedna verzija ove komponente standardizovana je 1996. godine z (9075-4:1996). V SQL/veznici: veznici za dinamiˇki SQL i ugnjeˇdeni SQL preuzeti su iz SQL2; c z godine 1998. publikovan je standard veznika za objektne jezike (C++ i Java) – SQL/OLB, ANSI X3.135.10–1998. VI SQL/XA: SQL specijalizacija popularnog XA interfejsa koji je razvio ˇ X/Open, izmedu globalnog upravljaˇa transakcijama i SQL upravljaˇa resur- c c 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 poboljˇanje meha- s nizama za upravljanje vremenskim serijama. Godine 1993. odobren je novi ISO/IEC projekat za razvoj SQL biblioteke klasaza multimedijalne aplikacije, tzv. SQL Multimedia (SQL/MM). Ideja je da sespecifikuju paketi definicije SQL apstraktnih tipova podataka (ATP) koriˇ´enjem scsvojstava SQL3, i da se stanardizuju posebne biblioteke klasa za nauku i tehniku,obradu dokumenata i puno pretraˇivanje tekstova, kao i metode za upravljanje zmultimedijalnim objektima kao ˇto su slika, zvuk, animacija, muzika, video. s
  • 134. 5.1 Standardni jezik baza podataka SQL2 1275.1 Standardni jezik baza podataka SQL2 ˇPuno ime ovog standarda je “Medunarodni standardni jezik baza podataka SQL(1992)”, a neformalno se zove i SQL2 ili SQL-92. Izlaganje o ovom standarduorganizovano je u taˇke koje se odnose na definisanje podataka, manipulisanje po- cdacima i na aplikativni SQL. Iako taj standard vaˇi za standard relacionog upitnog zjezika, nigde u njegovoj obimnoj specifikaciji ne pominje se termin “relacioni”. Onse definiˇe, jednostavno, kao standardni jezik baza podataka. s ˇ Standard SQL2 predvida tri nivoa saglasnosti raznih varijanti SQL jezika sareˇenjima iz standarda – puni (full), srednji (intermediate) i poˇetni (entry) SQL. s c Poˇetni SQL ukljuˇuje iskaze za definisanje sheme, jezik manipulisanja po- c cdacima, referencijalni integritet, proveru uslova integriteta, ugnjeˇdenje SQL-a u zsedam razliˇitih programskih jezika, direktno izvrˇenje iskaza manipulisanja po- c sdacima, SQLSTATE parametar, (pre)imenovanje kolona u SELECT listi, opcijupri kreiranju pogleda WITH CHECK OPTION. Srednji SQL ukljuˇuje bitno nova svojstva kao ˇto su iskazi za promenu sheme, c sdinamiˇki SQL i nivoi izolovanosti SQL transakcija, podrˇku kaskadnom brisanju, c sunijsko spajanje, operacije nad niskama karaktera, operacije preseka i razlike, jed- ˇnostavne domene, CASE izraz, transformaciju medu tipovima podataka, komplet-niju dijagnostiku i analizu greˇaka, viˇestruki izbor skupova karaktera, intervalne i s spojednostavljene tipove datuma/vremena i niske karaktera promenljive duˇine. z Puni SQL ukljuˇuje joˇ i imenovanje i odloˇenu proveru uslova integriteta, c s zproˇirenu podrˇku tipovima datuma/vremena, aˇuriranje i brisanje iz tabele nad s s zkojom je zadat i logiˇki izraz WHERE linije, kaskadno aˇuriranje, skrolovane kur- c zsore, niske bitova kao tipove podataka, privremene tabele, dodatne opcije uslovaintegriteta i opˇte uslove ograniˇenja. s c Svojstva SQL2 izloˇena u slede´im taˇkama uglavnom se odnose na puni SQL. z c c Standard SQL2 sadrˇi niz poboljˇanja u odnosu na prethodni SQL standard. z sUprkos tome, on joˇ uvek ima neke nedostatke. Osnovni nedostaci i ovog standarda sleˇe u neadekvatnoj podrˇci nekim bitnim svojstvima relacionog modela. Neki z sod tih nedostataka su slaba podrˇka domenima, nedosledno operisanje pogledima, sodsustvo podrˇke operaciji deljenja, mogu´nost dupliranja vrsta, podupiti. s c5.1.1 Definisanje podatakaDomen. Novost u odnosu na prethodni standard SQL-a u pogledu definisanjapodataka jeste izvesna (priliˇno slaba) podrˇka domenima, kao i podrˇka uslovima c s sintegriteta domena. Iskazi za kreiranje i uklanjanje domena su oblika CREATE DOMAIN naziv-domena [AS] tip-podataka [ podrazumevana-definicija ] [ lista-definicija-ograniˇenja-domena ] c
  • 135. 128 5 Standardi SQL-a DROP DOMAIN naziv-domena opcija Komponenta tip-podataka je skalarni tip podataka iz proˇirenog skupa koji sukljuˇuje, pored ranijih, i slede´e tipove: c c • BIT [VARYING] (n) • INTERVAL • DATE • TIME • TIMESTAMP. Podrazumevana (DEFAULT) definicija precizira podrazumevanu vrednost togdomena i oblika je DEFAULT podrazumevana-vrednostNa primer, DEFAULT NULL Definicija-ograniˇenja-domena je uslov integriteta koji se odnosi na svaki atribut cdefinisan nad tim domenom; ograniˇenje domena predstavlja, u suˇtini, skup dopu- c sˇtenih vrednosti domena i zadaje se logiˇkim izrazom proizvoljne kompleksnosti.s cNa primer, iskaz CREATE DOMAIN K SIF AS CHAR(5) DEFAULT ’?’ CONSTRAINT BROJ KNJIGE CHECK (VALUE = ’k1’ AND VALUE = ’k5001’)kreira domen koji se zove K SIF i za koji se podrazumeva vrednost ’ ?’ (ako sevrednost ne navede); nad tim domenom je definisano jedno ograniˇenje (CON- cSTRAINT) koje se zove BROJ KNJIGE i koje precizira oblik dopuˇtenih vrednosti. s Opcija pri uklanjanju domena moˇe biti RESTRICT ili CASCADE, pri ˇemu z cprva onemogu´uje uklanjanje domena ako postoje atributi definisani nad njim, a cdruga prenosi uklanjanje domena tako ˇto atributi koji su nad njim bili definisani spostaju definisani nad tipom podataka nad kojim je bio definisan domen koji se ˇuklanja. Standard predvida i iskaze za izmenu (ALTER) domena i njegove defini- ˇcije, uvodenje i uklanjanje podrazumevane vrednosti (SET, DROP DEFAULT),dodavanje i uklanjanje ograniˇenja domena (ADD, DROP CONSTRAINT). c Osim ovih mogu´nosti, definicija domena ne podrˇava pravu semantiku domena c z ˇ(npr. ne proverava se domenska kompatibilnost kod poredenja, korisnik ne moˇe zzadavati operacije nad novim domenima, nema podrˇke podtipovima i nadtipovima, sitd).
  • 136. 5.1 Standardni jezik baza podataka SQL2 129Bazna tabela. Definicija bazne tabele (CREATE TABLE) je proˇirena mogu- sc sc ˇ´noˇ´u navodenja domena za atribute, kao i definicijom ograniˇenja bazne tabele ckoja, osim primarnog i stranog kljuˇa, moˇe da ukljuˇi i kandidate kljuˇeva (oblika c z c cUNIQUE (lista-atributa), koji ne obavezuju na NOT NULL atribute) i provereograniˇenja tabele (oblika CHECK(logiˇki-izraz)). Definicija stranog kljuˇa sada c c cmoˇe da sadrˇi, osim akcije pri brisanju, i akciju pri aˇuriranju koja moˇe biti NO z z z zACTION (sliˇno prethodnoj RESTRICT), CASCADE, SET DEFAULT ili SET cNULL. Na primer, bazna tabela KI moˇe biti definisana u SQL2 slede´im CREATE z cTABLE 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 (IZDANJE0 AND IZDANJE50 )) Atribut K SIF definisan je nad domenom K SIF (dopuˇtena su ista imena satributa i domena), a sliˇno vaˇi i za ostale atribute; ’NULL’ odnosno ’0’ uz c zdefiniciju atributa GODINA odnosno TIRAZ, oznaˇava podrazumevanu vrednost c(u sluˇaju da se vrednost atributa izostavi). c ˇ Standard predvida mogu´nost definisanja perzistentnih (trajnih) i privremenih cbaznih tabela. Perzistentne bazne tabele su bazne tabele u uobiˇajenom znaˇenju. c cPrivremene (TEMPORARY) bazne tabele vezane su za jednu konekciju (prikljuˇe- cnje) SQL-klijenta na SQL-server (u klijent-server okruˇenju, v. 18) i materijalizuju zse tek pri izvrˇenju funkcija koje se u toku te konekcije pozivaju iz programa na smatiˇnom jeziku (v. taˇke 5.1.2 Manipulisanje podacima i 5.1.3 Aplikativni SQL). c cNa poˇetku konekcije privremene tabele su prazne, dok se na kraju konekcije njihov csadrˇaj opet briˇe. Na privremene tabele se, za razliku od trajnih baznih tabela, z sne primenjuje puna funkcionalnost RSUBP – kontrola konkurentnosti, oporavak,registrovanje u katalog, itd. Izmena bazne tabele (ALTER TABLE) sada se moˇe odnositi kako na doda- zvanje tako i na uklanjanje atributa, kljuˇeva, podrazumevanih vrednosti i uslova cograniˇenja tabele. c Uklanjanje bazne tabele (DROP TABLE) moˇe da ukljuˇi i opciju (RESTRICT z c
  • 137. 130 5 Standardi SQL-aili CASCADE) koja ´e zabraniti uklanjanje, odnosno preneti dejstvo uklanjanja ako cpostoji pogled ili uslov ograniˇenja definisan nad tom tabelom. cOpˇti uslov ograniˇenja. s c Opˇti oblik iskaza za kreiranje i uklanjanje uslova sograniˇenja je c CREATE ASSERTION ime-pravila CHECK( uslov) DROP ASSERTION ime-pravila Uslov je logiˇki izraz proizvoljne sloˇenosti, koji moˇe da ukljuˇi (sliˇno formuli c z z c c ˇrelacionog raˇuna) operacije poredenja, IN, BETWEEN, LIKE operacije, egzisten- ccijalno kvantifikovane relacione izraze i logiˇke operacije AND, NOT, OR, kao i c ˇneke nove predikate (kvantifikovana poredenja i testove jedinstvenosti – UNIQUE,podudaranja – MATCH, preklapanja – OVERLAPS). Logiˇke operacije su trova- clentne (v. 2.1.3, Proˇirena relaciona algebra), pa i logiˇka vrednost uslova pripada s cskupu {true, false, unknown}. Na primer, uslov ograniˇenja baze podataka o izdavaˇtvu koji je formulisan kao c s“ni jedan izdavaˇ sa statusom manjim od 20 ne moˇe izdavati ni jednu knjigu u c ztiraˇu ve´em od 5000” moˇe se zadati slede´im iskazom: z c z c CREATE ASSERTION KI1 CHECK (NOT EXISTS ( SELECT * FROM I, KI WHERE I.STATUS 20 AND I.I SIF = KI.I SIF AND KI.TIRAZ 5000)) Uslov ograniˇenja koji se zadaje ovim iskazom moˇe da se odnosi na celu bazu c zpodataka (dakle, na ve´i broj tabela), ali moˇe da se odnosi i na pojedinaˇnu tabelu, c z ckao i na specifiˇni atribut pojedinaˇne tabele. Poˇto se poslednja dva sluˇaja mogu c c s cizraziti i na drugi naˇin (CREATE TABLE odnosno CREATE DOMAIN iskazom), ciskaz CREATE ASSERTION predstavlja izvesnu meru redundantnosti razmatranogstandarda.Shema. Prema ovom standardu, svi objekti baze podataka (domeni, tabele,pogledi, kolone, itd.) definiˇu se kao elementi odgovaraju´ih SQL shema (ili samo s cshema). Semantika pojma shema odgovara istom konceptu u SQL DB2 (v. 3.2.1),i razlikuje se od pojma relacione sheme dok je sliˇna pojmu sheme relacione baze cpodataka, kako su definisani relacionim modelom (v. 1.2). Na ovo znaˇenje po- cjma shema ukazuje i sintaksa definicije sheme u SQL2 koja od vaˇnijih komponenti zukljuˇuje slede´e: c c CREATE SCHEMA ime-sheme [ definicija-domena | definicija-tabele | definicija-pogleda | definicija-uslova-ograniˇenja c
  • 138. 5.1 Standardni jezik baza podataka SQL2 131 {, definicija-domena} {, definicija-tabele} {, definicija-pogleda} {, definicija-uslova-ograniˇenja} c ] Shema se moˇe i ukloniti iskazom oblika z DROP SCHEMA ime-shemepri ˇemu se moˇe navesti i opcija (RESTRICT ili CASCADE) koja ´e zabraniti c z cuklanjanje sheme ako ona sadrˇi objekte baze podataka, odnosno implicitno izvrˇiti z sodgovaraju´e DROP iskaze na objektima sadrˇanim u shemi. c z Ime svake tabele koja je komponenta kreirane sheme kvalifikuje se (eksplicitnoili implicitno) imenom sheme.5.1.2 Manipulisanje podacimaProˇirenje standarda SQL2 u sferi manipulisanja podacima ogleda se u slede´im s csvojstvima: • SQL2 podrˇava nekoliko novih skalarnih operacija i funkcija (u odnosu na z prethodni standard): operaciju dopisivanja (||), funkcije UPPER, LOWER, SUBSTRING, LENGTH (za niske karaktera i bitova), operacije sabiranja (+), oduzimanja (−), mnoˇenja (∗) i deljenja (/) nad podacima tipa DATE- z TIME odnosno INTERVAL, funkcije za konverziju tipova, operaciju CASE ˇ za navodenje uslovne vrednosti, itd. • SQL2 podrˇava relativno kompletnu dijagnostiku (informacije o izvrˇenju z s iskaza i eventualnim greˇkama). Manipulativni iskazi proizvode, osim vred- s nosti kˆda u celobrojnoj promenljivoj SQLCODE, i vrednost znakovnog tipa o u promenljivoj SQLSTATE, kao i informacije o uslovima izvrˇenja u “pros- s toru dijagnostike” (engl. diagnostics area), koje se mogu dobiti operacijom GET DIAGNOSTICS. • U FROM liniji SELECT iskaza moˇe da se pojavi i lista izvedenih tabela, tj. z 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 ˇifara pisca i izdavaˇa iz iste drˇave, pri ˇemu se uzimaju u obzir s c z c samo ”dobri” izdavaˇi sa statusom ve´im od 10. c c • SQL2 podrˇava dodelu imena izvedenoj koloni i izvedenoj tabeli, u SELECT z liniji odnosno u FROM liniji; na primer, iskaz
  • 139. 132 5 Standardi SQL-a SELECT K SIF, I SIF, ’Tiraz u hilj.=’ AS KOM, TIRAZ/1000 AS TuH FROM KI . . . proizvodi rezultat–tabelu sa ˇetiri kolone; prve dve su imenovane imenima c kolona tabele KI – K SIF i I SIF, tre´a je imenovana KOM i ima konstantni c sadrˇaj, dok je naziv ˇetvrte kolone TuH i ona sadrˇi tiraˇe u hiljadama z c z z primeraka (v. i prethodni primer). • SQL2 podrˇava novu, eksplicitnu operaciju spajanja, koja ukljuˇuje sve vrste z c spajanja – Dekartov proizvod, prirodno, slobodno, unutraˇnje, spoljaˇnje i s s unijsko spajanje. Sintaksa ove operacije je tabela-1 CROSS JOIN | [NATURAL] [INNER | LEFT | RIGHT | FULL | UNION] JOIN tabela-2 [ON logiˇki-izraz] c CROSS JOIN oznaˇava Dekartov proizvod, dok se unijsko spajanje (UNION c JOIN) odnosi na spoljaˇnju uniju (v. taˇku 2.1.3 – Proˇirena relaciona alge- s c s bra). Opcija INNER odnosi se na unutraˇnje (obiˇno) spajanje, kako prirodno tako s c i slobodno. Opcije LEFT, RIGHT i FULL odnose se na levo, desno i puno spoljaˇnje spajanje. Prirodno spajanje (NATURAL) vrˇi se po jednakim vred- s s nostima jednako imenovanih atributa navedenih tabela, i pri tom se ON op- cija ne sme navesti, dok je u sluˇaju slobodnog (Θ)-spajanja (NATURAL se c izostavlja) ON opcija obavezna i definiˇe uslov spajanja. Na primer, s SELECT * FROM (I NATURAL JOIN KI) Tabele tabela-1 i tabela-2 mogu biti i izvedene tabele u smislu iz prethodnih paragrafa. • Sintaksa SQL2 omogu´uje zapis TABLE T ekvivalentan SELECT bloku (SE- c LECT ∗ FROM T ). • SQL2 podrˇava, pored operacije UNION, i eksplicitne operacije preseka i z razlike, INTERSECT i EXCEPT. Operacija preseka je viˇeg prioriteta od ope- s racija unije i razlike. Tabele – argumenti ovih operacija moraju biti izvedene, tj. zadate SELECT blokovima ili izrazima oblika TABLE tabela. Mogu´e je c eksplicirati redosled odgovaraju´ih kolona u tabelama – operandima. c • U SQL2 mogu´e je koristiti ugnjeˇdene pune SELECT upitne blokove za c z predstavljanje skalarnih vrednosti; to je uˇinjeno, na primer, u SELECT liniji c slede´eg iskaza: c
  • 140. 5.1 Standardni jezik baza podataka SQL2 133 SELECT I.I SIF, (SELECT SUM(KI.TIRAZ) FROM KI WHERE KI.I SIF = I.I SIF ) AS UK TIRAZ FROM I • Logiˇki izraz, gdegod se pojavljuje u SQL-u, moˇe da ukljuˇi i binarnu ope- c z c raciju poklapanja MATCH UNIQUE, koja dobija vrednost ’taˇno’ ako se njen c prvi operand (n-torka) poklapa sa taˇno jednom n-torkom tabele koja je njen c drugi operand. U sluˇaju da su prisutne i nedostaju´e vrednosti, MATCH c c operacija ima opcije FULL (puno) i PARTIAL (delimiˇno). c • Logiˇki izraz ukljuˇuje i (dvovalentni) pozitivni i negativni test nedostaju´e c c c vrednosti oblika IS NULL i IS NOT NULL, kao i test vrednosti logiˇkog izraza c (p) oblika (p) IS [NOT] TRUE ((p) je (nije) taˇno) c (p) IS [NOT] FALSE ((p) je (nije) netaˇno) c (p) IS [NOT] UNKNOWN ((p) je (nije) nepoznato). • Argument agregatne funkcije koja ukljuˇuje opciju DISTINCT moˇe biti c z proizvoljni izraz, a ne obavezno ime kolone. • Provera uslova ograniˇenja moˇe biti odloˇena, tj. suspendovana i zatim c z z ponovo aktivirana; na primer, SET CONSTRAINTS KI1 DEFERRED ... SET CONSTRAINTS KI1 IMMEDIATE • SQL2 standardizuje prikljuˇenje – konekciju klijenta na server tj. na bazu koja c je na serveru. Tako se SQL konekcija definiˇe kao asocijacija SQL klijenta i s SQL servera (v. 18) a moˇe se ostvariti eksplicitno, iskazom konekcije koji z izvrˇava klijent i koji identifikuje ˇeljeni SQL server. Iskaz je oblika s z CONNECT TO ime-SQL-servera [ USER ime-korisnika] | DEFAULT Ovim iskazom konekciji se moˇe dodeliti i ime. Jedan klijent moˇe da ostvari z z viˇe konekcija sa raznim serverima (ukljuˇuju´i i podrazumevani – DEFAULT s c c c ˇ server), pri ˇemu je u odredenom trenutku teku´a ona konekcija ˇiji je iskaz c c konekcije poslednji izvrˇen. s Imenovana (ili podrazumevana) konekcija moˇe da postane teku´a i izvrˇavanjem z c s iskaza SET CONNECTION ime-konekcije | DEFAULT
  • 141. 134 5 Standardi SQL-a Konekcija se moˇe ostvariti i implicitno, pozivom (sa klijenta) procedure na z serveru, pri ˇemu se, ako ne postoji nijedna konekcija, ostvaruje konekcija sa c podrazumevanim serverom. SQL konekcija se zavrˇava eksplicitno, iskazom s DISCONNECT ime-konekcije | DEFAULT | CURRENT | ALL pri ˇemu se zatvara imenovana, podrazumevana (DEFAULT), teku´a (CUR- c c RENT) konekcija, odnosno sve postoje´e konekcije klijenta. c Konekcija se moˇe zatvoriti i implicitno, po izvrˇenju poslednje procedure z s pozvane iz aplikativnog programa ili poslednjeg interaktivnog SQL iskaza.5.1.3 Aplikativni SQLNeke od znaˇajnijih mogu´nosti koje pruˇa standard SQL2 u domenu aplikativnog c c zSQL-a su slede´e: c ˇ ˇ • SQL2 obezbeduje sumedu sa programskim jezicima PL/I, Pascal, Ada, FOR- TRAN, C, COBOL i MUMPS. • Bogatiji skup operacija nad kursorima; tako, pored ostalih, tu su operacije uzimanja prethodne kao i naredne, prve kao i poslednje vrednosti kursora (FETCH PRIOR, FETCH NEXT, FETCH FIRST, FETCH LAST), pri ˇemu c se podrazumeva naredna vrednost (NEXT) ako se niˇta ne naglasi, a za svaki s drugi izbor (PRIOR, FIRST, LAST) kursor mora biti deklarisan opcijom SCROLL: DECLARE X SCROLL CURSOR FOR SELECT ... ˇ • SQL2 eksplicira koncept transakcije uvodenjem iskaza za poˇetak transak- c cije (SET TRANSACTION) kojim se zadaju nivoi izolovanosti transakcije (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) i/ili naˇin pristupa podacime (status transakcije) – READ c ONLY, READ WRITE. Pored iskaza za poˇetak transakcije SET TRANSACTION, eksplicitni su i c iskazi uspeˇnog odnosno neuspeˇnog zavrˇetka transakcije (COMMIT, ROLL- s s s BACK, v. odeljak 14.1 – Transakcija i integritet). Nivo SERIALIZABLE je najjaˇi stepen izolovanosti i garantuje linearizo- c vanost izvrˇenja; to je i podrazumevani nivo izolovanosti. s Najslabiji nivo izolovanosti transakcije je READ UNCOMMITTED koji dopuˇta pojavu svih problema konkurentnosti osim izgubljenog aˇuriranja s z (v. odeljak 14.3 – Problemi konkurentnosti). Ti problemi se manifestuju
  • 142. 5.1 Standardni jezik baza podataka SQL2 135 kao fenomen ˇitanja nepostoje´ih podataka1 (engl. dirty read, v. ”zavisnost c c od poniˇtenog aˇuriranja”, odeljak 14.3), i fenomeni neponovljivog ˇitanja s z c odnosno fantomskih redova. 2 Nivo READ COMMITTED dopuˇta drugi i tre´i od navedenih fenomena, s c a REPEATABLE READ samo tre´i. Dakle, po stepenu izolovanosti prema c standardu nivoi su: SERIALIZABLE, REPEATABLE READ, READ COM- MITTED, READ UNCOMMITTED. Ovim nivoima izolovanosti odgovaraju u sistemu DB2 redom slede´i nivoi: REPEATABLE READ, READ STABIL- c ITY, CURSOR STABILITY, UNOMMITTED READ. • Pored ugnjeˇdenja SQL iskaza u matiˇni jezik, SQL2 uvodi i koncept SQL pro- z c cedure na serveru koja se poziva (CALL iskazom) iz programa na matiˇnom c jeziku. Deklaracija procedure ukljuˇuje, pored parametara, jedinstveni SQL c iskaz, i mora biti u skladu sa pravilima matiˇnog jezika iz kog se poziva. c • Kao i IBM proizvodi DB2, i SQL2 podrˇava dinamiˇki SQL, izuzetno vaˇno z c z sredstvo za konstrukciju sloˇenih aplikacija. Na primer, tipiˇna on-line ap- z c likacija (aplikacija koja podrˇava pristup bazi podataka preko on-line termi- z nala) mora da ukljuˇi slede´i niz koraka: c c 1. prihvatanje komande sa terminala; 2. analiza komande; 3. izdavanje odgovaraju´eg SQL iskaza bazi podataka; c 4. vra´anje poruke i rezultata na terminal. c ˇ Umesto da se u programu predvidaju svi mogu´i oblici iskaza koji se un- c osi sa terminala u vreme izvrˇavanja programa, pogodno je konstruisati s SQL iskaz dinamiˇki (iskazom PREPARE), a zatim ga kompilirati i izvrˇiti c s ˇ takode dinamiˇki (iskazom EXECUTE, v. odeljak 3.5 Dinamiˇki SQL). SQL2 c c ukljuˇuje ve´i broj iskaza za podrˇku dinamiˇkom SQL-u, npr. PREPARE c c s c za pripremu iskaza za izvrˇenje, DEALLOCATE PREPARE za dealokaciju s ve´ pripremljenog SQL iskaza, EXECUTE za pridruˇivanje parametara i c z izvrˇenje pripremljenog iskaza, EXECUTE IMMEDIATE za jednokratnu s pripremu i izvrˇenje, DESCRIBE za opis ulaznih parametara i rezultuju´ih s c kolona pripremljenog iskaza, DECLARE ili ALLOCATE CURSOR za defin- isanje dinamiˇkog kursora nad pripremljenim iskazom, OPEN za otvaranje c i pridruˇivanje parametara dinamiˇkom kursoru, ALLOCATE / DEALLO- z c CATE / GET / SET DESCRIPTOR za manipulisanje prostorom za ulazne 1 Do ˇitanja nepostoje´ih podataka dolazi kada transakcija T aˇurira podatak koji zatim, pre c c 1 zokonˇanja transakcije T1 , druga transakcija T2 ˇita, a onda transakcija T1 poniˇti svoje aˇuriranje. c c s z 2 Do neponovljivog ˇitanja dolazi kada transakcija T proˇita podatak koji zatim, pre okonˇanja c c c 1transakcije T1 , druga transakcija T2 promeni ili izbriˇe, a onda transakcija T1 ponovo pokuˇa da s sproˇita isti podatak; do fantomskih redova dolazi kada transakcija T1 proˇita skup podataka koji c czadovoljavaju zadati uslov, zatim, pre okonˇanja transakcije T1 , druga transakcija T2 promeni ctaj skup, a onda transakcija T1 ponovo proˇita podatke po istom uslovu, pri ˇemu nailazi na c cpromenjen skup.
  • 143. 136 5 Standardi SQL-a parametre pripremljenog iskaza i za rezultuju´e vrednosti dinamiˇkog FETCH c c ili SELECT iskaza. ˇ c c s ˇ SQL2 predvida mogu´nost dinamiˇkog izvrˇenja odredenih grupa SQL iskaza, kao ˇto su: s – manipulativni iskazi (SELECT, DELETE, INSERT, UPDATE), – iskazi definisanja (CREATE, ALTER, DROP), – iskazi transakcija, itd.5.2 Pitanja i zadaci 1. Navesti karakteristike nacrta standarda SQL3. ˇ 2. Sta novo donosi standard SQL2 u oblasti domena? 3. Objasniti reˇenja standarda SQL2 u oblasti integriteta. s 4. Koje su nove mogu´nosti manipulisanja podacima ukljuˇene u SQL2? c c 5. Konstruisati u SQL2 primer tabelˆ i upita u kome se koristi spoljaˇnje spa- a s janje, i opisati rezultat izvrˇavanja tog upita. s 6. Uporediti reˇenja SQL2 vezana za aplikativni SQL sa odgovaraju´im reˇenjima s c s dijalekta DB2 SQL.
  • 144. 6Upitni jezik QUELQUEL (QUEry Language) je upitni jezik RSUBP INGRES (INteractive Graph-ics and Retrieval System), razvijenog na Kalifornijskom univerzitetu u Berkliju,SAD ([23], [59]). QUEL je zasnovan na relacionom raˇunu n-torki, i ima najviˇe c szajedniˇkih svojstava sa jezikom DL/ALPHA (Data Language ALPHA), koji je ckonstruisao Codd 1971. godine kao jednu implementaciju relacionog raˇuna ([15]). c Pored upitnog jezika QUEL, koji je primarni (i originalni) upitni jezik sistemaINGRES, komercijalni INGRES (razvijen u kompaniji RTI, Kalifornija) podrˇava izrelacioni upitni jezik SQL. Bez obzira na znaˇaj koji je dobio SQL kao standard, kao ci na razloge za usvajanje SQL standarda, dobri poznavaoci oba upitna jezika sma-traju QUEL tehniˇki superiornim u odnosu na SQL, jer je QUEL lakˇe i efikasnije c simplementirati, uˇiti i koristiti. c6.1 Interaktivni QUEL6.1.1 Definisanje podatakaIskazi definisanja podataka u QUEL-u ukljuˇuju iskaze za kreiranje i uklanjanje cbaze podataka, i za kreiranje i uklanjanje tabele, tj. redom, CREATEDB ime-baze-podataka DESTROYDB ime-baze-podataka CREATE ime-bazne-tabele ( def-kolone {, def-kolone}) DESTROY ime-bazne-tabele Definicija kolone, def-kolone, ima oblik ime-kolone = tip-kolone [ definisanost],a definisanost se odnosi na dopuˇtanje nedostaju´ih vrednosti (WITH NULL), s czabranu nedostaju´ih vrednosti (NOT NULL), odnosno njihovu zamenu specifiˇnim c c 137
  • 145. 138 6 Upitni jezik QUELvrednostima odgovaraju´eg tipa (NOT NULL WITH DEFAULT, ˇto se i podra- c szumeva ako se niˇta ne navede). s Na primer, iskaz CREATE I (I SIF = C6, NAZIV = C20, STATUS = I2, DRZAVA = C20)kreira tabelu I sa tri kolone tipa niske znakova (I SIF, NAZIV, DRZAVA) i sajednom kolonom tipa kratkog celog broja (STATUS).6.1.2 Manipulisanje podacimaU svom manipulativnom delu upitni jezik QUEL ima iskaz deklarisanja n-tornepromenljive oblika RANGE OF lista-promenljivih IS ime-tabeleNa primer, RANGE OF IX IS I. Svaka n-torna promenljiva iz liste promenljivih uzima za svoje vrednosti vrstetabele ime-tabele. Iskazi pomo´u kojih QUEL komunicira sa bazom jesu iskazi pretraˇivanja (RE- c zTRIEVE), unoˇenja (APPEND), brisanja (DELETE) i zamene (REPLACE). Opˇti s soblik ovih iskaza je iskaz [[INTO | TO] ime-rezultata] ( ciljna-lista) [WHERE logiˇki-izraz] cgde je iskaz – RETRIEVE [UNIQUE], APPEND, DELETE ili REPLACE. Za RETRIEVE i APPEND iskaze, ime-rezultata je ime tabele kojoj se dodeljujupretraˇene n-torke, odnosno u koju se unose nove n-torke; u iskazu RETRIEVE ztada se navodi i rezervisana reˇ INTO, a u iskazu APPEND – rezervisana reˇ c cTO. Za REPLACE i DELETE, ime-rezultata je ime n-torne promenljive koja, krozlogiˇki-izraz, identifikuje n-torke koje ´e se modifikovati ili brisati (INTO/TO se ne c cnavodi). Ako se u iskazu RETRIEVE ime-rezultata izostavi, pretraˇene n-torke se zizdaju na ekran (ˇtampaˇ). Opcija UNIQUE uz iskaz RETRIEVE ima isti efekat s ckao opcija DISTINCT u SQL-u. Ciljna-lista je sastavljena od elemenata dodele oblika kolona-rezultata = QUEL izrazOvde kolona-rezultata jeste kolona rezultuju´e tabele, koja treba da dobije vrednost codgovaraju´eg QUEL izraza. Ukoliko QUEL izraz jednoznaˇno imenuje kolonu c crezultuju´e tabele, kolona-rezultata i znak jednakosti se ne navode. U DELETE ciskazu nema ciljne liste.
  • 146. 6.1 Interaktivni QUEL 139 QUEL izraz sastavljen je od “indeksiranih” promenljivih (promenljivih oblikat.A, gde je t – n-torna promenljiva, a A – atribut pripadne relacije), konstanti ioperacija. Vrednost izraza je tipa kolone-rezultata.Primer 6.1 Za svaku izdatu knjigu, na´i ˇifru knjige, ˇifru izdavaˇa i tiraˇ u hi- c s s c zljadama primeraka.RETRIEVE (KI.K SIF, KI.I SIF, OBJASNJ. = ‘Tiraz u hiljadama primeraka’, TuH = KI.TIRAZ/1000) Rezultat: K SIF I SIF OBJASNJ. TuH k1 i1 Tiraz u hiljadama primeraka 10 k2 i1 Tiraz u hiljadama primeraka 7 k3 i1 Tiraz u hiljadama primeraka 10 k4 i1 Tiraz u hiljadama primeraka 10 k5 i2 Tiraz u hiljadama primeraka 5 k6 i3 Tiraz u hiljadama primeraka 3 k6 i4 Tiraz u hiljadama primeraka 5Primer 6.2 Na´i parove ˇifara izdavaˇa iz iste drˇave. c s c zRANGE OF PRVI IS IRANGE OF DRUGI IS IRETRIEVE (PRVI.I SIF, DRUGI.I SIF) WHERE PRVI.DRZAVA = DRUGI.DRZAVA AND PRVI.I SIF DRUGI.I SIF Za svaku n-tornu promenljivu koja se javlja u WHERE liniji a ne pojavljujese u ciljnoj listi, podrazumeva se da je egzistencijalno kvantifikovana. Agregatnafunkcija ANY, koja vra´a vrednost 0 ako je njen argument prazan skup, a 1 u c ˇsuprotnom, moˇe takode da se upotrebi za modeliranje egzistencijalnog kvantifika- ztora (ANY(. . . ) = 0 je analogon negacije SQL kvantifikatora NOT EXISTS, v.primer 6.8).Primer 6.3 Izmeniti status izdavaˇa sa ˇifrom i1 na 20. c s REPLACE I (STATUS = 20) WHERE I.I SIF = ’i1’Primer 6.4 Izbrisati izdavaˇa sa ˇifrom i4. c s DELETE I WHERE I.I SIF = ’i4’
  • 147. 140 6 Upitni jezik QUELPrimer 6.5 Dodati tabeli K BC (koja ima iste atribute kao i tabela K) sve vrstetabele K ˇija je ˇifra K SIF jednaka k1 ili k3. c s 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 Agregatne operacije i funkcijeQUEL podrˇava agregatne funkcije (u terminologiji QUEL-a – agregatne operacije) zCOUNT, AVG, MAX, MIN, SUM, ANY, COUNTU, AVGU i SUMU (u poslednjetri operacije “U” oznaˇava jedinstvenost, engl. “unique”, ˇto realizuje efekat opcije c sDISTINCT u SQL-u). Za razliku od SQL-a, u QUEL-u je dopuˇtena upotreba sagregatnih operacija i u WHERE liniji (ˇto ˇini upotrebu HAVING linije nepotre- s cbnom). Argument agregatne operacije moˇe biti kvalifikovan WHERE linijom ili zBY opcijom, pri ˇemu agregatna operacija u QUEL-u postaje agregatna funkcija. cPrimer 6.6 Na´i proseˇni status jugoslovenskih izdavaˇa. c c c RETRIEVE (Z = AVG(I.STATUS WHERE I.DRZAVA = ‘Jugoslavija’))Primer 6.7 Na´i ˇifre izdavaˇa koji su izdali viˇe od 10 izdanja. c s c s RETRIEVE (KI.I SIF) WHERE COUNT(KI.K SIF BY KI.I SIF) 10 Sve n-torne promenljive koje se navode unutar agregatne funkcije su lokalne zaagregatnu funkciju, osim promenljivih u BY opciji koja se ponaˇa sliˇno GROUP s cBY liniji u SQL-u. Zato se u BY opciji navode n-torne promenljive koje imajuznaˇenje izvan agregatne funkcije, a koje mogu da uˇestvuju i u logiˇkom izrazu c c cWHERE linije agregatne funkcije. Slede´i primer to dobro ilustruje. c c c ´ cPrimer 6.8 Na´i nazive izdavaˇa koji su izdali sve knjige Branka Copi´a. Ovaj upit je razmatran u odeljku 2.1 kao ilustracija operacije deljenja, i uprimeru 3.26 glave 3. Pretpostavimo da je tabela K BC ve´ kreirana i da se u njoj c ´ cnalaze sve (i samo) knjige Branka Copi´a. Tada se upit pretraˇivanja u QUEL-u zizraˇava primenom agregatne funkcije ANY na slede´i naˇin: z c c RETRIEVE (I.NAZIV) WHERE ANY (K BC.K SIF BY I.I SIF WHERE ANY (KI.K SIF BY K BC.K SIF, I.I SIF WHERE KI.I SIF = I.I SIF AND KI.K SIF = K BC.K SIF ) = 0 ) = 0 Argument agregatne funkcije moˇe biti i druga agregatna funkcija. z
  • 148. 6.1 Interaktivni QUEL 141Primer 6.9 Na´i proseˇni ukupni tiraˇ izdavaˇa. c c z c RETRIEVE (Z = AVG(SUM(TIRAZ BY KI.I SIF)))Ovo je primer upita koji se ne moˇe izraziti jednim SQL iskazom. Mogu se kon- zstruisati i razne druge vrste takvih primera.6.1.4 Relaciona kompletnost QUEL-aUpitni jezik QUEL je relaciono kompletan, ˇto se jednostavno dokazuje slede´im s crazmatranjem. 1. Skupovna operacija unije relacija R(A1 , . . . , An ), S(B1 , . . . , Bm ), za m = n, moˇe se izraziti slede´im QUEL iskazima (pretpostavlja se da je ve´ kreirana z c c tabela T sa n atributa C1 , C2 , . . . , Cn ): RANGE OF r IS R RANGE OF s IS S APPEND TO T (C1 = r.A1 , . . . , Cn = r.An ) APPEND TO T (C1 = s.B1 , . . . , Cn = s.Bn ) (sliˇno za operacije preseka i razlike). c 2. Skupovna operacija Dekartovog proizvoda relacija R, S moˇe se izraziti z slede´im QUEL iskazima: c RANGE OF r IS R RANGE OF s IS S APPEND TO T (C1 = r.A1 , . . . , Cn = r.An , Cn+1 = s.B1 , . . . , Cn+m = s.Bm ) 3. Operacija restrikcije relacije R po logiˇkom uslovu Ψ moˇe se izraziti QUEL c z iskazom: RANGE OF r IS R APPEND TO T (C1 = r.A1 , . . . , Cn = r.An ) WHERE Ψ (Ψ je logiˇki izraz u QUEL sintaksi). c 4. Operacija projekcije relacije R na atribute Ai1 , . . . , Aik moˇe se izraziti QUEL z iskazom: RANGE OF r IS R APPEND TO T (C1 = r.Ai1 , . . . , Ck = r.Aik ) 5. Operacija slobodnog Θ-spajanja relacija R, S po paru atributa Ai , Bj moˇe z se izraziti QUEL iskazom: RANGE OF r IS R RANGE OF s IS S APPEND TO T (C1 = r.A1 , . . . , Cn = r.An , Cn+1 = s.B1 , . . . , Cn+m = s.Bm ) WHERE r.Ai Θs.Bj
  • 149. 142 6 Upitni jezik QUEL 6. Operacija prirodnog spajanja relacija R, S po paru atributa Ai , Bj moˇe se z izraziti QUEL iskazom: RANGE OF r IS R RANGE OF s IS S APPEND TO T (C1 = r.A1 , . . . , Cn = r.An , Cn+1 = s.B1 , . . . , Cn+j−1 = Bj−1 , Cn+j = Bj+1 , . . . , Cn+m−1 = s.Bm ) WHERE r.Ai = s.Bj 7. Operacija deljenja relacije R(A1 , A2 ) po atributu A2 , relacijom S(B1 ), moˇe z se izraziti QUEL iskazom: RANGE OF r1 IS R RANGE OF r2 IS R RANGE OF s IS S APPEND 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) = 06.1.5 Iskazi DEFINE i MODIFYDefinisanje pogleda u QUEL-u je veoma sliˇno definisanju pogleda u SQL-u. Iskaz cdefinisanja pogleda ima oblik DEFINE VIEW ime-pogleda ( ciljna-lista) WHERE logiˇki-izraz cNad pogledom se mogu izvrˇavati operacije analogne operacijama nad pogledima u sSQL-u. S obzirom na znatno sistematiˇniju sintaksu QUEL-a, u QUEL-u se mogu cizvrˇavati neke operacije pretraˇivanja pogleda koje ne mogu u SQL-u. U sluˇaju s z caˇuriranja pogleda, ovi jezici ponaˇaju se sliˇno. z s c Za definisanje fiziˇke reprezentacije relacije i metoda pristupa, QUEL ukljuˇuje c ciskaz izmene fiziˇke reprezentacije relacije c MODIFY ime-relacije TO struktura [UNIQUE] ON atr 1, . . . , atr k ˇgde struktura moˇe biti HEAP (gomila, sekvencijalna neuredena reprezentacija), zISAM (sortirana, indeks-sekvencijalna reprezentacija), HASH (direktna, heˇ re- sprezentacija), BTREE (dinamiˇka indeksna reprezentacija), HEAPSORT (sekven- c ˇcijalna uredena reprezentacija), kao i odgovaraju´e komprimovane reprezentacije c(CHEAP, CISAM, CHASH, CBTREE, CHEAPSORT) (o fiziˇkoj organizaciji po- cdataka uopˇte bi´e viˇe reˇi u delu ??). Na primer, s c s c MODIFY I TO BTREE UNIQUE ON I SIF QUEL poseduje i iskaz za definisanje sekundarnih indeksa koji se odnose naindeksnu organizaciju sa viˇe negrupiˇu´ih indeksa (v. glavu 12), s s c
  • 150. 6.2 Aplikativni QUEL 143 INDEX ON ime-relacije IS ime-indeksa (atr 1, . . . , atr k)Na primer, INDEX ON I IS INDNAZIV (NAZIV). Integritetni deo relacionog modela u QUEL-u se ostvaruje iskazom DEFINE INTEGRITY ON n-torna-promenljiva IS logiˇki-izraz cOvim iskazom mogu se zadati samo uslovi integriteta koji ukljuˇuju logiˇki izraz c ctipa restrikcije, tj. logiˇki izraz moˇe da ukljuˇi samo n-tornu promenljivu iz ovog c z ciskaza. Na primer, DEFINE INTEGRITY ON I IS I.STATUS 0. Postupkommodifikacije upita svaka izmena nad tabelom I dopunjuje se uslovom integritetadefinisanim nad tom tabelom. Integritet entiteta je u QUEL-u podrˇan CREATE iskazom, dok referenci- zjalni integritet nije podrˇan (osim posredno, kroz neke od komercijalnih INGRES z ˇsumeda).6.2 Aplikativni QUELKao i SQL, i QUEL ima svoju aplikativnu varijantu. To je EQUEL (Embed-ded QUEL), QUEL ugnjeˇden u programski jezik C (kao i u jezike Ada, BASIC, zCOBOL, FORTRAN, PL/I, Pascal). Osnovni princip EQUEL-a je princip dualnosti, tj. princip da se svaki QUELiskaz koji se moˇe izvrˇiti interaktivno, moˇe upotrebiti i u aplikativnom (EQUEL) z s zprogramu; obrat ne vaˇi, tj. postoji niz iskaza koji se mogu upotrebiti u aplika- ztivnom, ali ne i u interaktivnom radu. Osnovne karakteristike EQUEL jezika mogu se sumirati na slede´i naˇin: c c ˇ • EQUEL program mora da prode obradu kroz prekompilator, koji izvrˇne s QUEL iskaze zamenjuje pozivima (u matiˇnom jeziku) izvrˇnog EQUEL si- c s stema. Zato sve linije aplikativnog programa koje treba da obradi prekompi- lator poˇinju znakom ## u prve dve zauzete kolone; to su linije koje sadrˇe c z QUEL iskaze, ali i deklaracije matiˇnog jezika (npr. C) kojima se deklariˇu c s programske promenljive koje ´e se navesti u nekom QUEL iskazu. c • Izvrˇni QUEL iskazi u EQUEL programu mogu se pojaviti na svakom mestu s gde mogu i izvrˇni iskazi matiˇnog jezika. s c • Programske promenljive mogu se koristiti u ciljnoj listi RETRIEVE iskaza, kao imena n-tornih promenljivih, kao imena tabela i kolona, unutar QUEL izraza i logiˇkih izraza. c • EQUEL program moˇe pristupiti samo jednoj bazi podataka u jednom z trenutku; za pristup bazi, odnosno za kraj rada sa bazom, koriste se EQUEL iskazi “otvaranja” odnosno “zatvaranja” baze podataka:
  • 151. 144 6 Upitni jezik QUEL ## INGRES ime-baze-podataka ## EXIT • Programske promenljive i kolone tabela mogu imati isto ime, ali onda imenu kolone prethodi znak #. Na primer, ## RETRIEVE (STAT = I.STATUS, DRZAVA = I.#DRZAVA) ## WHERE I.I SIF = DATA SIFRA (STAT, DRZAVA i DATA SIFRA su programske promenljive prethodno deklarisane u skladu sa tipom kolona STATUS, DRZAVA i I SIF). Od svih QUEL iskaza, jedini koji se u aplikativnoj varijanti koncepcijski raz-likuje od interaktivne jeste iskaz RETRIEVE. Problem predstavlja razlika izmeduˇskupovno orijentisanog QUEL-a (objekat pretraˇivanja i rezultat pretraˇivanja je z ztabela, dakle skup vrsta) i slogovno orijentisanog programskog jezika. Jedan odnaˇina za reˇavanje ovog problema su, kao i u SQL-u, kursori. Drugi naˇin je c s c ˇRETRIEVE petlja. Tako se RETRIEVE iskaz bez navodenja rezultuju´e tabele, ckoriˇ´enjem RETRIEVE petlje moˇe predstaviti kao: sc z ## RETRIEVE ( ciljna-lista) ## [WHERE logiˇki-izraz] c ##{ programski-blok ##}Ovaj iskaz izvrˇava se tako ˇto se programski-blok izvrˇava po jedanput za svaku s s svrstu za koju je logiˇki-izraz taˇan. c cPrimer 6.10 Uneti u tabelu K vrstu sa vrednostima atributa koje su u program-skim promenljivim K SIF, NASLOV i OBL. ## APPEND TO K (#K SIF = K SIF, #NASLOV = NASLOV, OBLAST = OBL)Primer 6.11 Izbrisati sva izdanja izdavaˇa ˇija je drˇava data u programskoj c c zpromenljivoj DRZAVA. ## DELETE KI ## WHERE KI.I SIF = I.I SIF AND I.#DRZAVA = DRZAVAPrimer 6.12 Uve´ati status svih jugoslovenskih izdavaˇa za vrednost programske c cpromenljive DOD. ## REPLACE I (STATUS = I.STATUS + DOD) ## WHERE I.DRZAVA = ‘Jugoslavija’
  • 152. 6.3 Pitanja i zadaci 145Primer 6.13 Program na EQUEL-u za ˇitanje (sa ulaza) naziva izdavaˇa i c cˇtampanje njegovog statusa moˇe imati slede´i oblik:s z c main() { ## char NAZIVIZD[20]; ## int ST; while (READ( NAZIVIZD ) ) { ## RANGE OF IX IS I ## RETRIEVE (ST = IX.STATUS) ## WHERE IX.NAZIV = NAZIVIZD ##{ printf(Status izdavaca %s, NAZIVIZD, je %i, ST); ##} } } Za svaku n-torku relacije I za koju je logiˇki izraz taˇan, C promenljivoj ST c cdodeljuje se vrednost atributa STATUS te n-torke, i izvrˇava se iskaz ˇtampanja s sprintf. Detaljnije informacije o EQUEL-u mogu se na´i u [23], [51]. c6.3 Pitanja i zadaci 1. Napisati QUEL iskaze za kreiranje tabela K, P, KI, KP iz odeljka 1.2. 2. Neka je dat upit: Na´i sve podatke o izdavaˇima i broju njihovih izdanja. Da c c li je slede´i QUEL iskaz korektan zapis ovog upita? c RETRIEVE (I.ALL, X = COUNT( KI.IZDANJE BY I.I SIF ) ) Obrazloˇiti. z 3. QUEL iskazima formulisati upite iz zadatka 10 glave 2. 4. QUEL iskazima formulisati upite iz zadatka 7 glave 3. 5. Kojim se QUEL iskazom ostvaruje integritet? 6. Napisati QUEL iskaz kojim se ostvaruju slede´e radnje: c • Promeniti oblast svim romanima u beletristiku. • Izbrisati sve podatke o izdavaˇima koji nisu izdali nijednu knjigu. c • Uve´ati tiraˇ svim izdanjima ˇiji je teku´i tiraˇ manji od najmanjeg c z c c z tiraˇa izdavaˇa i3. z c
  • 153. 146 6 Upitni jezik QUEL • Uneti novog izdavaˇa sa ˇifrom k5, nazivom Nolit, statusom 30 i drˇavom c s z Jugoslavija. • Konstruisati novu tabelu sa imenom JK koja sadrˇi podatke o knjigama z ˇiji je bar jedan autor jugoslovenski drˇavljanin ili ih je izdao bar jedan c z jugoslovenski izdavaˇ. c • Izbrisati sve izdavaˇe iz Amerike i njihova izdanja. c 7. Koje su osnovne karakteristike EQUEL jezika? 8. Koriste´i izdavaˇku bazu podataka napisati EQUEL program koji ˇtampa sve c c s ˇifre pisaca. Za ˇifrom pisca treba da slede svi podaci o izdavaˇima koji izdaju s s c knjige tog pisca.
  • 154. 7Optimizacija upita7.1 KatalogU ovom odeljku, na poˇetku izlaganja o optimizaciji upita, bi´e reˇi o sistemskom c c ckatalogu kao sistemskoj bazi podataka o bazama podataka. Potreba za ovim izla-ganjem postoji zbog vaˇnosti uloge koju katalog ima u procesu optimizacije upita. z Katalog, kao sistemska baza podataka (ili njen deo), sadrˇi informacije o raznim zobjektima u sistemu kao ˇto su bazne tabele, pogledi, indeksi, baze podataka, splanovi izvrˇavanja upita (planovi aplikacije, tj. pristupni paketi, v. glavu 18), sovlaˇ´enja za pristup objektima, itd. Katalog se razlikuje od sistema do sistema sc(INGRES, SYSTEM R, DB2, ORACLE), jer ukljuˇuje informacije vezane za sis- ctem. Karakteristiˇno za katalog je da obiˇno ukljuˇuje tabelu koja sadrˇi po jednu c c c zn-torku za svaku tabelu u sistemu, ukljuˇuju´i i sistemske tabele, zatim tabelu c csvih atributa svih tabela u sistemu, tabelu svih indeksa svih tabela u sistemu, kaoi tabele pogleda, baza podataka, uslova integriteta, stranih kljuˇeva, autorizacije, coptimizovanih upita, sinonima, itd. Ove tabele sadrˇe informacije o imenu objekta z(npr. tabele, atributa, indeksa, baze, pogleda), vlasniku, broju atributa (tabele),tabeli za koju je (atribut, indeks) vezan, tipu atributa, itd. S obzirom da je sistemski katalog relacionog sistema – relaciona baza podataka,ona se moˇe pretraˇivati istim upitnim jezikom kao i korisniˇke baze podataka (npr. z z c ˇSQL, QUEL). Medutim, tabele kataloga ne mogu se aˇurirati iskazima aˇuriranja z zupitnog jezika, jer to moˇe da bude vrlo opasno po podatke u bazi i pristup po- zdacima. Tako, ako bi se iz tabele o atributima u katalogu izbrisala n-torka kojase odnosi na neki atribut u nekoj baznoj tabeli, onda bi taj atribut postao nepoz-nat sistemu, i ne bi mu se moglo viˇe pristupiti, iako bi njegove vrednosti fiziˇki s cpostojale u bazi. Aˇuriranje sistemskih tabela u katalogu vrˇi se “sistemski” – z sautomatski, pri izvrˇavanju iskaza kreiranja i uklanjanja baznih tabela, pogleda si indeksa, odnosno pri izvrˇavanju iskaza modifikovanja strukture baznih tabela i sindeksa. Katalog sistema DB2 sadrˇi viˇe desetina sistemskih baznih tabela i pogleda z s 147
  • 155. 148 7 Optimizacija upitau sistemskoj bazi podataka ([24]). Navedimo neke od tih pogleda sa njihovomdelimiˇnom strukturom. c • SYSSTAT.TABLES (TABSCHEMA, TABNAME, DEFINER, TYPE, TBSPACE, COLCOUNT, CARD, NPAGES, PARENTS, CHILDREN, ... ) Za svaku tabelu u sistemu, baznu ili pogled, ova tabela sadrˇi n-torku u kojoj z registruje niz svojstava (viˇe od 30) te tabele: ime tabele (TABNAME), ime s sheme (TABSCHEMA), identifikator vlasnika tabele (DEFINER), tip tabele (TYPE – bazna tabela, pogled, drugo ime – alias), ime prostora tabela kome pripada tabela (TBSPACE), broj kolona (COLCOUNT), ukupan broj n-torki tabele (CARD), ukupan broj stranica na kojima se pojavljuju n-torke tabele (NPAGES), itd. • SYSSTAT.COLUMNS (TABSCHEMA, TABNAME, COLNAME, COLCARD, ... ) Za svaku kolonu svake tabele u sistemu ova tabela sadrˇi n-torku u ko- z joj registruje niz svojstava te kolone: ime kolone (COLNAME), ime tabele kojoj kolona pripada (TABNAME), ime sheme kojoj tabela pri- pada(TABSCHEMA), broj razliˇitih vrednosti u koloni (COLCARD), itd. c • SYSSTAT.INDEXES (INDSCHEMA, INDNAME, FIRSTKEYCARD, COLCOUNT, FULLKEYCARD, NLEAF, NLEVELS, ... ) Za svaki indeks u sistemu ova tabela sadrˇi n-torku u kojoj registruje ime z indeksa (INDNAME), shema indeksa (INDSCHEMA) broj kolona u in- deksu (COLCOUNT), broj razliˇitih vrednosti prve navedene kolone indeksa c (FIRSTKEYCARD), broj razliˇitih vrednosti indeksa (po svim njegovim c kolonama, FULLKEYCARD), broj listova u strukturi indeksa (NLEAF), broj nivoa indeksnog drveta (NLEVELS), i niz drugih svojstava. Osim ovih tabela ˇiji je znaˇaj prepoznatljiv, DB2 katalog sadrˇi i grupe tabela c c zsa informacijama o strukturama (bazama podataka u sistemu, prostorima tabela,izvornim definicijama pogleda, planovima izvrˇavanja – pristupnim paketima), o sautorizaciji (pravima pristupa kolonama, bazama podataka, planovima izvrˇavanja, ssistemskim funkcijama, fiziˇkim strukturama), kao i tabele o oporavku, integritetu c(primarnim, stranim kljuˇevima), itd. c Pretraˇivanje tabela sistemskog kataloga moˇe se vrˇiti SQL iskazima. z z s Naprimer, iskaz SELECT TABNAME, TABSCHEMA FROM SYSSTAT.COLUMNS WHERE COLNAME = I SIFdaje imena svih tabela (u ovom sluˇaju I, KI) i shema u kojima su kreirane, koje cimaju kolonu (atribut) I SIF. SYSSTAT je ime sheme u kojoj se nalaze ovi kataloˇki spogledi.
  • 156. 7.2 Sistematski pristup optimizaciji 1497.2 Sistematski pristup optimizacijiOptimizacija upita je komponenta procesora upitnog jezika koja je neophodna,bar kod velikih sistema i za velike baze podataka, da bi sistem uopˇte mogao da szadovolji traˇenu efikasnost. Posebnu pogodnost kod optimizacije upita pruˇaju z zrelacioni sistemi, s obzirom na dovoljno apstraktni nivo relacionih izraza kojima seupiti zadaju. Kod nerelacionih sistema optimizaciju sprovodi korisnik, a ne sistem, jer nerela-cioni modeli ne ostvaruju dovoljnu meru razdvajanja logiˇkog od fiziˇkog nivoa c cpodataka i pristupa podacima; tako ve´ u formulaciji upita mora biti sadrˇana i in- c zformacija o pristupnom putu i naˇinu izvrˇavanja upita. Automatska optimizacija, c sosim ˇto je kod relacionih sistema mogu´a a kod nerelacionih nije, daje znaˇajne s c cprednosti u kvalitetu, jer ˇovek ˇesto nije u mogu´nosti da postigne kvalitet op- c c ctimizacije koji postiˇe sistem. Ova prednost sistema nad ˇovekom je posledica z cˇinjenice da sistem “ima uvid” u vrednosti podataka (a ne samo u njihovu struk-cturu) koji ˇovek – korisnik nema, kao i, s obzirom na brzinu rada sistema, posled- c ˇica mogu´nosti proizvodenja ve´eg broja alternativnih naˇina izvrˇavanja upita i c c c sprocene njihove efikasnosti. Cilj optimizacije kod upitnih jezika je izbor strategije za izraˇunavanje datog crelacionog izraza, koja bi, kao i u sluˇaju programskih jezika, omogu´ila izvesna c cpoboljˇanja u odnosu na neoptimizovanu varijantu, a ne izbor optimalne strategije su smislu teorije upravljanja i optimizacije. Dve osnovne vrste optimizacije koje se sre´u u procesorima upitnih jezika jesu cstrategija algebarske transformacije upita i strategija procene cene. Prva ne zavisiod specifiˇnih podataka u bazi, dok druga zavisi. Tako bi, na primer, jedno pra- cvilo algebarske transformacije, koje je skoro uvek dobro primeniti, bilo: primenitirestrikciju ˇto je mogu´e ranije u izvrˇenju upita. Strategije procene cene koriste, s c sna primer, informaciju (iz sistemskog kataloga) o postojanju indeksa nad tabelomiz upita.Primer 7.1 Posmatrajmo upit kojim se traˇe nazivi izdavaˇa koji izdaju knjigu z csa ˇifrom k2; takav upit se u SQL-u moˇe izraziti slede´im SELECT blokom: s z c SELECT DISTINCT I.NAZIV FROM I, KI WHERE I.I SIF = KI.I SIF AND KI.K SIF = ’k2’ Neka baza podataka sadrˇi 100 izdavaˇa (vrsta u tabeli I) i 10000 izdanja (vrsta z cu tabeli KI), od kojih se 20 odnosi na izdanja knjige sa ˇifrom k2. Jedan naˇin s cizvrˇavanja ovog upita, bez primene optimizacije, mogao bi se sastojati u slede´em s cnizu radnji. 1. Izraˇunati Dekartov proizvod tabela I i KI; pri tom se ˇita 10100 vrsta sa c cdiska i konstruiˇe se privremena tabela sa 1000000 vrsta, koja, zbog veliˇine, mora s c ˇtakode da se upiˇe na disk. s
  • 157. 150 7 Optimizacija upita 2. Izvrˇiti restrikciju dobijene privremene tabele po WHERE logiˇkom uslovu, s ctj. po logiˇkom izrazu I.I SIF = KI.I SIF AND KI.K SIF = ’k2’; ona ukljuˇuje c csekvencijalno ˇitanje 1000000 vrsta sa diska i konstrukciju privremene tabele sa csamo 20 vrsta, koja se moˇe zadrˇati u unutraˇnjoj memoriji. z z s 3. Projektovati privremenu tabelu dobijenu u koraku 2 na atribut NAZIV, ˇime cse dobija najviˇe 20 podataka. s Jasno je da je ovaj postupak, mada neposredno diktiran sintaksom upita, naj-manje efikasan. Znatno efikasnije izvrˇavanje upita dao bi slede´i postupak. s c 1’. Izvrˇiti restrikciju tabele KI po uslovu KI.K SIF = ’k2’, ˇime se sekvencijalno s cˇita 10000 vrsta i proizvodi privremena tabela sa 20 vrsta koja se moˇe zadrˇati uc z zunutraˇnjoj memoriji. s 2’. Spojiti privremenu tabelu dobijenu u koraku 1’ sa tabelom I po jednakimvrednostima atributa I SIF; time se ˇita 100 vrsta tabele I sa diska i proizvodi cprivremena tabela sa 20 vrsta koja ostaje u unutraˇnjoj memoriji. s 3’. Projektovati privremenu tabelu dobijenu u koraku 2’ na atribut NAZIV. Ako se broj ulazno/izlaznih operacija nad diskom (broj ˇitanja stranica sa diska codnosno upisa stranica na disk) uzme kao mera efikasnosti (ˇto je realno s obzirom sda te operacije oduzimaju najve´i deo vremena), onda je drugi postupak 200 puta cefikasniji od prvog. Ako je joˇ tabela KI indeksirana (ili heˇirana, v. glavu 13) po s satributu K SIF, broj ˇitanja u koraku 1’ je 20 a ne 10000. Indeks ili heˇ algoritam c smogli bi da pomognu i u koraku 2’, tako ˇto bi se broj ˇitanja sa diska smanjio sa s c100 na najviˇe 20. s Prethodni primer je izuzetno jednostavan, pa se zato odmah uoˇavaju adekvatni c s c ˇelementi optimizacije. U opˇtem sluˇaju, medutim, potreban je sistematski pristupoptimizaciji, koji ukljuˇuje slede´e faze. c cI Prevesti upit u internu reprezentaciju koja bi ga uˇinila neosetljivim na detalje cspecifiˇne sintakse. cII Prevesti internu reprezentaciju upita u kanoniˇku formu, kojom bi se anulirale c ˇrazlike izmedu semantiˇki ekvivalentnih (v. definiciju 7.2) a sintaksno razliˇitih c cformulacija upita.III Izabrati kandidate za procedure niskog nivoa kojima se mogu realizovati poje-dine operacije sadrˇane u upitu. zIV Generisati planove izvrˇavanja kompletnih upita i izabrati najjeftiniji. s Opiˇimo neˇto detaljnije navedene faze. s s ˇI Prevodenje upita u internu reprezentaciju podrazumeva njegovo “ˇiˇ´enje” od c scspecifiˇne sintakse i predstavljanje nekim formalizmom interne reprezentacije. Taj cformalizam mora biti dovoljno bogat da omogu´i predstavljanje svih upita upitnog cjezika i ˇto je mogu´e neutralniji da ne bi uticao na kasnije odluke optimizatora. s cNajˇeˇ´i formalizmi interne reprezentacije jesu neki oblik drveta apstraktne sintakse c sc(DAS) i odabrana sintaksa relacione algebre. Tako se polazni upit sa poˇetka ovog codeljka moˇe predstaviti DAS-om na slici 7.1 ili izrazom relacione algebre z
  • 158. 7.2 Sistematski pristup optimizaciji 151 (( I ∗ KI )[ K SIF = ’k2’ ])[ NAZIV ]. rezultat ↑ projekcija (NAZIV) ↑ restrikcija (K SIF = ’k2’) ↑ spajanje (I.I SIF = KI.I SIF) ↑ ↑ I KI Slika 7.1: Drvo apstraktne sintakse (DAS) upitaII Ve´ina upitnih jezika omogu´uje da se proizvoljni upit predstavi na mnogo c c(manje ili viˇe) razliˇitih naˇina. Tako, trivijalna razlika se sastoji u promeni strana s c coperanada komutativnih operacija (npr. jednakosti, konjunkcije ili disjunkcije). Ne-trivijalne razlike bile bi u promenjenom redosledu operacija. Na primer, prethodniupit ((I∗ KI) [K SIF=’k2’]) [NAZIV] mogao bi se postaviti i relacionim izrazom (I∗(KI [K SIF = ’k2’])) [NAZIV]. Zbog tih sintaksnih razlika u postavljanju semantiˇki cekvivalentnih upita, interna reprezentacija se prevodi u kanoniˇku formu. cDefinicija 7.1 (kanoniˇka forma) Neka je dat skup Q objekata i relacija ek- c ˇvivalencije medu objektima. Tada se podskup C ⊆ Q zove skup kanoniˇkih formi cskupa Q pri izabranoj relaciji ekvivalencije ako je svaki objekat q ∈ Q ekvivalentannekom (taˇno jednom) objektu c ∈ C. Objekat c zove se kanoniˇka forma objekta c cq. U kontekstu optimizacije upita, skup Q je skup upita, a relacija ekvivalen- ˇ ˇcije medu objektima je relacija ekvivalencije medu upitima. Smisao definicije 7.1je da omogu´i da se prouˇavanjem nekog podskupa C kanoniˇkih formi, umesto c c cprouˇavanjem skupa Q svih upita, dokaˇu bitna svojstva celog skupa Q. c z ˇ Relaciju ekvivalencije medu upitima prirodno je definisati kao semantiˇku ekvi- cvalenciju upita.Definicija 7.2 (semantiˇka ekvivalentnost) Upiti q1 i q2 su semantiˇki ekvi- c cvalentni ako za svaki izbor sadrˇaja tabela nad kojima su definisani, oba proizvode zisti rezultat. Relaciju semantiˇke ekvivalencije upita potrebno je sintaksno opisati, ˇto je c sveoma sloˇen zadatak. Naˇin da se to uˇini je definisanje pravila transformacije z c c ˇupita koja definiˇu drugu relaciju ekvivalencije medu upitima, relaciju sintaksne sekvivalencije. Pri tome se za sintaksno ekvivalentne proglaˇavaju svi oni upiti koji s
  • 159. 152 7 Optimizacija upitase tim pravilima mogu transformisati u isti oblik; taj transformisani oblik je njihovakanoniˇka forma. Optimalno bi bilo da se klase semantiˇke i sintaksne ekvivalencije c cpoklapaju. Obavezno je pak da svi sintaksno ekvivalentni upiti budu i semantiˇki cekvivalentni, tj. da svaka klasa sintaksne ekvivalencije bude podskup neke klasesemantiˇke ekvivalencije, za ˇta je odgovorna semantiˇka valjanost pravila trans- c s cformacije. Naime, ni jednim pravilom transformacije upit ne sme da promeni svojuklasu semantiˇke ekvivalencije. Od kompletnosti skupa pravila transformacije za- cvisi koliko ´e klasa sintaksne ekvivalencije biti sadrˇano u jednoj klasi semantiˇke c z cekvivalencije, a praktiˇni cilj je da taj broj bude ˇto manji. c s Ako je skup objekata Q – skup svih mogu´ih upita interne reprezentacije, skup cpravila transformacije upita u kanoniˇku formu mogao bi da ukljuˇi slede´a pravila: c c c • logiˇke izraze restrikcije prevesti u konjunktivnu normalnu formu, tj. u kon- c ˇ ˇ junkciju prostih poredenja i/ili disjunkcijˆ prostih poredenja. Na primer, a izraz p OR (q AND r) treba zameniti izrazom (p OR q) AND (p OR r); • operacijama restrikcije dati viˇi prioritet (zagradama) u odnosu na operacije s spajanja, tj. izraz oblika (R ∗ S)[restrikcija-nad-S] treba zameniti izrazom (R∗(S[restrikcija-nad-S])), a izraz (R ∗ S)[restrikcija-nad-R AND restrikcija-nad-S] treba zameniti izrazom (R[restrikcija-nad-R])∗(S[restrikcija-nad-S]); • niz restrikcija kombinovati u jednu restrikciju, tj. izraz oblika (R[restrikcija-1])[restrikcija-2] treba zameniti izrazom R[restrikcija-1 AND restrikcija-2]; • u nizu projekcija ˇije su liste atributa, zdesna ulevo, u relaciji inkluzije, eli- c minisati sve projekcije osim poslednje, tj. izraz oblika (R[lista-atributa-1])[lista-atributa-2], ako je lista-atributa-2 ⊆ lista-atributa-1 zameniti izrazom R[lista-atributa-2]; • restrikciju projekcije zameniti projekcijom restrikcije, tj. izraz oblika (R[lista-atributa-1])[restrikcija-1] zameniti izrazom (R[restrikcija-1])[lista-atributa-1]. Lista pravila nije kompletna, i razliˇiti sistemi je dopunjuju pravilima za koja cse teorijskim i praktiˇnim istraˇivanjima pokazuje da su korisna. Tako je jedno, c zuvek korisno pravilo, na primer, slede´e: c
  • 160. 7.2 Sistematski pristup optimizaciji 153 – ako je S.A strani kljuˇ koji se odnosi na primarni kljuˇ R.A, onda se izraz c c(S ∗ R)[A] moˇe zameniti izrazom S[A]; na primer, izraz (KI ∗ K)[K SIF] moˇe da z zse zameni izrazom KI[K SIF]. Sistem INGRES primenjuje i pravilo koje proˇirenjem restrikcije smanjuje obim s ˇrelacije medurezultata, ˇto je ilustrovano slede´im primerima: s c – izraz A.F1 B.F2 AND B.F2 = 3 moˇe se zameniti izrazom A.F1 B.F2 zAND B.F2 = 3 AND A.F1 3; – izraz I.DRZAVA P.DRZAVA AND P.DRZAVA ’Amerika’,moˇe se zameniti izrazom z I.DRZAVA P.DRZAVA AND P.DRZAVA ’Amerika’ AND I.DRZAVA ’Amerika’.III Poˇto je upit transformisan u svoju kanoniˇku formu (bez obzira na to ko- s cjim pravilima pojedini sistem realizovao tu transformaciju), slede´i korak treba da codgovori na pitanje kako izraˇunati transformisani upit. Na ovom nivou razma- ctraju se pristupni putevi kao ˇto su indeksi ili heˇ algoritmi, distribucija vrednosti s spodataka, fiziˇko grupisanje slogova, itd. Upitni izraz u kanoniˇkoj formi posma- c ctra se kao niz operacija niskog nivoa – spajanja, restrikcije, itd. Za svaku od tihoperacija optimizator ima na raspolaganju skup unapred definisanih procedura zanjihovu implementaciju, u zavisnosti od svojstava relacija – argumenata operacije.Na primer, optimizator ima na raspolaganju skup procedura za izvrˇavanje restrik- scije: jednu za ’=’ restrikciju na jedinstvenom atributu, drugu za indeksirani atributrestrikcije, tre´u za grupiˇu´i atribut restrikcije, itd. Uz svaku od procedura pos- c s ctoji i informacija o njenoj “ceni”, tj. o prostoru i vremenu potrebnom za njenoizvrˇenje. s Upotrebom informacija iz sistemskog kataloga o teku´em stanju baze podataka c(na primer, o kardinalnosti relacija i pristupnim putevima), optimizator bira jednuili viˇe procedura – kandidata za svaku od operacija u upitnom izrazu. Ovaj proces sse nekada zove izbor pristupnog puta.IV Poslednja faza u procesu optimizacije je konstrukcija skupa upitnih planova(planova izvrˇavanja upita), sa izborom najboljeg (na primer, najjeftinijeg). Svaki supitni plan je kombinacija procedurˆ od kojih svaka odgovara po jednoj operaciji u aupitu. Broj mogu´ih planova je obiˇno suviˇe veliki, pa je poˇeljno koriˇ´enje neke c c s z scheuristike koja ograniˇava broj planova koji se generiˇu. Izbor se vrˇi na osnovu cene c s splana, a formula cene je najˇeˇ´e broj operacija ulaza/izlaza sa diska, mada se nekad c scu formulu cene ukljuˇuje i koriˇ´enje centralnog procesora. Treba napomenuti da c scje procena cene veoma teˇak zadatak jer svi upiti (osim najjednostavnijih) generiˇu z s ˇtabele – medurezultate koje treba upisati na disk (i ˇitati sa diska), a ˇiji je obim c cteˇko proceniti jer je neposredno zavisan od vrednosti registrovanih u bazi. U sslede´im odeljcima ove glave bi´e izloˇene metode optimizacije koje se primenjuju c c zu dva sistema: prvom kompletnom prototipskom relacionom sistemu, SYSTEM R([56]), i najpoznatijem akademskom relacionom sistemu INGRES ([70]).
  • 161. 154 7 Optimizacija upita7.3 Optimizacija u SYSTEM RSYSTEM R je prvi kompletni prototipski RSUBP. To je kompilatorski sistem, ˇtosznaˇi da se jednom optimizovani upit moˇe izvrˇiti veliki broj puta, sve dok se c z sne promene parametri na osnovu kojih je optimizovani upitni plan saˇinjen. Ova cmogu´nost znaˇajno opravdava optimizaciju i njenu cenu. Metoda optimizacije c csistema SYSTEM R sa manjim izmenama primenjena je i u svim komercijalnimproizvodima razvijenim iz njega, kao ˇto su DB2 i SQL/DS. Zato ´e u ovom odeljku s cbiti opisan postupak optimizacije u SYSTEM R. U prvom koraku optimizator sistema odluˇuje o redosledu izvrˇenja SELECT c sblokova ugnjeˇdenih jedan u drugi; u SYSTEM R izabran je redosled od un- zutraˇnjeg, redom, ka spoljaˇnjim blokovima. Zatim se bira najjeftiniji upitni plan s sza svaki od blokova. Prvi korak sluˇi kao heuristika koja redukuje broj mogu´ih z cplanova, i ˇiji nedostaci su razmatrani u [40]. Oni se pre svega odnose na ˇinjenicu c cda svaki SQL upit koji sadrˇi ugnjeˇdene blokove moˇe da se transformiˇe u upit z z z sspajanja bez ugnjeˇdenih blokova, pa takva transformacija daje bolje rezultate u zoptimizaciji celog upita. Za dati upitni blok, postoje dva sluˇaja: c a) Ako je upit jednorelacioni (ne ukljuˇuje spajanje), za konstrukciju upitnog c plana optimizator koristi statistiˇke informacije iz sistemskog kataloga, for- c ˇ mule za procenu veliˇine medurezultata i cene operacija niskog nivoa. Sis- c tem izraˇunava, na osnovu informacija dobijenih iz kataloga, cenu svakog od c konaˇno mnogo naˇina za izvrˇavanje upita, i odabira najpovoljniji. c c s Statistiˇke informacije u sistemskom katalogu ukljuˇuju: c c – broj n-torki u svakoj relaciji – broj stranica koje zauzima svaka relacija – procenat stranica koje svaka relacija zauzima u odnosu na ukupan broj relevantnih stranica u bazi podataka – broj razliˇitih vrednosti za svaki indeks c – broj stranica koje zauzima svaki indeks. Ovi podaci su statiˇki i aˇuriraju se posebnim usluˇnim programom koji je c z z potrebno izvrˇiti posle svakog znaˇajnijeg aˇuriranja baze. U SYSTEM R s c z poziv tog programa je UPDATE STATISTICS. U sistemu DB2 poziv odgo- varaju´eg programa je RUNSTATS u kome se, kao parametar, navodi objekat c (tabela, indeks, prostor tabela, itd.) ˇije ´e se statistiˇke ocene izraˇunati i c c c c upisati u sistemski katalog. Podaci iz sistemskog kataloga imaju presudnu ulogu u izgradnji plana upita. Neka je potrebno izvrˇiti jednorelacioni upit za koji je iz sistemskog kataloga s dobijen broj n-torki (B) i broj stranica koje zauzima relacija (S). Upit se izvrˇava tako ˇto se primenjuje jedan po jedan uslov restrikcije (koja je oblika s s
  • 162. 7.3 Optimizacija u SYSTEM R 155 konjunktivne normalne forme), pri ˇemu se u svakom koraku primenjuje, na c ˇ prethodno dobijeni medurezultat, najjeftiniji mogu´i od slede´ih postupaka c c ([66]): ˇ – Ako je uslov – poredenje oblika A = c, gde je A atribut a c konstanta, primeniti grupiˇu´i indeks nad A (ako postoji) da bi se dobile n-torke s c koje zadovoljavaju uslov. Ako je I broj razliˇitih vrednosti indeksa, onda c je cena ovog koraka (broj obra´anja disku) S/I. c ˇ – Ako je uslov – poredenje oblika AΘc, gde je Θ ∈ {, ≤, , ≥}, primeniti grupiˇu´i indeks nad A (ako postoji) da bi se dobio odgovaraju´i pod- s c c skup relacije. Cena ovog koraka je S/2 jer se pretraˇi pribliˇno polovina z z ˇ relacije. (Poredenje = nije ukljuˇeno, jer se ne oˇekuje znaˇajna selek- c c c tivnost; gotovo sve n-torke moraju biti pretraˇene). z ˇ – Ako je uslov – poredenje oblika A = c, primeniti negrupiˇu´i indeks nad s c A (ako postoji) da bi se dobile n-torke koje zadovoljavaju uslov. Cena koraka je B/I jer je, s obzirom da je indeks negrupiˇu´i, poloˇaj n-torki s c z nezavisan. – Ako nema indeksa, relacija se moˇe ˇitati redom, primenjuju´i sve uslove z c c restrikcije, ˇto ima cenu proporcionalnu sa S. s ˇ – Ako je uslov – poredenje oblika AΘc, gde je Θ ∈ {, ≤, , ≥}, primeniti negrupiˇu´i indeks nad A (ako postoji). Cena ovog koraka je B/2. s c b) Ako upit ukljuˇuje dve ili viˇe relacija koje treba da se spoje, optimizator prvo c s odabira pristupni put za svaku od relacija na naˇin opisan pod a), a zatim c ˇ odluˇuje o redosledu izvodenja spajanja. Ove dve radnje su zavisne, jer se c strategija za pristup pojedinaˇnoj relaciji bira uzimaju´i u obzir i karakteris- c c tike rezultata koje su od znaˇaja za operaciju spajanja (npr. sortiranost neke c od relacija rezultata koje uˇestvuju u spajanju). Niz spajanja odvija se strogo c sekvencijalno, tj. izraz A ∗ B ∗ C ∗ D izvrˇava se kao izraz (((A ∗ B) ∗ C) ∗ D), s s ˇ ˇto takode predstavlja jednu od heuristika kojima se smanjuje broj mogu´ih c planova upita. Za izvrˇenje specifiˇne operacije spajanja, npr. A ∗ B, SYSTEM R ko- s c risti jednu od dve metode: metodu ugnjeˇdenih petlji ili metodu sorti- z ranja/spajanja. Izbor metode se vrˇi na osnovu formula cene. s – Metoda ugnjeˇdenih petlji moˇe se opisati slede´im algoritmom: z z c BEGIN FOR svaku n-torku µ relacije A DO FOR svaku n-torku ν relacije B DO IF n-torke µ i ν imaju jednake vrednosti na atributima spajanja THEN konstruisati spojenu (µ, ν)-torku END Razna poboljˇanja metode postiˇu se koriˇ´enjem indeksa (grupiˇu´eg s z sc s c ili negrupiˇu´eg) po atributima spajanja. s c
  • 163. 156 7 Optimizacija upita – Metoda sortiranja/spajanja sastoji se od sortiranja relacija A, B po vred- nostima atributa spajanja, i spajanja sortiranih relacija po jednakosti atributa. Pristup torkama relacija A i B u fiziˇkom redosledu sada je c najefikasniji, a sam algoritam se moˇe realizovati tako da se spajanje z dveju relacija obavi jednim ˇitanjem svake od njih (v. odeljak 11.3). c U sluˇaju viˇestrukog spajanja, npr. (A ∗ B) ∗ C, obe metode dopuˇtaju da se c s ssvaka proizvedena n-torka relacije A ∗ B preda procesu koji je spaja sa n-torkama ˇrelacije C, bez proizvodenja cele relacije A ∗ B. Detaljne formule cene optimizacije viˇerelacionih upita u SYSTEM R mogu se sna´i u [66]. Prema autorima sistema ([56]), cena optimizacije kompleksnih upita u csistemu SYSTEM R je samo nekoliko hiljada bajtova memorije i nekoliko desetihdelova sekunde na IBM/370 sistemu, ˇto je zanemarljivo u sluˇaju da se jednom s coptimizovani upit izvrˇi ve´i broj puta. s c Sistem DB2 koristi i dodatne tehnike optimizacije u odnosu na svoj prototip.Tako, na primer, upit koji se odnosi na broj n-torki u tabeli I koje zadovoljavajuuslov STATUS = 20, SELECT COUNT(*) FROM I WHERE STATUS = 20DB2 izvrˇava bez pristupa samoj tabeli, brojanjem elemenata podataka indeksa satributa STATUS (za vrednost 20) ako takav indeks postoji.7.4 Optimizacija u INGRES-uRelacioni sistem INGRES primenjuje zanimljiv i efikasan algoritam obrade upitakoji se zove dekompozicija upita ([70]). Algoritam se sastoji od razlaganjaupita nad viˇe n-tornih promenljivih u niz podupita nad pojedinaˇnim n-tornim s cpromenljivim, primenom postupaka razdvajanja i supstitucije n-torki . Razdvajanje je proces uklanjanja komponente upita koja ima taˇno jednu za- cjedniˇku promenljivu sa ostatkom upita. U tekstu koji sledi prikazan je postupak crazdvajanja na primeru upita “na´i nazive izdavaˇa iz Jugoslavije koji su izdali bar c cjednu knjigu poezije u tiraˇu ne manjem od 5000”. Upitnim jezikom QUEL taj zupit bi se izrazio na slede´i naˇin: c c RANGE OF I IS I RANGE OF K IS K RANGE OF KI IS KI(1) RETRIEVE (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’
  • 164. 7.4 Optimizacija u INGRES-u 157 U upitu su prisutne tri n-torne promenljive I, K i KI. Svaka jednopromenljivakomponenta upita (deo logiˇkog izraza upita koji se odnosi samo na jednu n-tornu cpromenljivu) zadovoljava uslov razdvajanja, pa se moˇe ukloniti iz upita izdvajan- zjem u posebni upit. Primenjeno na promenljivu K, na primer, razdvajanje proizvodislede´a dva upita, ekvivalentna polaznom upitu (1): c(2) RETRIEVE INTO K’(K.K SIF) WHERE K.OBLAST = ’poezija’ RETRIEVE (I.NAZIV) WHERE I.DRZAVA = ’Jugoslavija’ AND(3) I.I SIF = KI.I SIF AND KI.TIRAZ = 5000 AND KI.K SIF = K’.K SIF Sliˇno se iz upita (3), razdvajanjem po promenljivoj KI, dobija slede´i par upita c cekvivalentan upitu (3):(4) RETRIEVE INTO KI’(KI.I SIF, KI.K SIF) WHERE KI.TIRAZ = 5000(5) RETRIEVE (I.NAZIV) WHERE I.DRZAVA = ’Jugoslavija’ AND I.I SIF = KI’.I SIF AND KI’.K SIF = K’.K SIFNa kraju, iz upita (5), razdvajanjem po promenljivoj I dobija se slede´i par upita cekvivalentan upitu (5):(6) RETRIEVE INTO I’(I.I SIF, I.NAZIV) WHERE I.DRZAVA=’Jugoslavija’(7) RETRIEVE (I’.NAZIV) WHERE I’.I SIF=KI’.I SIF AND KI’.K SIF=K’.K SIF Poˇto nema viˇe jednopromenljivih komponenti u dobijenom upitu (7), postupak s sse nastavlja razdvajanjem po dvopromenljivom upitu koji ukljuˇuje promenljive KI’ ci K’. Tako je upit (7) ekvivalentan slede´em paru upita: c(8) RETRIEVE INTO KI’’(KI’.I SIF) WHERE KI’.K SIF = K’.K SIF(9) RETRIEVE (I’.NAZIV) WHERE I’.I SIF = KI’’.I SIF Dakle, polazni upit (1) dekomponovan je u tri jednopromenljiva upita – (2),(4) i (6), i dva dvopromenljiva upita – (8) i (9). Jednopromenljivi upiti (2), (4) ˇi (6) mogu se obraditi u bilo kom redosledu, a takode i paralelno. Upiti (8) i (9)ne mogu se dalje dekomponovati razdvajanjem, pa se do njihove dekompozicije najednopromenljive upite dolazi drugim postupkom – supstitucijom n-torki. Supstitucija n-torki je postupak zamene jedne promenljive u upitu, redom, jed-nom po jednom n-torkom relacije koja odgovara toj promenljivoj. Taj postupak seu razmatranom primeru primenjuje na slede´i naˇin. c c Ako, na primer, skup vrednosti atributa K SIF u relaciji K’ jeste {k2, k6},onda se dvopromenljivi upit (8) zamenjuje jednopromenljivim upitom u kome obevrednosti iz tog skupa zamenjuju, redom, komponentu K’.K SIF. Tako se upit (8)zamenjuje upitomRETRIEVE INTO KI’’(KI’.I SIF) WHERE KI’.K SIF=’k2’ OR KI’.K SIF=’k6’
  • 165. 158 7 Optimizacija upita Sliˇno, kako skup vrednosti atributa I SIF u relaciji KI” jeste {i1, i4}, dvo- cpromenljivi upit (9) zamenjuje se jednopromenljivim u kome svaka od dve vrednostiiz tog skupa zamenjuje, redom, komponentu KI”.I SIF. Tako se upit (9) zamenjujeupitomRETRIEVE (I’.NAZIV) WHERE I’.I SIF = ’i1’ OR I’.I SIF = ’i4’ Slika 7.2 predstavlja drvo dekompozicije polaznog upita (1). Grana ˇiji je ulazni cˇvor upit oblika (i) ima, kao svoj izlazni ˇvor, relaciju koja uˇestvuje u izgradnji togc c cupita. Grana ˇiji je izlazni ˇvor upit oblika (i) ima, kao svoj ulazni ˇvor, relaciju – c c c ˇrezultat tog upita. Cvor koji ima jednu ulaznu granu predstavlja jednopromenljiviupit (takvi su ˇvorovi (2), (4) i (6)), dobijen razdvajanjem po jednoj n-tornoj c ˇpromenljivoj. Cvor koji ima viˇe od jedne ulazne grane predstavlja viˇepromenljivi s supit (takvi su ˇvorovi (8) i (9)), dobijen razdvajanjem po dve ili viˇe n-tornih c spromenljivih; ovakav upit izvrˇava se supstitucijom n-torki. s rezultat T E I’ E (9) KI” supstitucija T T (6) K’ E (8) KI’ razdvajanje T T T I (2) (4) T T E K KI Slika 7.2: Drvo dekompozicije upita Prilikom primene postupka supstitucije n-torki, optimizator bira relacije na koje´e primeniti supstituciju. INGRES takvu odluku donosi na osnovu kardinalnosticrelacija, pristupnih puteva (npr. indeksa), i uzimaju´i u obzir koja se relacija (tj. cn-torna promenljiva) nalazi u ciljnoj listi. Postupak supstitucije n-torki je manje efikasan od postupka razdvajanja, isprovodi se samo kad razdvajanje viˇe nije mogu´e. s c Optimizacija jednorelacionog upita u sistemu INGRES svodi se na statistikesadrˇane u katalogu, i sliˇna je optimizaciji u sistemu SYSTEM R. z c7.5 Pitanja i zadaci 1. Definisati slede´e pojmove: c
  • 166. 7.5 Pitanja i zadaci 159 katalog drvo apstraktne sintakse algebarska transformacija upita dekompozicija upita strategija procene cene metoda sortiranja/spajanja kanoniˇka forma c metoda ugnjeˇdenih petlji z 2. Opisati strukturu vaˇnijih relacija sistemskog kataloga. z 3. Nabrojati i opisati faze sistematske optimizacije upita. 4. Opisati optimizaciju upita u SYSTEM R i u sistemu INGRES.
  • 167. Deo IIILogiˇko projektovanje c
  • 168. Pod logiˇkim projektovanjem relacione baze podataka podrazumeva se projek- ctovanje sheme relacione baze podataka, tj. grupisanje pojedinih atributa u posebne ˇrelacije, ili izdvajanje uoˇenih entiteta i odnosa medu entitetima u posebne relacije, ca sve to na osnovu analize informacionih zahteva i informacionog okruˇenja. Znaˇaj z cdobrog logiˇkog projektovanja relacione baze podataka leˇi u ˇinjenici da je takvu c z cbazu mogu´e najefikasnije odrˇavati, i da je manipulisanje podacima u njoj najjed- c znostavnije, najefikasnije i najpouzdanije. Razliˇite metodologije logiˇkog projektovanja dolaze do sheme relacione baze c crazliˇitim postupcima, pri ˇemu se ve´ u opisu znaˇenja “logiˇkog projektovanja” c c c c cuoˇavaju dva globalno razliˇita postupka: jedan se zasniva na grupisanju atributa c c– svojstava informacionog okruˇenja – u posebne relacije, a drugi na izdvajanju z ˇentiteta i odnosa u posebne relacije. Prvi je “sintaksno” orijentisan i voden vezamameduˇ atributima izraˇenim kroz koncepte zavisnosti (funkcionalnih, viˇeznaˇnih, z s c ˇ ˇzavisnosti spajanja), a drugi je “semantiˇki” orijentisan i voden je vezama medu en- ctitetima informacionog okruˇenja. Metoda normalnih formi dosledno i kompletno zrealizuje prvi postupak logiˇkog projektovanja, dok razne metode semantiˇkog c cmodeliranja realizuju drugi postupak. Deo III sastoji se od tri glave: • U glavi 8, Teorija zavisnosti, razmatra se teorijska osnova metode normal- nih formi – teorija zavisnosti. • Glava 9, Normalne forme, uvodi pojmove normalnih formi viˇeg reda, i s prikazuje algoritme dekompozicije relacija u skupove normalizovanih relacija, odnosno algoritam sinteze normalizovanih relacija. • U glavi 10, Semantiˇko modeliranje, izlaˇu se metode semantiˇkog mod- c z c eliranja zasnovane na proˇirenom relacionom modelu, proˇirenom modelu en- s s titeta i odnosa i modeliranju apstrakcija. Znaˇajno je napomenuti da svaka metoda koja se dobro i dosledno sprovede u cprocesu logiˇkog projektovanja, proizvodi kao rezultat dobro logiˇki projektovanu c cbazu; ˇtaviˇe, rezultat takve primene razliˇitih metoda najˇeˇ´e je gotovo identiˇan. s s c c sc c 161
  • 169. 8Teorija zavisnosti8.1 Funkcionalne zavisnosti i dekompozicijaKao ˇto je ve´ naglaˇeno u kratkom opisu integritetnog dela relacionog modela s c s(odeljak 1.4), funkcionalne zavisnosti (skra´eno FZ) jesu najvaˇniji oblik specifiˇnih c z cuslova integriteta relacije. S druge strane, znaˇaj funkcionalnih zavisnosti leˇi u ˇinjenici da one predstav- c z cljaju osnovni koncept na kome se zasniva jedna metoda logiˇkog projektovanja baze c ˇpodataka – metoda normalnih formi. Naime, postojanje odredene funkcionalne za-visnosti u relaciji dovoljan je uslov za zamenu te relacije, bez gubljenja informa- ˇcije, njenim dvema projekcijama, odredenim tom funkcionalnom zavisnoˇ´u. “Bez scgubljenja informacije” znaˇi da se poˇetna relacija moˇe restaurisati primenom c c zoperacije prirodnog spajanja na dobijene projekcije. Na primer, neka u relaciji INSD = I [NAZIV, STATUS, DRZAVA] vaˇi zfunkcionalna zavisnost NAZIV → STATUS, DRZAVA, i neka je sadrˇaj relacije I zisti kao u odeljku 1.2. Tada je sadrˇaj relacije INSD slede´i: z c INSD NAZIV STATUS DRZAVA Prosveta 30 Jugoslavija Addison Wesley Publ. Comp. 20 Amerika Deˇje novine c 10 Jugoslavija Matica srpska 30 Jugoslavija Projektovanjem relacije INSD na parove atributa (NAZIV, STATUS), odnosno(NAZIV, DRZAVA), dobijaju se slede´e relacije: c INSD[NAZIV, STATUS] NAZIV STATUS Prosveta 30 Addison Wesley Publ. Comp. 20 Deˇje novine c 10 Matica srpska 30162
  • 170. 8.1 Funkcionalne zavisnosti i dekompozicija 163 INSD[NAZIV, DRZAVA] NAZIV DRZAVA Prosveta Jugoslavija Addison Wesley Publ. Comp. Amerika Deˇje novine c Jugoslavija Matica srpska JugoslavijaNjihovim spajanjem dobija se polazna relacija INSD, tj. vaˇi z INSD = INSD[ NAZIV, STATUS ] ∗ INSD[ NAZIV, DRZAVA ]. U sluˇaju da u prethodnoj relaciji INSD atributi STATUS, DRZAVA ne zavise cfunkcionalno od atributa NAZIV (ˇto znaˇi da izdavaˇi sa istim nazivom mogu biti s c cregistrovani u raznim drˇavama ili imati razliˇite statuse), projektovanjem relacije z cINSD na iste parove atributa moˇe do´i do gubljenja informacije. Tako, ako se u z crelaciji I nalazi i ˇetvorka (i5, Prosveta, 10, Srbija), onda se relaciji INSD dodaje ctrojka (Prosveta, 10, Srbija), pa se projektovanjem relacije INSD na parove atributa(NAZIV, STATUS) i (NAZIV, DRZAVA) dobijaju relacije INSD[NAZIV, STATUS] NAZIV STATUS Prosveta 30 Addison Wesley Publ. Comp. 20 Deˇje novine c 10 Matica srpska 30 Prosveta 10 INSD[NAZIV, DRZAVA] NAZIV DRZAVA Prosveta Jugoslavija Addison Wesley Publ. Comp. Amerika Deˇje novine c Jugoslavija Matica srpska Jugoslavija Prosveta SrbijaNjihovim spajanjem dobija se slede´a relacija: c NAZIV STATUS DRZAVA Prosveta 30 Jugoslavija Prosveta 30 Srbija Addison Wesley Publ. Comp. 20 Amerika Deˇje novine c 10 Jugoslavija Matica srpska 30 Jugoslavija Prosveta 10 Jugoslavija Prosveta 10 Srbija
  • 171. 164 8 Teorija zavisnostiDakle, u ovom sluˇaju INSD[ NAZIV, STATUS ] ∗ INSD[ NAZIV, DRZAVA ] = cINSD. ˇ Prethodno neformalno tvrdenje moˇe se formalizovati i dokazati na slede´i naˇin. z c cTeorema 8.1 Neka je Atr(R) skup atributa relacije R. Ako u relaciji R za dvaneprazna podskupa X, Y ⊆ Atr(R) vaˇi FZ X → Y, tada vaˇi jednakost R = z zR[XY ] ∗ R[XZ]1 , gde je Z = Atr(R) XY .Dokaz: Razlikujemo tri sluˇaja: c c ˇ 1. Neka je Y ⊆ X (trivijalna FZ – vidi slede´i odeljak). Tada tvrdenje vaˇi jer z je projekcija R[XZ] jednaka celoj relaciji R. 2. Neka su skupovi X i Y disjunktni. Dokaˇimo jednakost R = R[XY ] ∗ R[XZ]. z Inkluzija R ⊆ R[XY ] ∗ R[XZ] je trivijalna i vaˇi u svakoj relaciji, jer iz z definicije operacija projekcije i prirodnog spajanja sledi da za svaku n-torku xyz ∈ R vaˇi da je xy ∈ R[XY ] i xz ∈ R[XZ], pa je xyz ∈ R[XY ] ∗ R[XZ]. z Dokaˇimo obrnutu inkluziju, tj. da za svaku n-torku r ∈ R[XY ] ∗ R[XZ] z vaˇi da je r ∈ R. Neka je r = xyz, gde je x = r[X], y = r[Y ], z = r[Z]. z Iz xyz ∈ R[XY ] ∗ R[XZ] sledi da postoje n-torke t1 , t2 ∈ R takve da je t1 = xyz i t2 = xy z, za neke y , z . Iz FZ X → Y sledi da za dve n-torke xyz ∈ R i xy z ∈ R vaˇi da je y = y . Zato je t2 = xyz, tj. r(≡ t2 ) ∈ R. z Dakle, R[XY ] ∗ R[XZ] ⊆ R, ˇto sa prethodnom (trivijalnom) inkluzijom daje s traˇenu jednakost. z 3. Neka Y ⊆ X i neka skupovi X i Y imaju neprazan presek. Tada se skup Y moˇe predstaviti kao Y = Y Y , gde je Y = X ∩ Y i Y = ∅. Tada vaˇi i z z FZ X → Y (po aksiomi F4, v. slede´i odeljak), pri ˇemu su skupovi X i Y c c disjunktni. Na osnovu sluˇaja 2) sledi jednakost R = R[XY ] ∗ R[XZ] (Z = c Atr(R) XY ), a zbog XY ≡ XY i jednakost R = R[XY ] ∗ R[XZ]. ˇ Dakle, tvrdenje teoreme vaˇi u sva tri sluˇaja. z c Ako u relaciji R vaˇi funkcionalna zavisnost X → Y, onda se kaˇe da relacija R z zzadovoljava tu funkcionalnu zavisnost. Relacija R je dinamiˇkog sadrˇaja, ˇto znaˇi da njen sadrˇaj u raznim momen- c z s c ztima moˇe biti razliˇit. Stanje r relacije R je njen sadrˇaj u nekom momentu. z c zKaza´emo da stanje r relacije R zadovoljava FZ X → Y ako ta funkcionalna zavis- cnost vaˇi u relaciji R u momemtu koji definiˇe njeno stanje r. Sada se za relaciju R z smoˇe re´i da zadovoljava FZ X → Y ako svako njeno stanje r zadovoljava tu FZ. z c Vaˇenje funkcionalne zavisnosti X → Y u stanju r relacije R moˇe se ispitati z zslede´im algoritmom: c 1 Ovde se, kao i u daljem tekstu, pod XY podrazumeva unija skupova atributa X i Y , bezponavljanja eventualnih zajedniˇkih atributa. c
  • 172. ˇ8.2 Aksiome izvodenja 165Algoritam ZADOVOLJAVAUlaz: 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; ˇ ako svaki skup vrsta sa jednakim X-vrednostima ima takode i jednake ˇ Y -vrednosti, onda na izlazu izdati TACNO, a u suprotnom NETACNO ˇEND.8.2 ˇ Aksiome izvodenjaZa svako stanje r relacije R postoji skup funkcionalnih zavisnosti koje to stanjezadovoljava. Problem sa odrˇavanjem baze podataka nastaje u sluˇaju da jedno z cstanje r relacije R zadovoljava jedan skup funkcionalnih zavisnosti, a da drugostanje r iste relacije ne zadovoljava taj skup funkcionalnih zavisnosti. Zato jepotrebno precizirati skup funkcionalnih zavisnosti F koje mora da zadovolji svakostanje r relacije R. Skup funkcionalnih zavisnosti koje zadovoljava stanje r relacije R je konaˇan, cjer je skup podskupova skupa Atr(R) konaˇan. Zato se za svaki skup funkcionalnih czavisnosti F , primenom algoritma ZADOVOLJAVA, moˇe utvrditi da li stanje r z ˇzadovoljava funkcionalne zavisnosti iz F ili ne. Medutim, ovaj je postupak nedo- z ˇpustivo dug. Zbog toga je poˇeljno imati mehanizam koji obezbeduje slede´e: ako cje poznato da stanje r relacije R zadovoljava neke funkcionalne zavisnosti F1 iz F ,tada to stanje nuˇno zadovoljava i ostale funkcionalne zavisnosti iz F (one se mogu zizvesti iz F1 ). Za skup funkcionalnih zavisnosti F kaˇe se da povlaˇi funkcionalnu zavisnost z cX → Y (u oznaci F |= X → Y, sa interpretacijom da je FZ X → Y logiˇka posledica cod F ) ako svako stanje r relacije R koje zadovoljava funkcionalne zavisnosti iz F ,zadovoljava i funkcionalnu zavisnost X → Y . ˇ ˇ Aksiome izvodenja su pravila koja utvrduju vaˇenje nekih funkcionalnih zavi- zsnosti u relaciji R, na osnovu vaˇenja nekih drugih funkcionalnih zavisnosti u R. z ˇMada nazvana aksiomama, ova pravila su tvrdenja koja se mogu dokazati polaze´i c ˇ ˇod definicija FZ i operacija relacione algebre. Medu aksiomama izvodenja karak- c c ˇteristiˇne su slede´e, poznate kao Armstrongove aksiome ([3]). Tvrdenja se navodesa okosnicom dokaza, ali ne u izvornom obliku (kako ih je formulisao Armstrong),ve´ u pogodnijem, prema [48]: c F1. Refleksivnost. Funkcionalna zavisnost X → X uvek vaˇi u relaciji R, jer skup z R[X = x][X] sadrˇi najviˇe jednu n-torku (v. definiciju FZ, odeljak 1.4). z s F2. Proˇirenje. Ako u relaciji R vaˇi FZ X → Y i ako je Z ⊆ Atr(R), onda vaˇi i s z z FZ XZ → Y .
  • 173. 166 8 Teorija zavisnosti Ako R zadovoljava FZ X → Y , onda skup R[X = x][Y ] sadrˇi najviˇe jednu z s 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 ] sadrˇi najviˇe jednu z s n-torku, tj. relacija R zadovoljava funkcionalnu zavisnost XZ → Y . Primer 8.1 Jedno stanje r relacije R(A, B, C, D) moˇe biti z r A B C D a1 b1 c1 d1 a2 b2 c1 d1 a1 b1 c1 d2 a3 b3 c2 d3 i ono zadovoljava funkcionalnu zavisnost A → B, a zbog F2 zadovoljava i slede´e FZ: AB → B, AC → B, AD → B, ABC → B, ABD → B, ACD → c B, ABCD → B. F3. Aditivnost. Ako u relaciji R vaˇe FZ X → Y i X → Z, onda u njoj vaˇi i FZ z z X → Y Z. Naime, ako ne bi vaˇila FZ X → Y Z, onda bi skup R[X = x][Y Z] sadrˇao z z viˇe od jedne n-torke, pa bi bar jedan od skupova R[X = x][Y ], R[X = x][Z] s imao viˇe od jedne n-torke, ˇto po pretpostavci nije sluˇaj. Dakle, vaˇi i FZ s s c z X → Y Z u relaciji R. Ova aksioma dopuˇta objedinjenje dve FZ s jednakim s levim stranama. U prethodnom primeru, stanje r relacije R zadovoljava FZ A → B i A → C, pa prema aksiomi F3 sledi i vaˇenje FZ A → BC. z F4. Projektivnost. Ako vaˇi FZ X → Y Z u relaciji R, onda u njoj vaˇe i FZ z z X → Y i X → Z. Naime, zbog vaˇenja FZ X → Y Z, skup R[X = x][Y Z] sadrˇi najviˇe jednu z z s n-torku; zato i njegove projekcije na Y i Z, tj. skupovi R[X = x][Y Z][Y ](≡ R[X = x][Y ]) i R[X = x][Y Z][Z](≡ R[X = x][Z]) imaju najviˇe po jednu s n-torku, pa vaˇe FZ X → Y i X → Z. Tako u prethodnom primeru vaˇi z z FZ A → BC, pa prema aksiomi F4, vaˇe FZ A → B i A → C. U izvesnom z smislu aksioma projektivnosti je inverzna aksiomi aditivnosti. F5. Tranzitivnost. Ako vaˇe FZ X → Y i Y → Z u relaciji R, onda u njoj vaˇi i z z FZ X → Z. Naime, prema samoj definiciji FZ, za svake dve n-torke t1 , t2 ∈ R vaˇe impli- z kacije t1 [X] = t2 [X] ⇒ t1 [Y ] = t2 [Y ] (zbog FZ X → Y ) t1 [Y ] = t2 [Y ] ⇒ t1 [Z] = t2 [Z] (zbog FZ Y → Z), pa zbog tranzitivnosti relacije jednakosti sledi i
  • 174. ˇ8.2 Aksiome izvodenja 167 t1 [X] = t2 [X] ⇒ t1 [Z] = t2 [Z]. ˇ Aksioma tranzitivnosti je jedna od dve najmo´nije aksiome izvodenja (druga c je F6 – pseudotranzitivnost). Primer 8.2 Slede´e stanje r relacije R(A, B, C, D) c r A B C D a1 b1 c2 d1 a2 b2 c1 d2 a3 b1 c2 d1 a4 b1 c2 d3 zadovoljava FZ A → B i B → C, pa prema aksiomi F5, i FZ A → C. F6. Pseudotranzitivnost. Ako vaˇe FZ X → Y i Y Z → W u relaciji R, onda u z z ˇ njoj vaˇi i FZ XZ → W . Ovo tvrdenje moˇe se izvesti iz prethodnih aksioma z kroz slede´e korake: c 1) Z → Z (prema F1) 2) XZ → Z (prema F2) 3) X → Y (pretpostavka) 4) XZ → Y (prema F2) 5) XZ → YZ (prema F3, iz 2) i 4)) 6) YZ → W (pretpostavka) 7) XZ → W (prema F5, iz 5) i 6)). ˇ ˇ Kao posledice aksioma izvodenja vaˇe i slede´a tvrdenja: z c 1. Za svaki par podskupova X, Y skupa atributa relacije R, za koji vaˇi Y ⊆ X, z vaˇi FZ X → Y . Ovo je trivijalna FZ, a njeno vaˇenje se dokazuje primenom z z aksioma refleksivnosti i proˇirenja. s 2. Ako u relaciji R vaˇe FZ X → Y i XY → Z, onda u relaciji R vaˇi i FZ z z X → Z. Ova posledica se dokazuje primenom aksiome pseudotranzitivnosti. ˇ Aksiome F1 – F6 navedenog sistema aksioma izvodenja nisu nezavisne, ˇto znaˇi s cda su neke od njih posledica preostalih. Na primer, aksioma F5 je specijalni sluˇaj c ˇaksiome F6, za Z = ∅. Takode, aksioma F6 sledi iz aksioma F1, F2, F3 i F5, ˇto sje upotrebljeno u njenom dokazu. S druge strane, moˇe se dokazati da je sistem zaksioma F1 – F6 potpun u smislu da se svaka FZ koja je logiˇka posledica skupa cfunkcionalnih zavisnosti F, moˇe dobiti primenom aksioma F1 – F6 na skup F ([48], z[65]). ˇ Moˇe se takode dokazati da jedan podskup skupa aksioma F1 – F6, koji je zistovremeno i potpun i nezavisan, jeste skup {F1, F2, F6}.
  • 175. 168 8 Teorija zavisnosti Jedna od pretpostavki relacionog modela je pretpostavka o jedinstvenostifunkcionalnih zavisnosti. Ne mogu, naime, postojati dve FZ f : X → Y ig : X → Y , sa razliˇitom semantikom. Na primer, nije dopuˇteno postojanje c sFZ f : RADNIK → SEKTOR sa znaˇenjem da jedan radnik radi taˇno u jednom c csektoru i g: RADNIK → SEKTOR sa znaˇenjem da jedan radnik uˇestvuje u c cupravnom odboru taˇno jednog sektora. c Pojava nejedinstvenih funkcionalnih zavisnosti nije dopuˇtena ni kao posledica salgebre funkcionalnih zavisnosti o kojoj je upravo bilo reˇi. Tako, na primer ([7]), cFZ f : SEKTOR → DIREKTOR i g:{DIREKTOR, SPRAT} →BROJ RADNIKA c c ˇmogu imati znaˇenje da sektor jednoznaˇno odreduje direktora, i da direktor i sprat ˇjednoznaˇno odreduju broj radnika jednog direktora na jednom spratu. Primenom cpseudotranzitivnosti moˇe se dobiti FZ {SEKTOR, SPRAT} → BROJ RADNIKA, z ˇkoja odreduje broj radnika direktora specifiˇnog sektora na specifiˇnom spratu (a c cne broj radnika specifiˇnog sektora na specifiˇnom spratu). Ako direktor moˇe da c c zupravlja ve´im brojem sektora, onda dobijena FZ nije semantiˇki ista kao sintaksno c cidentiˇna FZ koja bi oznaˇavala broj radnika specifiˇnog sektora na specifiˇnom c c c cspratu. Problem nejedinstvenosti funkcionalne zavisnosti obiˇno se reˇava preimenova- c snjem atributa. U prvom primeru, atribut RADNIK iz FZ g moˇe se preimenovati zu atribut RADNIK UPRAVA, jer se semantika atributa RADNIK u FZ f, g bitnorazlikuje. U drugom primeru atribut BROJ RADNIKA iz FZ g trebalo bi preime-novati u BROJ RADNIKA DIREKTORA, pa bi se primenom pseudotranzitivnostidobila FZ {SEKTOR, SPRAT} → BROJ RADNIKA DIREKTORA koja bi sadabila i sintaksno razliˇita od FZ {SEKTOR, SPRAT} → BROJ RADNIKA. c8.3 Zatvorenje skupa funkcionalnih zavisnostiAko je zadat skup F funkcionalnih zavisnosti jedne relacije, niz pitanja koja sepostavljaju u vezi sa njim ukljuˇuje: c 1. Kako konstruisati skup svih funkcionalnih zavisnosti koje se mogu izvesti iz F po Armstrongovim aksiomama? 2. Da li je zadata FZ logiˇka posledica skupa F ? c 3. Kako konstruisati najmanji (po broju FZ) skup FZ koji generiˇe sve FZ kao s i F? Prva dva pitanja odnose se na konstrukciju zatvorenja skupa FZ, a tre´e – na ckonstrukciju pokrivanja skupa FZ. Znaˇaj ovih konstrukcija je u pove´anju efika- c csnosti odrˇavanja integriteta baze podataka, kao i u logiˇkom projektovanju baza z cpodataka. Pored znaˇaja koji zatvorenje skupa FZ ima u logiˇkom projektovanju baze c c ˇpodataka (npr. u utvrdivanju da li je neki skup atributa kandidat za primarnikljuˇ), na ovom konceptu se neposredno zasniva i koncept pokrivanja. c
  • 176. 8.3 Zatvorenje skupa funkcionalnih zavisnosti 169Definicija 8.1 Neka je F neki skup FZ relacije R. Zatvorenje od F, u oznaciF + , jeste najmanji skup FZ koji sadrˇi F i takav da se primenom Armstrongovih zaksioma na F + ne dobija nijedna FZ koja ve´ nije u F + . c Skup F + je konaˇan i moˇe da se odredi primenom aksioma F1, F2 i F6 i c zdodavanjem dobijenih FZ skupu F, ali je taj postupak jako dug. Zato se pitanje 1 ˇzamenjuje pitanjem 2: kako konstruisati algoritam kojim se, bez odredivanja celogskupa F + , moˇe utvrditi da li je proizvoljna FZ X → Y ∈ F + , tj. da li se ta FZ zmoˇe izvesti iz F . zDefinicija 8.2 Neka su X, Y neprazni skupovi atributa relacije R i neka je F nekiskup FZ te relacije. Kaˇe se da je Y zatvorenje od X nad F (u oznaci Y = X + ) zako postoji FZ X → Y u F + i ako za svaku drugu FZ X → Z iz F + vaˇi Y ⊇ Z z(Y je maksimalni skup atributa funkcionalno zavisnih od X). Zbog refleksivnosti, zatvorenje X + uvek sadrˇi X. zPrimer 8.3 Neka je F = {A → D, AB → DE, CE → G, E → H}. Tada je(AB)+ = ABDEH. Zatvorenje skupa atributa X nad skupom FZ F moˇe se odrediti u nizu iteracija zslede´im algoritmom: c Algoritam ZATVORENJE Ulaz: skup atributa X i skup FZ F ; Izlaz: zatvorenje od X nad F ; ZATVORENJE(X, F ) BEGIN stari := ∅; novi := X; WHILE novi = stari DO BEGIN stari := novi; FOR svaka FZ W → Z u F DO IF novi ⊇ W THEN novi := novi ∪ Z END; RETURN(novi) END.Primer 8.4 Neka je F = {A → D, AB → E, BI → E, CD → I, E → C}.Izvrˇenjem algoritma ZATVOREN