Professional Documents
Culture Documents
Elektronski fakultet
Leonid Stoimenov
Ime
MBR
N
STUDENT
Prezime
1
MENTOR
Indeks
PROFESOR
Ime
Ime
Prezime
MBR
Milan
Petrovi
123456
Milan
Ili
654321
Aleksandar
Jovanovi
345612
Ime
Prezime
Indeks
MentorMBR
Petar
Petrovi
1111
123456
Milan
Milanovi
2222
654321
Jovan
Jovanovi
3333
654321
Prezime
Edicija: Udbenici
Univerzitet u Niu
Elektronski fakultet
Leonid Stoimenov
Ni, 2013
Predgovor
Baze podataka su, po miljenju autora, jedna od znaajnijih oblasti raunarstva i
informatike. Posledica toga je postojanje odgovarajuih kurseva na tehnikim ali i netehnikim fakultetima koji se bave razliitim aspektima baza podataka od osnovnih
kurseva za poetnike, do naprednih kurseva koji se bave specijalizovanim temama iz ove
iroke oblasti.
Namena udbenika
Navedeni materijal je u skladu sa planom i programom predmeta Baze podataka na II
godini osnovnih akademskih studija na Elektronskom fakultetu u Niu i u potpunosti
pokriva sve teme sa predavanja i vebi na modulu Raunarstvo i informatika. Udbenik je
namenjen studentima koji se prvi put susreu sa bazama podataka i ne zahteva nikakvo
posebno predznanje osim opteg znanja o raunarstvu i informatici sa I godine studija.
Udbenik se moe koristiti i na drugim modulima ovih studija. Udbenik sadri koncizan
prikaz teorijske osnove baza podataka, brojne primere i zadatke za samostalni rad
studenata. Kao takav, on predstavlja materijal za spremanje kompletnog ispita iz predmeta
Baze podataka.
Struktura udbenika
Udbenik sadri osam poglavlja i literaturu. Struktura i redosled poglavlja je takav da
prati teme koje se obrauju na predavanjima i vebama iz uvodnog kursa Baze podataka.
Svako poglavlje sadri veliki broj primera koji treba da pomognu studentima u
savladavanju gradiva.
U Poglavlju 1, pod naslovom Baze podataka osnovni pojmovi, dat je kratak pregled
osnovnih pojmova iz oblasti baza podataka, pregled i poreenje dva pristupa:
konvencionalne obrade zasnovane na datotekama i korienje baza podataka.
U Poglavlju 2, pod naslovom Modeli podataka i proces projektovanja baze podataka,
opisani su nivoi apstrakcije kod DBMSa, opisani modeli podataka na razliitim nivoima
apstrakcije i njihovi osnovni koncepti, i opisan generalni postupak projektovanja baza
podataka.
U Poglavlju 3, pod naslovom Konceptualno projektovanje baze podataka, prikazani su
osnovni koncepti ER i EER, opisan je proces projektovanja odnosno korienja ovih
koncepata. Dat je pregled grafike notacije za ER i EER dijagrame, i date su preporuke za
izvoenje ER i EER modeliranja. U ovom poglavlju su dati primeri projektovanja baza
podataka.
U Poglavlju 4, pod naslovom Relacioni model podataka, dat je prikaz koncepata
relacionog modela i opis odgovarajue terminologije. Dat je osvrt i na integritetnu
komponentu ovog modela, kao i algoritam za preslikavanje ER i EER modela podataka u
relacioni.
U Poglavlju 5, pod naslovom Relaciona algebra, dat je pregled osnovnih operacija
relacione algebre i veliki broj primera korienja kao i upita relacione algebre.
U Poglavlju 6, pod naslovom Normalizacija i normalne forme, prikazane su
funkcionalne zavisnosti i njihovo izvoenje, pojam kljua relacije, analiza eme relacije i
vi
Autor
Sadraj
1 BAZE PODATAKA OSNOVNI POJMOVI .............................................................1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
SELEKCIJA ....................................................................................................... 92
PROJEKCIJA ..................................................................................................... 94
PREIMENOVANJE ............................................................................................. 96
OPERACIJE RELACIONE ALGEBRE IZ TEORIJE SKUPOVA ...................................96
-SPOJ .......................................................................................................... 100
FUNKCIJE AGREGACIJE .................................................................................. 103
PRIMERI UPITA U RELACIONOJ ALGEBRI ........................................................ 103
viii
ix
Spisak slika
Slika 1-1. Konvencionalni sistem zasnovan na datotekama ............................... 2
Slika 1-2. Obrada zasnovana na bazama podataka ............................................. 4
Slika 1-3. Komponente sistema baza podataka................................................... 5
Slika 1-4. Tabela u bazi podataka sa oznaenom vrstom i kolonom .................. 7
Slika 1-5. Meusobna povezanost podataka u bazi podataka ............................. 7
Slika 1-6. Personalni sistem baza podataka ....................................................... 11
Slika 1-7. Enterprise sistem baza podataka ....................................................... 12
Slika 2-1. Arhitektura tri eme DBMSa ............................................................. 16
Slika 2-2. Faze projektovanja baza podataka ..................................................... 20
Slika 3-1. Konceptualno projektovanje baze podataka ...................................... 23
Slika 3-2. Grafika notacija za tip entiteta ......................................................... 26
Slika 3-3. Predstavljanje atributa u ER dijagramu ............................................. 28
Slika 3-4. Sloeni (kompozitni) atributi u ER dijagramu .................................. 30
Slika 3-5. Grafika notacija za izvedeni atribut ................................................. 30
Slika 3-6. Grafika notacija za vievrednosni atribut ........................................ 31
Slika 3-7. Grafika notacija za prikaz tipa entiteta i njegovih atributa .............. 33
Slika 3-8. Grafika notacija za tip poveznika .................................................... 34
Slika 3-9. Ternarni tip poveznika SNABDEVA ................................................ 36
Slika 3-10. Neke pojave tipa poveznika RADI-NA.......................................... 36
Slika 3-11. Neke pojave tipa poveznika RUKOVODI ..................................... 37
Slika 3-12. Neke pojave tipa poveznika JE_RUKOVODILAC ....................... 37
Slika 3-13. Neke pojave rekurzivnog tipa poveznika U-BRAKU .................... 38
Slika 3-14. Neke pojave ternarnog tipa poveznika SNABDEVA .................... 38
Slika 3-15. Prikaz uloge u ER modelu .............................................................. 39
Slika 3-16. Oznaavanje kardinaliteta .............................................................. 41
Slika 3-17. Veza 1:N izmeu tipova entiteta RADNO-MESTO i RADNIK .... 42
Slika 3-18. ER dijagram sa oznaenim kardinalitetima tipa poveznika............ 42
Slika 3-19. Oznaavanje participacije za tip veze RASPOREEN ................. 43
Slika 3-20. Oznaavanje participacije za tip veze RADI-U.............................. 43
Slika 3-21. Oznaavanje strukturalnih ogranienja .......................................... 45
x
xii
1 BAZE
P O D ATA K A
POJMOVI
OSNOVNI
esto se koristi pojam Automatska obrada podataka (AOP) kod koje postoje
meusobno nezavisne aplikacije jednog informacionog sistema (IS), i za svaku
aplikaciju se kreiraju i odravaju posebne datoteke sa svim potrebnim podacima.
Aplikacioni program prodaje
Unos
podataka i
tampanje
izvetaja
Prodaja
Rutine za
rukovanje
datotekama
Definicije
datoteka
Datoteke
prodaje
Rutine za
rukovanje
datotekama
Definicije
datoteka
Datoteke
nabavke
nepovezanost aplikacija,
ponavljanje podataka,
neusaglaenost (nekonzistentnost) podataka,
vrsta povezanost programa i podataka:
o programi za obradu podataka zavise od naina fizikog
struktuiranja podataka,
o promena strukture podataka zahteva promenu programa.
ograniena mogunost zajednikog korienja podataka,
ograniena raspoloivost podataka i
neadekvatna realizacija oporavka od pada sistema.
Podaci su deljivi.
Baza podataka sadri i podatke i njihove definicije (opisi, eme).
Definicije podataka se nalaze u katalogu sistema (renik sistema) i
nazivaju se meta podaci.
Definicije podataka su odvojene od aplikacionih programa.
Podaci su logiki povezani (entiteti, atributi, veze).
Unos podataka i
tampanje izvetaja
Prodaja
Aplikacioni programi
prodaje
DBMS
Baza
podataka
Unos podataka i
tampanje izvetaja
Nabavka
Aplikacioni programi
nabavke
Aplikacija
Sistem za
upravljanje
bazama
podataka
Baza
podataka
Korisnici
Prezime
Indeks
MBR
Petar
Petrovi
1111
123456
Milan
Milanovi
2222
654321
Jovan
Jovanovi
3333
345612
Prezime
MBR
Milan
Petrovi
123456
Milan
Ili
654321
Aleksandar
Jovanovi
345612
Ime
Prezime
Indeks
MentorMBR
Petar
Petrovi
1111
123456
Milan
Milanovi
2222
654321
Jovan
Jovanovi
3333
654321
Aplikacija
Korisnik
Sistem za
upravljanje
bazama
podataka
Baza
podataka
Microsoft Access
Ili neki drugi Personalni DBMS
Slika 1-6. Personalni sistem baza podataka
Veliina problema, odnosno tip sistema baza podataka koji treba da se primeni,
odreuje izbor sistema za upravljanje bazama podataka. Naravno, izmeu
personalnih i enterpise sistema postoji irok opseg drugih sistema razliitog nivoa
11
Aplikacija A
Java kod
Aplikacija B
C# kod
Aplikacija C
Sistem za
upravljanje
bazama
podataka
Baza
podataka
Oracle, DB2,
SQL Server,
MySQL i sl
DBMS
HTML, ASP
kod
Korisnici
Slika 1-7. Enterprise sistem baza podataka
Sredinom 60-tih
o
Postrelacione BP
14
2 MODELI
P O D ATA K A I P R O C E S
P R O J E K T O VA N J A B A Z E P O D ATA K A
Pogled 1
Pogled 2
Eksterna ema 1
Eksterna ema 2
Konceptualni
nivo
Interni
nivo
Fiziki
nivo
Korisnik 2
Korisnik n
Pogled n
Eksterna ema
Konceptualna
ema
Interna
ema
Baza
podataka
Sistemski
katalog
21
3 KONCEPTUALNO
P R O J E K T O VA N J E
B A Z E P O D ATA K A
Sistemski
zahtevi
Konceptualno
projektovanje
Konceptualni
model podataka
ER ili EER dijagram
Renik podataka
24
student
o profesor
o predmet
o laboratorija
o udbenik
Za mini svet PREDUZEE, potencijalni entiteti mogu biti:
o
o
o
o
o
radnik
sektor (organizaciona jedinica)
radno mesto
projekat
plan
Skup entiteta (engl. Entity Set) je kolekcija svih entiteta odreenog tipa entiteta
u bazi podataka u nekom trenutku. Praktino, entiteti koji egzistiraju u ljudskom
intelektu kao predstave realnih subjekata, objekata ili dogaaja mogu se
klasifikovati u skupove slinih entiteta za koji se koristi termin skup entiteta.
Primer: Skupovi entiteta
Tip entiteta (egl. Entity Type) je model skupa entiteta i koristi se za opis skupa
entiteta. Tip entiteta opisuje emu ili intenziju skupa entiteta koji dele istu
strukturu. Kolekcija entiteta odreenog tipa entiteta grupisana u skup entiteta se
takoe naziva ekstenzija tipa entiteta.
Svaki tip entiteta u ER modelu podataka ima ime (imenica u jednini), koje je
jedinstveno. Obeleavanje tipa entiteta se vri na sledei nain:
E(A1, A2, ... , An)
gde je E ime tipa entiteta, a Ai | i = 1, n atributi odabrani za modeliranje entiteta E.
Za skup entiteta se koristi ime tipa entiteta.
Za obeleavanje tipa entiteta koriste se dva stila:
25
vri
jednostavnim
UML notacija
Radnik
RADNIK
Slika 3-2. Grafika notacija za tip entiteta
3.1.1 Atributi
Atribut je osobina, obeleje odnosno svojstvo koje opisuje neke aspekte objekta
koji treba da se uvaju. Svaki entitet ima obeleja odnosno svojstva koja ga
opisuju. Svi entiteti jednog skupa entiteta imaju bar jedno zajedniko svojstvo na
osnovu koga su svrstani u isti skup.
U prethodnom odeljku je navedeno da tip entiteta, kao model skupa entiteta
opisuje emu skupa entiteta koji dele istu strukturu. Tip entiteta sadri atribute koji
su odabrani za modeliranje skupa entiteta.
Primer: Atributi entiteta
26
MBR
PREZIME
RADNIK
LIME
SSLOVO
PREZIME
Kompozitni atribut
IME
IME
MBR
RADNIK
Slika 3-4. Sloeni (kompozitni) atributi u ER dijagramu
STAROST
izvedeni atribut
STAROST
RADNIK
30
Vievrednosni atribut
EMAIL adresa
RADNIK
31
Komponente
kompozitnog
atributa
LIME
SSLOVO
PREZIME
IME
MBR
Kompozitni atribut
TELEFON
Vievrednosni atribut
Primarni klju
BROJRADNIKA
RADNIK
izvedeni atribut
33
RADNIK
RADI-NA
PROJEKAT
RadiNa
u ER dijagramu jeProjekat
dato na slici 3-8. Ime UML
tipa notacija
poveznika je navedno velikim slovima, a prikazane su veze ka tipovima entiteta
Radnik radi na projektu
34
Angauje
UML notacija
Projekat
Radnik
Radnik
Predstavljanje
tipa poveznika
Neka su Mina i Pera elementi skupa RADNIK, a Web server element skupa
PROJEKAT
Poveznik (Mina,Web server) moe imati znaenje Radnik Mina radi na
projektu Web server.
Poveznik (Pera,Web server) moe imati znaenje Radnik Pera rukovodi
projektom Web sever.
Poveznik (Pera,Mina) moe imati znaenje Radnik Pera je rukovodilac
radnika Mina.
U ovim primerima nisu eksplicitno navedene uloge entiteta u poveznicima.
Stepen tipa poveznika je broj tipova entiteta koji participiraju u tipu
poveznika. Tip poveznika stepena 1 naziva se rekurzivni, tip poveznika stepena 2
se naziva binarni, tip poveznika stepena 3 se naziva ternarni, itd. U praksi se
najee koriste binarni tipovi poveznika.
Primer: Stepen tipa poveznika
Dva tipina primera rekurzivnog tipa poveznika:
U-BRAKU(OSOBA,OSOBA)
Binarni tipovi poveznika (radnici rade na projektima, projekti imaju
rukovodioce, radnici imaju rukovodioce):
RADI-NA(RADNIK,PROJEKAT)
35
SNABDEVA
PROJEKAT
DEO
Slika 3-9. Ternarni tip poveznika SNABDEVA
RADI-NA
RADI-NA
PROJEKAT
PROJEKAT
r1
Ana
Mina
Pera
Laza
Nadja
r2
r3
r4
r5
Web
server
Web
sajt
Map
server
36
RUKOVODI
RUKOVODI
PROJEKAT
PROJEKAT
r1
Ana
Mina
r2
Pera
Laza
r3
Nadja
Web
server
Web
sajt
Map
server
JE_RUKOVODILAC
RADNIK
JE_RUKOVODILAC
RADNIK
RADNIK
r1
Ana
Mina
Ana
r2
Pera
Laza
Mina
Pera
r3
Laza
Nadja
r4
Nadja
37
U-BRAKU
r1
suprug
Ana
OSOBA
U-BRAKU
supruga
r2
Mina
Pera
Laza
r1
Nadja
PROJEKAT
r1
d2
r2
r3
r4
DEO
r5
Web
server
Web
sajt
Map
server
r6
deo1
deo2
deo3
deo4
38
RADI-NA
nadreen
PROJEKAT
RADNIK
RUKOVODI
podreen
JE-RUKOVODILAC
Slika 3-15. Prikaz uloge u ER modelu
Ogranienje kardinalnosti
Za modeliranje realnog sveta vana je klasifikacija svih veza s obzirom na broj
entiteta odreene vrste koji su u odreenoj vezi sa entitetima druge vrste, odnosno s
obzirom na kardinalnost odgovarajue relacije meu povezanim tipovima entiteta.
Kardinalnost binarnog tipa poveznika R(E1,E2) specificira maksimalni broj
instanci poveznika u kojima entiteti E1 i E2 mogu participirati.
Mogui odnosi kardinaliteta tipa poveznika R(E1,E2) su:
jedan-prema-jedan (1 : 1)
vie-prema-jedan (N : 1)
jedan-prema-vie (1 : N)
vie-prema-vie (N : M)
(gde je N 0 i M0)
40
E1
R(E1,E2)
E1
E2
A
R(E1,E2)
E2
41
RASPOREEN
RADNIK
Uvod u baze
podataka
RASPOREEN
RADNIK
RADNO-MESTO
RADNO-MESTO
RADI-U
nadreen
SEKTOR
RADI-NA
PROJEKAT
RADNIK
1
RUKOVODI
podreen
N
JE-RUKOVODILAC
parcijalna participacija
Totalna participacija tipa entiteta E1 u tipu veze R(E1, E2) znai da svaki
entitet iz skupa entiteta E1 mora biti povezan sa nekim entitetom iz skupa entiteta
E2 preko veze iz skupa veza modeliranih tipom veze R. To dalje znai da
egzistencija nekog entiteta u skupu E1 zavisi od toga da li je povezan sa nekim
entitetom iz skupa E2 preko tipa veze R. Otuda se ovaj tip participacije takoe
naziva egzistencijalna participacija.
42
Na jedno radno mesto moe biti rasporeeno vie radnika, ali mogu
postojati radna mesta na koja niko nije rasporeen
totalna
RADNIK
parcijalna
RASPOREEN
RADNO-MESTO
RADNIK
Totalna participacija
RADI-U
SEKTOR
Parcijalna participacija
43
min = 0,
parcijalna participacija
min > 0,
totalna participacija
E1
(min2,max2)
(min1,max1)
R(E1,E2)
(min1,max1)
E2
(min2,max2)
R(E1,E2)
E2
45
Na jedno radno mesto moe biti rasporeeno vie radnika, a moe radno
mesto biti slobodno.
(0,N)
RASPOREEN
RADNIK
(1,1)
RADNIK
RASPOREEN
(1,1)
RADNO-MESTO
(0,N)
RADNO-MESTO
NAZIV
Klju
VEZA
ParcKlju
NAZIV
Slika 3-23. Slabi tip entiteta u ER dijagramu
Atributi i veze se mogu obeleavati na dva naina: (1) nizom rei koje se
piu velikim slovima sa znakom za podvlaenje ili crticom izmeu rei;
Na primer: IME, BOJA_KOLA, REG_BROJ ili BOJA-KOLA, REGBROJ; (2) nizom rei koje se piu malim slovima, osim prvog slova
svake rei, bez delimitera izmeu rei; Na primer: Ime, BojaKola,
RegBroj.
47
E1
E2
ENTITET
Atribut
ENTITET
A2
A1
A3
Atribut
ENTITET
48
Atribut
ENTITET
E1
E2
E1
(min, max)
50
VOZILO, sa atributima
BrojMotora, Brojasije, i
Tip,
RegistarskiBroj
(kljuni
atribut),
RegistarskiBroj
BrojDozvole
Tip
VOZILO
1
POSEDUJE
VLASNIK
BrojMotora
Adresa
Ime
Brojasije
LinoIme
Prezime
51
Preduzee ima vie sektora. Svaki sektor ima ime, broj i rukovodioca.
Sektor ima bar etiri radnika. Vodi se evidencija o datumu kada je
rukovodilac postavljen na tu funkciju. Sektor moe imati vie lokacija.
Za svakog radnika se pamti ime, matini broj, adresa, plata, pol i datum
roenja. Svaki radnik radi u jednom sektoru, a moe biti angaovan na
vie projekata, koje ne vodi isti sektor. Pri tome se vodi evidencija o
broju radnih asova koje radnik provede na nekom od projekata. Takoe
se vodi evidencija o hijerarhiji odgovornosti, odnosno evidentira se za
svakog radnika ko mu je neoposredni rukovodilac.
Sbroj
SSlovo
Prezime
LIme
RADI-U
N
Adresa
Ime
Sektor
Radnik
Pol
BrojRadnika
Plata
MatBr
1
RUKOVODI
DatRodj
nadredjen
podredjen
Izvrsilac
M
RukovodiSektorom
Sati
JE-NOSILAC
RADI-NA
1
Sektor-nosilac
NosiProjekat N
N
NADZOR
SEKTOR
DatumPost
Rukovodilac
RADNIK
Lokacija
Naziv
Projekat
PROJEKAT
Radnik
ZAVISI_OD
Lokacija
Naziv
Broj
Ime
Zavisi
Srodstvo
CLAN-PORODICE
Pol
DatRodj
52
53
Prezime
Ime
Kod
Adresa
Datum
Broj_iznajmljivanja
Ime_i_prezime
Datum_Nabavljanja
Broj
KASETA
IZNAJMIO
LAN
Najamnina
Naslov
Datum
SADRI
Bonus
Tip
Uloga
Broj
Datum_roenja
Datum_smrti
1
N
FILM
AA_nominacije
Broj
IGRA
GLUMAC
N
Mesto_roenja
Ime_i_prezime
AA_nagrade
REIJA
Kritika
Prezime
Ime
Datum_Smrti
1
Godina
REISER
Broj
Datum_Roenja
Ime
Ime_i_prezime
Prezime
54
Ime
ID_Autora
Ime_i_prezime
AUTOR
Broj_narudbine_1
1
NAPISAO_1
Broj_narudbine_2
M
Jezik
Kljuna_re
NAPISAO_2
Naslov
Naslov
N
BRN
Jezik
LANAK
text
KNJIGA
N
Strane
ISBN
N
Broj
Izdava
PRIPADA_2
IZDAT_U
Volumen
1
Ime
M
SUBJEKT
1
PRIPADA_1
ASOPIS
Izdava
ID_Sertifikata
BRN
55
Broj_narudbenice
Ime
ID_Autora
Ime_i_prezime
NAPISAO
AUTOR
Naslov
Ime
ID_Specifikacije
Jezik
PUBLIKACIJA
PRIPADA
SUBJEKT
BRN
Kljuna_re
JE_KNJIGA
JE_LANAK
Vol
LANAK
text
Klju
pp
Br
KNJIGA
IZDAT_U
ISBN
Godina
ISSN
Brojevi
ASOPIS
Izdava
IZDAVA
Volumen
56
Ogranienja:
Oznake za participaciju potklasa:
Oznake za kompletnost:
-
totalna:
parcijalna:
Oznaka za kategorije:
mogu
da
budu:
SEKRETARICA,
Kada postoji jedna ili vie potklasa, definisanih na osnovu istog atributa
(TipPosla), koristite sledeu grafiku notaciju za prikaz veze klasa/potklase:
Ime
RADNIK
TipPosla
Isplata
RADI_U
SEKTOR
SEKRETAR
INENJER
SW_INENJER
STALNO_ZAP
60
ZAP_NA_ODR
RADNIK
SEKRETAR
INENJER
SW_INENJER
Slika 3-31. Hijerarhija klasa
61
RADNIK
SEKRETAR
INENJER
MENADER
INENJER_MENADER
Slika 3-32. Primer deljive klase
OSOBA
BANKA
U
VLASNIK
KOMPANIJA
Kategorija, VLASNIK, je
podklasa unije OSOBA,
BANKA, KOMPANIJA.
VLASNIK je ili OSOBA, ili
BANKA ili KOMPANIJA
62
63
ASOPIS
KNJIGA
LANAK
AUTOR_KNJIGE
NEZAVISNI_PROFESIONALAC
U
U
AUTOR_LANAKA
U
AUTOR
RECEZENT_LANKA
U
RECEZENT_KNJIGE
U
U
U
ZAPOSLENI_KOD_IZDAVAA
RECEZENT
64
4 RELACIONI
M O D E L P O D AT A K A
Domen atributa
Torka
Pojava relacije
Atribut
ema relacije
LIME
LD
SBR
2203
MIRA
50000
10
2817
PERA
40000
20
2932
MIRA
35000
10
2995
GOCA
18000
30
71
radnik
MBR
LIME
LD
SBR
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
sektor
projekat
SBR
SNAZIV
SLOK
PBR
PNAZIV
SBR
PRUK
10
20
30
40
PROIZVODNJA
PROIZVODNJA
ININJERING
RAZVOJ
NI
BEOGRAD
NI
NI
100
200
300
400
PC
HOST
LAN
VIPX
10
20
30
40
2203
3305
3819
2817
...
76
integritet kljueva
integritet entiteta
referencijalni integritet
semantiki integritet
INTEGER,
Ime
CHAR(20),
Adresa
CHAR(50),
Status
CHAR(10),
Baza podataka
Relacija
Tabela
Torka
Vrsta
Atribut
Kolona
Domen atributa
ema relacije
Opis tabele
Relacija
Kolekcija
normalizovanih
razliitim imenima.
ema relacije
Atribut
Domen atributa
Torka relacije
Stepen relacije
Kardinalnost relacije
relacija
sa
84
Primeri
Primer: Preslikavanje ER modela baze podataka PREDUZEE
ER dijagram za bazu podataka PREDUZEE dat je na slici 4-7. Ovaj dijagram
je dobijen projektovanjem baze podataka na osnovu zahteva iz odgovarajueg
primera u prethodnom poglavlju.
Sbroj
SSlovo
Prezime
LIme
(1,1)
Adresa
Ime
Sektor
Radnik
Pol
BrojRadnika
LD
MatBr
RADNIK
podredjen
(0,1)
NADZOR
SEKTOR
DatumPost
Rukovodilac
(0,1)
Izvrsilac
(1,n)
Sati
(1,1)
RUKOVODI
(0,n)
Sektor-nosilac
RukovodiSektorom
DatRodj
nadredjen
(0,n)
Lokacija
Naziv
(4,n)
RADI-U
JE-NOSILAC
NosiProjekat
(1,1)
(1,n)
RADI-NA
(0,n)
Radnik
PROJEKAT
Projekat
ZAVISI_OD
Lokacija
Naziv
Broj
(1,1)
Zavisi
Ime
Srodstvo
CLAN-PORODICE
DatRodj
Pol
PREZIME
MATBR
DATRODJ
POL
PLATA
ADRESA
SBROJ
PROJEKAT
NAZIV LOKPR
BROJPR
87
POL
DATRO
SRODSTVO
SBROJ
MATBRR
DATPOST
SSLOVO
PROJEKAT
NAZIV
LOKPR
PREZIME
MATBR
DATRODJ
POL
PLATA
ADRESA
MATBROJS
BRSEK
BROJPR
BRS
SATI
RADNIK
LIME
SSLOVO
PREZIME
MATBR
DATRODJ
PLATA
PROJEKAT
NAZIV
LOKPR
BROJPR
BRS
SEKTOR
NAZIV
MATBRR
DATPOST
SBROJ
CLAN_PORODICE
MATBRRAD
IME
POL
LOK_SEKTOR
BRS
LOKACIJA
SRODSTVO
POL
ADRESA
MATBROJS
BRSEK
DATRO
RADI_NA
MBR
BRPR
SATI
PROJEKAT
SNABDEVA
DIme
PrIme
Koliina
DEO
BDela
89
SNABDEVA
DIME
DEO
DEO
BDELA
PROJEKAT
PRIME
...
...
KOLIINA
PRIME
NASLOV
TIP
AA_NOM
AA_NAG
KRITIKA
GODINA
REISER
REISER
BROJ
IME
PREZIME
DATUM_RO
IME
PREZIME
ADRESA
DATUM_SM
LAN
BROJ
NAJAM
BONUS
DATUM
GLUMAC
BROJ
IME
PREZIME
DATUM_RO
MESTO_RO
DATUM_SM
KASETA
KOD
DATUM_NABAV
FILM
BROJ_IZNAJM
LAN
DATUM_IZNAJM
IGRA
BR_FILM
BR_GLUMAC
ULOGA
90
5 RELACIONA ALGEBRA
selekcija,
projekcija,
spoj,
deljenje.
unija,
presek,
razlika,
Dekartov proizvod.
Selekcija
Projekcija
Unija
Razlika
Dekartov proizvod
Presek
Deljenje
5.1 Selekcija
Selekcija je operacija kojom se iz relacije izdvajaju one torke koje imaju
zadatu vrednost specificiranih atributa. Atributi i njihove vrednosti po kojima se
vri selekcija se zadaju uslovom selekcije. Na slici 5-1. prikazane su dve torke
dobijene selekcijom sa zadatim uslovom da radnici rade u sektoru 10.
radnik
MBR
LIME
LD
SBR
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
Relaciona algebra
relacija koja sadri one torke poetne relacije koje zadovoljavaju zadati <uslov
selekcije>.
Redosled atributa rezultantne relacije ekvivalentan je redosledu atributa relacije
nad kojom je primenjena selekcija.
Vodite rauna da je selekcija unarna operacija! Kao i kod svih ostalih operacija
relacione algebre, rezultat primene selekcije nad nekom relacijom je takoe
relacija.
Uslov selekcije moe da bude prost i sloeni.
Prost uslov selekcije je logiki izraz oblika:
Ai Aj
Ai C
C Ai
gde je:
{<, =, >, <=, >=, !=}, Ai i Aj imena atributa relacije nad kojom se
selekcija izvodi, C konstanta koja uzima vrednosti iz domena atributa Ai.
Sloeni uslov selekcije se sastoji od prostih uslova selekcije koji su povezani
operatorima , i , odnosno AND, OR i NOT.
Primer: Selekcija
Iz relacije radnik nad emom relacije RADNIK (MBR,LIME,LD,SBR)
izabrati sve radnike koji ispunjavaju uslov:
(a) LD > 20000
(b) LD > 20000 i SBR = 10
Odgovarajue operacije relacione algebre su:
(a) LD>20000 (radnik)
(b) LD>20000 AND SBR=10 (radnik)
Rezultat primene ovih operacija je dat na slici 5-2. Data je poetna relacija
radnik i rezultat primene operacije selekcije pod (a) i (b).
93
radnik
MBR
LIME
LD
SBR
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
LD>20000 (radnik)
(a)
MBR
LIME
LD
SBR
2203
2817
2932
3305
3819
MIRA
PERA
MIRA
LAZA
VLADA
50 000
40 000
35 000
60 000
65 000
10
20
10
40
30
(b)
MBR
LIME
LD
SBR
2203
2932
MIRA
MIRA
50 000
35 000
10
10
5.2 Projekcija
Projekcija je operacija kojom se iz relacije izdvajaju kolone koje odgovaraju
atributima po kojima se vri projekcija i kojom se iz tako dobijene relacije
eliminiu jednake torke. Na slici 5-3. prikazana je projekcija dve kolone relacije
radnik MBR i LD.
94
Relaciona algebra
radnik
MBR
LIME
LD
SBR
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
LIME, SBR(radnik)
Projekcija istih atributa, ali u obrnutom redosledu:
95
radnik
MBR
LIME
LD
SBR
LIME
SBR
SBR
LIME
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
MIRA
PERA
GOCA
LAZA
JOVAN
VLADA
10
20
30
40
20
30
10
20
30
40
20
30
MIRA
PERA
GOCA
LAZA
JOVAN
VLAD A
5.3 Preimenovanje
Preimenovanje je operacija koja omoguava promenu imena relacije i imena
atributa u rezultantnoj relaciji. Ova operacija se moe koristiti u upitima relacione
algebre kako bi rezultati upita bili razumljiviji.
Operator preimenovanja se oznaava sa:
s(B1,B2,,Bn)(r)
Preimenovanje imena relacije
s(r)
Preimenovanje atributa relacije
(B1,B2,,Bn)(r)
Relaciona algebra
Unija je komutativna i asocijativna operacija:
rs=sr
(r s) t = r (s t)
Razlika relacija r i s je skup torki koje pripadaju relaciji r ali ne pripadaju
relaciji s. Relacije r i s treba da su unijski kompatibilne. Rezultujua relacija ima
imena atributa prve relacije.
Razlika nije komutativna operacija:
rss-r
Presek relacija r i s je skup torki koje pripadaju obema relacijama. Uslov za
obavljanje ove operacije je da su r i s unijski kompatibilne relacije. Rezultujua
relacija ima imena atributa prve relacije.
Presek se moe izraziti preko razlike na sledei nain:
r s = r - (r - s)
Presek je komutativna i asocijativna operacija:
rs=sr
(r s) t = r (s t)
Primer: Skupovne operacije
Prikazati rezultat primene operacija razlike, unije i preseka relacija student i
kandidat.
Unija (rezultat primene je prikaza na slici 5-5a):
student kandidat
(zbog komutativnosti je isto to i kandidat student)
Presek (rezultat primene je prikaza na slici 5-5b i 5-5c):
student kandidat
kandidat student
Razlika (rezultat primene je prikaza na slici 5-5d):
student kandidat (ili kandidat student)
97
student
IND
kandidat
IME
DATR
GRAD
ID
IME
DATR
GRAD
1211
PERA
010971
NI
1213
VERA
130872
NI
1213
VERA
130872
NI
1217
VERA
220371
SV
1215
MILA
150171
LE
1223
MIKA
101072
LE
1217
VERA
220371
SV
IND
IME
DATR
GRAD
IND
IME
DATR
GRAD
1211
PERA
010971
NI
1211
PERA
010971
NI
1213
VERA
130872
NI
1215
MILA
150171
LE
1215
MILA
150171
LE
1217
VERA
220371
SV
ID
IME
DATR
GRAD
1223
MIKA
101072
LE
1223
MIKA
101072
LE
IME
DATR
GRAD
1213
VERA
130872
NI
1217
VERA
220371
SV
Dekartov proizvod relacija r i s nad emama relacije R(A1, A2, ..., An) i S(B1,
B2, ..., Bm) je relacija q nad emom relacije Q(A1, A2 ,..., An, B1, B2, ..., Bm)
koju ine torke duine n+m, gde prvih n komponenti ini torku u r, a drugih m
torku u s.
Relacija q ima po jednu torku za sve kombinacije torki, jedna iz r, jedna iz s.
Ako r ima Kr torki i ako s ima Ks torki, tada q ima Kr x Ks torki.
Dekartov proizvod se oznaava na sledei nain:
q=rxs
Primer: Dekartov proizvod
Dekartov proizvod relacija r i s, r x s, je prikazan na slici 5-6. Rezultat
predstavlja skup torki koje su dobijene tako to je napravljena kombinacija prve
torke iz r sa svim torkama iz s (prve etiri torke u rezultatu), pa nakon toga
kombinacija druge torke iz r sa svim torkama iz s (poslednje etiri torke u
rezultatu).
98
Relaciona algebra
rxs
A
a1
a2
B
b1
b2
D
d1
d2
d3
E
e1
e2
e3
C
c1
c2
A
a1
a1
a1
a2
a2
a2
B
b1
b1
b1
b2
b2
b3
C
c1
c1
c1
c2
c2
c2
D
d1
d2
d3
d1
d2
d3
E
e1
e2
e3
e1
e2
e3
Deljenje ili kolinik relacija r i s, u oznaci r/s, je skup torki t koje se javljaju u r
u kombinaciji sa svim torkama iz s. Deljenje nije iz osnovnog skupa operacija i
moe se izraziti pomou operacija projekcija, Dekartov proizvod i razlika (, x, -)
na sledei nain:
y (r) -> q1
y ((s x q1) - r) -> q2
q1 - q2 -> q
Deljenje nije ni komutativna, ni asocijativna operacija.
Primer: Deljenje
Rezultat deljenja relacija r i s je prikazan na slici 5-7. U rezultatu su vrednosti
za atribut A: a1 i a5 poto se jedino one pojavljuju u r u kombinaciji sa b1 i b2.
r/s
a1
a1
a3
a4
a4
a5
a5
b1
b2
b1
b2
b3
b1
b2
b1
b2
a1
a5
99
5.5 -spoj
-spoj je spoj relacija r i s nad emama relacija R(A1, A2, ..., An) i S(B1,
B2,...,Bm) je relacija q nad emom Q(A1, A2, ..., An, B1, B2, ..., Bm) koja ima po
jednu torku za svaku kombinaciju torki, jedna iz r i jedna iz s, kad god ova
kombinacija zadovoljava uslov spoja (to je glavna razlika u odnosu na Dekartov
proizvod).
Za spoj se koristi oznaka:
r
<uslov spoja>
radnik.SBR=projekat.SBR
projekat
100
Relaciona algebra
projekat
radnik
MBR
LIME
LD
SBR
PBR
PNAZIV
SBR
PRUK
2203
2817
2932
2995
3305
3515
3819
MIRA
PERA
MIRA
GOCA
LAZA
JOVAN
VLADA
50 000
40 000
35 000
18 000
60 000
20 000
65 000
10
20
10
30
40
20
30
100
200
300
400
PC
HOST
LAN
VIPX
10
20
30
40
2203
3305
3819
2817
radnik
projekat
radnik.SBR=projekat.SBR
MBR
IME
LD
SBR
PBR
PNAZIV
SBR
PRUK
2203
2932
2817
3515
2995
3819
3305
MIRA
MIRA
PERA
JOVAN
GOCA
VLADA
LAZA
50 000
35 000
40 000
20 000
18 000
65 000
60 000
10
10
20
20
30
30
40
100
100
200
200
300
300
400
PC
PC
HOST
HOST
LAN
LAN
VIPX
10
10
20
20
30
30
40
2203
2203
3305
3305
3819
3819
2817
projekat
radnik * projekat
Atribut na osnovu kog se vri prirodni spoj je SBR njegov naziv je isti u obe
relacije, a uslov je jednakost vrednosti ovih atributa u obe relacije. Rezultat
primene prirodnog spoja ove dve relacije je prikazan na slici 5-9. Redosled
atributa u rezultujuoj relaciji je kao kod spoja - navode se najpre atributi iz
relacije radnik (koja je s leve strane operacije), a nakon toga iz relacije sektor.
U ovom sluaju se atribut SBR pojavljuje samo na jednom mestu koje mu je
odreeno pozicijom u relaciji koja se navodi s leve strane operacije prirodnog
spoja.
101
radnik * projekat
radnik
projekat
MBR
IME
LD
SBR
PBR
PNAZIV
PRUK
2203
2932
2817
3515
2995
3819
3305
MIRA
MIRA
PERA
JOVAN
GOCA
VLADA
LAZA
50 000
35 000
40 000
20 000
18 000
65 000
60 000
10
10
20
20
30
30
40
100
100
200
200
300
300
400
PC
PC
HOST
HOST
LAN
LAN
VIPX
2203
2203
3305
3305
3819
3819
2817
Spoljanji spoj je operacija kod koje se navodi uslov spoja koji se odnosi na
jednakost atributa kao kod klasinog spoja. Ipak, rezultat primene zavisi od tipa
spoljanjeg spoja, i moe da sadri torke iz neke od relacija iako one ne ispunjavaju
uslov jednakosti. Ovaj spoj moe da ima sledee varijante:
Levi (Left) spoj rezultat zadrava sve torke iz leve relacije bez obzira
na to da li ispunjavaju uslov spoja, i one relacije s desne strane koje
ispunjavaju zadati uslov. Za one torke s leve strane koje ne ispunjavaju
uslov, u desni deo se upisuje NULL vrednost.
Desni (Right) spoj - rezultat zadrava sve torke iz desne relacije bez
obzira na to da li ispunjavaju uslov spoja, ali se u levi deo upisuje NULL
vrednost za sve one koje ne ispunjavaju uslov.
102
Relaciona algebra
gde su:
<atributi grupisanja> lista atributa relacije r
<lista funkcija> je lista parova (<funkcija><atribut>)
<funkcija> je funkcija koja se primenjuje i moe biti:
SUM - za izraunavanje sume vrednosti navednog atributa,
AVERAGE - za izraunavanje prosene vrednosti,
MAXIMUM - za odreivanje maksimalne vrednosti,
MINIMUM - za odreivanje minimalne vrednosti,
COUNT - za brojanje ne-nultih vrednosti zadatog atributa.
Primer: Funkcije agregacije
Za svaki sektor nai broj radnika u tom sektoru i prosean lini dohodak.
SBR
103
Indeks, Ime(STUDENT)
Primer 2. Prikazati ID-ove onih predmeta koje je izabrao neki student (izabrani
predmeti)
Poto se u ovom primeru ne trae dodatni podaci o predmetima, ve samo ID, a
informacije o predmetima koji su izabrani od studenata su u relaciji IZABRAO,
upit se svodi na jednostavnu primenu projekcije:
IDP(IZABRAO)
Primer 3. Podaci o studentima iji je mentor Petar Petrovi
Svi podaci o studentima su u relaciji STUDENT, ukljuujui i podatke o
mentoru. Potrebno je izdvojiti one torke iz ove relacije koje zadovoljavaju uslov
na je vrednost atributa Mentor Petar Petrovi. Primer se odnosi na oiglednu
primenu selekcije:
Naziv(PREDMET
104
ID = IDP
IZABRAO)
Relaciona algebra
ID(PREDMET) - IDP(IZABRAO)
Za vebu: Studenti koji nisu izabrali nijedan predmet.
Primer 6. Nazivi predmeta koje nije izabrao nijedan student.
Deo reenja ovog upita je reenje prethodnog upita. Rezultat smetamo u
privremenu relaciju r:
r ID(PREDMET) - IDP(IZABRAO) - prethodni primer
Da bi prikazali nazive predmeta potrebno je uraditi spoj sa relacijom
PREDMET koja uva nazive, i nakon toga projekcijom izdvojiti samo razliite
nazive predmeta:
Naziv( r
r.ID=Predmet.ID PREDMET)
ID=IDP
IZABRAO
r1.Indeks=Student.Indeks
STUDENT
r Ime,Naziv(r2)
Primer 8. Indeksi studenata koji su izabrali predmet Baze podataka.
Pomona relacija r1 sadri podatke o predmetu Baze podataka, koji se spojem sa
IZABRAO povezuju sa studentima koji su ga izabrali:
r1 Naziv = Baze podataka (PREDMET)
105
ID=IDP
IZABRAO
r Indeks(r2)
Za vebu: Indeksi studenata koji su izabrali predmet Baze podataka ILI
predmet Strukture podataka.
Ideja 1: promena uslova kod selekcije
Ideja 2: reenje iz prethodnog primera (2 puta) + unija
Za vebu: Indeksi studenata koji su izabrali oba predmeta:Baze podataka i
Strukture podataka.
ema baze podataka PREDUZEE:
RADNIK(MBR,LIME,PREZIME,DRODJ,ADRESA,LD,SBR,SEF)
SEKTOR(SBR,SNAZIV,SLOK,MBR)
PROJEKAT(PBR,PNAZIV,SBR,PRUK)
RADINA(MBR,PBR,SATI)
LAN_PORODICE(MBR,IME,DRODJ,SRODSTVO)
Primer 1: Nai ime, prezime i adresu svih radnika koji rade u sektoru 5
RADNIK(MBR,LIME,PREZIME,DRODJ,ADRESA,LD,SBR,SEF)
SEKTOR(SBR,SNAZIV,SLOK,MBR)
Reenje:
r LIME, PREZIME,ADRESA SBR=5 (radnik)
Primer 2: Nai imena, prezimena i adrese svih radnika koji rade u sektoru
PROIZVODNJA u Niu
r1 SNAZIV=PROIZVODNJA AND SLOK=NI(sektor)
r2 r1
r1.SBR=radnik.SBR radnik
r MBR,LIME,LD(r2)
Primer 3: Nai ime, prezime i adresu svih radnika koji rade u sektoru
RAZVOJ
106
Relaciona algebra
RADNIK(MBR,LIME,PREZIME,DRODJ,ADRESA,LD,SBR,SEF)
SEKTOR(SBR,SNAZIV,SLOK,MBR)
Reenje
r1 SNAZIV=RAZVOJ (sektor)
r2 radnik
radnik.SBR=r1.SBR r1
radnik.SBR=sektor.SBR ( SNAZIV=RAZVOJ
(sektor)))
Primer 4: Nai imena radnika koji rade na svim projektima koje nadgleda
sektor broj 5
RADNIK(MBR,LIME,PREZIME,DRODJ,ADRESA,LD,SBR,SEF)
PROJEKAT(PBR,PNAZIV,SBR,PRUK)
RADINA(MBR,PBR,SATI)
Reenje:
r1 SBR=5(projekat) projekti koje nadgleda sektor 5
r2 r1
r1.PBR = radina.PBR
r3 r2
r2.MBR = radnik.MBR
radina
radnik - radnici koji rade na projektima sek 5
r4 LIME,PREZIME (r3)
Primer 5: Nai imena radnika koji imaju 2 i vie izdravanih lica
RADNIK(MBR,LIME,PREZIME,DRODJ,ADRESA,LD,SBR,SEF)
LAN_PORODICE(MBR,IME,DRODJ,SRODSTVO)
Reenje:
r1(MBR,BROJ_IZL) MBR F COUNT IME(LAN_PORODICE)
r2 BROJ_IZL2(r1)
r LIME,PREZIME(r2
r2.MBR = radnik.MBR
radnik)
107
6 NORMALIZACIJA
I NORMALNE
FORME
skupa atributa A, i
skupa funkcionalnih zavisnosti F kojima se specificiraju ogranienja
da X funkcionalno odreuje Y
zatvara skupa FZ
pravila izvoenja FZ
112
5.
staroX+:= X+;
4. za svaku FZ YZ u F
5.
114
ema
relacije
neka
je
115
116
// svojstvo
minimalnosti
enddo redukcija
Ki=X
Dodati Ki u SK
endIf
3. enddo trai_klju Ki
Primer: Odreivanje svih kljueva
Zadata je ema relacije (R;F), gde je
R=(A,B,C,D,E) i F=(ABC,CDE,BD,E A)
Nai sve kljueve ove relacije.
Ulaz: R=(A,B,C,D,E) i F=(ABC,CDE,BD,E A)
1. SK=
2. Ispitujemo da li svojstvo kljua ima svaki podskup skupa atributa R, tj.:
{A}, {B}, {C},{D},{E}, {A,B},{A,C}, {A,D}, {A,E}, {B,C}, {B,D},
{B,E}, {C,D}, {C,E}, {D,E},{A,B,C},{A,B,D}, {A,B,E},{A,C,D}
{A,C,E},{A,D,E} {B,C,D},{B,C,E},{B,D,E}, {C,D,E}, {A,B,C,D},
{A,B,C,E},{A,B,D,E},{A,C,D,E},{B,C,D,E}
3. KRAJ algoritma.
Izlaz: SK={A, E,BC,CD}
Vani pojmovi koje emo u narednom poglavlju kod normalizacije pomenuti i
koristiti, a odnose se na FZ su potpuna i parcijalna funkcionalna zavisnost, kao i
tranzitivna zavisnost.
Potpuna i parcijalna funkcionalna zavisnost
Neka su X i Y skupovi atributa. Funkcionalna zavisnost X Y je potpuna ako
izbacivanjem bilo kog atributa A iz X ova zavisnost vie ne postoji.
119
120
Logike zavisnosti i
Normalne forme
anomalije unosa
anomalije brisanja
anomalije modifikacije
RADSEK
RMBR RIME RLD
SBR SNAZIV
SRUK
111
Laza
100000
10
222
Mara
60000
10
333
Nada
150000
10
444
Djura
50000
20
Kontrola
null
122
(Uslov 2) R1R2R2 F+
gde je:
o
Praktino, ako je R1R2 super klju eme relacije R1 ili R2, tada binarna
dekompozicija ima svojstvo spoj-bez-gubitaka. Za proveru da li je R1R2 super
klju treba koristiti algoritam za nalaenje zatvaraa skupa atributa
Netrivijalne su.
Proces normalizacije
Normalizacija se izvrava u vie koraka. Svaki korak odgovara jednoj
normalnoj formi sa eljenim osobinama definisanim normalnom formom. Svaka
sledea normalna forma je stroa i uvodi vie restrikcija, samim tim i smanjuje
mogunost pojave anomalija.
Normalne forme, od onih sa najmanje restrikcija ka onima sa vie restrikcija:
124
125
ImeK
Petar
Peri
CR76
Aca
Stani
CR56
ObjekatID
AdresaO
rentStart
rentKraj
renta
VlasnikID
PG4
Cvetna, 8
Ni
1-Jul-00
31-Aug-01
150
CO40
Glavna, 10
Beograd
1-Sep-02
1-Sep-02
250
CO93
PG4
Cvetna, 8
Ni
1-Sep-99
10-Jun-00
150
CO40
PG36
Kej, 12
Pirot
10-Oct-00
1-Dec-01
70
CO93
PG16
Glavna, 10
Beograd
1-Nov-02
1-Aug-03
250
CO93
PG16
ImeVlasnika
Tina Tinki
Toa Mani
Tina Tinki
Toa Mani
Toa Mani
Ako nisu, tada ema relacije nije u 1NF. Takvu emu treba prevesti u
1NF, tj. treba izvriti 1NF normalizaciju.
Skalabilnost
128
(Primarni Klju)
fz2
KlijentID ImeK
(Parcijalna zavisnost)
fz3
fz4
VlasnikID ImeVl
fz5
(Parcijalna zavisnost)
(Tranzitivna zavisnost)
(Klju kandidat)
ObjekatID, rentStart
fz6
(Klju kandidat)
130
Klijent
KlijentID
CR76
CR56
ImeK
Petar Peri
Aca Stani
VlasnikObjekta
KlijentID
CR76
CR76
CR56
CR56
CR56
ObjekatID
PG4
PG16
PG4
PG36
PG16
rentStart
1-Jul-00
1-Sep-02
1-Sep-99
10-Oct-00
1-Nov-02
ObjekatID
AdresaO
renta
VlasnikID
ImeVl
PG4
Cvetna 8, Ni
150
CO40
Tina Tinki
PG16
250
CO93
Toa Mani
PG36
70
CO93
Toa Mani
rentKraj
31-Aug-01
1-Sep-02
10-Jun-00
1-Dec-01
1-Aug-03
Sluaj 3: A je u kljuu, XK
tranzitivna zavisnost
KXA
Sluaj 1 se odnosi na parcijalnu zavisnost koja je, kako smo videli, vana za
2NF i 3NF. Za XA, ako A nije u kljuu i X je podskup kljua K, oigledna je
parcijalna zavisnost A od dela kljua. Sluaj 2 i 3 se odnose na dve varijante
tranzitivne zavisnosti koja je vana za 3NF. Sluaj 2 pokazuje tranzitivnu zavisnost
A od kljua K preko X (za koji postoji FZ XA), koji nije deo kljua ali je
odreen kljuem preko FZ KX. Sluaj 3 se odnosi na varijantu kada je A deo
kljua, a tranzitivno zavisi od njega preko X.
3NF test
KlijentID ImeK
(Prim.klju)
(Primarni Klju)
fz5
(Klju kandidat)
fz6
(Klju kandidat)
fz4
VlasnikID ImeVl
(Primarni Klju)
(Tranzitivna zavisnost)
133
Klijent
KlijentID
CR76
CR56
ImeK
Petar Peri
Aca Stani
VlasnikObjekta
KlijentID
CR76
CR76
CR56
CR56
CR56
ObjekatID
PG4
PG16
PG4
PG36
PG16
ObjekatID
AdresaO
renta
VlasnikID
PG4
Cvetna 8, Ni
150
CO40
PG16
250
CO93
PG36
70
CO93
rentStart
1-Jul-00
1-Sep-02
1-Sep-99
10-Oct-00
1-Nov-02
rentKraj
31-Aug-01
1-Sep-02
10-Jun-00
1-Dec-01
1-Aug-03
Vlasnik
VlasnikID
ImeVl
CO40
Tina Tinki
CO93
Toa Mani
3.
4. enddo
5. return(TRUE) // ema relacije je u BCNF
Primer: Test za BCNF
Proveriti da li je data ema relacije R(R;F) u BCNF, ako je:
R={A,B,C,D} i
F={ABC, BCA, BD}
BCNF test:
Uslov (1): Sve FZ iz F su netrivijalne i treba ih proveriti na Uslov (2).
Uslov (2), za svaku FZ:
1. Proveriti da li FZ ABC zadovoljava BCNF ogranienje
Nai (AB)+F
o
(AB)+F =(A,B,C,D)
Nai (BC)+F
o
(BC)+F=(B,C, A,D)
Nai (B)+F
o
(B)+F=(B,D)
KRAJ TESTIRANJA
Primer: Test za BCNF
Da li je data ema relacije R(R;F) u BCNF?
R=(A,B,C,D)
F={ABC,BDC, BCA}
BCNF test
1. Proveriti da li FZ ABC zadovoljava BCNF uslov 2)
(AB)+=(A,B,C,D)
Kako je (AB)+=R, to je AB super klju, zadovoljava uslov 2)
2. Proveriti da li FZ BD zadovoljava BCNF uslove
(B)+=(A,B,C,D)
Kako je (B)+=R, to je B super klju, zadovoljava uslov 2)
3. Proveriti da li FZ BC zadovoljava BCNF uslove
(B)+=(A,B,C,D)
Kako je (B)+=R, to je B super klju, zadovoljava uslov 2)
4. Proveriti da li FZ BCA zadovoljava BCNF uslove
(BC)+=(A,B,C,D)
Kako je (BC)+=R, to je BC super klju, zadovoljava 2)
5. R je u BCNF, KRAJ TESTA
Primer: Test za BCNF
Da li je data ema relacije R(R;F) u BCNF?
R=(A,B,C,D,E)
F={AB,BC E, ED A}
BCNF test: Za individualni rad
136
KlijentIntervju
klijentID
CR76
CR76
CR74
CR56
intervjuDatum
13-May-02
13-May-02
13-May-02
1-Jul-02
intervjuVreme
10.30
12.00
12.00
10.30
zaposlID
SG5
SG5
SG37
SG5
prostorijaBr
G101
G101
G102
G102
Funkcionalna zavisnost fz1 se odnosi na primarni klju relacije, dok fz2 i fz3
definiu kandidate za klju. Problematilna FZ je fz4, poto leva strana nije
klju kandidat i posledica su potencijalne anomalije auriranja (na primer, ako
treba aurirati dve torke tako da se menja vrednost prostorijaBr za zaposlID
SG5 i 13-May-02).
Da bi izvrili normalizaciju, moramo da eliminiemo FZ koja naruava BCNF
(u ovom sluaju fz4) tako to emo da uradimo dekompoziciju po toj FZ na dve
relacije (slika 6-7) Intervju (originalna relacije bez zavisnoh atributa koji su s
desne strane posmatrane FZ, u ovom sluaju prostorijaBR) i ZaposlProstorija
(nova relacija na osnovu fz4):
Intervju (klijentID, intervjuDatum, intervjuVreme, zaposlID)
ZaposlProstorija (zaposlID, intervjuDatum, prostorijaBr)
Intervju
klijentID
CR76
CR76
CR74
CR56
intervjuDatum
13-May-02
13-May-02
13-May-02
1-Jul-02
ZaposlProstorija
zaposlID intervjuDatum
SG5
13-May-02
SG37
13-May-02
SG5
1-Jul-02
intervjuVreme
10.30
12.00
12.00
10.30
zaposlID
SG5
SG5
SG37
SG5
prostorijaBr
G101
G102
G102
6.5.5 Denormalizacija
Denormalizacija je postupak koji podrazumeva spajanje relacija u jednu kako bi
se poveala efikasnost nekih upita/pretraga. U praksi se koristi ako se proceni da je
dobitak kod pretrage vei od problema sa anomalijama. Ipak, u tom sluaju se
138
139
7 UPITNI
JEZIK
SQL
Ime
Puno ime
ANSI/ISO Standard
SQL/PSM
Interbase/Firebird
PSQL
Procedural SQL
IBM
SQL PL
Microsoft/Sybase
T-SQL
Transact-SQL
MySQL
SQL/PSM
Oracle
PL/SQL
PostgreSQL
PL/pgSQL
Procedural
Language/PostgreSQL
Structured Query Language (bazira se na
Oracle PL/SQL)
PostgreSQL
PL/PSM
Procedural
Modules
Language/Persistent
Stored
RADI_NA
SEKTOR
PROJEKAT
CLAN_PORODICE
LOK_SEK
Deklaracija kolone sadri ime kolone, tip podatka kolone, opciono duinu (ako
je neophodna, u zavisnosti od tipa podatka) i opciono, ogranienja za kolonu.
Deklaracije kolona se razdvojaju zapetama. U odeljku Tipovi podataka navedeni
su tipovi podataka koje moete koristiti. Ogranienja za kolonu su opciona i mogu
da sadre specifikaciju predefinisane vrednosti i niz specifikacija ogranienja, to
je detaljnije opisano u odeljku Ogranienja kolona.
Nakon deklaracije svih kolona navode se ogranienja koja vae za celu tabelu.
Specifikacije ogranienja za tabelu su navedena u odeljku Ogranienja tabele.
Navedena sintaksa naredbe CREATE TABLE nije kompletna. SQL standard
obezbeuju korienje velikog broja dodatnih klauzula koje korisnicima
omoguavaju preciznu kontrolu procesa kreiranja tabele. Osim toga proizvoai
RDBMS-ova prouruju CREATE TABLE naredbu klauzulama koje su posledica
specifinih osobina njihovih proizvoda.
144
decimal(p,s)
real
double precision
float(p)
char(x)
varchar2(x)
bit(x)
bit varying(x)
date
time
timestamp
time with time
zone
timestamp with
time zone
Interval
146
nula
147
148
NULL ili NOT NULL definie da kolona moe ili ne moe imatu
NULL vrednosti.
Uoite da kod deklaracije spoljnog kljua tabele treba navesti iza kljune rei
REFERENCES ime referencirane tabele i opciono, u maloj zagradi, ime
referencirane kolone u toj tabeli. ORACLE SQL oekuje da je referencirana kolona
primarni klju (kolona deklarisana sa PRIMARY KEY) u referenciranoj tabeli ili
da je nad njom podignuto ogranienje UNIQUE.
Na taj nain atribit iza koga stoji klauzula REFERENCES definisan je kao
spoljni klju u odnosu na primarni klju tabele ije je ime navedeno iza klauzule
REFERENCES.
Primer: SQL DDL naredba za kreiranje tabele PROJEKAT
CREATE TABLE PROJEKAT
(
NAZIV VARCHAR(25) NOT NULL,
LOKPR VARCHAR(15) DEFAULT 'Ni',
BROJPR NUMBER(3) PRIMARY KEY,
BRS NUMBER(2) NOT NULL REFERENCES SEKTOR(SBROJ)
);
149
PRIMARY KEY definie koja kolona ili koje kolone ine primarni
klju tabele.
FOREIGN KEY definie koja kolona ili koje kolone ine spoljni
klju tabele.
je
podrazumevano
ponaanje
152
153
Modifikacija tabela
Za modifikaciju strukture tabela koristi se naredba ALTER TABLE. ORACLE
SQL definie sledei oblik ove naredbe:
ALTER TABLE <ime tabele>
ADD <definicija atributa> |
ADD <definicija ogranienja> |
DROP <ime atributa> |
DROP CONSTRAINT <ime ogranienja> |
154
Prilikom promene tipa neke kolone treba voditi rauna o podacima koji ve
postoje u toj koloni. ORACLE DBMS e pokuati da automatski izvri konverziju
postojeih podataka ukoliko je to mogue. Ukoliko nije mogue ORACLE DBMS
e prijaviti poruku o greci.
Primer: SQL naredba koja u tabelu dodaje novo ogranienje kojim se
obezbeuje da vrednost projekta uvek mora biti pozitivan broj.
ALTER TABLE PROJEKAT
ADD CONSTRAINT VREDNOST_PROJEKTA_CK
CHECK (VREDNOST_PROJEKTA > 0);
155
156
izraz - ime kolone ili funkcije nad kolonama koja e biti ukljuena u
rezultujuu tabelu
Primer: U nastavku je dat SQL upit koji prikazuje kompletan sadraj tabele
RADNIK
SELECT * FROM RADNIK;
Rezultat bi bio ekvivalenta da smo napisali upit kod koga su umesto * navedena
imena svih kolona u tabeli.
SELECT LIME, SSLOVO, PREZIME, MATBR, DATRODJ,
POL, PLATA, MATBRS, BRSEK
FROM RADNIK;
157
Primer: U nastavku je dat SQL upit koji za svakog radnik odreuje matini broj
njegovog neposrednog rukovodioca.
SELECT MATBRS FROM RADNIK;
158
160
Primer: U nastavku je dat SQL upit koji prikazuje podatke o radnicima koji se
prezivaju Petrovi i ija je plata manja od 40000 (nije jednaka ili vea od 40000).
SELECT LIME, PREZIME
FROM RADNIK
WHERE PREZIME = 'Petrovi' AND NOT PLATA >= 40000;
Primer: U nastavku je dat primer SQL upita koji prikazuje podatke o radnicima
koji se prezivaju 'Petrovi' ili se prezivaju 'Jovanovi'.
SELECT LIME, PREZIME
FROM RADNIK
WHERE PREZIME = 'Petrovi' OR PREZIME = 'Jovanovi';
Primer: Naredni SQL upit pribavlja podatke o svim radnicima osim onih koji
se prezivaju 'Petrovi' ili 'Jovanovi'.
161
Alternativni SQL upit koji vraa identian rezultat bez korienja BETWEEN
operatora ima sledei oblik:
SELECT MATBR, LIME, PREZIME
FROM RADNIK
WHERE PLATA >= 30000 AND PLATA <= 40000;
162
163
Alternativni SQL upit koji vraa identian rezultat ima sledei oblik:
SELECT MATBR, LIME, PREZIME, DATRODJ
FROM RADNIK
WHERE DATRODJ LIKE '___SEP___';
164
165
166
+, -, *, /
ROUND(broj[,d]) - zaokruivanje na d decimala
POWER(broj,e) - e-ti stepen zadatog broja
TRUNC(broj[,d]) - odsecanje na d decimala
Primer: U nastavku je dat SQL upit koji prikazuje imena i prezimena radnika
kao i njihove plate uveane za bonus od 5000.
SELECT MATBR, LIME, SSLOVO, PREZIME,
PLATA + 5000 AS PLATA_SA_BONUSOM
FROM RADNIK;
Primer: U nastavku je dat SQL upit koji demonstrira nain primene mehanizma
pseudonima za imenovanje kolona u rezultujuoj tabeli.
SELECT LIME AS IME, PREZIME,
PLATA + 5000 AS PLATA_SA_BONUSOM,
1 AS KONSTANTA, NULL NOVA_KOLONA
FROM RADNIK;
167
NVL(s1, s2)
Primer: U nastavku je dat SQL upit koji konkatenacijom formira puno ime svih
radnika.
SELECT LIME || ' ' || SSLOVO || '.' || ' ' || PREZIME AS PUNO_IME
FROM RADNIK;
168
169
inner join
outer join
o
173
175
Alternativni SQL upit koji vraa identian rezultat ima sledei oblik:
SELECT LIME, PREZIME, NAZIV
FROM RADNIK, SEKTOR
WHERE NAZIV = 'Razvoj'
AND RADNIK.BRSEK = SEKTOR.SBROJ;
Primer: SQL upit koji za sve projekte locirane u Niu prikazuje broj projekta,
broj sektora koji ga izvodi i ime, prezime i datum roenja rukovodioca ima sledei
oblik:
SELECT BROJPR, BRS, LIME,PREZIME, DATRODJ
FROM PROJEKAT INNER JOIN SEKTOR
ON SBROJ = BRS
INNER JOIN RADNIK
ON MATBR = MATBRR
WHERE LOKPR = 'Ni';
Primer: U nastavku je dat SQL upit koji za svakog radnika prikazuje ime i
prezime kao i ime i prezime njegovog efa:
SELECT X.LIME, X.PREZIME, Y.LIME, Y.PREZIME
FROM RADNIK X INNER JOIN RADNIK Y
ON X.MATBRS = Y.MATBR;
177
179
180
Primer: Naredni SQL upit za svaki sektor daje ukupan broj radnih sati koje
radnici provode na projektima za koje je taj sektor zaduen.
SELECT S.SBROJ, S.NAZIV, SUM(SATI) AS SATI_UKUPNO
FROM SEKTOR S INNER JOIN PROJEKAT P
ON S.SBROJ = P.BRS
INNER JOIN RADI_NA RN
ON P.BROJPR = RN.BRPR
GROUP BY S.SBROJ, S.NAZIV;
Primer: U nastavku je dat SQL upit koji za sve projekte koji imaju vie od dva
angaovana radnika prikazuje broj projekta, ime projekta i broj radnika koji na
njemu rade.
SELECT BROJPR, NAZIV, COUNT(*)
FROM PROJEKAT, RADI_NA
WHERE BROJPR = BRPR
GROUP BY BROJPR, NAZIV
HAVING COUNT(*) > 2;
SQL upit koji odreuje nazive sektora u kojima rade radnici koji se prezivaju
'Jovanovi'.
SELECT DISTINCT NAZIV
FROM SEKTOR, RADNIK
WHERE SBROJ = BRSEK AND PREZIME = 'Jovanovi';
182
Napomena: Bitno je uoiti da sektor 'Razvoj' koji se javlja kao rezultat i jednog
i drugog upita u uniji se pojavljuje samo jednom. To je posledica injenice da unija
eliminie sve duplikate iz rezultujue tabele.
Primer: SQL upit u nastavku prikazuje kako se korienjem
klauzule UNION moe implementirati full-outer join spoj.
SELECT *
FROM SEKTOR LEFT OUTER JOIN RADNIK
ON SEKTOR.SBROJ=RADNIK.BRSEK
UNION
SELECT *
FROM SEKTOR RIGHT OUTER JOIN RADNIK
ON SEKTOR.SBROJ=RADNIK.BRSEK;
183
Naredni SQL upit vraa podatke o radnicima ija je plata vea od 40000.
SELECT MATBR, LIME, PREZIME
FROM RADNIK
WHERE PLATA > 40000;
184
Klauzula MINUS vraa samo one vrste koje se javljaju u rezultatu provg SQL
upita ali se ne javljaju i u rezultatima ostalih SQL upita.
Primer: Ukoliko je potrebno pribaviti podatke podake o radnicima koji rade u
sektoru 'Administracija' a nemaju platu veu od 40000, mogue je iskoristiti upit iz
prethodnog primera. SQL upit iz prethodnog primera treba modifikovati tako da se
umesto klauzule INTERSECT koristi klauzula MINUS.
SELECT MATBR, LIME, PREZIME
FROM SEKTOR, RADNIK
WHERE SBROJ = BRSEK AND NAZIV = 'Administracija'
MINUS
SELECT MATBR, LIME, PREZIME
FROM RADNIK
WHERE PLATA > 40000;
186
187
188
189
190
Rezultat su svi radnici koji zadovoljavaju uslov da imaju najvei broj lanova
porodice:
Kada se pogleda ova rezultujua tabela, moe se uoiti da su sada ukljueni svi
radnici koji zadovoljavaju uslov bez obzira na njihov broj.
Prilikom dodavanja nove vrste u tabelu bie proverena sva ogranienja koja su
definisana nad tabelom: tip podataka, duina polja, primarni klju, NOT NULL,
CHECK... Ukoliko bar jedno ogranienje nije zadovoljeno DBMS e prijaviti
poruku o greci i nee izvriti naredbu.
Lista kolona u pojedinim sluajevima ne mora biti kompletna. Iz liste se mogu
izostaviti kolone kod kojih nije definisano NOT NULL ogranienje i kolone koje
imaju definisano DEFAULT ogranienje. Za istovljene kolone se upisuje
podrazumevana vrednost definisana DEFAULT ogranienjem ili se upisuje NULL
vrednost ukoliko DEFAULT ogranienje ne postoji.
194
korienjem
upita,
naredba
U ovom sluaju za listu kolona vae ista pravila kao i u prethodnim situacijama.
Vrednosti kolona se sada ne zadaju kako konstante ve se zadaju kao rezultujua
tabela nekog upita. Redosled i tip kolona u rezultujuoj tabeli upita mora da
odgovara redosledu i tipu kolona u listi.
Primer: U nastavku je dat primer INSERT...INTO naredbe koja koristi SQL
upit da bi u fiktivnu tabelu PROJEKAT_NEW dodala podatke iz tabele
PROJEKAT.
CREATE TABLE PROJEKAT_NEW
(
BROJ NUMBER(3),
NAZIV VARCHAR(25) NOT NULL,
LOKACIJA VARCHAR(15)
);
INSERT INTO PROJEKAT_NEW
(BROJ, NAZIV, LOKACIJA)
SELECT BROJPR, NAZIV, LOKPR
FROM PROJEKAT;
195
Primer: Izmene nad podacima kojima se projekti za koje je zaduen sektor broj
4 prbacuju u nadlenost sektora 'Razvoj'.
UPDATE PROJEKAT
SET BRS = (SELECT SBROJ
FROM SEKTOR
WHERE NAZIV ='Razvoj')
WHERE BRS = 4;
197
198
Primer: U nastavku je data SQL naredba koja brie podatke o svim projektima
na kojima nije angaovan nijedan radnik.
DELETE FROM PROJEKAT
WHERE BROJPR NOT IN (SELECT BRPR
FROM RADI_NA);
Takoe, kao alternativno reenje koje ima isti efekat mogue je iskoristiti i
sledeu SQL naredbu.
DELETE FROM PROJEKAT
WHERE NOT EXISTS (SELECT 0
FROM RADI_NA
WHERE RADI_NA.BRPR = PROJEKAT.BROJPR);
200
Nakon kreiranja, pogled se moe koristiti u SQL upitima kao i bilo koja druga
tabela. Naredna SQL naredba prikazuje podatke iz kreiranog pogleda
RADNIK_PROJEKAT.
SELECT * FROM RADNIK_PROJEKAT;
Primer: SQL naredba koja je data u nastavku kreira pogled SEK_INFO koji
sadri informacije o nazivu sektora, o broju radnika koji rade u sektoru i prosenoj
zaradi radnika u sektoru.
CREATE VIEW SEK_INFO
AS
SELECT NAZIV NAZIV_SEKTORA,
COUNT(*) BROJ_RADNIKA,
201
Ukoliko SQL upit sadri kolone ija vrednost se rauna a kojima nije dodeljen
pseudonim, prilikom kreiranja pogleda je takvim kolonama neophodno dodeliti
ime. U tom sluaju bi se za prethodni primer isoristila alternativna naredba data u
nastavku.
CREATE VIEW SEK_INFO
(NAZIV_SEKTORA, BROJ_RADNIKA, PROSECNA_PLATA)
AS
SELECT NAZIV, COUNT(*), AVG(PLATA)
FROM SEKTOR, RADNIK
WHERE BRSEK = SBROJ
GROUP BY NAZIV;
202
203
Primer: SQL naredba koja kreira indeks nad kolonama ime I preyime radnika
projekta.
CREATE INDEX RADNIK_IME_IND ON RADNIK(LIME DESC, PREZIME ASC);
Primer: SQL naredba koja kreira indeks za potrebe primarnog kljua (prilikom
kreiranja ogranienja primarnog kljua DBMS automatski kreira i UNIQUE
indeks).
CREATE UNIQUE INDEX RADNIK_MATBR_IND ON RADNIK(MATBR);
204
8 KREIRANJE
KORISNIKIH
APLIKACIJA:
AD O.N ET
Roditeljska
klasa
DbConnection
Implementira
interfejs
IDbConnection
Command
DbCommand
IDbCommand
DataReader
DbDataReader
IDataReader,
IDataRecord
DataAdapter
DbDataAdapter
IDataAdapter,
IDbDataAdapter
Parameter
DbParameter
Transaction
DbTransaction
IDataParameter,
IDbDataParameter
IDbTransaction
Znaenje
Omoguava otvaranje i zatvaranje
konekcije ka bazi podataka
Predstavlja SQL upit ili uskladitenu
proceduru. Omoguava pristup
DataReader objektu konkretnog data
provider-a
Omoguava itanje podataka
korienjem kursora na serverskoj
strani
Prenosi DataSet objekte izmeu
klijenta i izvora podataka. Poseduje
konekciju i skup od etiri osnovne
operacije za selektovanje, dodavanje,
izmenu i brisanje podataka u izvoru
podataka
Predstavlja imenovani parametar u
parametrizovanom upitu
Enkapsulira transakciju baze
podataka
Znaenje
Definie osnovne ADO.NET tipove koje koriste svi data
provider-i
Sadri tipove koje dele svi ADO.NET data provider-i
Sadri tipove koji omoguavaju otkrivanje instanci MS SQL
Server-a u lokalnoj mrei
Sadri tipove podataka koje koristi Microsoft SQL Server
208
Oracle
OracleConnection conn = new OracleConnection();
conn.ConnectionString = Data
Source=160.99.9.139/gislab.elfak.ni.ac.rs;User
Id=S1010;Password=S1010;
Data Source ukazuje na ime servera na kome se nalazi baza podataka kojoj
pristupamo. Initial Catalog predstavlja ime baze podataka kojoj emo pristupati
209
Oracle
OracleConnection conn = new OracleConnection();
String strSQL = Select * from RADNIK;
OracleCommand comm = new OracleCommand(strSQL, conn);
OracleCommand newComm = new OracleCommand();
newComm.Connection = conn;
newComm.CommandText = strSQL;
Prosto kreiranje SqlCommand ili OracleCommand objekta, ili bilo koje druge
komande ako se koristi neki drugi data provider, ne znai da je SQL upit sadran u
komandi automatski prosleen na izvrenje. Objekat koji predstavlja komandu je
nakon kreiranja samo pripremljen za dalju upotrebu. Najbitnije metode lanice
SqlCommand i OracleCommand objekta prikazane su u nastavku, u tabeli 7.
Tabela 7: Osnovni lanovi System.Data prostora imena
Metoda
Znaenje
Cancel()
Ponitava izvrenje komande
ExecuteReader()
Povratna vrednost funkcije je DataReader objekat izabranog data
provider-a
ExecuteNonQuery() Izvrava komandu od koje se ne oekuje da kao povratne
vrednosti daje podatke
ExecuteScalar()
Varijanta ExecuteNonQuery() koja kao povratnu vrednost vraa
jedan podatak
Oracle
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "Data
Source=160.99.9.139/gislab.elfak.ni.ac.rs;User
Id=S1010;Password=S1010; ";
String strSQL = SELECT * FROM RADNIK;
OracleCommand comm = new OracleCommand(strSQL, conn);
OracleDataReader reader;
reader = comm.ExecuteReader();
while(reader.Read())
{
//programski kod koji vri obradu pribavljenih podataka
}
212
213
215
sloja
ADO.NET-A
za
217
Oracle
OracleConnection conn = new OracleConnection();
conn.ConnectionString = " Data
Source=160.99.9.139/gislab.elfak.ni.ac.rs;User
Id=S1010;Password=S1010; ";
String strSQL = "SELECT * FROM RADNIK";
OracleDataAdapter adapter = new OracleDataAdapter(strSQL,
comm);
DataSet ds = new DataSet();
try
{
conn.Open();
adapter.Fill(ds, "RADNICI");
}
catch(Exception exc)
{
//obrada izuzetka
}
218
Oracle
foreach(DataRow dr in ds.Tables[RADNICI].Rows)
{
if(dr[IME].ToString() == MILO)
{
dr[PLATA] = 30000;
}
}
Mogue je takoe i obrisati neki od redova u lokalnoj kopiji podataka ili dodati
novi red.
Microsoft SQL Server
int i = 0;
foreach(DataRow dr in ds.Tables[Radnici].Rows)
{
if(dr[Ime].ToString() == Milo)
{
dr.Delete();
}
}
foreach(DataRow dr in ds.Tables[Radnici].Rows)
{
219
Oracle
int i = 0;
foreach(DataRow dr in ds.Tables[RADNICI].Rows)
{
if(dr[IME].ToString() == MILO)
{
dr.Delete();
}
}
foreach(DataRow dr in ds.Tables[RADNICI].Rows)
{
if(dr[IME].ToString() == MILO)
{
dr[MATBR] = 123456789;
dr[IME] = Strahinja;
dr[PREZIME] = Bogdanovi;
dr[SSLOVO] = M;
dr[DATRODJ] = 1/1/2011;
dr[ADRESA] = Bulevar Nemanjia 5/11;
dr[PLATA] = 50000;
ds.Tables[RADNICI].Rows.Add(row);
}
}
Oracle
conn.Open();
adapter.UpdateCommand = new SqlCommand("UPDATE RADNIK SET
IME='" + dr["IME"].ToString() + "' WHERE MATBR=" +
dr["MATBR"].ToString(), conn);
int izmenjeniRedovi = adapter.Update(ds, "RADNICI");
conn.Close();
9 L I T E R AT U R A
Univerzitet u Niu
Elektronski fakultet
Leonid Stoimenov