Top Banner
BAZE PODATAKA pr of . dr Predrag St aniši Prirodno-matematiki fakultet
233

SlajdoviBaze

Jul 06, 2018

Download

Documents

Dijana30
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 1/233

BAZE PODATAKA

prof. dr Predrag Staniši

Prirodno-matematiki fakultet

Page 2: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 2/233

DIO I

UVOD I OSNOVNI

POJMOVI

Page 3: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 3/233

Nastanak i cilj DBMS

• Baza podataka (database) je kolekcija logikipovezanih podataka, ukljuujui i podatke o tim

podacima, koja je dizajnirana da zadovoljiinformacione potrebe neke organizacije.

• Pojam nastao šezdesetih godina kao posljedicavelikih problema koji su postojali utradicionalnom pristupu razvoju softverskih

sistema za uvanje podataka i njihovu obradu.• Tradicionalni pristup se zasnivao na tome da senapravi jedan ili više fajlova koji služe za uvanjepodataka a zatim pišu aplikacije koje rade sa timfajlovima.

Page 4: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 4/233

Nedostaci tradicionalnog pristupa

• Definicija podataka se u suštini nalazi usamim programima

• Podaci nemaju jasnu strukturu

• Ne postoji nikakva kontrola nad pristupom imanipulacijom podacima, izuzev one koja

se nalazi u samim programima.

Page 5: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 5/233

Nedostaci tradicionalnog pristupa

• Ponavljanje i nekonzistentnost podataka.• Teškoe u pristupu podacima.

• Izolacija podataka.

• Slaba mogunost oporavka od kvara.

• Problemi pri višekorisnikom radu.

• Loša bezbjednost od neovlašenog pristupa.• Teško je održavati integritet podataka.

Page 6: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 6/233

Nedostaci tradicionalnog pristupa

• Rezultat je potencijalna ogromna složenost iloša struktura sistema, velika složenost ilinemogunost izmjena u sistemu, mogua

nekonzistentnost podataka, problemi uvišekorisnikom radu, teškoe u dobijanjupotrebne informacije, itd.

Page 7: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 7/233

Kako riješiti ove probleme?

• Došlo se do zakljuka da se podaci morajurazdvojiti od programa koji rade sa njima, da im se

mora obezbijediti jasna struktura koja se možedopunjavati, sa minimalnim moguimponavljanjem podataka.

• Takoe, postalo je jasno da mora postojatiuniforman nain pristupa tim podacima, koji neeizazivati probleme u radu i koji e uvatikonzistentnost podataka.

Page 8: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 8/233

DBMS

• Za efikasno ispunjenje ovih zadataka, kao imnogih drugih, mora se koristiti posebansoftverski sistem. Takav skup programa je

SISTEM ZA UPRAVLJANJEBAZAMA PODATAKA

ili

DATABASE MANAGEMENT SYSTEM

(DBMS).

Page 9: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 9/233

Klijent/Server arhitektura

Bazapodataka

Sistem za upravljanjebazama podataka

Klijent Klijent Klijent

Page 10: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 10/233

Nivoi apstrakcije

• Bazu podataka možemo posmatrati na trinivoa apstrakcije (tzv. ANSI\SPARCarhitektura):

– FIZIKI NIVO

– LOGIKI NIVO

– NIVO POGLEDA

Page 11: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 11/233

Nivoi apstrakcije

Fiziki nivo

Logiki nivo

Nivo pogleda

Pogled 1 Pogled 2 Pogled n...

Page 12: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 12/233

Instanca i shema

• Ukupna informacija uskladištena u bazi podatakau odreenom vremenskom trenutku jeINSTANCA baze podataka.

• Dizajn, tj. opšta struktura baze podataka naziva seSHEMOM (ili šemom) baze podataka.

• Baza podataka tipino ima:• JEDNU FIZIKU SHEMU;

• JEDNU LOGIKU SHEMU;

• NEKOLIKO PODSHEMA.

Page 13: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 13/233

Nezavisnost podataka

• Mogunost promjene sheme na jednom nivou, bezmijenjanja sheme na sledeem višem nivou.

– FIZI

KA NEZAVISNOST (promjena fizike shemene odražava se na logiku)

– LOGIKA NEZAVISNOST (promjena logikesheme ne odražava se na podsheme niti na korisnikeprograme) – teže je ostvariti.

Page 14: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 14/233

Modeli podataka

• Model podataka je skup konceptualnih alata zadefinisanje podataka, veza meu podacima,znaenja podataka i ogranienja na podacima.

• Postoje razni modeli podataka:– Hijerarhijski model– Mrežni model– Model entiteti/veze

– Relacioni model– Objektno-orijentisani modeli mnogi drugi

Page 15: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 15/233

Vrste modela

• LOGI

KI MODELI ZASNOVANI NAOBJEKTIMA

• LOGIKI MODELI ZASNOVANI NAREKORDIMA (ZAPISIMA,SLOGOVIMA)

• FIZIKI MODELI

Page 16: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 16/233

Jezici baza podataka• DBMS sadrži

– jezik koji služi za definisanje baze podataka (datadefinition language DDL)

– jezik za manipulaciju podacima

(data manipulation language DML)– jezik za kontrolu sistema

(data control language DCL)

–  esto i viši programski jezik, integrisan sa DML iDDL.

– Ponekad se izdvajaju djelovi, npr. DSL, VDL.

Page 17: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 17/233

Manipulacija podacima

• Skladištenje podataka

• Brisanje podataka

• Mijenjanje podataka• Izvlaenje podataka (upit, engl. query).

Page 18: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 18/233

Upitni jezik

• Nekorektno,itav DML a ponekad i DDL iDCL nazivaju se UPITNIM JEZIKOM

(query language).

• Primjeri:– SQL (Structured Query Language)

– QBE (Query By Example)

– QUEL

Page 19: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 19/233

Upravljanje transakcijama• Transakcija je kolekcija operacija koja se izvodi kao

 jedna logika funkcija.• ACID svojstva

– Atominost (sve ili ništa)

– Konzistentnost (uva integritet baze)– Izolacija (ostale ne vide njene efekte, do završetka)– Trajnost (nakon završetka i ako se sruši sistem, njene

promjene su trajne)• Transakcijama upravlja komponenta DBMSUPRAVLJA TRANSAKCIJAMA(transaction manager)

Page 20: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 20/233

Upravljanje skladištenjem• Fiziki detalji su zadatak sistema, korisnici rade na

višim nivoima apstrakcije.• UPRAVLJA SKLADIŠTENJEM (storage manager) je

komponenta sistema odgovorna za izvršavanje DDL i

DML reenica, tj. za njihovo prevoenje u niz naredbifajl sistemu, uz odgovarajue upravljanje memorijom.

• Mora biti EFIKASAN u pogledu brzine i prostora.

• UPRAVLJANJE FAJLOVIMA (na disku)

• UPRAVLJANJE BAFEROM (prenos disk-memorija)

Page 21: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 21/233

DBA

• Database administrator (administrator bazepodataka)– Definisanje i modifikovanje sheme

– Definisanje i modifikovanje detalja skladištenja imetoda pristupa podacima

– Definisanje i modifikovanje integriteta

– Davanje prava pristupa bazi

– Arhiviranje podataka, uvoz, izvoz, replikacija.– Nadgledanje i podešavanje performansi sistema.

Page 22: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 22/233

Korisnici• Aplikativni programeri (koriste DML u

svojim programima)• Specijalizovani korisnici (koriste DBMS kao

osnovu za razvoj drugih sistema, npr. CAD)

• Sofisticirani korisnici (direktno se obraajusistemi sa upitom)

• Naivni (krajnji korisnici)

Page 23: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 23/233

Data dictionary ili catalogStatistika, indeksi• Data dictionary (renik podataka) ili catalog

(sistemski katalog) sadrži metapodatke, tj. podatkeo podacima.

• Obino se metapodaci uvaju na slian nain kao isami podaci.

• Sistem uva i– STATISTIKU o podacima,– INDEKSE (strukture podataka koje omoguuju brz

pristup osnovnim podacima)

Page 24: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 24/233

Izvršavanje upita

• OBRAIVA UPITA (query processor)komponenta koja analizira i izvršava upite.

• IZVŠILAC UPITA (query evaluationengine) - dio za samo izvršavanje upita,komunicira sa upravljaem skladištenjem.

Page 25: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 25/233

Izvršavanje upita• DDL INTERPRETER sa drugim komponentama

izvršava reenice DDL-a i smješta metapodatke ukatalog.

• DML KOMPAJLER prevodi reenice DML-a uneku pogodnu unutrašnju formu

• OPTIMIZATOR UPITA analizira upit i tražinajbolji nain za njegovo izvršavanje, korišenjemkataloga, indeksa, statistike, ...

Page 26: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 26/233

Arhitektura DBMSNaivni korisnici korisnic

DBMS

disk

Fajlovi podataka

Indeksi Statistiki podaci

Katalog

Obraiva upita

Upravljanje baferom

Upravljanje fajlovima

Upravljanjetransakcijama

DDLinterpreter

DML kompajler

Izvršilac upita

Upravlja skladiš-tenjem

Interfejsi aplikacija

DMLprekompajler

Sofisticiranikorisnici DBAAplikativniprogrameri

UPITIApl. programi

Page 27: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 27/233

Komercijalni sistemi• 'Ozbiljni', 'industrijski' DBMS kao što su

– Oracle– SQL Server– Informix

– IBM DB2– Sybase

• Postoje i stoni (desktop) DBMS, kao

– Microsoft Access– Microsoft Fox Pro– Borland dBase– Interbase

Page 28: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 28/233

DIO II

E/R MODEL

Page 29: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 29/233

Model Eniteti/Veze(Entity/Relationship ili E/R)

• Visokog nivoa, dobar za logikoprojektovanje baze podataka

• Zbog previsokog nivoa apstrakcije nije

pogodan za konkretnu realizaciju• Dobra dijagramska tehnika

• Dobro definiše logiku strukturu podataka• Lako se prevodi u relacioni model

Page 30: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 30/233

E/R nije model podataka!• Model podataka treba da sadrži

– STRUKTURNI dio– INTEGRITETNI dio

– MANIPULATIVNI dio

• E/R model sadrži– Strukturni dio

– U maloj mjeri integritetni dio

• E/R model i nije model podataka u pravom smislu,nego sredstvo za logiko projektovanje!

• Ponekad se smatra tankim slojem iznad relacionog

modela

Page 31: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 31/233

Model eniteti/veze

• ATRIBUT

• SKUP ENTITETA

• SKUP VEZA

• LINIJE

Page 32: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 32/233

Entitet, Skup entiteta• ENTITET - objekat koji postoji i koji se

razlikuje od drugih objekata.

• SKUP ENTITETA - entiteti se grupišu uskupove. Npr. skup entiteta OVJEK, sadržientitete koji predstavljaju konkretne ljude.

• Skup entiteta karakteriše se skupomATRIBUTA.

Page 33: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 33/233

Atribut, Domen atributa• ATRIBUT se definiše na skupu entetita. Formalno,

atribut je preslikavanje skupa entiteta u neki skup

vrijednosti (DOMEN ATRIBUTA).

• Skup entiteta OVJEK karakterišu atributi IME,

PREZIME, GODINA_ROENJA, BOJA_KOSE, itd.

• Domen atributa IME je skup koji sadrži nizove znakova

dužine do 30.

• Domen atributa GODINA_ROENJA je skup

prirodnih brojeva.

Page 34: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 34/233

Vrijednost atributa• Npr. atribut IME nekom enitetu iz skupa OVJEK

pridružuje vrijednost ‘Marko’; nekom drugomvrijednost ‘Janko’

• VRIJEDNOST ATRIBUTA ZA ENITET jeelement iz domena atributa koji atribut pridružujetom entitetu.

• Entitet iz skupa eniteta u potpunosti je opisan

vrijednostima atributa!

Page 35: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 35/233

Vrijednosti atributa opisuju entitet• Vrijednostima

‘Marko’, ‘Markovi’, 1950, ‘Crna’

atributa

IME, PREZIME, GODINA_ROENJA, BOJA_KOSE

odreen je jedan konkretni entitet iz skupa entiteta

OVJEK.

Page 36: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 36/233

Entitet, atributi i skup entiteta

STUDENT

IMEBR_INDEKSA PREZIME

Entiteti:

e1 (12/2002, Marko, Markovi)

e2 (11/2001, Janko, Jankovi)

STUDENT je skup entiteta

e1

e2

Dijagram:

BR_INDEKSA, IME i PREZIME su ATRIBUTI

Page 37: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 37/233

Prosti i složeni atributi

• Prosti atributi – vrijednosti su atomine,cjeline, ne sadrže djelove

• Složeni

GRAD

STUDENT

ULICA BROJ

ADRESA

Page 38: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 38/233

Jednoznani i višeznani atributi• Jednoznani atribut – entitetu se pridružuje

samo jedna vrijednost iz domena• Višeznani – više vrijednosti iz domena

STUDENT

PROSJEKTELEFON

Page 39: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 39/233

Kompleksni atributi• Atributi u principu mogu biti proizvoljne složenosti,

mogu kombinovati složenost, višeznanost, jednoznanost, ...

• Svaku složenost atributa treba izbjegavati jer se istomože predstaviti na druge naine, npr. putem veza.

• Ako je cilj prevoenje u relacioni model najbolje jekoristiti samo jednoznane proste atribute!

Page 40: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 40/233

Skladišteni i izvedeni atributi• Skladišteni atribut – vrijednost atributa za

entitete se skladišti u bazi• Izvedeni – vrijednost atributa se izraunava

STUDENT

DATUM UPISATRAJANJESTUDIRANJA

Page 41: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 41/233

NULL vrijednost• Specijalna vrijednost atributa, koja znai

NEPOZNATO, NEODREENO

• Za entitet e1 iz skupa entiteta OVJEK, atribut

BOJA_KOSE može imati konkretnu vrijednost aza entitet e2 može biti NULL.

e1(Marko, Markovi, 1950,’Crna’)e2(Janko, Jankovi, 1952, NULL)

Page 42: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 42/233

Primarni klju skupa eniteta• SUPERKLJU skupa entiteta je skup atributa ije

vrijednosti jednoznano identifikuju entitet uskupu entiteta.

• KANDIDATSKI KLJU skupa entiteta jesuperklju koji ne sadrži pravi podskup koji jesuperklju.

• PRIMARNI KLJU  je jedan izabranikandidatski klju.

Page 43: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 43/233

Kljuevi• Za skup entiteta STUDENT superkljuevi su npr.

– {BR_INDEKSA, FAKULTET, ADRESA_STUDENTA}

– {BR_INDEKSA, JMBG}– {BR_INDEKSA, FAKULTET}– {JMBG}.

• {BR_INDEKSA, FAKULTET} i {JMBG} sukandidatski kljuevi

• Primarni klju je, recimo, {JMBG}.

• Za skup entiteta BOLNICA primarni klju je

{IME_BOLNICE, GRAD}.

Page 44: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 44/233

Primarni klju

BOLNICA

GRADIME_BOLNICE BROJ_ZAPOSL

Page 45: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 45/233

Veza, Skup veza• Veza je asocijacija, odnos izmeu nekoliko

entiteta.• Na primjer, možemo definisati vezu izmeuprofesora Markovi i predmeta Matematika.

• SKUP VEZA je matematiki skup veza istog tipa.Na primjer,

 Markovi-MatematikaPetrovi-Fizika Jankovi-Matematika

Page 46: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 46/233

Skup veza• Formalno, skup veza R je matematika relacija

izmeu skupova entiteta E1, E2, ..., En.

• Dakle, to je skup n-torki oblika (e1,e2,...en), gdje jeei entitet iz skupa Ei.

}...,,,),...,,{( 221121   nnn   E eE eE eeee R   ∈∈∈=

Page 47: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 47/233

Veza, Skup veza

e1

e2

e3

e4

b1

b2

b3b4

b5

Page 48: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 48/233

Dijagram za skup veza

STUDENT

IMEBR_IND PREZIME

PREDMET

NAZIV

PRIJAVA

Page 49: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 49/233

ULOGA

STUDENT

IMEBR_IND PREZIME

PREDMET

NAZIV

PRIJAVA

• Skup entiteta UESTVUJE (participira) u skupu veza.

• ULOGA je funkcija koju entitet igra u vezi

• Student ‘polaže’ predmet, predmet je ‘položen’ od studenta.

polaže položen

Page 50: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 50/233

Tipovi veza• Postoji 4 osnovna tipa veza meu entitetima

– One-to-One (jedan u jedan)

– One-to-Many (jedan u više)– Many-to-One (više u jedan)

– Many-to-Many (više u više)

Page 51: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 51/233

Veza One-to-One (jedan u jedan)e1

e2

e3

e4

b1b2

b3

b5

Dijagram

Profesor Predmetpredaje

A B Jednom entitetu izA odgovara 0 ili 1

entiteta iz Bi

 jednom entitetu iz

B odgovara 0 ili 1entiteta iz A

b4

Page 52: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 52/233

Veza One-to-Many (jedan u više)e1

e2

e4

b1

b2

b3

b4

Dijagram

Profesor Predmetpredaje

Jednom entitetu izA odgovara 0 ili

više entiteta iz Bi

 jednom entitetu iz

B odgovara 0 ili 1entiteta iz Ab5

Page 53: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 53/233

Veza Many-to-One (više u jedan)e1

e2

e3

e4

b1

b2

b3

Dijagram

Profesor Predmetpredaje

Jednom entitetu izA odgovara 0 ili 1

entiteta iz Bi

 jednom entitetu iz

B odgovara 0 iliviše entiteta iz A

b4

Page 54: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 54/233

Veza Many-to-Many (više u više)e1

e2

e3

e4

b1

b2

b3

b4

Dijagram

Profesor Predmetpredaje

Jednom entitetu izA odgovara 0 ili

više entiteta iz Bi

 jednom entitetu iz

B odgovara 0 iliviše entiteta iz Ae5

Page 55: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 55/233

Primarni klju skupa veza• Potreban je mehanizam za identifikaciju konkretne veze uskupu veza.

• KLJU SKUPA VEZA je unija primarnih kljueva skupovaentiteta koji uestvuju u vezi. Primarni klju skupa veza

PREDAJE je {ime_profesora, naziv_predmeta}.

• Za veze tipa Jedan-u-Više i Više-u-Jedan, dovoljno je uzeti

primarni klju Više strane

• Za veze tipa Jedan-u-Jedan dovoljno je uzeti primarni klju 

 jedne strane

Page 56: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 56/233

Opšta kardinalnost veza• Kardinalnost preslikavanja iz skupa entiteta

E1 u skup entiteta E2 je par (D, G) kojioznaava da je jedan entitet iz E2 u vezi sa

minimalno D a maksimalno G entitetaskupa E1.

Zaposleni Firmazaposlenje(0,M) (1,2)

Dijagrami sa opštom kardinalnošu

Page 57: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 57/233

Dijagrami sa opštom kardinalnošu

• Jedan u jedan Profesor Predmetpredaje(0,1) (0,1)

• Jedan u višeProfesor predaje

(0,1) (0,M)

• Više u jedan Profesor predaje(0,M) (0,1)

• Više u više Profesor predaje(0,M) (0,M)

Predmet

Predmet

Predmet

Page 58: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 58/233

Totalna i parcijalna participacija• Skup entiteta E može participirati u skupu

veza R– TOTALNO – svaki entitet iz skupa E mora bar

 jednom uestvovati u skupu veza.

– PARCIJALNO – može postojati entitet izskupa E koji ne uestvuje u skupu veza.

Page 59: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 59/233

Totalno ueše u skupu veza• Ueše je totalno kada je D=1 na suprotnoj strani!

• Drugi naziv ZAVISNOST POSTOJANJA.• Svaki zaposleni je u vezi sa bar jednom firmom

Zaposleni Firmazaposlenje(1,2)(0,M)

Dvije linije, oznaka totalnog ueša

Zaposleni Firma(1,2)(0,M)zaposlenje

Page 60: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 60/233

Slabi i jaki skupovi entiteta• JAKI ili REGULARNI skup entiteta je onaj koji ima

kljune atribute

• SLABI ili PODREENI skup entiteta je onaj koji

nema klju. Entiteti u takvom skupu se identifikujutako što se povezuju sa entitetom iz nekog jakog skupaentiteta – NADREENOG skupa entiteta.

• Za vezu koja identifikuje entitete iz slabog skupakažemo da je IDENTIFIKUJUA.

Page 61: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 61/233

Slabi ili zavisni entitet

ŽIRO RAUN

VLASNIKBR_RAUNA

UPLATABR_UPLATE

Slabi entitetuvijek totalnouestvuje u

identifikujuojvezi!IZNOS

Diskriminator slabog skupa

Page 62: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 62/233

Diskriminator slabog skupaentiteta

•  Diskriminator slabog skupa entiteta je skupatributa ije vrijednosti jednoznanoidentifikuju entitet u skupu onih entiteta koji

zavise od jednog jakog entiteta.

• BR_UPLATE je diskriminator.

• Primarni klju slabog skupa entiteta = primarni

klju jakog skupa entiteta + diskriminator.

Page 63: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 63/233

Totalno ueše i zavisnost postojanja

• Slabi entitet uvijek totalno uestvuje uidentifikujuoj vezi!

• Postoji totalno ueše i ako se ne radi oslabom skupu entiteta. Na primjer,ZAPOSLENI ima svoj klju ali totalno

uestvuje u vezi sa firmom!

Page 64: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 64/233

Atributi veza

Profesor Predmetpredaje

Broj asova

• Atributi veza imaju smisla samo kod veza tipa VIŠE UVIŠE.

• Kod veza tipa Jedan u Više i Više u Jedan uvijek se

mogu prikazati kao atribut entiteta na VIŠE strani.

•Kod veza tipa Jedan u Jedan mogu se prikazati kaoatribut na bilo kojoj strani.

Page 65: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 65/233

Veze tri i više skupova entitetaFilijala KlijentBRK

Raun

• MOGU SE PREDSTAVITI PREKO BINARNIH VEZA(ŠTO NIJE UVIJEK NAJBOLJE!)

Filijala Klijent

Raun

T

Page 66: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 66/233

Prošireni E/R model

• Specijalizacija/Generalizacija

• Agregacija

Page 67: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 67/233

Specijalizacija/Generalizacija

Štedni raun

Raun

Broj Stanje

IS A

Žiro raun

Limit Kamata

IS A

Standardni Zlatni

Bonus

Skupovi entiteta nižeg

nivoa nasljeuju sveatribute entiteta višegnivoa

Page 68: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 68/233

Tipovi specijalizacije• Definisana po atributu višeg skupa entiteta.

Ako je VRSTA_RAUNA• ‘Štedni’ - entitet je u skupu entiteta ŠTEDNI_RAUN

• ‘Žiro’ - entitet je u skupu entiteta ŽIRO_RAUN

• Definisana od strane korisnika za svaki entitet

– Npr. ZAPOSLENI i 3 tima zaposlenih A, B, C.Korisnik odluuje kada neki zaposleni ide u neki tim.

Disjunktna i preklapajua

Page 69: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 69/233

Disjunktna i preklapajuaspecijalizacija/generalizacija

• DISJUNKTNA (disjoint) - entitet može

pripadati najviše jednom nižem skupu entiteta.Na primjer, raun je ili štedni ili žiro, ne može i

 jedno i drugo.

• PREKLAPAJUA (overlapping) - entitet možepripadati više nego jednom nižem skupuentiteta. Na primjer, zaposleni može biti lanviše od jednog tima zaposlenih.

Totalna i parcijalna

Page 70: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 70/233

Totalna i parcijalnaspecijalizacija/generalizacija

• TOTALNA (total) - svaki entitet mora pripadatibar jednom nižem skupu entiteta. Na primjer,raun mora biti ili štedni ili žiro. Ne može

postojati raun koji nije ni štedni ni žiro.

• PARCIJALNA (partial) entitet ne mora pripadati

nijednom nižem skupu entiteta. Na primjer,zaposleni ne mora biti lan nijednog timazaposlenih.

Ogranienja na

Page 71: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 71/233

specijalizaciju-generalizaciju

d

d

o

o

Disjunktna

Parcijalna

Preklapajua

Totalna

Preklapajua

Parcijalna

DisjunktnaTotalna

Page 72: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 72/233

Agregacija• Nedostatak osnovnog E/R modela je što ne

postoje veze izmeu veza.• AGREGACIJA dozvoljava da se veza

pomatra kao entitet višeg nivoa

Klijent Zajampozajmljivanje

Službenik

Page 73: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 73/233

Primjer. Studentska službaIZNOSGODINA DATUM

PROFESOR PREDMETPREDAJE

IME PREZIME

ZVANJE

NAZIV

POLAGANJE

DATUMSTUDENT

BR_IND

IME OCJENA

UPLATAŠKOLARINE

Page 74: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 74/233

DIO III

RELACIONI MODEL

Page 75: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 75/233

Relacioni model• Osnovni koncepti

– Domen

– Atribut

– Relacija– Primarni klju

– Spoljašnji klju

Page 76: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 76/233

Relacioni model– Domen – ili tip podataka (data type) je skup

vrijednosti i dozvoljene operacije na tom skupu.Primjeri domena:• Cijeli broj• Realni broj

• String• Datum

Svi domeni u relacionom modelu su prosti

Atribut je imenovani domen. Primjeri atributa:• Godina_roenja je cijeli broj.• Plata je realni broj.• Ime je string dužine 20

Page 77: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 77/233

Relacioni model• Relaciona shema je skup atributa.

student(broj_indeksa, ime, prezime)

• Relacija na relacionoj shemi r(A1,A2,...) jeskup torki oblika (v1,v2,...) gdje je vivrijednost iz domena Ai.

Atributi

Relacionashema

Page 78: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 78/233

Relacija ili tabelaRadnik

20001971Vesko Veskovi

21231976Petar Petrovi18001975Janko Jankovi

20001975Marko Markovi

PlataGod_roenjaIme

Naziv relacije Atributi ili kolone

Page 79: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 79/233

Relacioni model• Domeni svih atributa su prosti.

• Redosled kolona (atributa) nije bitan.

• Redosled vrsta (torki) nije bitan.

• Nema duplikata torki (mada SQL ovo narušava!)

Page 80: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 80/233

NULL vrijednosti• Osim vrijednosti iz domena atribut može

imati i specijalnu vrijednost NULL kojaznai nepoznato, neodreeno.

Radnik

2000NULLVesko Veskovi21231976Petar Petrovi

18001975Janko Jankovi

20001975Marko Markovi

PlataGod_roenjaIme

Page 81: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 81/233

Kandidatski klju• Kandidatski klju relacije je skup atributa te

relacije za koji važe sledea svojstva:–  Jedinstvenost. Ne postoje dvije torke relacije koje imaju

iste vrijednosti na tom skupu atributa.

–  Minimalnost. Ne postoji dio tog skupa atributa koji imasvojstvo jedinstvenosti.

• Kandidatski klju ne može sadržati NULLvrijednosti!

Page 82: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 82/233

Primarni klju• Primarni klju relacije je jedan (izabrani)

kandidatski klju te relacije. Radnik(ime, prezime, adresa, grad, JMBG, plata)

Kandidatski kljuevi su{ime, prezime, adresa, grad}

{JMBG}

Za primarni klju možemo izabrati bilo koji odnjih, na primjer {JMBG}.

Page 83: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 83/233

Spoljašnji klju• Spoljašnji klju relacije r1 je skup atributa

(oznaimo ga sa FK) te relacije za koji važi:1. Postoji relacija r2 (r1 i r2 ne moraju biti razliiti) koja

ima kandidatski klju CK.

2. Svaka vrijednost FK u r1 je ili kompletno NULL iliidentina sa vrijednošu CK na nekoj torki iz r2.

• Spoljašnji klju se vezuje za pojamreferencijalnog integriteta.

Page 84: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 84/233

Spoljašnji klju

Radnik

NULL1971Vesko Veskovi

A1976Petar PetroviB1975Janko Jankovi

A1975Marko Markovi

Odjelj_IDGod_roIme

Odjeljenje

C

BA

Odjelj_ID

Obezbjeenje

FinansijskoKadrovsko

Naziv odjeljenjaKandidatskiklju

Spoljašnjiklju

Prevoenje E/R modela u

Page 85: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 85/233

relacioni• Jaki skupovi enititeta se direktno prevode

u relacije. Primarni klju entiteta je primarniklju relacije.

BOLNICA

GRADIME_BOLNICEBROJ_ZAPOSL

BOLNICA(IME_BOLNICE, GRAD, BROJ_ZAPOSL)

Primarni klju je {IME_BOLNICE, GRAD}

Prevoenje veza tipa

Page 86: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 86/233

One-to-Many i ny-to-One• Veze One-to-Many i Many-to-One se prevode

tako što se u entitet na Many strani doda spoljašnjiklju koji ukazuje na primarni klju One strane.

 Predmet(Naziv) , primarni klju je {Naziv}

 Profesor(Ime, Zvanje, Naziv) , primarni klju je {Ime},

{Naziv} je spoljašnji klju na relaciju Predmet

Profesor Predmetpredaje

Ime ZvanjeNaziv

Prevoenje veza tipa

Page 87: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 87/233

One-to-Many i ny-to-One

 Predmet(Naziv, Ime) , primarni klju je {Naziv}

{Ime} je spoljašnji klju na relaciju Profesor

 Profesor(Ime, Zvanje) , primarni klju je {Ime}

Profesor Predmetpredaje

Ime ZvanjeNaziv

Prevoenje veza tipa

Page 88: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 88/233

ny-to-Many• Veze Many-to-Many se prevode tako što se

napravi nova relacija za koju važi– Relacija sadrži atribute veze.

– Njen primarni klju je unija primarnih kljueva relacija

koje uestvuju u vezi.– Atributi nove relacije, koji nastali iz primarnog kljua

neke relacije koja uestvuje u vezi, predstavljajuspoljašnji klju na tu relaciju.

Prevoenje veza tipa

Page 89: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 89/233

ny-to-Many

 Predmet(Naziv) , primarni klju je {Naziv}

 Profesor(Ime, Zvanje) , primarni klju je {Ime}

 Predaje(Naziv, Ime , Datum) , primarni klju je {Naziv, Ime}

{Naziv} je spoljašnji klju na relaciju Predmet

{Ime} je spoljašnji klju na relaciju Profesor

Profesor Predmetpredaje

Ime ZvanjeNazivDatum

Page 90: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 90/233

Prevoenje slabog entitetaSlabi entitet se prevodi u relacioni model tako što se

napravi nova relacija za koju važi– Relacija sadrži sve atribute slabog entiteta i primarni

klju jakog.

– Njen primarni klju je unija primarnog kljua jakogentiteta i diskriminatora.

– Atributi nove relacije, koji su nastali iz primarnogkljua jakog entiteta, predstavljaju spoljašnji klju na

relaciju nastalu iz jakog entiteta.

Page 91: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 91/233

Prevoenje slabog entiteta

 ŽiroRa un(Br_ra una) , primarni klju je {Br_rauna}

Uplata(Br_ra una,Br_uplate, Datum) ,

primarni klju je {Br_rauna, Br_uplate}

{Br_rauna} je spoljašnji klju na relaciju ŽiroRa un

ŽIRO RAUN

VLASNIKBR_RAUNA

UPLATABR_UPLATE DATUM

Page 92: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 92/233

Veze One-To-One• Veze tipa One-To-One su rijetke jer se takva

informacija naješe predstavlja zajedno (jednimentitetom) ili vezom One-To-Many ili Many-To-One.

• Kada treba izdvojiti podskup iz nekog skupaentiteta umjesto veze One-To-One naješe sekoristi zavisni entitet bez diskriminatora, tj. tabela

iji je primarni klju istovremeno i spoljašnji!

Page 93: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 93/233

Veze One-to-One

STUDENT (BR_INDEKSA) , primarni klju je { BR_INDEKSA}

 DOBRI_STUDENT (BR_INDEKSA, NAGRADA) ,

primarni klju je { BR_INDEKSA}

{ BR_INDEKSA} je spoljašnji klju na relaciju STUDENT 

STUDENT

PROSJEKBR_INDEKSA

DOBRI_STUDENTI NAGRADA

P j š ih k di l i

Page 94: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 94/233

Prevoenje opštih kardinalosti• U opštem sluaju pomou trigera

(TRIGGER) i uslova integriteta(CONSTRAINT)

• Ako je ueše skupa entiteta u skupu vezatotalno, tj. ako je na suprotnoj strani D=1,tada treba staviti na atribute spoljašnjegkljua NOT NULL.

P j š ih k di l i

Page 95: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 95/233

Prevoenje opštih kardinalosti

 FIRMA (IME_FIRME) , primarni klju je { IME_FIRME}

 ZAPOSLENI (SIFRA, IME_FIRME) ,

primarni klju je {SIFRA}

{ IME_FIRME} je spoljašnji klju na relaciju FIRMA

 IME_FIRME NOT NULL

Zaposleni Firmazaposlenje(1,2)(0,M)

Prevoenje

S ij li ij /G li ij

Page 96: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 96/233

Specijalizacije/Generalizacije• Viši skup entiteta se prevodi direktno –

napravi se tabela• Za svaki niži napravi se tabela koja sadrži

– Primarni klju višeg skupa entiteta (koji je i uovoj tabeli primarni klju)

– Primarni klju je istovremeno i spoljašnji klju 

na tabelu nastalu od višeg skupa entiteta.– Sve dodatne atribute nižeg skupa entiteta.

S ij li ij /G li ij

Page 97: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 97/233

Specijalizacija/Generalizacija

Štedni raun

Raun

Broj Stanje

IS A

Žiro raun

Limit Kamata

 RA UN(BROJ, STANJE) , klju je { BROJ }

 ŽIRO_RA UN(BROJ, LIMIT) ,

primarni klju je { BROJ }

{ BROJ } je spoljašnji klju na relaciju RA UN 

ŠTEDNI_RA UN(BROJ, KAMATA) ,

primarni klju je { BROJ }{ BROJ } je spoljašnji klju na relaciju RA UN 

Disjunktna i totalna

S ij li ij /G li ij

Page 98: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 98/233

Specijalizacija/Generalizacija

Raun

Broj Stanje

IS A

Žiro raun

Limit Kamata

 ŽIRO_RA UN(BROJ, LIMIT) ,

primarni klju je { BROJ }

ŠTEDNI_RA UN(BROJ, KAMATA) ,

primarni klju je { BROJ }

Štedni raun

Kod disjunktne i totalne specijalizacije/generalizacije

ne mora se praviti tabela za entitet višeg nivoa

Atributom definisana disjunktna

S ij li ij /G li ij

Page 99: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 99/233

Specijalizacija/Generalizacija

Raun

Broj Stanje

IS A

Žiro raun

Limit Kamata

 RA UN(BROJ, VRSTA_RA UNA, LIMIT, KAMATA)

primarni klju je { BROJ }

Štedni raun

Kod atributom definisane disjunktne specijalizacije/generalizacije

ne moraju se praviti tabele za entitete nižeg nivoa.

A ij

Page 100: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 100/233

Agregacija

• Agregirani skup veza se posmatra kao skupentiteta

• Napravi se tabela za njega.

Agregacija

Page 101: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 101/233

AgregacijaSlužbenikKlijent Zajampozajmljivanje

 KLIJENT(SIFRA, IME) , primarni klju je {SIFRA}

 ZAJAM (BROJ, IZNOS) , primarni klju je { BROJ }

 POZAJMLJIVANJE (SIFRA, BROJ) , primarni klju je {SIFRA, BROJ }

{SIFRA} je spoljašnji klju na relaciju KLIJENT 

{ BROJ } je spoljašnji klju na relaciju ZAJAM 

SLUŽBENIK (JMBG, SIFRA, BROJ ) , primarni klju je { JMBG}

{SIFRA, BROJ } je spoljašnji klju na relaciju POZAJMLJIVANJE

Šta je Microsoft SQL Server

Page 102: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 102/233

Šta je Microsoft SQL Server

• Microsoft SQL Server je sistem za

upravljanje bazama podataka (SUBP) ilidatabase management system (DBMS)

Model podataka u SQL Serveru

Page 103: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 103/233

Model podataka u SQL Serveru• Relacioni model je danas najpopularniji,

preko 90% DBMS ga podržava• Osnova SQL Server-a je relacioni model i

zato je on RELACIONI SISTEM ZAUPRAVLJANJE BAZAMA PODATAKA.

Fajlovi SQL Server baze

podataka

Page 104: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 104/233

podataka• Fajl sa ekstenzijom mdf, sadrži samu bazu

podataka.• Fajl sa ekstenzijom ldf, sadrži žurnal

transakcija (transaction log) koji služi zaomoguavanje konkurentnog rada višekorisnika i oporavak od kvara.

Kreranje baze podataka

Page 105: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 105/233

Kreranje baze podataka• Dva naina:

– SQL reenicomCREATE DATABASE proba

– Interaktivno, pomou Enterprise managera

Tipovi podataka u SQL Server u

Page 106: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 106/233

Tipovi podataka u SQL Server-u• Cijeli brojevi

bitCijeli broj sa vrijednošu ili 1 ili 0.

int

Od -2^31 (-2,147,483,648) do 2^31 - 1 (2,147,483,647).smallint

Od 2^15 (-32,768) do 2^15 - 1 (32,767).

tinyintod 0 do 255.

Tipovi podataka u SQL Server u

Page 107: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 107/233

Tipovi podataka u SQL Server-udecimal and numeric

decimal

Fiksirana preciznost i vliina

od -10^38 -1 do 10^38 -1.numeric

Sinonim za decimal.

Tipovi podataka u SQL Server-u

Page 108: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 108/233

Tipovi podataka u SQL Server-umoney and smallmoney

money

Novac od -2^63 (-922,337,203,685,477.5808) do2^63 - 1 (+922,337,203,685,477.5807), satanošu na 1/10 000.

smallmoney

Novac od -214,748.3648 do +214,748.3647, satanošu na 1/10 000.

Tipovi podataka u SQL Server-u

Page 109: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 109/233

Tipovi podataka u SQL Server-uApproximate Numerics

float

Broj sa pokretnim zarezom od -1.79E + 308 do1.79E + 308.

real

Broj sa pokretnim zarezom od -3.40E + 38 do

3.40E + 38.

Page 110: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 110/233

Tipovi podataka u SQL Server-u

Page 111: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 111/233

Tipovi podataka u SQL Server ucursor

Kursor.timestamp

Jedinstveni broj u bazi podataka.

uniqueidentifier

Globalno jedinstven identifikator (GUID).

Tipovi podataka u SQL Server-u

Page 112: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 112/233

Tipovi podataka u SQL Server uSlovni podaci

charNe-Unicode slovni podaci fiksirane dužine, max. 8,000

znakova.

varchar

Ne-Unicode slovni podaci promjenljive dužine, max.8,000 znakova.

text

Ne-Unicode slovni podaci promjenljive dužine, max.2^31 - 1 (2,147,483,647) znakova.

Tipovi podataka u SQL Server-u

Page 113: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 113/233

Tipovi podataka u SQL Server uUnicode slovni podaci

ncharUnicode slovni podaci fiksirane dužine, max. 4,000

znakova.

nvarchar

Unicode slovni podaci promjenljive dužine, max. 8,000znakova.

ntext

Unicode slovni podaci promjenljive dužine, max. 2^30 - 1(1,073,741,823) znakova.

Tipovi podataka u SQL Server-u

Page 114: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 114/233

Tipovi podataka u SQL Server uBinary Strings

binaryBinarni podaci fiksirane dužine, max. 8,000 bajta.

varbinary

Binarni podaci promjenljive dužine, max. 8,000 bajta.image

Binarni podaci promjenljive dužine, max. 2^31 - 1

(2,147,483,647) bajta.

Kreiranje tabele

(interaktivno)

Page 115: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 115/233

(interaktivno)

Kreiranje tabele (SQL)

Page 116: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 116/233

Kreiranje tabele (SQL)CREATE TABLE FAKULTET(

IME_FAK VARCHAR(20),

SJEDISTE VARCHAR(50),

PRIMARY KEY ( IME_FAK)

)

CREATE TABLE STUDENT(IME_FAK VARCHAR(20),

BROJ_INDEKSA VARCHAR(10),

GODINA INTEGER NOT NULL,

PROSJEK DECIMAL (15,4) ,PRIMARY KEY ( BROJ_INDEKSA, IME_FAK) ,

FOREIGN KEY (IME_FAK) REFERENCES FAKULTET

)

Kreiranje tabele (SQL)

Page 117: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 117/233

e a je tabe e (SQ )CREATE TABLE PROFESOR(

IME_FAK VARCHAR(20),

REDNI_BROJ INTEGER,

IME VARCHAR(20),

CONSTRAINT PK1 PRIMARY KEY (REDNI_BROJ, IME_FAK),

CONSTRAINT FK1 FOREIGN KEY (IME_FAK) REFERENCESFAKULTET

)

Brisanje tabele (SQL)

Page 118: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 118/233

j ( Q )Brisanje tabele

DROP TABLE STUDENT

Izmjena strukture tabele(SQL)

Page 119: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 119/233

j ( Q )Dodavanje kolone

ALTER TABLE STUDENTADD GOD_RODJ INTEGER

Brisanje kolone

ALTER TABLE STUDENT

DROP COLUMN PROSJEK

Sistemske tabele

Page 120: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 120/233

• Informacija o raznim objektima koje

kreiramo u bazi takoe se uva u tabelama

• To su posebne tabele koje se nazivajusistemskim tabelama.

Izmjena ogranienja

Page 121: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 121/233

j g jBrisanje ogranienja

ALTER TABLE PROFESOR DROP CONSTRAINT

FK1

Dodavanje ogranienja

ALTER TABLE PROFESOR

ADD CONSTRAINT FK2 FOREIGN KEY

(IME_FAK) REFERENCES FAKULTET

Unošenje podataka

Page 122: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 122/233

j pUnos podataka

INSERT INTO FAKULTET(IME_FAK, SJEDISTE) VALUES

('PMF', 'PODGORICA')

INSERT INTO FAKULTET(IME_FAK, SJEDISTE) VALUES

('ETF', NULL)

INSERT INTO FAKULTET(IME_FAK) VALUES ('MTF')

Brisanje podataka

Page 123: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 123/233

j pBrisanje podataka

DELETE FROM FAKULTET

WHERE IME_FAK ='PMF'

Brisanje svih torki (OPASNO!)

DELETE FROM STUDENT

Izmjena podataka (SQL)

Page 124: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 124/233

j pIzmjena podataka

UPDATE FAKULTET

SET FAKULTET.IME_FAK = 'FIL'

WHERE FAKULTET.IME_FAK='PMF'

UPDATE STUDENT

SET IME_FAK = 'FIL',

GODINA=1WHERE IME_FAK='PMF' AND

BROJ_INDEKSA='34'

Indeks

Page 125: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 125/233

• Indeks je struktura podataka koja služi za

efikasniji pristup podacima i sortiranje.• Nedostatak je što usporava dodavanje i

brisanje zapisa.

• Indeks može biti na jednoj ili više kolona.

• Indeks je naješe neka varijanta B-stabla,

recimo B+-stablo.

UNIQUE indeks

Page 126: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 126/233

• Unique indeks– ne dozvoljava duplikate

• Kod kreiranja primarnog kljua i uniqueconstraint-a kreira se unique indeks.

• Podrazumijeva se da nije UNIQUE.

Kreiranje i brisanje indeksa

(SQL)

Page 127: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 127/233

• Kreiranje i brisanje indeksa (SQL)

CREATE UNIQUE INDEX indsjedON FAKULTET (SJEDISTE ASC)

CREATE INDEX indgod

ON STUDENT (GODINA ASC)

DROP INDEX STUDENT.indgod

Klasterisani i neklasterisani

indeksCLUSTERED i d k k d k d l d i

Page 128: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 128/233

• CLUSTERED indeks – kod koga redosled zapisa u

listu odgovara fizikom poretku.• NONCLUSTERED indeks – kod koga redosledzapisa u listu ne mora odgovarati fizikom poretku.

• Može biti samo jedan CLUSTERED indeks natabeli!• Indeks može biti

– CLUSTERED - NONCLUSTERED– UNIQUE CLUSTERED - UNIQUE CLUSTERED

Indeks

Page 129: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 129/233

CREATE UNIQUE CLUSTERED INDEX indstud

ON STUDENT (JMBG ASC)

CREATE NONCLUSTERED INDEX indstud ON

STUDENT (BRLK, GRAD)

FILLFACTOR, PAD_INDEX

• FILLFACTOR – procenat od 1 do 100j ti li t

Page 130: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 130/233

popunjenosti lista.

• Nije dobar ni preveliki i ni premali!• PAD_INDEX – ako je ukljuena ova opcija,

FILLFACTOR se primjenjuje i naunutrašnje vorove.

CREATE CLUSTERED INDEX indstud

ON STUDENT (JMBG ASC)

WITH PAD_INDEX, FILLFACTOR = 60

IGNORE_DUP_KEYIGNORE DUP KEY ij d lj d

Page 131: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 131/233

• IGNORE_DUP_KEY opcija dozvoljava da

se, kada INSERT reenicom unosimo torkekoje imaju duplikate na indeksnim kolona,duplikati budu eliminisani. Ako ova opcija

nije postavljena kompletna INSERTreenica se odbija.

CREATE INDEX indstud

ON STUDENT (JMBG ASC)

WITH IGNORE_DUP_KEY

STATISTICS_NORECOMPUTED t t ki t ti tik

Page 132: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 132/233

• Da se ne rauna automatski statistika

vezana za indeks.• Ima smisla samo ako se tabela ne mijenja,

može loše uticati na optimizator upita.

CREATE INDEX indstud

ON STUDENT (JMBG ASC)WITH

STATISTICS_NORECOMPUTE

Indeksi, interaktivno•

Page 133: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 133/233

Primjer bazeCREATE TABLE SNABDJEVAC( CREATE TABLE FABRIKA (

F NO VARCHAR(20)

Page 134: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 134/233

S_NO VARCHAR(20),S_IME VARCHAR(20),

STATUS INTEGER,GRAD VARCHAR(20),PRIMARY KEY (S_NO)

)

CREATE TABLE PROIZVOD (

P_NO VARCHAR(20),P_IME VARCHAR(20),BOJA VARCHAR(20),TEZINA DECIMAL(10,4),GRAD VARCHAR(20),PRIMARY KEY (P_NO)

)

F_NO VARCHAR(20),F_IME VARCHAR(20),

GRAD VARCHAR(20),PRIMARY KEY (F_NO))

CREATE TABLE ISPORUKA (S_NO VARCHAR(20),

P_NO VARCHAR(20),F_NO VARCHAR(20),KOL SINGLE,PRIMARY KEY (S_NO, P_NO, F_NO),FOREIGN KEY (S_NO) REFERENCES SNABDJEVAC,FOREIGN KEY (P_NO) REFERENCES PROIZVOD,

FOREIGN KEY (F_NO) REFERENCES FABRIKA)

Budva30IgorS5

Podgorica20DejanS4Beograd30BozoS3

Beograd10UovanS2

Podgorica20StankoS1

GRADSTATUSS_IMES_NO

200F3P3S2

200F2P3S2

400F1P3S2

700F4P1S1

200F1P1S1

KOLF_NOP_NOS_NO

SNABDJEVAISPORUKA

Page 135: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 135/233

Podgorica19CrvenaUticnicaP6

Beograd12PlavaKablP5

Podgorica14CrvenaKondenzatorP4

Pljevlja17PlavaKondenzatorP3

Beograd17ZelenaOtpornikP2

Podgorica12CrvenaSaraf P1

GRADTEZINABOJAP_IMEP_NO

PodgoricaKompjuterF7

KragujevacKasetofonF6

PodgoricaSatelitska antenaF5

BudvaDVD PlejerF4

BudvaMuzicki stubF3

PljevljaTelevizorF2

BeogradVideoF1

GRADF_IMEF_NO

500F4P6S5

400F4P5S5

800F4P4S5

200F4P3S5

100F4P1S5200F2P6S5

100F7P5S5

500F5P5S5

100F4P2S5

200F2P2S5

300F7P6S4

300F3P6S4

500F2P4S3

200F1P3S3

100F2P5S2

800F7P3S2

400F6P3S2

600F5P3S2

500F4P3S2PROIZVOD

FABRIKA

Operacija SELECT• Nai svu informaciju o snabdjevaima

Page 136: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 136/233

Nai svu informaciju o snabdjevaimaSELECT S_NO, S_IME, STATUS, GRAD

FROM SNABDJEVAC

• Drugi nainSELECT * FROM SNABDJEVAC

• Nai šifre i imena svih snabdjevaa ( projekcija)

SELECT S_NO, S_IMEFROM SNABDJEVAC

WHERE dio• Nai imena proizvoda iz Podgorice

Page 137: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 137/233

Nai imena proizvoda iz Podgorice.

SELECT P_IMEFROM PROIZVOD

WHERE GRAD= 'Podgorica'

• Nai snabdjevae iz Podgorice sa statusom veimod 10 .SELECT * FROM SNABDJEVAC

WHERE GRAD= 'Podgorica' AND STATUS>20

And , Or• Nai fabrike koje su u Beogradu ili Podgorici.

Page 138: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 138/233

Nai fabrike koje su u Beogradu ili Podgorici.SELECT * FROM FABRIKA

WHERE GRAD= 'Podgorica' OR GRAD= 'Beograd'

• Nai sve proizvode iz Beograda, kao i one izPodgorice koji su crvene boje.SELECT * FROM PROIZVOD

WHERE GRAD= 'Beograd' OR

(GRAD= 'Podgorica' AND BOJA='Crvena')

Not• Nai snabdjevae koji nisu iz Podgorice

Page 139: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 139/233

j j gSELECT * FROM SNABDJEVAC

WHERE NOT (GRAD='Podgorica')

ili

SELECT * FROM SNABDJEVAC

WHERE GRAD<>'Podgorica'

• NULL uvijek daje vrijednost NETANO!!!

Is Null, Is not null• Nai snabdjevae kojima ne znamo grad

Page 140: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 140/233

Nai snabdjevae kojima ne znamo grad.

SELECT * FROM SNABDJEVACWHERE GRAD IS NULL

• Nai snabdjevae kojima znamo grad.SELECT * FROM SNABDJEVAC

WHERE GRAD IS NOT NULL

Between• Nai šifre i imena snabdjevaa iji je status

Page 141: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 141/233

j j jizmeu 10 i 20.

SELECT * FROM SNABDJEVAC

WHERE STATUS>=10 AND STATUS<=20

ili

SELECT * FROM SNABDJEVACWHERE STATUS BETWEEN 10 AND 20

Not Between• Nai šifre i imena snabdjevaa iji je status ilimanji od 10 ili ei od 20

Page 142: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 142/233

manji od 10 ili vei od 20.

SELECT * FROM SNABDJEVAC

WHERE STATUS<10 OR STATUS>20

ili

SELECT * FROM SNABDJEVAC

WHERE STATUS NOT BETWEEN 10 AND 20

In• Nai šifre i imena snabdjevaa iji je status 10 ili

Page 143: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 143/233

20 ili 30.

SELECT * FROM SNABDJEVAC

WHERE STATUS=10 OR STATUS=20 OR

STATUS=30

ili

SELECT * FROM SNABDJEVAC

WHERE STATUS IN (10,20,30)

Not In• Nai šifre i imena snabdjevaa iji status nije ni 10

Page 144: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 144/233

ni 20 ni 30.SELECT * FROM SNABDJEVAC

WHERE STATUS<>10 AND STATUS<>20 ANDSTATUS<>30

iliSELECT * FROM SNABDJEVAC

WHERE NOT (STATUS=10 OR STATUS=20 ORSTATUS=30)

iliSELECT * FROM SNABDJEVAC

WHERE STATUS NOT IN (10,20,30)

Like

• Nai imena proizvoda koji poinju slovom P.

Page 145: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 145/233

SELECT P_IME FROM PROIZVODWHERE P_IME LIKE 'P%'

Primjer Tano Netano

% nula ili više znakova a%a aa, aBa, aBBBa aBC

%ab% abc, AABB, Xab aZb, bacab% abcdefg, abc cab, aab

_ Jedan znak a_a aaa, a3a, aBa aBBBaOpseg ili skup znakova [a-z] f, p, j 2, &

[fpj] f, p, j 2, &

Van opsega ili skupa [^a-z] 9, &, % b, a

Izrazi i ugraene funkcije

SELECT F_NO, KOL*1.3

Page 146: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 146/233

FROM ISPORUKA

SELECT F_NO, KOL*1.3 AS NOVO

FROM ISPORUKA

SELECT SIN(STATUS), LEFT(GRAD,3)

FROM SNABDJEVAC

Order by

SELECT * FROM ISPORUKA

ORDER BY S NO

Page 147: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 147/233

ORDER BY S_NO

SELECT * FROM ISPORUKA

ORDER BY S_NO, F_NO

SELECT * FROM ISPORUKA

ORDER BY S_NO ASC, F_NO DESC

SELECT * FROM ISPORUKA

ORDER BY S_NO DESC, F_NO DESC

Agregatne funkcije

• Pravu snagu pokazuju sa grupisanjem.

Page 148: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 148/233

• 5 osnovnih agregatnih funkcija:– MAX

– MIN– AVG– SUM

– COUNT

Agregatne funkcije

• SELECT MAX(KOL) FROM ISPORUKA

Page 149: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 149/233

• SELECT MIN(KOL) FROM ISPORUKA

• SELECT SUM (KOL) FROM ISPORUKA

• SELECT AVG(KOL) FROM ISPORUKA

• SELECT COUNT(*) FROM ISPORUKA

Grupisanje

Položio

Page 150: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 150/233

8P1Hem121

9P2Fiz150

10P2Fiz100

7P2Mat130

6P1Mat100OcjenaProfesorPredmetBr_ind

Grupisano po predmetu

6P1Mat100

Page 151: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 151/233

9P2Fiz150

8P1Hem121

10P2Fiz100

7P2Mat130

6P1Mat100

Grupisano po profesoru

6P1Mat100

Page 152: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 152/233

8P1Hem121

7P2Mat130

9P2Fiz15010P2Fiz100

6P1Mat100

Grupisano po predmetu i

profesoru6P1Mat100

Page 153: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 153/233

8P1Hem121

7P2Mat130

9P2Fiz150

10P2Fiz100

6P1Mat100

GROUP BY

Nai ukupnu i prosjenu isporuenu koliinu pofabrikama

Page 154: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 154/233

fabrikama.

SELECT F_NO, SUM(KOL), AVG(KOG)

FROM ISPORUKA

GROUP BY F_NO

U rezultat ulazi po jedan red iz svake grupe

Zato u SELECT dijelu mogu uestvovati samoatributi iz GROUP BY dijela i agregatne funkcije

GROUP BY

Nai maksimalnu isporuenu koliinu po

Page 155: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 155/233

snabdjevaima i fabrikama.

SELECT S_NO, F_NO, MAX(KOL)

FROM ISPORUKA

GROUP BY S_NO, F_NO

HAVING

• Dodatni kriterijum na grupu

Page 156: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 156/233

Nai maksimalnu isporuenu koliinu po snabdjevaima ifabrikama koji imaju više od dvije isporuke.

SELECT S_NO, F_NO, MAX(KOL)

FROM ISPORUKA

GROUP BY S_NO, F_NO

HAVING COUNT(*)>2

U HAVING dijelu se ispituju grupe i zato u tom dijelumogu uestvovati samo atributi iz GROUP BY dijela iagregatne funkcije

Upiti sa više tabela

- Dekartov proizvod 

Page 157: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 157/233

SELECT *FROM SNABDJEVAC, ISPORUKA

- Dekartov proizvod sa where uslovom je SPAJANJE.

- Nai imena snabdjevaa koji imaju bar jednu isporuku

SELECT S_IMEFROM SNABDJEVAC, ISPORUKA

WHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO

Upiti sa više tabela

- Nai imena snabdjevaa iz Podgorice koji

Page 158: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 158/233

imaju bar jednu isporuku.

SELECT S_IME

FROM SNABDJEVAC, ISPORUKAWHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO

AND SNABDJEVAC.GRAD='Podgorica'

Upiti sa više tabela

- Nai imena snabdjevaa iz Podgorice koji

Page 159: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 159/233

isporuuju bar jedan crveni proizvod.

SELECT S_IME

FROM SNABDJEVAC, ISPORUKA, PROIZVODWHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO

AND PROIZVOD.P_NO=ISPORUKA.P_NO

AND SNABDJEVAC.GRAD='Podgorica'

AND PROIZVOD.BOJA='Crvena'

Upiti nad više tabela

- Nai imena snabdjevaa iz Podgorice kojiisporuuju bar jedan crveni proizvod fabrici iz

Page 160: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 160/233

p j j p

Beograda.

SELECT S_IME

FROM SNABDJEVAC, ISPORUKA, PROIZVOD, FABRIKAWHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO

AND PROIZVOD.P_NO=ISPORUKA.P_NO

AND FABRIKA.F_NO=ISPORUKA.F_NO

AND SNABDJEVAC.GRAD='Podgorica'AND PROIZVOD.BOJA='Crvena'

AND FABRIKA.GRAD='Beograd'

INNER JOIN

• Spajanje se može izvesti i samo u FROM dijelu

Page 161: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 161/233

SELECT S_IME

FROM SNABDJEVAC INNER JOIN ISPORUKA

ON SNABDJEVAC.S_NO=ISPORUKA.S_NO

SELECT * FROM

(SNABDJEVAC INNER JOIN ISPORUKA ON

SNABDJEVAC.S_NO=ISPORUKA.S_NO)

INNER JOIN FABRIKA ONISPORUKA.F_NO=FABRIKA.F_NO

INNER JOIN

- Nai imena snabdjevaa iz Podgorice kojiisporuuju bar jedan crveni proizvod fabrici iz

Page 162: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 162/233

Beograda.

SELECT S_IME FROM

( (SNABDJEVAC INNER JOIN ISPORUKA ON

SNABDJEVAC.S_NO=ISPORUKA.S_NO)INNER JOIN FABRIKA ON ISPORUKA.F_NO=FABRIKA.F_NO)

INNER JOIN PROIZVOD ON ISPORUKA.P_NO=PROIZVOD.P_NO

WHERE SNABDJEVAC.GRAD='Podgorica'

AND PROIZVOD.BOJA='Crvena'AND FABRIKA.GRAD='Beograd'

Spajanje tabele sa sobom

• Nai sve mogue parove (P_IME, P_IME)

Page 163: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 163/233

SELECT A.P_IME, B.P_IME

FROM PROIZVOD A, PROIZVOD B

Upiti nad više tabela sa

grupisanjem- Nai šifre snabdjevaa kao i broj isporuka

Page 164: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 164/233

crvenih proizvoda.

SELECT S_NO, COUNT(*)

FROM ISPORUKA, PROIZVODWHERE PROIZVOD.P_NO=ISPORUKA.P_NO

AND PROIZVOD.BOJA='Crvena'

GROUP BY S_NO

OUTER JOIN

• Ukljuuje u rezultat i one koji nisu spojeni,sa lijeve, desne strane ili obije strane.

Page 165: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 165/233

j , j

SELECT * FROM

SNABDJEVAC INNER JOIN PROIZVOD

ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

SELECT * FROM

SNABDJEVAC LEFT OUTER JOIN PROIZVOD

ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

OUTER JOIN

SELECT * FROM

SNABDJEVAC RIGHT OUTER JOIN PROIZVOD

Page 166: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 166/233

ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

SELECT * FROM

SNABDJEVAC FULL OUTER JOIN PROIZVOD

ON SNABDJEVAC.GRAD= PROIZVOD.GRAD

Podupiti

• To su SELECT upiti unutar drugog upita

Page 167: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 167/233

• Postoje dvije vrste podupita– Nevezani podupiti (oni koji se raunaju

nezavisno od spoljašnjeg upita)– Vezani podupiti

Podupiti kao konstantePodupit koji vraa jednu vrijednost se može koristiti svuda gdje i konstanta!

Ispisati podatke o snabdjevaima uz informaciju o ukupnom broju isporuka

SELECT *,

Page 168: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 168/233

(SELECT COUNT(*) FROM ISPORUKA) AS BR_ISPORUKAFROM SNABDJEVAC

Ispisati podatke o snabdjevaima uz informaciju o ukupnom broju njihovih

isporuka

SELECT *,

(SELECT COUNT(*) FROM ISPORUKA

WHERE ISPORUKA.S_NO=SNABDJEVAC.S_NO) ASBR_ISPORUKA

FROM SNABDJEVAC

Podupiti kao konstante

Nai one proizvode ijih je isporuka više nego1/5 ukupnog broja isporuka

Page 169: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 169/233

SELECT ISPORUKA.P_NO, COUNT(*)FROM ISPORUKAGROUP BY P_NOHAVING COUNT(*) >

(SELECT COUNT(*) FROM ISPORUKA)/5

• ovako mogu da se koriste podupiti koji vraajutano jednu vrijednost!!!

Podupiti koji vraaju više

vrijednosti• Uvede se pomou rijei

– ALL

Page 170: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 170/233

– ANY (SOME)

– IN

– NOT IN

– EXISTS– NOT EXISTS

• Svi osim EXISTS i NOT EXISTS rade iskljuivo

sa podupitima koji vraaju jednu kolonu

Podupit ALL

• Nai šifre onih snabdjevaa koji imaju takvuisporuku koja ima koliinu veu od svake koliine

Page 171: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 171/233

koju isporuuje 'S1’.

SELECT ISPORUKA.S_NO

FROM ISPORUKAWHERE ISPORUKA.KOL >

ALL (SELECT X.KOL

FROM ISPORUKA X

WHERE X.S_NO='S1')

Podupit ALL

• Nai šifre onih snabdjevaa koji isporuuju bar jedan detalj koji ne isporuuje 'S1’.

Page 172: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 172/233

SELECT ISPORUKA.S_NOFROM ISPORUKAWHERE ISPORUKA.P_NO <>

ALL (SELECT X.P_NO

FROM ISPORUKA XWHERE X.S_NO='S1')

• Ako podupit ne vraa vrijednost onda seuporeenje smatra TANIM (probajte sa 'S7’)!

Podupit ANY

• Nai šifre onih snabdjevaa koji isporuuju bar jedan detalj u koliini veoj od bar jedne koliine

Page 173: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 173/233

koju isporuuje 'S1’.SELECT ISPORUKA.S_NOFROM ISPORUKAWHERE ISPORUKA.KOL >

ANY (SELECT X.KOLFROM ISPORUKA XWHERE X.S_NO='S1')

• Ako podupit ne vraa vrijednost onda seuporeenje smatra NETANIM (probajte sa 'S7’)!

• SOME je isto što i ANY

Podupit IN

• Nai šifre onih snabdjevaa kojisnabdijevaju neku fabriku iz Beograda.

Page 174: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 174/233

SELECT ISPORUKA.S_NOFROM ISPORUKA

WHERE ISPORUKA.F_NOIN (SELECT F_NO

FROM FABRIKA

WHERE GRAD='Beograd')

Podupit NOT IN

• Nai šifre onih snabdjevaa koji isporuujubar jedan proizvod koji nije crven.

Page 175: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 175/233

SELECT ISPORUKA.S_NOFROM ISPORUKA

WHERE ISPORUKA.P_NONOT IN (SELECT P_NO

FROM PROIZVOD

WHERE BOJA='Crvena')

Podupit EXISTS

• Nai one snabdjevae koji isporuuju bar nešto.

Page 176: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 176/233

SELECT *

FROM SNABDJEVAC

WHERE EXISTS

(SELECT *FROM ISPORUKA

WHERE SNABDJEVAC.S_NO= ISPORUKA.S_NO)

Podupit NOT EXISTS

• Nai šifre onih snabdjevaa koji isporuuju svecrvene proizvode.

SELECT ISPORUKA S NO

Page 177: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 177/233

SELECT ISPORUKA.S_NOFROM ISPORUKAWHERE NOT EXISTS

(SELECT P_NO

FROM PROIZVODWHERE BOJA='Crvena' AND NOT EXISTS

(SELECT *FROM ISPORUKA X

WHERE X.S_NO= ISPORUKA.S_NOAND X.P_NO= PROIZVOD.P_NO)

)

SLOŽENIJI INSERT

- INSERT INTO može da bude sa podupitom

Page 178: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 178/233

INSERT INTO SNABDJEVAC(S_NO, S_IME, STATUS, GRAD)

SELECT S_NO+'d', S_IME, STATUS, GRAD

FROM SNABDJEVAC

SELECT - INTO

• Kreiranje tabele pomou SELECT upita

Page 179: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 179/233

• SELECT * INTO POMOCNA FROMSNABDJEVAC

Složeniji UPDATE

• ALTER TABLE ISPORUKA ADDIME_SNAB VARCHAR(20)

• UPDATE ISPORUKA

Page 180: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 180/233

• UPDATE ISPORUKASET IME_SNAB = SNABDJEVAC.S_IME

FROM SNABDJEVACWHERE SNABDJEVAC.S_NO= ISPORUKA.S_NO

• UPDATE ISPORUKASET IME_SNAB = (SELECT SNABDJEVAC.S_IME

FROM SNABDJEVAC

WHERE SNABDJEVAC.S_NO=ISPORUKA.S_NO)

WHERE ISPORUKA.KOL>500

SLOŽENIJI DELETE

• DELETE FROM POMOCNAFROM SNABDJEVAC

WHERE SNABDJEVAC S NO= POMOCNA S NO

Page 181: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 181/233

WHERE SNABDJEVAC.S_NO= POMOCNA.S_NO

• DELETE FROM POMOCNA

WHERE EXISTS(SELECT *FROM SNABDJEVAC

WHERE SNABDJEVAC.S_NO=

POMOCNA.S_NO)

POGLEDI (VIEW)

– CREATE VIEW CrveniProizvodi(P_NO, P_IME,BOJA, TEZINA, GRAD)

AS

Page 182: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 182/233

ASSELECT P_NO, P_IME, BOJA, TEZINA, GRADFROM PROIZVOD

WHERE BOJA='Crvena'

Dalje se sa CrveniProizvodi može raditi skoro svekao sa pravom tabelomSELECT * FROM CRVENIPROIZVODI

POGLEDI

Promjene u pogledu se odražavaju napodatke iz kojih je pogled nastao (kad je tomogue)!

Page 183: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 183/233

mogue)!UPDATE CRVENIPROIZVODISET TEZINA=10WHERE P_NO='P1'

Mijenja i osnovnu tabelu!

INFORMACIJA O

POGLEDIMA• Informacije o raznim objektima u bazi se mogu

dobiti pomou pogleda koji izvlae te informacije

iz sistemskih tabela

Page 184: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 184/233

iz sistemskih tabela.• Vlasnik odnosno shema kojoj pripadaju ti pogledi

 je INFORMATION_SCHEMA

SELECT TABLE_NAME FROMINFORMATION_SCHEMA.VIEWS

• Brisanje pogledaDROP VIEW CrveniProzivodi

DEFAULT objekat

• Slino DEFAULT ogranienju na koloni• Korisno kada se isti default koristi na dosta mjesta, u

raznim tabelama.

• Kreira se sa CREATE DEFAULT reenicom SQL-ai j k l i š j bi d f lt

Page 185: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 185/233

• Kreira se sa CREATE DEFAULT reenicom SQL-ai povezuje sa kolonom izvršavanjem sp_bindefaultprocedure

CREATE DEFAULT nula AS 0GO

CREATE TABLE PROBA(POLJE INT)GOsp_bindefault nula, 'proba.polje'

• Raskidanje veze sa kolonom

sp unbindefault 'proba polje'

DEFAULT objekat

Page 186: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 186/233

sp_unbindefault proba.polje

• Brisanje DEFAULT objekta (tek nakon što

se raskine veza sa svim kolonama)

DROP DEFAULT nula

DEFAULT objekatInteraktivno (Enterprise Manager)

Database – Defaults – New DefaultDatabase – Defaults – Properties

Page 187: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 187/233

DEFAULT objekatInteraktivno (Enterprise Manager)

Page 188: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 188/233

Pravila (RULES)

• Slino kao CHECK CONSTRAINT nakoloni

• Korisno kada se isto ogranienje koristi na

Page 189: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 189/233

• Korisno kada se isto ogranienje koristi nadosta mjesta, u raznim tabelama.

• Kreira se sa CREATE RULE reenicomSQL-a i povezuje sa kolonom izvršavanjemsp_bindrule procedure

CREATE RULE

CREATE RULE id_chk AS @id BETWEEN 0 and 10000

CREATE RULE range rule AS

Page 190: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 190/233

U g _@range >= $1000 AND @range < $20000

CREATE RULE list_rule AS @list IN ('1389', '0736', '0877')

CREATE RULE pattern_rule AS @value LIKE '_ _-%[0-9]'

Primjer CREATE RULE

CREATE TABLE klijent (

klijent_id int PRIMARY KEY,

ime char(50)

Page 191: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 191/233

)

GO

CREATE RULE provjeraid AS @id BETWEEN 0 and 10000GO

sp_bindrule provjeraid, ' klijent.klijent_id'

Raskidanje i brisanje pravila

• Raskidanje veze sa kolonom

sp unbindrule 'klijent.klijent_id'

Page 192: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 192/233

sp_unbindrule j j _

• Brisanje RULE objekta (tek nakon što se

raskine veza sa svim kolonama)

DROP RULE provjeraid

Pravila, interaktivnoDatabase –Rules– New Rule

Database – Rules – Properties

Page 193: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 193/233

USER DEFINED DATA TYPE

(UDT)• Tipovi podataka definisani korisnikom• Zasnovani na postojecim tipovima

• Dobro kada se koriste u više tabela

Page 194: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 194/233

• Kreira se procedurom sp_addtype

• EXEC sp_addtype telefon, 'varchar(24)', 'NOT NULL'• GO• CREATE TABLE TELEFONI(• BROJ_TEL telefon PRIMARY KEY)

Brisanje UDT

•Brisanje UDT (tek nakon što se

više nije tip nijedne kolone)EXEC sp droptype 'telefon'

Page 195: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 195/233

j p j )EXEC sp_droptype 'telefon'

UDT, interaktivno

Database –User Defined Data Types- New User Defined Data Type- Properties

Page 196: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 196/233

UDT, interaktivno

Page 197: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 197/233

TRANSAKCIJE

• Transakcija (transaction) je niz operacija kojipredstavlja jedistvenu logiku cjelinu.

• Da bi logika cjelina bila transakcija ona mora

Page 198: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 198/233

• Da bi logika cjelina bila transakcija ona moraimati 4 svojstva:

Atomicity, ConsistencyIsolation, Durability

• Tzv. ACID svojstva

ACID svojstva

• Atominost – ili se sve modifikacije podataka izvrše, iliništa.

• Konzistentnost – na kraju transakcije baza mora biti ukonzistentnom stanju – podaci kljuevi indeksi

Page 199: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 199/233

konzistentnom stanju podaci, kljuevi, indeksi.

• Izolacija – transakcija ne treba da vidi modifikacije koje

izvode konkuretne transakcije, sve dok se one ne završe.(serijabilnost – na kraju izgleda kao da su one izvršena jedna za drugom).

• Trajnost – kad se transakcija završi, izmjene koje jeizvršila su trajne, ak i ako doe do kvara sistema.

Eksplicitne transakcije

• Sistem unutar sebe stalno koristi (implicitne)transakcije

• Korisnike eksplicitne transkacije

Page 200: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 200/233

p j– BEGIN TRANSACTION

– COMMIT TRANSACTION

– U sluaju da transkacija ne može nastaviti saizvršavanjemROLLBACK TRANSACTION

BEGIN TRANSACTION

COMMIT TRANSACTIONBEGIN TRANSACTION

INSERT INTO SNABDJEVAC(SNO) VALUES ('S8')INSERT INTO SNABDJEVAC(SNO) VALUES (NULL)

Page 201: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 201/233

INSERT INTO SNABDJEVAC(SNO) VALUES (NULL)

-- GRESKA, SVE SE PONISTAVA

-- (DVIJE CRTE SU KOMENTAR)COMMIT TRANSACTION

Nivoi izolacije transakcije

• READ UNCOMMITTED• READ COMMITTED (podrazumjevano)• REPEATABLE READ

Page 202: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 202/233

• SERIALIZABLE

• Vea nivo smanjuje konkurentnost!

• Postavlja se daSET TRANSACTION ISOLATION LEVEL

Sistemske promjenljive

• Poinju sa @@• @@ERROR – broj zadnje greške

• @@ROWCOUNT – broj torki pogoen zadnjimupitom

Page 203: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 203/233

upitom• @@IDENTITY – zadnja unijeta identity

vrijednost

• Mogu se koristiti u upitima, procedurama i

funkcijama.SELECT @@ERROR

STORED PROCEDURE

• Uskladištene procedure pisane na Transact-SQL-u (T-SQL)

• T-SQL sadrži SQL i programski jezik slian

Page 204: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 204/233

Pascal-u

• Mogue je deklarisati promjenljive,izvršavati razne naredbe, npr. IF, WHILE,GOTO, zajedno sa iskazima SQL-a

CREATE PROCEDURE

CREATE PROCEDURE info_snabdjevaci

ASSELECT * FROM SNABDJEVAC

Page 205: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 205/233

- izvršite je saEXEC info_snabdjevaci

DROP PROCEDURE

• Procedura se briše sa DROP PROCEDUREReenicom

DROP PROCEDURE info snabdjevaci

Page 206: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 206/233

DROP PROCEDURE info_snabdjevaci

Može i ovakoIF EXISTS (SELECT name FROM sysobjects

WHERE name = 'info_snabdjevaci' AND type = 'P')

DROP PROCEDURE info_snabdjevac

Ulazni parametri

CREATE PROCEDURE info_snabdjevac

@IME_GRADA VARCHAR(30)

AS

SELECT * FROM SNABDJEVAC

Page 207: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 207/233

SELECT * FROM SNABDJEVAC

WHERE GRAD=@IME_GRADA- izvršite je sa

EXEC info_snabdjevac 'Podgorica'

Izmjena procedure, default

vrijednosti parametarakod procedure se mijenja sa ALTER PROCEDURE

ALTER PROCEDURE info_snabdjevac@IME_GRADA VARCHAR(30)= 'Podgorica'

Page 208: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 208/233

AS

SELECT * FROM SNABDJEVACWHERE GRAD=@IME_GRADA

- izvršite je bez parametara, sa

EXEC info_snabdjevac

Izlazni parametri

CREATE PROCEDURE br_snabdjevaca

@IME_GRADA VARCHAR(30),

@UKUPNO INTEGER OUTPUT

AS

Page 209: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 209/233

AS

SET @UKUPNO=(SELECT COUNT(*)

FROM SNABDJEVAC

WHERE GRAD=@IME_GRADA)

Pozivanje procedure sa izlaznim

parametrimaDECLARE @REZULTAT INT

EXEC br_snabdjevaca 'Podgorica',

Page 210: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 210/233

@REZULTAT OUTPUT

SELECT @REZULTAT

Lokalne promjenljive

CREATE PROCEDURE dodaj_snabdjevaca

@SIFRA VARCHAR(30),

@IME VARCHAR(30)

AS

DECLARE @GRAD VARCHAR(30)

Page 211: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 211/233

DECLARE @GRAD VARCHAR(30)

DECLARE @STATUS INT

SET @GRAD='Podgorica'

SET @STATUS= LEN(@GRAD)

INSERT INTO SNABDJEVAC(S_NO, S_IME, STATUS, GRAD)

VALUES(@SIFRA, @IME, @STATUS, @GRAD)

IF…ELSE naredba,

BEGIN – END, PRINTCREATE PROCEDURE vece_isporuke

@SIFRA VARCHAR(30)

AS

IF (SELECT MAX(KOL) FROM ISPORUKA WHERE S_NO =@SIFRA) > 400

BEGIN

Page 212: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 212/233

BEGIN

PRINT 'Ovo su isporuke snabdjevaca ' + @SIFRA

PRINT ' 'SELECT P_NO, F_NO, KOL

FROM ISPORUKA

WHERE S_NO = @SIFRA

ENDELSE

PRINT 'Ovaj snabdjevac je isporucio male kolicine!'

WHILE

CREATE PROCEDURE POVECAJ_STATUSE

AS

DECLARE @BROJAC INT

SET @BROJAC=0

WHILE @BROJAC<10

BEGIN

SET @BROJAC=@BROJAC+1

Page 213: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 213/233

SET @BROJAC=@BROJAC+1

UPDATE SNABDJEVAC

SET STATUS=STATUS+ 1

IF (SELECT MIN(STATUS) FROM SNABDJEVAC) > 13

BREAK

ELSE

CONTINUE

END

SELECT * FROM SNABDJEVAC

PRINT 'Kraj'

@@ERROR, RETURN

CREATE PROCEDURE dodaj_snabdjevaca

@SIFRA VARCHAR(30),

@IME VARCHAR(30)

AS

INSERT INTO SNABDJEVAC(S_NO, S_IME)

Page 214: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 214/233

VALUES(@SIFRA, @IME)

IF @@ERROR <> 0BEGIN

PRINT 'Greska!'

RETURN(99)

END

Kursor CURSOR

• CURSOR je objekat koji omoguuje daaplikacije pristupaju podacima red po red, a

ne kroz tabele, odnosno skupovevrijednosti.

Page 215: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 215/233

vrijednosti.

• Kursor se deklariše saDECLARE ime_kursora CURSOR [OPCIJE]

AS select_upit [FOR UPDATE]

Kursori

• DECLARE snab_kursor CURSOR

FOR SELECT * FROM snabdjevac

• Opcije– LOCAL , GLOBAL

FORWARD ONLY SCROLL

Page 216: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 216/233

– FORWARD_ONLY , SCROLL

– STATIC, KEYSET, DYNAMIC, FAST_FORWARD

– READ_ONLY, SCROLL_LOCKS, OPTIMISTIC

– TYPE_WARNING

– FOR UPDATE

Kursori

Kursor se otvara sa

OPEN ime_kursora

Kursor se zatvara saCLOSE ime kursora

Page 217: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 217/233

CLOSE ime_kursora

Kursor se uništava saDEALLOCATE ime_kursora

FETCH

• FETCH naredba služi za dobijanje reda izkursora. Red ide na izlaz ili u promjenljive.

• FETCH [opcija] FROM ime_kursora• Opcije

Page 218: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 218/233

– NEXT

– PRIOR– FIRST– LAST– ABSOLUTE broj– RELATIVE broj

Primjer rada sa kursorom

DECLARE snab_kursor CURSOR LOCAL SCROLL READ_ONLY

FOR SELECT S_NO, S_IME FROM snabdjevac

OPEN snab_kursorFETCH NEXT FROM snab_kursor

FETCH RELATIVE 3 FROM snab kursor

Page 219: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 219/233

FETCH RELATIVE 3 FROM snab_kursor

DECLARE @SIFRA VARCHAR(30)DECLARE @IME VARCHAR(30)

FETCH NEXT FROM snab_kursor INTO @SIFRA, @IME

PRINT @SIFRA + ' ' + @IME

CLOSE snab_kursor

DEALLOCATE snab_kursor

UPDATE, DELETE

na kursoruNa kuroru koji nije READ_ONLY mogu s

izbrisati ili izmijeniti tekuci red. Insert nije

mogu.UPDATE SNABDJEVAC

Page 220: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 220/233

SET GRAD='Niksic'

WHERE CURRENT OF snab_kursor

DELETE FROM SNABDJEVAC

WHERE CURRENT OF snab_kursor

@@FETCH_STATUS

• Promjenljiva @@FETCH_STATUS sadržiinformaciju o (ne)uspjehu zadnje FETCH naredbe.

• @@FETCH_STATUS =0 ako je sve bilo u redu.• Prije prve FETCH naredbe, vrijednost

Page 221: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 221/233

@@FETCH_STATUS je nedefinisana

• Vrijednost @@FETCH_STATUS je globalna , tj.na nju utiu FETCH naredbe na svim kursorima!

@@FETCH STATUS primjer

DECLARE snab_kursor CURSOR LOCAL

FOR SELECT S_NO, S_IME FROM SNABDJEVAC

DECLARE @SIFRA VARCHAR(30)

DECLARE @IME VARCHAR(30)

OPEN snab_kursor

FETCH NEXT FROM snab k rsor INTO @SIFRA @IME

Page 222: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 222/233

FETCH NEXT FROM snab_kursor INTO @SIFRA, @IME

WHILE @@FETCH_STATUS=0BEGIN

PRINT @SIFRA + ' ' + @IME

FETCH NEXT FROM snab_kursor INTO @SIFRA, @IME

END

Trigger (okida)

• Okida je uskladištena procedura koja seizvršava automatski, kada se desi neki

dogaaj u sistemu.• Postoje sledee vrste okidaa

Page 223: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 223/233

j

– INSERT– DELETE

– UPDATE

Kreiranje okidaa

• Okidai prepoznaju konceptualne tabele deleted iinserted. One sadrže one redove koji se brišu,

odnosno unose.CREATE TRIGGER unosSnab

ON SNABDJEVAC

Page 224: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 224/233

ON SNABDJEVAC

FOR INSERTAS

INSERT INTO ISPORUKA(S_NO, P_NO, F_NO, KOL)

SELECT S_NO, 'P1', 'F1',0 FROM INSERTED

Delete okida

CREATE TABLE SPIJUN(

BR INT IDENTITY(1,1) PRIMARY KEY,

OPERACIJA VARCHAR(200),

VRIJEME DATETIME,KORISNIK VARCHAR(200),

)

Page 225: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 225/233

CREATE TRIGGER brisiSnab

ON SNABDJEVACFOR DELETE

AS

INSERT INTO SPIJUN(OPERACIJA, VRIJEME, KORISNIK)

SELECT 'IZBRISAN SNABDJEVAC '+DELETED.S_NO,GETDATE(), CURRENT_USER

FROM DELETED

Okidai, RAISERROR i

ROLLBACKCREATE TRIGGER brisiFabriku

ON FABRIKA

FOR DELETEAS

IF EXISTS(SELECT * FROM DELETED WHEREF NO 'F8')

Page 226: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 226/233

F_NO='F8')

BEGINRAISERROR('Ne moze se brisati fabrika F8!', 16,1)

ROLLBACK TRANSACTION

END

UPDATE okidai

• Koriste i INSERTED i DELETED tabele• Koriste i reenice IF UPDATE()

CREATE TRIGGER provjeraGrada

ON PROIZVOD

Page 227: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 227/233

FOR UPDATE

ASIF UPDATE(GRAD)

BEGIN

RAISERROR('Ne moze se mijenjati grad!',16,1)

ROLLBACK TRANSACTIONEND

Update okidai

CREATE TRIGGER provjeraTezine

ON PROIZVOD

FOR UPDATE

ASINSERT INTO SPIJUN(OPERACIJA, VRIJEME, KORISNIK)

SELECT 'IZMJENA TEZINE PROIZVODA '+DELETED.P_NO

Page 228: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 228/233

+ ' SA '+CONVERT(VARCHAR, DELETED.TEZINA)+ ' NA '+

CONVERT(VARCHAR, INSERTED.TEZINA)

, GETDATE(), CURRENT_USER

FROM INSERTED INNER JOIN DELETED ONINSERTED.P_NO=DELETED.P_NO

Kombinovanje okidaa

• sve vrste okidaa se mogu kombinovati• tada treba koristiti tabele koje svi vide, npr. i UPDATE i

DELETE okida pune tabelu deleted.CREATE TRIGGER provjeraStatus

ON SNABDJEVAC

FOR UPDATE, DELETE

Page 229: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 229/233

AS

IF EXISTS(SELECT * FROM DELETED WHERE STATUS=30)

BEGIN

RAISERROR('Snabdjevaci sa statusom 30 se ne mogu mijenjatiniti brisati!',16,1)

ROLLBACK TRANSACTIONEND

Brisanje okidaa

• DROP TRIGGER provjeraTezine

Page 230: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 230/233

USER DEFINED FUNCTIONS• Funkcije koje definiše korisnik• Mogu se koristiti svuda gdje i sistemske funkcije• Kreiraju se naredbom

CREATE FUNCTION ime (spisak parametara)

Page 231: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 231/233

RETURNS tipASBEGIN

tijelo funkcijeRETURN izrazEND

USER DEFINED FUNCTIONS

CREATE FUNCTION MOJ_TRIM(@X VARCHAR(20))

RETURNS VARCHAR(20)ASBEGIN

Page 232: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 232/233

DECLARE @POM VARCHAR(20)SET @POM=(LTRIM(RTRIM(@X)))RETURN @POM

END

USER DEFINED FUNCTIONS

Imjena funkcije sa

ALTER FUNCTION

• Funkcije se brišu sa

Page 233: SlajdoviBaze

8/17/2019 SlajdoviBaze

http://slidepdf.com/reader/full/slajdovibaze 233/233

j

DROP FUNCTION ime