bajecm.fri.uni

Download Report

Transcript bajecm.fri.uni

PODATKOVNE BAZE 1
3. letnik, univerzitetni študij
Smer: Informatika
UNIVERZA V LJUBLJANI
Fakulteta za računalništvo in informatiko
Prof. dr. Marko Bajec
Gradivo, verzija 1.3
Splošne informacije...
 Predavatelj
– Prof. dr. Marko Bajec, univ. dipl. inž. rač. in inf.
[email protected]
 Asistent - vaje
– Viš. pred. dr. Aljaž Zrnec, univ. dipl. inž. rač. in inf.
[email protected]
– Lovro Šubelj, univ. dipl. inž. rač. in mat.
[email protected]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-2-
Splošne informacije
 Priporočena literatura
– [1] Raghu Ramakrishnan, Johannes Gehrke (2003). Database
Management Systems, Third Edition, McGraw-Hill
– [2] Thomas M. Connolly, Carolyn E. Begg (2005). Database
Systems, A Practical Approach to Design, Implementation and
Management, Fourth Edition, Addison-Wesley
– [3] Ramez Elmasri, Shamkant B. Navathe (2003).
Fundamentals of Database Systems, Fourth Edition, AddisonWesley
– [4] Tomaž Mohorič (2002). Podatkovne baze 1, Založba BiTIM.
– [5] Peter Rob, Carlos Coronel (2005). Database Systems:
Design, Implementation and Management, Sixth Edition,
Addison Wesley.
Citiranje: glej [4,15-20] = glej v knjigi T. Mohorič, strani od 15 do 20.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-3-
Vsebina predmeta
 I. Osnove
– Uvod v podatkovne baze
– Relacijski podatkovni model
 II. Relacijsko poizvedovanje
– Formalni poizvedovalni jeziki
– SQL in QBE
 III. Shramba in indeksiranje podatkov
– Diski in diskovna polja
– Upravljanje z diskom in pomnilnikom
– Organizacija datotek in indeksiranje
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-4-
Poglavje I
Uvod v podatkovne baze
Osnove







Splošno o podatkovnih bazah
Zgodovina shranjevanja podatkov
Datotečni sistem in SUPB
Opisovanje in shranjevanje podatkov v PB
Poizvedovanje v PB
Obvladovanje transakcij
Zgradba SUPB
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-5-
Splošno o podatkovnih bazah (PB)
 Stanje danes:
– Organizacije odvisne od zmožnosti pridobivanja natančnih in
pravočasnih podatkov...
– Podatki predstavljajo konkurenčno prednost.
– Brez zmožnosti za upravljanje z velikimi količinami podatkov in
zmožnosti za hitro iskanje ustreznih podatkov postanejo podatki
breme za organizacijo.
– Paradoks: zaradi preveč informacij potrebujemo še več informacij
– Potrebujemo ustrezne mehanizme za upravljanje s podatki in
učinkovito iskanje po njih  podatkovne baze.
 Definicija: Podatkovna baza je mehanizirana,
večuporabniška, formalno definirana in centralno
nadzorovana zbirka podatkov (glej [4,15]).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-6-
Sistemi za upravljanje s PB
 Sistem za upravljanje s podatkovno bazo – SUPB
je programska oprema za obvladovanje velikih
količin podatkov.
 Alternativa – shranjevanje v aplikaciji lastni
obliki; problemi: neprenosljivost idr.
 Obstaja veliko vrst SUPB. Omejili se bomo
predvsem na relacijske ter omenili objektne.
 Primeri SUPB: Oracle, Sybase, DB2, MS SQL,
Ingres, Postgres, MySQL, ObjectStore, Jasmine,
Objectivity/DB, Versant Object Database,...
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-7-
Zgodovina shranjevanja podatkov
 Zgodnja 60’: Charles Bachman iz General Electric-a razvije
prvi splošno-namenski SUPB (Integrated Data Store).
(glej [4,159]).
– Predstavlja osnovo za mrežni podatkovni model, ki je predlagan za
standard na konferenci za jezike podatkovnih sistemov (CODASYL).
– Za mrežni podatkovni model Bachman prejme Turingovo nagrado
(ACM Turing Award - na področju računalniških znanosti ekvivalent
Nobelove nagrade)
– Ima velik vpliv na razvoj SUPB-jev v 60’ letih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-8-
Zgodovina shranjevanja podatkov
 Pozna 60’: IBM razvije Information Management
System (IMS), ki se ponekod uporablja še danes.
– Predstavlja osnovo za hierarhični podatkovni model.(glej [4,181]).
– American Airlines in IBM razvijeta sistem SABRE za
rezervacije letalskih kart – sistem omogoča več uporabnikom
dostop do skupnih podatkov preko mreže.
– Zanimivost: isti SABRE se še danes uporablja za spletna
potovalna agencija Travelocity.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
-9-
Zgodovina shranjevanja podatkov
 70’ leta: Edgar Codd predlaga relacijski
podatkovni mode (IBM).
– Razvije se mnogo relacijskih SUPB.
– Podatkovne baze postanejo akademsko področje. Razvije se
izjemno močna teoretična podlaga.
– Codd dobi Turingovo nagrado za svoje delo.
– Relacijske Podatkovne baze postanejo standard za
upravljanje s podatki v organizacijskih sistemih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 10 -
Zgodovina shranjevanja podatkov
 80’ leta: Relacijski model si še utrdi položaj kot SUPB.
– Razvije se SQL poizvedovalni jezik (IMB-ov projekt System R)
– SQL postane standardni jezik za izvajanje poizvedb v relacijski PB.
– SQL je bil standardiziran v poznih 80’ – SQL-92.
– Standard prevzamejo American National Standard Institute (ANSI)
in International Standards Organization (ISO).
– Skrb za sočasen dostop do podatkov prevzame SUPB. Programerji
programirajo, kot bi do podatkov dostopali samo oni. James Grey
dobi za dosežke na tem področju Turingovo nagrado.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 11 -
Zgodovina shranjevanja podatkov
 Pozna 80’ in 90’: veliko napredka na področju PB.
– Veliko raziskav se opravi na področju poizvedovalnih jezikov
in bogatejših (razširjenih) podatkovnih modelov.
– Velik poudarek na kompleksnih analizah podatkov iz vseh
področij organizacijskih sistemov.
– Veliko proizvajalcev SUPB-jev (IBM – DB2, Oracle 8,
Informix UDS) razširi svoje sisteme s podporo novim
podatkovnim tipom: slike, tekst in s podporo
kompleksnejšim poizvedbam.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 12 -
Zgodovina shranjevanja podatkov
 Pozna 80’ in 90’: nadaljevanje
– Pojavijo se podatkovna skladišča, ki združujejo podatke iz
več PB in omogočajo izvajanje specializiranih analiz (iskanje
zakonitosti v podatkih).
– Pojavijo se ERP (enterprise resource planning) in MRP
(management resource planning) paketi
 Podpirajo skupne funkcije v poslovnih sistemih (npr. skladiščno
poslovanje, planiranje človeških virov, finančne analize,...).
 Predstavljajo obsežno aplikacijsko plast nad skupno PB.
 Primeri: Baan, Oracle, PeopleSoft, SAP in Siebel.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 13 -
Zgodovina shranjevanja podatkov
 Naslednja stopnja: vstop SUPB v svet Interneta
– Prva generacija spletnih mest shranjuje podatke v datotekah
OS. Uporaba PB za shranjevanje podatkov, ki so dostopni
preko Interneta, postaja vsakdanja.
 Poizvedbe se generira preko spletnih form, odgovore pa
se nazaj posreduje v obliki jezika HTML, za lažji prikaz v
spletnem brskalniku.
– Vsi proizvajalci dodajajo svojim SUPB-jem možnosti za čim
lažjo uporabo v spletu.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 14 -
Zgodovina shranjevanja podatkov
 Najnovejša področja:
– Multimedijske PB,
– PB za interaktivni video,
– Digitalne knjižnice,
– Odločitveni sistemi, vrtanje po podatkih, odkrivanje zakonitosti
– Raziskovalni projekti:
 Human Genome Project
 GEOSS - The Global Earth Observation
System of Systems (GEOSS)
 ...
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 15 -
Datotečni sistemi in SUPB...
 Omejitve datotečnih sistemov:
– Ločevanje in izolacija podatkov
 Vsaka aplikacija obvladuje svoje podatke
 V okviru ene aplikacije lahko dostopamo le do podatkov te
aplikacije (ne vemo za razpoložljive podatke v drugih aplikacijah)
– Podvajanje podatkov
 Podvajanje vnosa – iste podatke vnašamo večkrat in na več mest
 Odvečna poraba prostora na disku ter potencialna možnost za
neskladnost
 Isti podatki podani v različnih oblikah
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 16 -
Datotečni sistemi in SUPB...
 Omejitve datotečnih sistemov (nadaljevanje):
– Podatkovna odvisnost
 Struktura podatkov je definirana v aplikaciji; sprememba v strukturi
podatkov zahteva spremembo v aplikaciji
– Neskladnost med oblikami datotek
 Aplikacije, napisane v različnih programskih jezikih, ne morejo
enostavno dostopati do datotek drugih sistemov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 17 -
Datotečni sistemi in SUPB…
 Zaradi težav oziroma neučinkovitosti
shranjevanja podatkov neposredno v datoteke,
se pojavijo Sistemi za upravljanje s podatkovnimi
bazami – SUPB.
 Definicija: SUPB je skupek programske opreme,
ki omogoča kreiranje, vzdrževanje in nadzor nad
dostopom do podatkov v PB.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 18 -
Datotečni sistemi in SUPB…
 SUPB uporablja različne mehanizme za
upravljanje s podatki:
– Kreiranje podatkovnih struktur je omogočeno z jezikom
DDL - Data Definition Language.
 Omogoča definiranje podatkovnih struktur in tipov ter omejitev
 Vse specifikacije so shranjene v PB (podatkovni slovar, sistemski
katalog). Kreiranje tabele pomeni poseg v sistemski katalog.
– Vzdrževanje podatkov (Create, Insert, Update, Delete)
izvajamo z uporabo jezika DML - Data Manipulation
Language.
– Za izvajanje povpraševanja obstajajo povpraševalni jeziki
(query language)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 19 -
Datotečni sistemi in SUPB…
 SUPB zagotavlja nadzor nad dostopom do
podatkov:
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Varnost: dostop do podatkov v skladu z avtorizacijo
Skladnost: zagotavlja skladnost podatkov
Sočasni dostop: zagotavlja in nadzira sočasni dostop
Obnova: zagotavlja mehanizme za obnovo podatkov
- 20 -
Datotečni sistemi in SUPB…
 Uporaba SUPB prinaša naslednje prednosti:
– Podatkovna neodvisnost: Programi so neodvisni od
predstavitve podatkov in načina shranjevanja podatkov.
SUPB zagotavlja abstrakcijo podatkov in ločuje programe od
podrobnosti predstavitve podatkov.
– Učinkovit dostop do podatkov: SUPB zagotavlja tehnike za
učinkovito hranjenje in dostop do podatkov.
– Varnost in integriteta podatkov: Če se do podatkov dostopa
preko SUPB, se lahko uporabi omejitve, ki zagotavljajo
skladnost podatkov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 21 -
Datotečni sistemi in SUPB…
 Prednosti uporabe SUPB (nadaljevanje):
– Administracija podatkov: Če so podatki shranjeni centralno,
je upravljanje s podatki lažje.
– Sočasen dostop do podatkov in obnavljanje PB: SUPB
razporeja sočasne dostope tako, da izgleda, kot da do
podatkov dostopa en uporabnik.
– Skrajša čas razvoja programov: SUPB podpira številne
mehanizme za dostop do podatkov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 22 -
Datotečni sistemi in SUPB…
 Zaključek: SUPB prinaša veliko prednosti v
primerjavi s hranjenjem podatkov neposredno v
datotekah.
 Obstajajo (redke) izjeme, ko uporaba SUPB ni
primerna. Npr.:
– Za specializirane aplikacije (npr.: v realnem času) klasični
SUPB niso primerni. Za te aplikacije se raje izdela namensko
kodo za rokovanje s podatki.
– Če SUPB ne podpira dela s podatki na način, ki ga zahteva
program.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 23 -
Datotečni sistemi in SUPB…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 24 -
Datotečni sistemi in SUPB…
 Komponente SUPB
–
–
–
–
–
Strojna oprema
Programska oprema
Podatki
Postopki
Ljudje
Vir: [2,19]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 25 -
Datotečni sistemi in SUPB…
 Komponente SUPB
– Strojna oprema:
 Podatkovni strežnik
 Pomembna parametra za strežnik: hitri pomnilnik in diskovni
prostor
 Ostala strojna oprema
– Programska oprema:
 SUPB, operacijski sistem, omrežna programska oprema
 Različna sistemska oprema (razvojna orodja, orodja za dostop do
podatkov)
 Specializirane aplikacije
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 26 -
Datotečni sistemi in SUPB…
 Komponente SUPB (nadaljevanje):
– Postopki





Načini prijave
Uporaba posameznih orodij
Zagon in zaustavitev podatkovne baze
Izdelava varnostnih kopij
Obvladovanje nesreč/okvar
– Ljudje, njihove vloge





PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Skrbnik podatkov
Skrbnik Podatkovne baze (DBA – Database Administrator)
Analitik, načrtovalec PB
Razvijalci aplikacij
Končni uporabniki (izkušeni, neizkušeni)
- 27 -
Opisovanje in shranjevanje podatkov v PB
 Model, s katerim opišemo, kaj bi želeli hraniti ter
kakšne povezave obstajajo med elementi, ki jih
želimo hraniti, se imenuje podatkovni model.
 Podatkovni model je način, kako na visoki ravni
abstrakcije opišemo podatke, ki jih želimo hraniti
ter skrijemo nepomembne podrobnosti.
 Podatkovni model odraža uporabnikovo
percepcijo realnega sveta. V resnici izraža
uporabnikovo predstavo, kako naj bodo podatki
shranjeni.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 28 -
Podatkovni model
Opis, kaj
želimo hraniti
Podatkovni
model
Opiše entitete
in razmerja na
način, ki je
neodvisen od
ciljnega SUPB
Opiše entitete
in razmerja v
jeziku, ki ga
razume ciljni
SUPB.
Je osnova za generiranje
Konceptualni
model
Logični model
Model
Entiteta-razmerje
Relacijski
podatkovni model
Primer konceptualnega
modela
Tehnike
Diagram ER
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Razredni
diagram
- 29 -
Relacijski
diagram
Primer logičnega
modela za
relacijske PB
Logični podatkovni modeli
 Logični podatkovni model je jezik, ki ga razume
ciljni SUPB.
 Poznamo več vrst logičnih modelov:
– Relacijski podatkovni model
 Relacijski SUPB: DB2, Informix, Oracle, Sybase, MS Access,...
– Hierarhični podatkovni model
(glej [4,181]).
 Hierarhični SUPB: IBM-ov IMS
– Mrežni podatkovni model
(glej [4,159]).
 Mrežni SUPB: IDS in IDMS
– Objektni podatkovni model
 Objektni SUPB: Objectstore, Versant,...
– Objektno-relacijski podatkovni model:
 Hibridni SUPB: IBM, Informix, ObjectStore, Oracle, Versant,…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 30 -
Tri-nivojska predstavitev podatkov...
 Podatki so v PB opisani na treh ravneh:
– Zunanja shema
– Konceptualna ali logična shema
– Fizična shema
Zunanja
shema 1
Zunanja
shema 2
Konceptualna
shema
Metapodatki
Fizična
shema
Fizični
podatki
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
DISK
- 31 -
Zunanja
shema 3
Tri-nivojska predstavitev podatkov...
 Konceptualna ali logična shema
– Konceptualna shema opisuje podatke z vidika podatkovnega
modela, ki ga PB uporablja. Npr.:
 Podatki o entitetah (profesor, študent, predavalnica,...)
 Podatki o povezavah (predava, posluša,...).
– Proces izdelave konceptualne sheme se
imenuje konceptualno ter logično
načrtovanje. Podrobnosti v
poglavju III.
Zunanja
shema 1
Zunanja
shema 2
Konceptualna
shema
Fizična
shema
DISK
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 32 -
Zunanja
shema 3
Tri-nivojska predstavitev podatkov...
 Fizična shema:
– Fizična shema podaja podrobnosti o shranjevanju podatkov
 kako so podatki iz konceptualne sheme dejansko
shranjene na sekundarnem pomnilniku: trdi disk, magnetni
trakovi,...
– Odločiti se je potrebno, kakšno datotečno organizacijo bomo
uporabili za shranjevanje podatkov in kreirati indeksne
datoteke.
– Proces izdelave fizične sheme
se imenuje načrtovanje fizične PB.
Podrobnosti v poglavju III.
Zunanja
shema 1
Zunanja
shema 2
Konceptualna
shema
Fizična
shema
DISK
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 33 -
Zunanja
shema 3
Tri-nivojska predstavitev podatkov
 Zunanja shema:
– Tudi zunanje sheme uporabljajo koncepte podatkovnega
modela (gradnike konceptualne sheme).
– Zunanja shema se uporablja za dostop do podatkov, ki je
prilagojen določenemu uporabniku ali skupini uporabnikov.
– Vsaka zunanja shema sestoji iz enega ali več pogledov
(view) in entitet iz konceptualne sheme.
– Pogled je logična tabela, ki ne obstaja v fizični podatkovni
bazi.
– Izdelava zunanjih shem se izvaja
v sodelovanju z uporabniki –
zajemanje uporabniških zahtev.
Zunanja
shema 1
Zunanja
shema 2
Konceptualna
shema
Fizična
shema
DISK
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 34 -
Zunanja
shema 3
Podatkovna neodvisnost...
 Zelo pomembna lastnost SUPB je, da omogoča
podatkovno neodvisnost - programi so neodvisni
od načina shranjevanja in strukturiranja podatkov
v PB.
 Podatkovno neodvisnost dosežemo z uporabo trinivojske abstrakcije podatkov:
– Če se spremeni konceptualna shema, lahko zunanjo shemo
priredimo tako, da pogledi ostanejo nespremenjeni 
logična podatkovna neodvisnost.
– Podobno konceptualna shema ločuje uporabnike od
sprememb, ki se naredijo na fizični PB  fizična podatkovna
neodvisnost.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 35 -
Podatkovna neodvisnost
 Konceptualna shema skrije podrobnosti o tem,
kako so podatki dejansko shranjeni na disku, o
strukturi datotek in o indeksih.
 Dokler ostaja konceptualna shema
nespremenjena, spremembe na fizičnem nivoju
ne vplivajo na programe, ki podatke uporabljajo.
 Lahko pa spremembe vplivajo na učinkovitost.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 36 -
Poizvedovanje v PB...
 Enostavnost pridobivanja informacij iz PB je
ključna prednost SUPB za uporabnike.
 Relacijske PB omogočajo uporabnikom postavljati
enostavna vprašanja (poizvedbe), s katerimi
pridobivajo podatke/informacije.
 Poizvedbe se podaja v jeziku, ki je prirejen za
opisovanje poizvedb – poizvedovalni jezik.
 Relacijski model podpira zelo močne
poizvedovalne jezike
 Ena pomembnih nalog SUPB je optimizacija
poizvedb, tako da se te čim hitreje izvedejo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 37 -
Poizvedovanje v PB
 Učinkovitost poizvedb je močno odvisna od
načina, kako so podatki shranjeni v fizični obliki
ter indeksirani.
 SUPB omogoča uporabnikom izvajati poizvedbe
ter kreirati in posodabljati vrednosti s pomočjo
DML - Data Manipulation Language skupine
ukazov iz jezika SQL.
 DML skupina podpira ukaze za vstavljanje,
brisanje in posodabljanje zapisov v tabelah.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 38 -
Upravljanje s transakcijami
 Transakcija predstavlja skupek ažuriranj, ki jih
izvede transakcijski program.
 Z vidika SUPB predstavlja transakcija osnovno
enoto spremembe  transakcija se mora izvesti
cela ali nič.
 Dve pomembni nalogi SUPB pri izvajanju
transakcij:
– Zagotavljanje sočasnosti pri izvajanju transakcij in
– Obnavljanje PB po transakcijskih in sistemskih nesrečah
(razveljavljanje, ponavljanje transakcij...).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 39 -
Tipična zgradba SUPB…
Nadzorovan dostop
Aplikacija A
SQL vmesnik S
Nenadzorovan dostop
SQL ukazi
Stroj za evaluacijo poizvedb
Enota za nadzor
sočasnosti
Upravljalec
transakcij
Upravljalec
zaklepanja
Izvajalec plana
Sintaktični analizator
Evaluator operatorjev
Optimizator
Datoteke in metode dostopa
Upravljalec
obnove podatkov
Upravljavec medpomnilnika
Upravljavec prostora na disku
Indeksne datoteke
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
SUPB
Sistemski katalog
Podatkovne datoteke
- 40 -
Podatkovna baza
Tipična zgradba SUPB…
 Funkcije posameznih enot SUPB:
– Stroj za evaluacijo poizvedb (Query Evaluation Engine)
 Sintaktični analizator (Parser): Sintaktično analizira poizvedbo, ki jo
SUPB-ju posreduje aplikacija.
 Optimizator (Optimizer): Na podlagi informacij o tem, kako so
podatki shranjeni, izdela učinkovit plan za izvajanje poizvedbe. Plan
izvajanja predstavlja načrt za izvedbo poizvedbe in je ponavadi
predstavljen kot drevo relacijskih operatorjev.
 Evaluator operatorjev (Operator Evaluator): Na osnovi plana
izvajanja analizira poizvedbo.
 Izvajalec plana (Plan Executor): Izvede poizvedbo po navodilih
plana poizvedbe.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 41 -
Tipična zgradba SUPB…
 Funkcije posameznih enot SUPB (nadaljevanje):
– Datoteke in metode dostopa (Files and Access Methods):
enota, ki omogoča delo z datotekami.
– Upravljalec medpomnilnika (Buffer Manager): Prenaša strani
iz diska v pomnilnik glede na bralne potrebe.
– Upravljalec prostora na disku (Disk Space Manager): Najnižji
nivo SUPB je zadolžen za upravljanje z diskom. Vse operacije
višjih plasti se tukaj prevedejo v nizko-nivojske ukaze za
delo z diskom.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 42 -
Tipična zgradba SUPB…
 Funkcije posameznih enot SUPB (nadaljevanje):
– Enota za nadzor sočasnosti (Concurrency Control):
 Upravljalec transakcij (Transaction Manager): Zagotavlja zaseganje
podatkov z uporabo določenih protokolov in skrbi za razporejanje
izvajanja transakcij.
 Upravljalec zaklepanja (Lock Manager): Vzdržuje informacije o
zahtevanih in odobrenih zaseženjih podatkov.
– Upravljalec obnove podatkov (Recovery Manager): Vzdržuje
dnevnik in skrbi za obnavljanje sistema v zadnje skladno
stanje pred nesrečo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 43 -
Poglavje I
Uvod v podatkovne baze
Relacijski podatkovni model
 Logični podatkovni modeli
 O relacijskem modelu
 Terminologija pri relacijskem modelu
 Matematična definicija relacije
 Relacijska shema
 Lastnosti relacij
 Funkcionalne odvisnosti
 Ključi relacije
 Omejitve nad podatki
 Pogledi
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 44 -
Logični podatkovni modeli
 Logični podatkovni model v jeziku ciljnega SUPB
predstavi podatkovne strukture.
 Vrste logičnih podatkovnih modelov:
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Hierarhični podatkovni model
Mrežni podatkovni model
Relacijski podatkovni model
Objektni podatkovni model
...
- 45 -
Hierarhični podatkovni model
 Osnova je v obliki narobe obrnjenega drevesa.
 Drevo je sestavljeno iz hierarhije vozlov, ki jih
predstavljajo zapisi.
 Na najvišjem nivoju je en sam vozel in le prek
njega dostopamo do zapisov na nižjih nivojih.
 Vsak vozel ima prirejen na višjem nivoju en sam
vozel (oče), na nižjem nivoju pa poljubno število
vozlov (otroci).
 Struktura natančno določa poti, po katerih
pridemo do zapisov na nižjih nivojih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 46 -
Hierarhični podatkovni model…
ODDELEK
DEL_MESTO
NASLOV
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
ZAPOSLENI
PLAČA
- 47 -
NAZIV
Mrežni podatkovni model
 Je generalizacija hierarhičnega modela.
 Zapisi so poljubno povezani med seboj, tako da
tvorijo mrežo.
 Na najvišjem nivoju je lahko več vozlov; dobimo
več vstopnih poti do zapisov na nižjih nivojih.
 Zapisi znotraj strukture imajo lahko poljubno
število nadrejenih in prav tako poljubno število
podrejenih zapisov.
 Omogoča več svobode pri dostopu do zapisov, ki
so povezani v mrežni strukturi.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 48 -
Mrežni podatkovni model…
ODDELEK
DEL_MESTO
NASLOV
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
PROJEKT
ZAPOSLENI
PLAČA
- 49 -
NAZIV
O relacijskem podatkovnem modelu…
 Pojavi se leta 1970, predlaga ga Edgar Codd.
 Pomeni revolucijo, nadomesti starejše modele.
 PB, ki temelji na relacijskem modelu, je
predstavljena z množico relacij, kjer je vsaka
relacija tabela z vrsticami in stolpci.
 Je zelo enostaven za razumevanje:
– Tudi neizkušeni lahko razumejo vsebino podatkovne baze;
– Na voljo so enostavni vendar močni jeziki za poizvedovanje
po vsebini PB.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 50 -
O relacijskem podatkovnem modelu
 Osnovne prednosti:
– je definiran formalno in osnovan na matematičnih strukturah
ali relacijah;
– ne vsebuje elementov fizičnega shranjevanja podatkov, s
čimer je zagotovljena podatkovna neodvisnost;
– relacije so predstavljive s tabelami, ki so človeku dobro
razumljive.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 51 -
Terminologija pri relacijskem modelu...
 Pri relacijskem modelu uporabljamo določeno
terminologijo:
–
–
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Relacija
Atribut
Domena
n-terica
Stopnja relacija
Števnost relacije
Relacijska PB
- 52 -
Terminologija pri relacijskem modelu...
 Relacijo si lahko predstavljamo kot
dvodimenzionalno tabelo s stolpci in vrsticami.
– Velja za logično strukturo podatkovne baze in ne za fizično.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Ime
Starost
(v letih)
Teža
(v kg)
Tine
15
50
Meta
20
45
Jure
40
80
Ana
5
10
Relacija
- 53 -
Terminologija pri relacijskem modelu...
 Atribut je poimenovani stolpec relacije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Ime
Starost
(v letih)
Teža
(v kg)
Tine
15
50
Meta
20
45
Jure
40
80
Ana
5
10
Atribut relacije
- 54 -
Terminologija pri relacijskem modelu...
 Domena je množica dovoljenih vrednosti enega
ali več atributov, ki so vključeni v to domeno.
 Primeri domen:
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 55 -
Terminologija pri relacijskem modelu...
 N-terica je ena vrstica v relaciji.
 Števnost relacije je število n-teric relacije.
 Stopnja relacije je število atributov v relaciji.
Stopnja relacije
Števnost relacije
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Ime
Starost
(v letih)
Teža
(v kg)
Tine
15
50
Meta
20
45
Jure
40
80
Ana
5
10
- 56 -
n-terica relacije
Terminologija pri relacijskem modelu
 Relacijska podatkovna baza je množica
normaliziranih relacij z enoličnimi imeni.
 Kaj so normalizirane relacije se bomo učili v
nadaljevanju.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 57 -
Matematična definicija relacije
 Relacija, ki si jo predstavljamo kot tabelo, je
matematična relacija stopnje n nad domenami
atributov oziroma podmnožica kartezičnega
produkta domen atributov.
r  (dom(A1)  dom(A2)  …  dom(An))
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 58 -
Relacijska shema...
 Vsaki relaciji pripada relacijska shema.
 Relacijsko shemo sestavlja oznaka sheme R ter
lista oznak atributov Ai s pripadajočimi oznakami
domen Di:
R(A1:D1, A2:D2, ..., An:Dn)
 Relacijska shema predstavlja semantiko ali
pomen relacije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 59 -
Relacijska shema...
 Primeri relacijske sheme in relacije
Študent( VpŠt, Ime, Priimek, Pošta, Kraj, Spol);
Študent( VpŠt: number(8), Ime: char(20), Priimek: char(20),
Pošta: number(4), Kraj: char(30), Spol: char(1));
VpŠt
Ime
Priimek
Pošta
Kraj
Spol
24010632
Marko
Bric
5270
Ajdovščina
M
25089888
Iztok
Jerin
2000
Maribor
M
24135344
Maja
Klepec
1000
Ljubljana
Ž
24090909
Anita
Terčelj
4000
Kranj
Ž
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 60 -
Relacijska shema...
 Relacijske sheme so del konceptualnih oziroma
zunanjih shem. Razlagajo pomen relacij.
 Glede na skromno izrazno možnost nudijo
informacijo le poznavalcem podatkovne baze, ki
znajo relacijske sheme pravilno interpretirati.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 61 -
Relacijska shema
Ime
Starost (v
letih)
Teža (v kg)
Tine
15
50
Meta
20
45
Jure
40
80
Ana
5
10
Shema relacije
Relacija, predstavljena kot tabela
Sh(r) = Oseba(Ime: I, Starost: C, Teža: C)
Domena, ki obsega imena: I  {Tine, Meta, Jure, Ana}
Domena, ki obsega interval celih števil: C  1, 2,... 200
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 62 -
Shema relacije
Domene atributov
relacije
Lastnosti relacij...
 Ime relacije je enolično. V relacijski shemi
podatkovne baze ni dveh relacij z enakim
imenom.
 Vsaka celica tabele, ki predstavlja relacijo,
vsebuje natančno eno atomarno vrednost.
 Vsak atribut relacije ima enolično ime. V isti
relaciji ni dveh atributov, ki bi imela isto ime.
 Vrednosti nekega atributa so vse iz iste domene.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 63 -
Lastnosti relacij
 Vsaka n-terica relacije je enolična  v relaciji ni
dveh enakih n-teric.
 Vrstni red atributov v relaciji je nepomemben.
 Vrstni red n-teric v relaciji je nepomemben.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 64 -
Primeri
Ime
Starost (v letih),
teža (v kg)
Tine
S15_T50
Meta
S20_T45
Jure
S40_T80
Ana
S5_T10
Celice ne vsebujejo atomarnih vrednosti
Oseba
Telefon
Tine Mikuž
1 47 68 819; 041 467 766
Ana Pregelj
5 36 61 234; 5 36 61 235
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Celice vsebujejo več vrednosti
- 65 -
Funkcionalne odvisnosti...
 Relacija je model nekega stanja v svetu  njena
vsebina ne more biti poljubna.
 Realne omejitve ne omogočajo, da bi bili odnosi
v svetu kakršnikoli; možna so le določena stanja.
 Odvisnosti so sredstvo, s katerim lahko v
relacijskem modelu povemo, katere vrednosti
relacij so veljavne in katere sploh ne morejo
obstajati.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 66 -
Funkcionalne odvisnosti...
 Poznamo več vrst odvisnosti:
– Funkcionalne odvisnosti (functional dependency)
– Večvrednostne odvisnosti (multivalued dependency)
– Stične odvisnosti (join dependency)
 Obravnavali bomo funkcionalne odvisnosti; ostale
bodo obravnavane v okviru postopka razširjene
normalizacije (PB2, drugi semester).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 67 -
Funkcionalne odvisnosti...
 Predpostavimo, da obstaja relacijska shema R z
množico atributov, katere podmnožici sta X in Y.
 V relacijski shemi R velja X  Y (X funkcionalno
določa Y oziroma Y je funkcionalno odvisen od
X), če v nobeni relaciji, ki pripada shemi R, ne
obstajata dve n-terici, ki bi se ujemali v
vrednostih atributov X in se ne bi ujemali v
vrednostih atributov Y.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 68 -
Funkcionalne odvisnosti
 Množico funkcionalnih odvisnosti, ki veljajo med
atributi relacijske sheme R in v vseh njenih
relacijah, označimo s F
X  Y  F   r ( Sh(r) = R   t,  u (t  r in u  r in
t.X = u.X  t.Y = u.Y )
kjer
t.X, u.X, t.Y in u.Y označujejo vrednosti atributov X
oziroma Y v n-tericah t oziroma u.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 69 -
Primeri funkcionalnih odvisnosti
 Imamo relacijo s shemo
Izpit( VpŠt, Priimek, Ime, ŠifraPredmeta, DatumIzpita,
OcenaPisno, OcenaUstno)
 z naslednjim pomenom:
Študent z vpisno številko VpŠt ter priimkom Priimek in
imenom Ime je na DatumIzpita opravljal izpit iz predmeta s
šifro ŠifraPredmeta. Dobil je oceno OcenaPisno in OcenaUstno.
 Funkcionalne odvisnosti relacijske sheme Izpit
so:
F  { VpŠt  (Priimek, Ime), (VpŠt, ŠifraPredmeta,
DatumIzpita)  (OcenaPisno, OcenaUstno) }
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 70 -
Ključi relacije...
 Ker je relacija množica n-teric, so v njej vse nterice ločene med seboj.
 Za sklicevanje na posamezno n-terico ni potrebno
poznati vseh vrednosti atributov n-terice, če v
shemi nastopajo funkcionalne odvisnosti.
 Množici atributov, ki določajo vsako n-terico,
pravimo ključ relacije oziroma ključ relacijske
sheme.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 71 -
Ključi relacije...

Predpostavimo, da obstaja relacijska shema z
atributi A1 A2 ... An katere podmnožica je
množica atributov X.

Atributi X so ključ relacijske sheme oziroma
pripadajočih relacij, če sta izpolnjena naslednja
dva pogoja:
(1) X  A1 A2 ... An
(2) ne obstaja X’, ki bi bila prava podmnožica od X in ki bi tudi
funkcionalno določala A1 A2 ... An
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 72 -
Ključi relacije...
 Poznamo več vrst ključev:
–
–
–
–
Kandidat za ključ (a key candidate)
Primarni ključ (primary key)
Superključ (superkey)
Tuji ključ (foreign key)
 Kandidat za ključ je vsaka podmnožica atributov
relacije, ki relacijo enolično določa.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 73 -
Ključi relacije
 Primarni ključ je tisti kandidat za ključ, ki ga
izberemo za shranjevanje relacij v fizični
podatkovni bazi.
 Superključ je vsaka množica atributov, v kateri je
vsebovan ključ  ključ je podmnožica
superključa.
 Tuji ključ je množica atributov, v okviru ene
relacije, ki je enaka kandidatu za ključ neke
druge ali iste relacije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 74 -
Primeri ključev
ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
Primarni ključ v tabeli Artikel
RAČUN
Primarni ključ v tabeli Račun
Račun
Šifra artikla
Količina
15/05
A10
1
15/05
X12
1
Tuji ključ v tabeli Račun  kaže na primarni ključ v tabeli Artikel
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 75 -
Omejitve nad podatki
 Za celovitost ter skladnost podatkov v podatkovni
bazi skrbimo s pomočjo omejitev.
 Poznamo več vrst omejitev:
– Omejitve domene (Domain constraints)
– Pravila za celovitost podatkov (Integrity constraints)
 Celovitost entitet (Entity Integrity)
 Celovitost povezav (Referential Integrity)
– Števnost (Multyplicity)
– Splošne omejitve (General constraints)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 76 -
Oznaka “Null”
 Oznaka “Null”:
– Predstavlja vrednost atributa, ki je trenutno neznana ali
irelevantna za n-terico.
– Gre za nepopolne podatke ali podatke pri izjemnih primerih.
– Predstavlja odsotnost podatka. Ni enako kot 0 ali prazen
znak, kar je dejansko vrednost.
 Oznaka “Null” je problematična pri
implementaciji, saj je relacijski model osnovan na
predikatnem računu prvega reda (Boolean logic),
kjer so edini možni vrednosti true in false.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 77 -
Omejitve entitet in povezav
 Omejitev entitete
– V osnovni relaciji ne sme biti noben atribut, ki je del ključa,
enak Null.
 Omejitve povezav
– Če v relaciji obstajajo tuji ključi, potem morajo:
 (a) njihove vrednosti ustrezati tistim, ki so v obliki ključa zapisane v
eni izmed n-teric neke druge ali iste relacije
 (b) ali pa mora biti tuji ključ v celoti enak Null.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 78 -
Splošne omejitve
 Splošne omejitve
– Dodatna pravila, ki jih določi uporabnik ali skrbnik
podatkovne baze, ki definirajo ali omejujejo nek vidik
področja, za katerega je narejena podatkovna baza.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 79 -
Primeri omejitev
Primarni ključ  ne sme biti NULL
Pedagog
EMŠO
DavcnaSt
Ime
Priimek
DtmRoj
Katedra
N13
C9
C20
C20
D
N3
<pk>
not null
Zahtevamo obveznost podatka
<fk>
Katedra
Katedra
Naziv
StLab
Vodja
Omejitev povezave
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 80 -
N3
C20
N2
N3
<pk>
not null
<fk>
Pogledi...
 Osnovna relacija (base relation)
– Poimenovana relacija, ki ustreza nekemu entitetnemu tipu v
konceptualnem modelu, katere n-terice so fizično shranjene
v podatkovni bazi.
 Pogled (view)
– Rezultat ene ali več operacij nad osnovnimi relacijami z
namenom pridobitve nove relacije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 81 -
Pogledi
 Pogled je navidezna relacija, ki ne obstaja v
relacijski bazi, temveč se dinamično kreira takrat,
ko nekdo po njej povprašuje.
 Vsebina pogleda je definirana kot poizvedba nad
eno ali več osnovnimi relacijami.
 Pogledi so dinamični  spremembe nad
osnovnimi relacijami, katerih atributi so zajeti
tudi v pogledu, so v pogledu takoj vidne.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 82 -
Namen uporabe pogledov
 Predstavljajo odličen mehanizem za zagotavljanje
varnosti  skrivajo posamezne dele podatkovne
baze pred določenimi uporabniki.
 Uporabnikom dajejo možnost, da do podatkov
dostopajo na prilagojen način  isti podatki so
lahko s strani različnih uporabnikov v istem času
vidni na različne načine.
 Poenostavljajo kompleksne operacije nad
osnovnimi relacijami.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 83 -
Spreminjanje vsebine pogledov...
 Vse spremembe nad osnovnimi relacijami morajo
biti takoj vidne tudi v pogledih nad temi
relacijami.
 Če spremenimo podatke v pogledu, se morajo
spremembe poznati tudi v osnovnih relacijah, na
katere se te spremembe nanašajo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 84 -
Spreminjanje vsebine pogledov...
 V pogledih niso možne vse spremembe. Veljajo
naslednje omejitve:
– Nad pogledom so možne spremembe, če pogled zajema eno
samo osnovno relacijo ter vključuje atribute, ki so kandidat
za ključ relacije.
– Če pogled zajema več relacij, spremembe niso možne.
– Če je pogled pridobljen z agregacijo ali grupiranjem n-teric,
spremembe niso možne.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 85 -
Primer pogleda
ARTIKEL
RAČUN
Šifra
Naziv
Zaloga
Račun
Šifra artikla
Količina
A10
Telovadni copati Nike
10
15/05
A10
1
A12
Trenerka Bali
4
15/05
X12
1
BC80
Moška jakna QuickSilver
1
16/05
A10
3
X12
Ženska jakna QuickSilver
0
17/05
A10
1
SELECT A.sifra, A.naziv, sum(R.kolicina) AS Prodanih
FROM artikel A, racun R
WHERE A.sifra = R.sifra
GROUP BY A.sifra, A.naziv
Šifra
Naziv
Prodanih
A10
Telovadni copati Nike
5
X12
Ženska jakna QuickSilver
1
...
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 86 -
Povzeto po [2, 88-111]
Poglavje II
Relacijsko poizvedovanje
Formalni poizvedovalni jeziki
 O relacijskih poizvedovalnih jezikih
 Relacijska algebra
 Relacijski račun
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 87 -
O relacijskih poizvedovalnih jezikih
 Relacijska algebra in relacijski račun sta formalna
jezika povezana z relacijskim modelom.
 Neformalno je relacijska algebra visoko-nivojski
postopkovni jezik, relacijski račun pa
nepostopkovni ali deklarativni jezik.
 Formalno sta ekvivalentna.
 Vsak jezik, s katerim lahko pridobimo relacije, ki
jih je moč pridobiti z relacijskim računom, je
relacijsko popoln (relationally complete).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 88 -
Relacijska algebra…
 Operacije relacijske algebre se izvedejo na eni ali
več relacij, z namenom, da bi pridobili novo
relacijo. Pri tem se osnovna relacija ne spremeni.
 Tako operandi kot tudi rezultat so relacije 
izhod ene operacije je lahko vhod v drugo.
 Omogoča gnezdenje izrazov – tako kot velja za
aritmetične izraze. Tej lastnosti jezika pravimo
zaprtje (closure).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 89 -
Relacijska algebra…
 Relacijska algebra vsebuje pet osnovnih operacij:
–
–
–
–
–
Selekcija,
Projekcija,
Kartezijski produkt
Unija in
Razlika.
 S temi operacijami se izvede večina poizvedb.
 Možne so tudi izpeljane operacije:
– Stik,
– Presek in
– količnik.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 90 -
Operacije relacijske algebre…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 91 -
Operacije relacijske algebre
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 92 -
Selekcija
 predikat (R)
 Deluje na enojni relaciji R; vrne relacijo, ki
vsebuje samo tiste n-terice (vrstice) iz relacije R,
ki zadoščajo določenemu pogoju (predikat).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 93 -
Primer selekcije
 Izpiši vse artikle z zalogo manjšo od 2
 zaloga<2 (R)
R=ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
zaloga<2 (R)
- 94 -
Šifra
Naziv
Zaloga
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
Projekcija
 s1, . . . , sn (R)
 Deluje na enojni relaciji R; vrne relacijo, ki
vsebuje samo tiste atribute (stolpce), ki so
določeni s predikatom.
 Operacija eliminira duplikate.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 95 -
Primer projekcije
 Izpiši nazive in zalogo vseh artiklov
 naziv, zaloga (R)
R=ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 96 -
naziv, zaloga (R)
Naziv
Zaloga
Telovadni copati Nike
10
Trenerka Bali
4
Moška jakna QuickSilver
1
Ženska jakna QuickSilver
0
Unija
 RS
 Unija dveh relacij R in S je relacija, ki vsebuje vse
n-terice (vrstice) relacije R in relacije S.
 Operacija eliminira duplikate.
 R in S se morata ujemati po atributih.
– R(ime: text, EMSO: int)  S (priimek: text, starost: int)
 Če ima relacija R I n-teric in relacija S J n-teric,
potem njuna unija predstavlja združitev v eno
relacijo z največ I+J n-teric.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 97 -
Primer unije
 Izpiši vsa mesta, kjer se nahajajo skladišča ali
S=STRANKA
stranke
Šifra Naziv
Kraj
 kraj (R)  kraj (S)
S1
Novak Janez
LJ
R=ARTIKEL
S2
Krašna Miha
CE
Šifra
Naziv
Kraj
S3
Bele Simon
PO
A10
Telovadni copati Nike
LJ
S4
Šuc Vilma
GO
A12
Trenerka Bali
MB
BC80
Moška jakna QuickSilver
LJ
X12
Ženska jakna QuickSilver
GO
Kraj
LJ
kraj (R)  kraj (S)
CE
PO
GO
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 98 -
MB
Razlika
 R–S
 Razlika med relacijama R in S (R-S) vrne relacijo,
ki vsebuje samo tiste n-terice (vrstice), ki so v R
in jih ni v S.
 R in S se morata ujemati po atributih.
– R(ime: text, EMSO: int) - S (priimek: text, starost: int)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 99 -
Primer razlike
 Izpiši vsa mesta, kjer se nahajajo skladišča ne pa
S=STRANKA
tudi stranke
Šifra Naziv
Kraj
 kraj (R) - kraj (S)
S1
Novak Janez
LJ
R=ARTIKEL
S2
Krašna Miha
CE
Šifra
Naziv
Kraj
S3
Bele Simon
PO
A10
Telovadni copati Nike
LJ
S4
Šuc Vilma
GO
A12
Trenerka Bali
MB
BC80
Moška jakna QuickSilver
LJ
X12
Ženska jakna QuickSilver
GO
Kraj
kraj (R) - kraj (S)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 100 -
MB
Presek
 RS
 Presek med relacijama R in S (R  S) vrne
relacijo, ki vsebuje tiste n-terice (vrstice), ki se
nahajajo v obeh relacijah.
 R in S se morata ujemati po atributih.
– R(ime: text, EMSO: int) - S (priimek: text, starost: int)
 Presek lahko izpeljemo iz osnovnih operacij:
R  S = R – (R – S)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 101 -
Primer preseka
 Izpiši vsa mesta, kjer se nahajajo tako skladišča
S=STRANKA
kot stranke
Šifra Naziv
Kraj
 kraj (R)  kraj (S)
S1
Novak Janez
LJ
R=ARTIKEL
S2
Krašna Miha
CE
Šifra
Naziv
Kraj
S3
Bele Simon
PO
A10
Telovadni copati Nike
LJ
S4
Šuc Vilma
GO
A12
Trenerka Bali
MB
BC80
Moška jakna QuickSilver
LJ
X12
Ženska jakna QuickSilver
GO
Kraj
kraj (R)  kraj (S)
LJ
GO
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 102 -
Kartezijski produkt
 R  S
 Kartezijski produkt relacij R in S vrne vse možne
kombinacije med n-tericami (vrsticami) relacije R
in n-tericami (vrsticami) relacije S.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 103 -
Primer kartezijskega produkta
 Izpiši šifre, nazive in količino artiklov, ki se
pojavljajo na računih
 (šifra, naziv (R))  (šifra artikla, količina (S))
R=ARTIKEL
Šifra
Naziv
Šifra
artikla
Količina
10
A10
Telovadni copati Nike
A10
1
Trenerka Bali
4
A10
Telovadni copati Nike
X12
1
BC80
Moška jakna QuickSilver
1
A12
Trenerka Bali
A10
1
X12
Ženska jakna QuickSilver
0
A12
Trenerka Bali
X12
1
S=RAČUN
BC80
Moška jakna QuickSilver
A10
1
BC80
Moška jakna QuickSilver
X12
1
X12
Ženska jakna QuickSilver
A10
1
X12
Ženska jakna QuickSilver
X12
1
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
A12
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Račun
Šifra
artikla
Količina
15/05
A10
1
15/05
X12
1
- 104 -
Kartezijski produkt s selekcijo
 S selekcijo lahko omejimo kartezijski produkt
 Izpiši šifre, nazive in količino artiklov, ki se
pojavljajo na računih, kjer je šifra artikla na
računu enaka šifri artikla v artiklu
 R.šifra = S.šifra artikla ((šifra, naziv (R))  (šifra artikla,
količina (S)))
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 105 -
Primer kartezijskega produkta s selekcijo
 R.šifra = S.šifra artikla ((šifra, naziv (R))  (šifra artikla,
količina (S)))
R=ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
Šifra
Naziv
Šifra
artikla
Količina
S=RAČUN
A10
Telovadni copati Nike
A10
1
X12
Ženska jakna QuickSilver
X12
1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Račun
Šifra
artikla
Količina
15/05
A10
1
15/05
X12
1
- 106 -
Stične operacije…
 Kartezijski produkt s selekcijo združimo v eno
operacijo, ki jo imenujemo stik.
 Stik je ena najbolj časovno kompleksnih operacij
s stališča implementacije v relacijskih SUPB; eden
ključnih “krivcev” za probleme z učinkovitostjo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 107 -
Stične operacije…
 Obstaja več vrst stičnih operacij:
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Stik Theta (Theta join)
Ekvistik (Equijoin) poseben primer stika Theta)
Naravni stik (Natural join)
Odprti stik (Outer join)
Delni stik (Semijoin)
- 108 -
Stik Theta ( stik)…
 R
FS
 Stik Theta med relacijama R in S vrne n-terice
(vrstice), ki zadoščajo predikatu F kartezijskega
produkta R in S.
 Predikat F je oblike R.ai  S.bi, kjer je 
aritmetična operacija (<, , >, , =, ).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 109 -
Stik Theta ( stik)
 Theta stik lahko izpeljemo s pomočjo selekcije in
kartezijskega produkta:
 R
F S = F(R  S)
 Stopnja Theta stika med R in S je seštevek
stopenj operandov relacij R in S. Če predikat F
vsebuje zgolj enakost (=), gre za stik tipa
Equijoin.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 110 -
Primer stika Equijoin
 Izpiši šifre, nazive in količino artiklov, ki se
pojavljajo na računih, kjer je šifra artikla na
računu enaka šifri artikla v artiklu
 (šifra, naziv (R))
R.šifra = S.šifra artikla (šifra artikla, količina
(S))
Šifra Naziv
Šifra
Količina
artikla
R=ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
A10
Telovadni copati Nike
A10
1
X12
Ženska jakna QuickSilver
X12
1
S=RAČUN
Račun
Šifra
artikla
Količina
15/05
A10
1
15/05
- 111 - X12
1
Naravni stik
 R
S
 Naravni stik relacij R in S je posebna vrsta
ekvistika prek skupnih atributov relacij R in S.
 Pri vsakem stiku se vzame le en primerek
skupnega atributa.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 112 -
Primer naravnega stika
 Izpiši šifre, nazive in količino artiklov, ki se
pojavljajo na računih, kjer je šifra artikla na
računu enaka šifri artikla v artiklu
 (šifra, naziv (R))
(šifra, količina (S))
R=ARTIKEL
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Šifra
Naziv
Količina
A10
Telovadni copati Nike
1
X12
Ženska jakna QuickSilver
1
S=RAČUN
Račun
Šifra
Količina
15/05
A10
1
15/05
X12
- 113 -
1
Zunanji stik
 Zunanji stik nam omogoča, da prikažemo n-terice
(vrstice), ki nimajo vrednosti v stičnem atributu
(stolpcu).
 R
S
 Obstajata levo odprti in desno odprti stik.
 Levo odprti stik med relacijama R in S je stik,
kjer so n-terice relacije R, ki nimajo para v S z
enakim stičnim atributom, vključene v rezultat.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 114 -
Primer zunanjega stika
 Izpiši osebe in njihova začasna prebivališča
 (Priimek in ime, PTT (R))
S
R=OSEBA
S=KRAJ
ID
Priimek in ime
PTT
PTT
Naziv
1
Kante Janez
5270
1000
Ljubljana
2
Tratnik Jože
5000
5000
Nova Gorica
3
Mali Mihael
5270
Ajdovščina
4
Brecelj Jana
1000
(Priimek in ime, PTT(R))
Priimek in ime
PTT
Naziv zač. preb.
Kante Janez
5270
Ajdovščina
Tratnik Jože
5000
Nova Gorica
Mali Mihael
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Brecelj Jana
1000 -Ljubljana
115 -
S
Delni stik
 R FS
 Delni stik predstavlja relacijo, ki vsebuje tiste nterice (vrstice) relacije R, ki nastopajo v stiku z
relacijo S.
 Delni stik lahko zapišemo s pomočjo projekcije in
stika.
 R F S = A(R
F S)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 116 -
Primer delnega stika
 Izpiši vse podrobnosti o artiklih, ki se nahajajo v
skladišču v Ljubljani
 R R.skladišče = S.šifra (šifra = ‘LJ’ (S))
R=ARTIKEL
Šifra
Naziv
Skladišče
Dobavitelj
Zaloga
A10
Telovadni copati Nike
LJ
Nike
10
A12
Trenerka Bali
MB
Bali
4
BC80
Moška jakna QuickSilver
LJ
Karma
1
X12
Ženska jakna QuickSilver
GO
Karma
0
S=SKLADIŠČE
Šifra
Kraj
LJ
Ljubljana, Tržaška 33
Šifra
Naziv
Skladišče
Dobavitelj
Zaloga
MB
Maribor, Prešernov trg 2
A10
Telovadni copati Nike
LJ
Nike
10
BC80
Moška
QuickSilver
- 117 jakna
-
LJ
Karma
1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
GO
Nova Gorica, Cankarjeva 2
Količnik
 R/S
 Količnik med relacijama R in S vrne relacijo z
atributi C, ki jo sestavljajo n-terice (vrstice) iz R,
ki ustrezajo kombinaciji vsake n-terice v S.
 Količnik T = R/S lahko izrazimo z osnovnimi
operacijami:
T1  C (R)
T2  C ((S  T1) – R)
T  T1 – T2
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 118 -
Primer količnika
 Izpiši vse kupce, ki so kupili vse izdelke
dobavitelja Karma.
 (šifra, kupec (R)) / (šifra artikla(dobavitelj = ‘Karma’ (S)))
šifra, kupec (R)
šifra artikla(dobavitelj = ‘Karma’ (S))
Šifra
Kupec
A10
K1
A12
K1
BC80
K2
X12
K3
A10
K3
K3
BC80
K3
K4
BC80
K4
X12
K4
A12
K5
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Šifra
BC80
X12
Kupec
- 119 -
Agregatne operacije
 AL(R)
 Agregat AL aplicira seznam agregatnih funkcij AL
na relaciji R in vrne takó agregirano relacijo.
 AL vsebuje enega ali več parov
(<agregatna funkcija>, <atribut>).
 Osnovne agregatne funkcije so COUNT, SUM,
AVG, MIN, and MAX.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 120 -
Primer agregatnih operacij
 Kakšna je povprečna cena artiklov v skladišču?
 R(AvgCena) AVG Cena (Zaloga > 0 (R))
Operacija R(ime) Op poimenuje atribut, ki ga dobimo z operacijami Op
nad relacijo R, z imenom ime
R=ARTIKEL
Šifra
Naziv
Skladišče
A10
Telovadni copati Nike
A12
Cena
Zaloga
LJ
17.990
10
Trenerka Bali
MB
6.750
4
BC80
Moška jakna QuickSilver
LJ
14.290
1
X12
Ženska jakna QuickSilver
GO
14.290
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 121 -
R(AvgCena) AVG Cena (Zaloga > 0 (R))
AvgCena
13.010
Združevalne operacije

GAAL(R)
 Združevalne operacije združijo n-terice relacije R
tako, da jih grupirajo po atributih GA.
 Relacija, ki jo tako pridobimo, vsebuje atribute
GA ter vrednosti, ki jih pridobimo z apliciranjem
agregatov iz AL nad vsako posamezno skupino iz
GA.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 122 -
Primer združevalnih operacij
 Izpiši vrednosti posameznih računov?
 R(račun, SkupnaCena) šifra računa
 SUM cena*količina (R)
GAAL(R)
R=RAČUN
ŠifraR
Šifra artikla
Količina
1/05
X12
1
12.000
1/05
XC80
2
5.000
1/05
Z55
3
4.500
2/05
X12
2
12.000
2/05
Y15
3
550
3/05
HH8
2
50.000
3/05
X12
1
12.000
3/05
XXZ4
1
990
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Grupiramo po šifri računa
Cena za enoto
R(račun, SkupnaCena) šifra računa  SUM cena*količina (R)
- 123 -
račun
SkupnaCena
1/05
35.500
2/05
25.650
3/05
112.990
Vaja

Imamo naslednje relacije:
Hotel
Room
Booking
Guest

Opiši relacije, ki jih pridobimo z naslednjimi
operacijami relacijske algebre:
a)
b)
c)
d)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
(hotelNo, hotelName, address)
(roomNo, hotelNo, type, price)
(hotelNo, guestNo, dateFrom, dateTo, roomNo)
(guestNo, guestName, guestAddress)
Hotel.hotelNo=Room.hotelNo(Hotel  Room))
hotelName(Hotel Hotel.hotelNo = Room.hotelNo(price > 50(Room)))
Guest (dateTo ≥ ‘1.1.2002’(Booking))
guestName(Booking Booking.guestNo=Guest.guestNo Guest) /
hotelNo(address = ‘London’(Hotel))
- 124 -
Relacijski račun…
 Pri poizvedovanju z relacijskim računom določimo
kaj nas zanima in ne, kako to poiskati.
 Temelji na simbolični logiki imenovani predikatni
račun prvega reda.
 Predikat je logična funkcija z argumenti.
 Če argumente v predikatu nadomestimo z
vrednostmi, dobimo trditev, ki je bodisi resnična
ali neresnična.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 125 -
Relacijski račun...
 Primeri:
– Miha Bratuš je študent
– Janez Novak zasluži več kot Marija Novak
 V obeh primerih gre za trditev, saj lahko
ugotovimo njihovo resničnost/neresničnost
argument
X
zasluži več kot
Y
funkcija
Janez Novak zasluži več kot Marija Novak
Trditev, ki jo pridobimo z nadomestilom argumentov z vrednostmi
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 126 -
Relacijski račun...
 Če predikat vsebuje spremenljivko, kot npr. x je
študent, mora za x obstajati domena vrednosti.
 Za nekatere vrednosti iz domene je trditev
resnična za druge neresnična.
 Sintaksa: če je P predikat, potem lahko zapišemo
množico vseh x, za katere je P resničen, takole:
{x | P(x)}
 Predikate lahko povezujemo z logičnimi
operatorji: IN (), ALI (), NEGACIJA ()
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 127 -
Relacijski račun…
 V povezavi s podatkovnimi bazami poznamo dve
vrsti relacijskega računa:
– N-terični relacijski račun (Tuple Relational Calculus)
– Domenski relacijski račun (Domain Relational Calculus).
 Z uporabo n-teričnega relacijskega računa
iščemo n-terice, za katere je predikat resničen.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 128 -
N-terični relacijski račun…
 Temelji na uporabi n-teričnih spremenljivk.
 N-terična spremenljivka je spremenljivka, katere
domena je določena z relacijo, t.j. spremenljivka,
katere dovoljene vrednosti so n-terice relacije.
 Primer: Določimo domeno n-terične
spremenljivke A s pomočjo relacije Artikel:
– Artikel(A)
 Z naslednjim računom želimo poiskati vse nterice A, za katere velja P(A) je resnično:
– {A | P(A)}
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 129 -
Primeri
 Poišči podrobne podatke o artiklih, ki imajo
kritično zalogo (zaloga < 3):
 {A | Artikel(A)  A.zaloga < 3}
 Če nas zanima samo določen atribut (npr. naziv
artikla), zapišemo:
 {A.naziv | Artikel(A)  A.zaloga < 3}
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 130 -
N-terični relacijski račun…
 Na kaj (koliko primerkov) se predikat nanaša
določimo s pomočjo kvantifikatorjev.
 Obstajata dva kvantifikatorja:
– Eksistencialni kvantifikator $ (beremo ‘obstaja’)
– Univerzalni kvantifikator  (beremo ‘za vse’)
 N-terične spremenljivke, ki so kvantificirane s
kvantifikatorjema  ali $, imenujemo vezane
spremenljivke, ostale pa proste spremenljivke.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 131 -
N-terični relacijski račun…
 Eksistencialni kvantifikator uporabimo v izrazih,
ko želimo povedati, da mora obstajati vsaj en
primerek, za katerega je predikat resničen.
 Primer:
Artikel(A)  ($S)(Skladišče(S) 
(A.skladišče = S.ID)  (S.kraj = ‘Ljubljana’)
 Pomen: obstaja n-terica v relaciji skladišče, ki
ima ID enak šifri skladišča opazovane n-terice v
relaciji artikel, A, in velja, da je A lociran v
‘Ljubljani’.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 132 -
N-terični relacijski račun…
 Univerzalni kvantifikator uporabimo v izrazih, ki
se nanašajo na vse primerke…
 Primer:
(A) (A.cena < 99.999)
 Pomeni: za vse artikle je cena manjša od 99.999
 Lahko zapišemo tudi kot:
($A) (A.cena ≥ 99.999)
 kar pomeni: ni res, da obstaja artikel, katerega
cena bi bila večja ali enaka 99.999.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 133 -
N-terični relacijski račun…
 Proste spremenljivke v izrazih relacijskega računa
so lahko samo spremenljivke, ki so definirane oz.
se nahajajo na levi strani znaka | v izrazu
 Primer:
{A.naziv, A.cena | Artikel(A)  ($S) (Skladišče(S) 
(A.skladišče = S.ID)  S.kraj = ‘Ljubljana’)}
 Prosta spremenljiva v zgornjem izrazu je A,
spremenljivka S pa je vezana.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 134 -
N-terični relacijski račun…
 Izrazi v relacijskem računu naj bodo dobri, t.j.
nedvoumni in smiselni.
 Splošna oblika dobrega izraza je naslednja:
– {S1.a1, S2.a2,..., Sn.an | F(S1, S2,..., Sm)} m≥n
 kjer je pomen naslednji:
– S1, S2,..., Sm so n-terične spremenljivke
– Sj.ai so atributi relacije, ki je domena n-terične spremenljivke
Si
– F je formula.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 135 -
N-terični relacijski račun…
 Dobro definirana formula je sestavljena iz
naslednjih atomov:
– R(Si), kjer je Si n-terična spremenljivka in R relacija
– Si.a1  Sj.a2, kjer sta Si in Sj n-terični spremenljivki, a1
atributi relacije, ki je domena Si, a2 atributi relacije, ki je
domena Sj,  pa aritmetični operator (<, ≤, >, ≥, =, ≠)
– Si.a1  c, kjer je Si n-terična spremenljivka, a1 atributi
relacije, ki je domena Si,  aritmetični operator, c pa
konstanta iz domene atributov a1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 136 -
N-terični relacijski račun…
 Formule gradimo rekurzivno iz atomov.
 Upoštevamo naslednja pravila:
– Atom je že sam formula
– Če sta F1 in F2 formuli, so formule tudi konjunkcija F1  F2,
disjunkcija F1  F2, in negacija F1
– Če je F formula s prosto spremenljivko X, potem sta
($X)(F) in (X)(F) tudi formuli.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 137 -
Primeri...
 Imamo naslednje relacije:
Hotel
Room
Booking
Guest
(hotelNo, hotelName, address)
(roomNo, hotelNo, type, price, free)
(hotelNo, guestNo, dateFrom, dateTo, roomNo)
(guestNo, guestName, guestAddress)
 Izpiši nazive hotelov, ki se nahajajo v Ljubljani
{H. hotelName | Hotel(H)  H.address = ‘Ljubljana’}
 Izpiši nazive hotelov, ki imajo trenutno proste
dvoposteljne sobe (type=2)
{H. hotelName | Hotel(H)  ($R) (Room(R)  (H.hotelNo =
R.hotelNo)  (R.type = 2)  (R.free = true) ) }
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 138 -
Primeri
 Izpiši nazive hotelov, ki so trenutno brez gostov
{H.hotelName | Hotel(H)  ($R) (Room(R)  (R.free = false) 
(R.hotelNo = H.hotelNo) ) }
 Upoštevajoč De Morgan-ova pravila, lahko zgornji
izraz pretvorimo v:
{H.hotelName | Hotel(H)  (R) ( Room(R)  (R.free = false)
 (R.hotelNo = H.hotelNo) ) }
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 139 -
Varni izrazi
 V relacijskem računu je možno zapisati stavke, ki
vračajo neskončne množice.
 Primer:
{A | (Artikel(A)) }
Nevaren izraz
 Varnost izrazov dosežemo z omejitvijo, da morajo
biti vse vrednosti, ki se pojavijo v rezultatu,
vrednosti iz domene izraza E (dom(E)).
– dom(E): vrednosti, ki se eksplicitno pojavijo v izrazu E ali pa
so iz ene ali več relacij, katerih imena so v E.
Izraz ni varen, ker vrača vrednosti, ki so izven relacije Artikel in zato izven domene izraza!!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 140 -
Domenski relacijski račun...
 N-terični relacijski račun:
– uporabljamo spremenljivke, katerih zaloga vrednosti so
relacije.
 Domenski relacijski račun:
– uporabljamo spremenljivke, katerih zaloga vrednosti so
domene atributov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 141 -
Domenski relacijski račun...
 Splošna oblika izraza v domenskem relacijskem
računu je:
{d1, d2,..., dn | F(d1, d2,..., dm)}
 kjer je:
– d1, d2,..., dm množica domenskih spremenljivk in
– F(d1, d2,..., dm) formula.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 142 -
Domenski relacijski račun...
 Formula F je sestavljena iz atomov oblike:
– R(d1, d2,..., dn), kjer je R relacija, di pa domenske
spremenljivke
– di  dj, kjer sta di in dj domenski spremenljivki,  pa
aritmetični operator (<, ≤, >, ≥, =, ≠)
– di  c, kjer je di domenska spremenljivka,  aritmetični
operator, c pa konstanta iz domene di
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 143 -
Domenski relacijski račun...
 Formule gradimo rekurzivno iz atomov.
 Upoštevamo naslednja pravila:
– Atom je že sam formula
– Če sta F1 in F2 formuli, so formule tudi konjunkcija F1  F2,
disjunkcija F1  F2, in negacija F1
– Če je F formula z nevezano domensko spremenljivko X,
potem sta ($X)(F) in (X)(F) tudi formuli.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 144 -
Primeri...
 Imamo naslednje relacije:
Hotel
Room
Booking
Guest
(hotelNo, hotelName, address)
(roomNo, hotelNo, type, price)
(hotelNo, guestNo, dateFrom, dateTo, roomNo)
(guestNo, guestName, guestAddress)
 Izpiši imena hotelov v Ljubljani
{hName | ($hNo, hAddress) (Hotel(hNo, hName, hAddress) 
hAddress = ‘Ljubljana’) }
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 145 -
Primeri
 Izpiši nazive hotelov, ki imajo trenutno proste
dvoposteljne sobe (type=2)
{hName | $hNo1, hNo, hName, hAddress, rNo, rType, rPrice,
rFree: (Hotel (hNo, hName, hAddress)  Room(rNo, hNo1,
rType, rPrice, rFree)  (rFree = true)  (rType = 2)  (hNo
= hNo1) }
Uporabimo konstanto namesto
domenske spremenljivke
 ali
{hName | $hNo, hName, hAddress, rNo, rPrice:
(Hotel (hNo, hName, hAddress)  (Room(rNo, hNo, 2,
rPrice, true) ) }
Uporabimo isto domensko
spremenljivke
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 146 -
Moč formalnih jezikov
 Ob uporabi varnih izrazov so si relacijska algebra,
n-terični relacijski račun in domenski relacijski
račun po moči enakovredni:
– Kar lahko izrazimo v relacijski algebri, lahko izrazimo tudi v
n-teričnem ali domenskem relacijskem računu.
– Vsak varen izraz v relacijskem računu lahko zapišemo tudi z
relacijsko algebro.
 Vsak jezik, s katerim lahko pridobimo relacije, ki
jih je moč pridobiti z relacijskim računom, je
relacijsko popoln (relationally complete).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 147 -
Drugi formalni jeziki
 Relacijski račun je kljub kompleksnosti zaželen
zaradi svoje nepostopkovnosti.
 Z raziskavami prišli še do dveh različic relacijskih
jezikov:
– Transformacijsko usmerjeni jeziki: nepostopkovni jeziki, ki
uporabljajo relacije za pretvorbo vhodnih podatkov v
zahtevane izhodne. Primeri: SQUARE, SEQUEL, SQL
– Grafični jeziki: ponujajo grafični vmesnik, v katerem s
primerom opišemo, kaj nas zanima, sistem vrne rezultat v
takšni obliki. Primer QBE (Query-by-example)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 148 -
Povzeto po [2, 112-225]
Poglavje II
Relacijsko poizvedovanje
SQL in QBE





Uvod v SQL
Pisanje SQL stavkov
Stavki skupine SQL DML
Stavki skupine SQL DDL
QBE – Query-By-Example
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 149 -
Uvod v SQL…
 SQL je transformacijsko usmerjen jezik, ki ga
sestavljata dve skupini ukazov:
– Skupina ukazov DDL (Data Definition Language) za
opredelitev strukture podatkovne baze in
– Skupina ukazov DML (Data Manipulation Language) za
poizvedovanje in ažuriranje podatkov.
 SQL do izdaje SQL:1999 ne vključuje ukazov
kontrolnega toka. Kontrolni tok je bil potrebno
obvladati s programskim jezikom ali interaktivno
z odločitvami uporabnikov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 150 -
Uvod v SQL…
 Lastnosti SQL:
– Enostaven;
– Nepostopkoven (kaj in ne kako);
– Uporaben v okviru številnih vlog: skrbniki PB, vodstvo,
razvijalci informacijskih rešitev, končni uporabniki;
– Obstaja ISO standard za SQL;
– SQL de-facto in tudi uradno standardni jezik za delo z
relacijskimi podatkovnimi bazami.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 151 -
Zgodovina SQL
 V 1970h IBM razvija sistem System R, ki bo
temeljil na relacijskem modelu.
 1974 – D. Chamberlin in F. Boyce (IBM San Jose
Laboratory) definirata jezik ‘Structured English
Query Language’ (SEQUEL).
– SEQUEL se kasneje preimenuje v SQL
 Pozno v 1970h – Relational Software (danes
Oracle) razvije svoj SUPB, ki temelji na
relacijskem modelu in implementira SQL.
 Poleti 1979 – Oracle izda prvo komercialno
različico SQL; nekaj tednov pred IBM-ovo
implementacijo System/38
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 152 -
Standardizacija SQL
 1986, SQL-86, ANSI izda prvo različico
standarda. Leto kasneje potrdi še ISO.
 1989, SQL-89, majhne revizije (FIPS 127-1).
 1992, SQL-92, večja revizija standarda.
 1999, SQL:1999 ali SQL3, številne novosti:
rekurzivne poizvedbe, prožilci, podpora
proceduralni kodi, nekateri objektni dodatki…
 2003, SQL:2003, dodane lastnosti za delo z XML,
sekvence, avto-generiranje vrednosti…
 2006, SQL:2006, ISO/IEC 9075-14:2006 definira
način povezovanja SQL in XML.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 153 -
Dodatki za proceduralnost
Vir
Naziv
Polno ime
ANSI
SQL/PSM
SQL/Persistent Stored Module
IBM
SQL PL
SQL Procedural Language
Microsoft/Sybase
T-SQL
Transact-SQL
MySQL
MySQL
MySQL
Oracle
PL/SQL
Procedural Language/SQL
PostgreSQL
PL/pgSQL
Procedural Language/PostrgeSQL
Proceduralnost dosegljiva tudi prek integracije
SUPB in programskih jezikov. Npr. SQL standard
definira dodatek SQL/JRT za podporo Javi v SQL
bazah.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 154 -
Pomembnost jezika SQL…
 SQL do sedaj edini široko sprejet standardni
podatkovni jezik.
 za SQL postane del aplikacijskih arhitektur (npr. v
okviru IBM-ove arhitekture - Systems Application
Architecture (SAA).
 Strateška odločitev več pomembnih združb
– Konzorcij X/OPEN za UNIX
– Federal Information Processing Standard (FIPS) – standard
kateremu morajo ustrezati vsi SUPB-ji prodani državnim
organom v ZDA.
– …
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 155 -
Pomembnost jezika SQL
 SQL uporabljen tudi v drugih standardih
– ISO Information Resource Dictionary System (IRDS)
– Remote Data Access (RDA),...
 Interes v akademskih krogih daje jeziku
teoretično osnovo in tehnike za implementacijo
– Optimizacija poizvedb
– Distribucija podatkov
– Varnost podatkov
 Pojavljajo se specializirane implementacije SQL,
npr. za OLAP
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 156 -
Pisanje SQL stavkov…
 SQL stavki so sestavljeni iz rezerviranih in
uporabniško definiranih besed.
 Rezervirane besede so natančno določene,
napisane morajo biti pravilno, ne smejo se lomiti
med vrstice.
 Uporabniško definirane besede označujejo razne
podatkovne objekte, kot so npr. relacije, stolpci,
pogledi,…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 157 -
Pisanje SQL stavkov…
 Večina komponent SQL stavkov je neodvisna od
velikosti pisave; izjema so tekstovni podatki.
 Da dosežemo boljšo berljivost, pišemo SQL
stavke v več vrsticah in z zamiki:
– Vsak sklop SQL stavka se začne v novi vrstici
– Sklopi so levo poravnani
– Če ima sklop več delov, je vsak v svoji vrstici in poravnan z
začetkom sklopa
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 158 -
Pisanje SQL stavkov…
 Za opis sintakse SQL stavkov bomo uporabljali
razširjeno BNF notacijo:
–
–
–
–
–
–
REZERVIRANE BESEDE z velikimi črkami,
uporabniško definirane besede z malimi črkami,
Znak | za izbiro med alternativami,
{Obvezni elementi} v zavitih oklepajih,
[Opcijski elementi] v oglatih oklepajih,
Znak … za opcijske ponovitve (0 ali več).
BNF = Backus Naur Form
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 159 -
Pisanje SQL stavkov
 Podatkovne vrednosti predstavljajo konstante v
SQL Stavkih.
 Vse ne-numerične vrednosti so zapisane v
enojnih navednicah
‘Ljubljana’
 Vse numerične vrednosti brez navednic
225.990
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 160 -
Stavki skupine SQL DML
 DML skupina zajema SQL stavke za manipulacijo
s podatki
–
–
–
–
SELECT  Izbira
INSERT  Dodajanje
DELETE  Brisanje
UPDATE  Spreminjanje
 Sintaksa SELECT stavka najbolj kompleksna
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 161 -
SELECT stavek…
SELECT [DISTINCT | ALL]
{* | [columnExpression [AS newName]] [,...] }
FROM
TableName [alias] [, ...]
[WHERE
condition]
[GROUP BY columnList] [HAVING
[ORDER BY columnList]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 162 -
condition]
SELECT stavek…
 FROM
 WHERE
 GROUP BY
 HAVING
 SELECT
 ORDER BY
Določa tabele za poizvedbo
Filtrira vrstice
Združuje vrstice po vrednostih
izbranih stolpcev
Filtrira skupine glede na
določene pogoje
Določa stolpce, ki naj se
pojavijo v izhodni relaciji
Določa vrstni red vrstic na
izhodu
Vrstnega reda sklopov ni možno spreminjati!
Obvezna sta samo SELECT in FROM sklopa!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 163 -
Primeri
 Za primere bomo uporabljali shemo PB o hotelih
Hotel
Room
Booking
Guest
(hotelNo, hotelName, address)
(roomNo, hotelNo, type, price)
(hotelNo, guestNo, dateFrom, dateTo, roomNo, comments)
(guestNo, guestName, guestAddress)
 Izpiši vse podatke hotelih
SELECT hotelNo, hotelName, address
FROM Hotel
ali krajše
SELECT * FROM Hotel
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 164 -
Uporaba DISTINCT
 Izpiši oznake hotelov in sob, ki so bile kdaj koli
rezervirane
SELECT DISTINCT hotelNo, roomNo
FROM Booking
Ukaz DISTINCT eliminira dvojnike
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 165 -
Izračunana polja
 Izpiši ceno sob za deset dnevni najem
SELECT roomID, type, price*10 AS CenaNajema
FROM Room
Uporabljamo formule
Izračunanemu stolpcu
dodelimo naziv
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 166 -
Iskalni kriteriji
 Izpiši oznake hotelov, ki imajo tri-posteljne sobe
(type = 3) in ceno manjšo kot 100 EUR
SELECT hotelNo
FROM Room
WHERE type = 3 AND price < 100
Pogoj 1
Pogoj 2
Pogoje združujemo z logičnimi operatorji
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 167 -
Iskanje z uporabo BETWEEN
 Izpiši vse sobe s ceno med 50 in 70 EUR
SELECT roomNo
FROM Room
WHERE price BETWEEN 50 AND 70
BETWEEN vključuje spodnjo in zgornjo mejo!
Uporabimo lahko tudi negacijo NOT BETWEEN
BETWEEN ne doda veliko SQL moči, možno izraziti posredno
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 168 -
Iskanje po članstvu množice
 Izpiši oznake hotelov in številke dve ali triposteljnih sob
SELECT hotelNo, roomNo
FROM Room
WHERE type IN (2,3)
Članstvo množice
Uporabimo lahko tudi negacijo NOT IN
IN ne doda veliko SQL moči; koristno pri večjih množicah
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 169 -
Iskanje z vzorcem
 Izpiši vse goste, ki živijo kjerkoli v Ljubljani (v
polju guestAddress je tudi string ‘Ljubljana’)
SELECT guestNo, guestName, guestAddress
FROM Guest
WHERE guestAddress LIKE ‘%Ljubljana%’
Iskanje z vzorcem
SQL ima dva posebna znaka za iskanje z vzorcem:
Znak % nadomešča katerikoli niz znakov
Znak _ nadomešča katerikoli znak
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 170 -
Iskanje z NULL vrednostjo v pogoju
 Izpiši vse rezervacije brez podanih komentarjev
SELECT *
FROM Booking
WHERE comments IS NULL
Iskanje z NULL vrednostjo
Uporabljamo lahko tudi negacijo IS NOT NULL
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 171 -
Sortiranje vrstic v izhodni relaciji
 Izpiši vse podatke o sobah, urejene po tipu sobe
od največje do najmanjše in znotraj tipa po
cenah od najmanjše do največje
SELECT *
FROM Room
ORDER BY type DESC, price ASC
ASC – ascending  naraščujoče
DESC – descending  padajoče
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 172 -
Agregiranje podatkov…
 ISO standard definira pet agregarnih operacij
–
–
–
–
–
COUNT
SUM
AVG
MIN
MAX
vrne
vrne
vrne
vrne
vrne
število vrednosti v določenem stolpcu
seštevek vrednosti v določenem stolpcu
povprečje vrednosti v določenem stolpcu
najmanjšo vrednost v določenem stolpcu
največjo vrednost v določenem stolpcu
 Vse operacije delujejo na enem stolpcu in vračajo
eno samo vrednost.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 173 -
Agregiranje podatkov…
 COUNT, MIN in MAX se uporabljajo za numerične
in ne-numerične vrednosti, SUM in AVG
zahtevata numerične vrednosti.
 Vse operacije razen COUNT(*) najprej odstranijo
vrstice z NULL vrednostjo v stolpcu, po katerem
agregiramo.
 COUNT(*) prešteje vse vrstice, ne glede na NULL
vrednosti ali duplikate.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 174 -
Agregiranje podatkov…
 Če se želimo znebiti duplikatov, uporabimo
DISTINCT pred imenom stolpca.
 DISTINCT nima učinka na MIN/MAX, lahko pa
vpliva na SUM/AVG.
 Agregarne operacije lahko uporabimo le v
SELECT ali HAVING sklopu
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 175 -
Agregiranje podatkov
 Če SELECT sklop vsebuje agregarno operacijo,
mora obstajati tudi GROUP BY sklop, sicer ni moč
dodeliti agregirane vrednosti.
SELECT roomNo, COUNT(price)
FROM Room
Napačna raba agregacije
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 176 -
Uporaba COUNT in DISTINCT
 V koliko različnih hotelih obstajajo rezervacije za
prvi teden v mesecu januarju 2005
SELECT COUNT (DISTINCT hotelNo) AS numH
FROM Booking
WHERE dateFrom = ‘1.1.2005’ AND
dateTo = ‘7.1.2005’
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 177 -
Uporaba več agregatov istočasno
 Izpiši povprečno, minimalno in maksimalno ceno
dvoposteljne sobe
SELECT AVG(price), MIN(price), MAX(price)
FROM Room
WHERE type = 2
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 178 -
Združevanje podatkov…
 Sklop GROUP BY uporabimo za združevanje
podatkov v skupine.
 SELECT in GROUP BY sta tesno povezana
– vsak element v SELECT seznamu, mora imeti samo eno
vrednost za vse elemente v skupini,
– SELECT sklop lahko vsebuje le:




PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
imena stolpcev
agregarne operacije
konstante ali
izraze, ki so sestavljeni iz kombinacije naštetih elementov.
- 179 -
Združevanje podatkov…
 Vsi stolpci, ki so navedeni v SELECT sklopu, se
morajo nahajati tudi v GROUP BY sklopu, razen
tistih, ki nastopajo samo v agregarnih operacijah.
 Če uporabljamo WHERE sklop v kombinaciji z
GROUP BY, se WHERE upošteva najprej,
združevanje pa se izvede na preostalih vrsticah.
 ISO standard jemlje NULL vrednosti kot enake,
ko gre za združevanje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 180 -
Primer združevanja
 Izpiši število enoposteljnih, dvoposteljnih in
troposteljnih sob v vsakem hotelu
SELECT hotelNo, type, COUNT(roomNo)
FROM Room
GROUP BY hotelNo, type
Za vsako skupino hotel, tip sobe vrne število sob
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 181 -
Omejitev skupin
 HAVING sklop je namenjen uporabi v kombinaciji
z GROUP BY kot omejitev skupin, ki se lahko
pojavijo v rezultatu.
 Deluje podobno kot WHERE
– WHERE filtrira posamezne vrstice
– HAVING filtrira skupine.
 Stolpci, ki so navedeni v HAVING sklopu, morajo
biti tudi v SELECT sklopu ali v agregatih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 182 -
Uporaba sklopa HAVING
 Izpiši število enoposteljnih, dvoposteljnih in
troposteljnih sob v vsakem hotelu ter njihovo
povprečno ceno. Upoštevaj samo tiste primere, ko
je število sob večje od 4.
SELECT hotelNo, type, COUNT(roomNo),
AVG(price)
FROM Room
GROUP BY hotelNo, type
HAVING COUNT(roomNo) > 4
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 183 -
Gnezdenje poizvedb…
 Nekateri SQL stavki imajo lahko vgnezdene
SELECT stavke.
 Vgnezdeni SELECT stavki se lahko uporabijo v
WHERE ali HAVING sklopih drugega SELECT
stavka (subselect).
 Vgnezdeni SELECT stavki se lahko pojavijo tudi v
INSERT, UPDATE in DELETE stavkih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 184 -
Primer vgnezdenega SELECT stavka
 Izpiši nazive hotelov, ki imajo vsaj 10
troposteljnih sob
SELECT hotelName
Ali je stavek pravilen?
FROM Hotel
Manjka WHERE pogoj v
WHERE hotelNo IN
vgnezdenem SELECT stavku:
(SELECT hotelNo
WHERE type = 3
FROM Room
GROUP BY hotelNo
HAVING COUNT(hotelNo) > 9)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 185 -
Pravila gnezdenja SELECT stavkov…
 Vgnezdeni SELECT stavki ne smejo uporabljati
ORDER BY sklopa.
 SELECT sklop vgnezdenega SELECT stavka lahko
zajema samo en stolpec, razen v primeru
uporabe ukaza EXISTS.
 Imena stolpcev v vgnezdenem SELECT stavku se
privzeto nanašajo na tabele iz vgnezdenega ali
zunanjega SELECT stavka (uporaba alias-ov)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 186 -
Pravila gnezdenja SELECT stavkov
 Ko je vgnezden SELECT stavek operand v
primerjavi, se mora nahajati na desni strani
enačbe.
 Vgnezdeni SELECT stavek ne more biti operand v
izrazu.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 187 -
Uporaba ANY in ALL
 V vgnezedenih SELECT stavkih, ki vračajo en sam
stolpec, lahko uporabljamo operatorja ANY in
ALL.
 Z uporabo ALL bo pogoj izpolnjen samo, če bo
veljal za vse vrednosti, ki ji vrača poizvedba.
 Z uporabo ANY, bo pogoj izpolnjen, če bo veljal
za vsaj eno od vrednosti, ki ji poizvedba vrača.
 Če je rezultat poizvedbe prazen, bo ALL vrnil
true, ANY pa false.
 Namesto ANY lahko uporabljamo tudi SOME.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 188 -
Primer uporabe ANY
 Izpiši številke sob ter pripadajočih hotelov,
katerih cena je večja kot cena vsaj ene sobe v
hotelu ‘Hilton New York’ (hotelNo = ‘HIL’).
SELECT hotelNo, roomNo
FROM Room
WHERE price > ANY
(SELECT price
FROM Room
WHERE hotelNo = ‘HIL’)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 189 -
Primer uporaba ALL
 Izpiši številke sob ter pripadajočih hotelov,
katerih cena je večja kot cena katerekoli sobe v
hotelu ‘Hilton New York’ (hotelNo = ‘HIL’).
SELECT hotelNo, roomNo
FROM Room
WHERE price > ALL
(SELECT price
FROM Room
WHERE hotelNo = ‘HIL’)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 190 -
Poizvedbe po več tabelah...
 Poizvedbe po več tabelah lahko izvajamo z
uporabo vgnezdenih SELECT stavkov
 Omejitev: stolpci v rezultatu so lahko le iz ene
tabele
 V poizvedbah, ki vračajo stolpce različnih tabel,
moramo uporabljati stik.
 Stik izvedemo tako, da v sklopu FROM navedemo
tabele, v sklopu WHERE pa določimo stolpce za
stik.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 191 -
Poizvedbe po več tabelah...
 Za tabele v razdelku FROM lahko uvedemo
sinonime (alias).
 Sintaksa:
SELECT H.hotelNo, R.roomNo
FROM Hotel H, Room R
...
 Sinonimi so potrebni za ločevanje med
istoimenskimi stolpci različnih tabel.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 192 -
Primer poizvedbe po dveh tabelah
 Izpiši številke, tip in cene sob v hotelu z nazivom
‘Hilton New York’
SELECT R.roomNo, R.type, R.price
FROM Room R, Hotel H
WHERE R.hotelNo = H.hotelNo AND
H.hotelName = ‘Hilton New York’
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 193 -
Primer poizvedbe po več tabelah
 Izpiši imena in naslove gostov, ki imajo za termin
od 1.1.2005 do 6.1.2005 rezervacije v hotelu
‘Hilton New York’
SELECT G.guestName, G.guestAddress
FROM Guest G, Booking B, Hotel H
WHERE B.guestNo = G.guestNo AND
B.hotelNo = H.hotelNo AND
B.fromDate = ‘1.1.2005’ AND
B.toDate = ‘6.1.2005’ AND
H.hotelName = ‘Hilton New York’
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 194 -
Alternativni načini stika več tabel
 SQL omogoča alternativne načine stika med več
tabelami:
– FROM Room R JOIN Hotel H ON R.hotelNo = H.hotelNo
– FROM Room JOIN Hotel USING hotelNo
– FROM Room NATURAL JOIN Hotel
 Zgornji zapisi nadomestijo sklopa FROM in
WHERE
 V prvem primeru rezultat vsebuje dva identična
stolpca hotelNo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 195 -
Računanje stika...
 Stik predstavlja podmnožico kartezijskega
produkta
 Če pri navedbi dveh tabel A in B v FROM sklopu
ne navedemo stika v WHERE sklopu, dobimo
kartezijski produkt med A in B.
 ISO standard nudi posebno obliko zapisa za
kartezijski produkt:
SELECT [DISTINCT | ALL] {* | columnList}
FROM Table1 CROSS JOIN Table2
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 196 -
Računanje stika
 V splošnem je postopek za generiranje rezultata
SELECT stavka s stikom naslednji:
– Sestavi kartezijski produkt tabel, ki so naštete v sklopu
FROM
– Če obstaja WHERE sklop, upoštevaj vse pogoje in iz
kartezijskega produkta izberi samo tiste vrstice, ki pogojem
ustrezajo (selekcija)
– Iz izbranih vrstic kartezijskega produkta izberi samo tiste
stolpce, ki ustrezajo naboru v SELECT sklopu (projekcija)
– Če je bil uporabljen DISTINCT operator, eliminiraj dvojnike
(del projekcije)
– Če obstaja ORDER BY sklop, ustrezno razvrsti vrstice
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 197 -
Zunanji stik...
 S pomočjo zunanjega stika dobimo v rezultat tudi
vrstice, ki nimajo stične vrednosti v drugi tabeli.
R=OSEBA
S=KRAJ
ID
Priimek in ime
PTT
PTT
Naziv
1
Kante Janez
5270
1000
Ljubljana
2
Tratnik Jože
5000
5000
Nova Gorica
3
Mali Mihael
5270
Ajdovščina
4
Brecelj Jana
1000
(Priimek in ime, PTT, Naziv zač.preb.(R))
Priimek in ime
PTT
Naziv zač. preb.
Kante Janez
5270
Ajdovščina
Tratnik Jože
5000
Nova Gorica
1000
Ljubljana
Mali Mihael
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Brecelj Jana
- 198 -
S
Zunanji stik
 Za zapis SELECT stavka, ki vsebuje zunanji stik
med dvema tabelama, uporabimo naslednjo
sintakso:
SELECT DISTINCT H.hotelName
FROM Hotel H LEFT JOIN
Booking B ON H.hotelNo = B. hotelNo
Kaj izpiše zgornja poizvedba?
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 199 -
Polni zunanji stik
 SQL omogoča tudi izvedbo polnega zunanjega
stika (Full Outer Join)
 Polni zunanji stik med tabelama A in B kot
rezultat vrne tudi tiste vrstice, ki v tabeli A ali B
nimajo stičnega para.
 Sintaksa:
SELECT DISTINCT G.guestName, H.hotelName
FROM Hotel H FULL JOIN Guest G
ON H.address = G.guestAddress
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 200 -
Uporaba EXISTS in NOT EXISTS
 EXISTS in NOT EXISTS lahko uporabljamo le v
vgnezdenih poizvedbah.
 Vračajo logičen rezultat true/false.
– True dobimo, če obstaja vsaj ena vrstica v tabeli, ki je
rezultat vgnezdene poizvedbe.
– False dobimo, če vgnezdena poizvedba vrača prazno
množico.
 NOT EXISTS je negacija EXISTS.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 201 -
Uporaba EXISTS in NOT EXISTS
 (NOT) EXISTS preveri samo, če v rezultatu
vgnezdene poizvedbe (ne) obstajajo vrstice
 Število stolpcev v SELECT sklopu vgnezdene
poizvedbe je zato irelevantno
 Navadno uporabimo sintakso:
(SELECT * ...)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 202 -
Primer uporabe EXISTS
 Izpiši vse goste, ki so kdaj koli imeli rezervacije v
hotelu Hilton New York.
SELECT guestName, guestAddress
FROM Guest G
Kaj dobimo, če ta pogoj izpustimo?
WHERE EXISTS
(SELECT *
FROM Booking B, Hotel H
WHERE B.guestNo = G.guestNo AND
B.hotelNo = H.hotelNo AND
H.hotelName = ‘Hilton New York’)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 203 -
Namesto EXISTS lahko uporabimo stik
SELECT DISTINCT G.guestName, G.guestAddress
FROM Guest G, Booking B, Hotel H
WHERE B.guestNo = G.guestNo AND
B.hotelNo = H.hotelNo AND
H.hotelName = ‘Hilton New York’)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 204 -
Uporaba operacij nad množicami...
 Rezultate dveh ali več poizvedb lahko združujemo
z ukazi:
– Union (unija),
– Intersection (Presek)
– Difference (EXCEPT) (Razlika)
 Da lahko izvajamo naštete operacije, morata
tabeli A in B biti skladni (domene atributov
morajo biti enake).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 205 -
Uporaba operacij nad množicami
 Sintaksa:
op [ALL] [CORRESPONDING [BY {column1 [, ...]}]]
 Če uporabimo CORRESPONDING BY, se operacija
izvede samo nad poimenovanimi stolpci
 Če uporabimo samo CORRESPONDING brez BY
člena, se operacija izvede nad skupnimi stolpci.
 Če uporabimo ALL, lahko rezultat vključuje tudi
dvojnike
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 206 -
Primer unije
 Izpiši vse mesta, kjer je bodisi lociran kakšen
gost hotelske verige ali kakšen hotel.
(SELECT address
FROM Hotel)
UNION
(SELECT guestAddress
FROM Guest)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 207 -
Kako bo naziv stolpca,
ki ga poizvedba vrne?
Unija z uporabo CORRESPONDING BY
(SELECT *
FROM Hotel)
UNION CORRESPONDING BY address
(SELECT *
!
FROM Guest)
Hotel(hotelNo, hotelName, address)
Guest(guestNo, guestName, address)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 208 -
Primer preseka
 Izpiši vse mesta, kjer je lociran kakšen gost
hotelske verige in obenem kakšen hotel.
(SELECT address
FROM Hotel)
INTERSECTION
(SELECT guestAddress
FROM Guest)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 209 -
Presek z uporabo COORESPONDING BY
(SELECT *
FROM Hotel)
INTERSECT CORRESPONDING BY address
(SELECT *
FROM Guest)
!
Hotel(hotelNo, hotelName, address)
Guest(guestNo, guestName, address)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 210 -
Uporaba EXCEPT
 Izpiši vse mesta, kjer je lociran kakšen gost
hotelske verige in obenem v tem kraju ni
nobenega hotela.
(SELECT guestAddress
FROM Guest)
EXCEPT
(SELECT address
FROM Hotel)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 211 -
EXCEPT z uporabo COORESPONDING BY
(SELECT *
FROM Guest)
EXCEPT CORRESPONDING BY address
(SELECT *
!
FROM Hotel)
Hotel(hotelNo, hotelName, address)
Guest(guestNo, guestName, address)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 212 -
INSERT stavek...
INSERT INTO TableName [ (columnList) ]
VALUES (dataValueList)
 Seznam columnList ni obvezen; če ga spustimo,
interpreter pričakuje vrednosti za vse stolpce
tabele, v vrstnem redu, kot so bili kreirani.
 Pri vnosu moramo vpisati najmanj vse obvezne
vrednosti (not null), razen za stolpce, pri katerih
je bila ob kreiranju določena privzeta vrednost
(DEFAULT).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 213 -
INSERT stavek...
 Seznam dataValueList mora ustrezati seznamu
columnList:
– Število elementov v seznamih mora biti enako;
– Vrednost, ki se nanaša na nek stolpec, mora biti v seznamu
dataValueList na istem mestu, kot je stolpec v seznamu
columnList;
– Podatkovni tip vrednosti, ki se nanaša na nek stolpec, mora
biti enak kot podatkovni tip stolpca.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 214 -
Primeri INSERT stavkov...
 Vnos nove vrstice v tabelo Booking
INSERT INTO Booking
VALUES (21, 109, ’12.12.2005’, ’17.12.2005’,
109, ‘soba za nekadilce’);
 Shema relacije Booking:
Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo,
comments)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 215 -
Primeri INSERT stavkov...
 Vnos nove vrstice v tabelo Booking – vnos samo
obveznih vrednosti
INSERT INTO Booking
VALUES (21, 109, ’12.12.2005’, ’17.12.2005’,
109, null);
stolpec comments je neobvezen
 ali
INSERT INTO Booking (hotelNo, guestNo,
dateFrom, dateTo, roomNo)
VALUES (21, 109, ’12.12.2005’, ’17.12.2005’,
109);
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 216 -
Primeri INSERT stavkov...
 Vnos več vrstic iz ene ali več drugih tabel...
INSERT INTO TableName [ (columnList) ]
SELECT ...
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 217 -
Primeri INSERT stavkov...
 Predpostavimo, da imamo tabelo HotelRez, ki za
vsak hotel pove oznako hotela, naziv hotela in
število trenutno odprtih rezervacij
HotelRez(hotelNo, hotelName, NumRez)
 S pomočjo tabel Hotel in Booking napolnimo
tabelo HotelRez
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 218 -
Primeri INSERT stavkov...
INSERT INTO HotelRez
(SELECT H.hotelNo, H.hotelName, COUNT(*)
FROM Hotel H, Booking B
WHERE H.hotelNo = B.hotelNo AND
B.dateFrom >= date()
GROUP BY H.hotelNo, H.hotelName)
UNION
(SELECT hotelNo, hotelName, 0
FROM Hotel
Kaj se zgodi, če
WHERE hotelNo NOT IN
spodnji
del SQL stavka
(SELECT DISTINCT hotelNo
spustimo?
FROM Booking
WHERE B.dateFrom>=date()));
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 219 -
UPDATE stavek...
UPDATE TableName
SET columnName1 = dataValue1
[, columnName2 = dataValue2...]
[WHERE searchCondition]
 TableName se lahko nanaša na ime osnovne
tabele ali ime pogleda.
 Sklop SET določa nazive enega ali več stolpcev
ter nove vrednosti teh stolpcev.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 220 -
UPDATE stavek
 WHERE sklop je neobvezen:
– Če ga spustimo, se v imenovane stolpce vpišejo nove
vrednosti za vse vrstice v tabeli;
– Če WHERE sklop določimo, se spremembe zgodijo zgolj za
vrstice, ki ustrezajo WHERE pogojem.
 Nove podatkovne vrednosti morajo ustrezati
podatkovnemu tipu stolpca.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 221 -
Primeri UPDATE stavkov
 Vse dvoposteljne sobe v hotelu z oznako 201
povišaj za 5%
UPDATE Room
SET price = price * 1,05
WHERE type = 2 AND hotelNo = 201
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 222 -
DELETE stavek
DELETE FROM TableName
[WHERE searchCondition]
 TableName se lahko nanaša na ime osnovne
tabele ali ime pogleda.
 WHERE sklop ni obvezen. Če ga spustimo,
zbrišemo vse vrstice v tabeli. Tabela ostane.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 223 -
Primeri DELETE stavkov
 Izbriši vse potekle rezervacije, ki se nanašajo na
hotel Slon.
DELETE FROM Booking
WHERE FromDate < ‘25.11.2005’ AND
hotelNo IN (SELECT hotelNo
FROM Hotel
WHERE hotelName = ‘Hotel Slon’
)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 224 -
Stavki skupine SQL DDL...
 DDL skupina zajema SQL stavke za manipulacijo
s strukturo podatkovne baze.
 Kaj si bomo pogledali:
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Podatkovni tipi, ki jih podpira SQL standard.
Namen sklopa “integrity enhancement feature”.
Kako definirati omejitve z SQL-om?
Kako uporabiti “integrity enhancement feature” v CREATE in
ALTER TABLE stavkih?
- 225 -
Stavki skupine SQL DDL...
 Kaj si bomo pogledali (nadaljevanje):
–
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Kako kreirati in brisati poglede z SQL-om?
Kako SUPB izvaja operacije nad pogledi?
Pod kakšnimi pogoji so pogledi spremenljivi?
Prednosti in slabosti pogledov
Način delovanja ISO transakcijskega modela
Uporaba GRANT in REVOKE stavkov v okviru zagotavljanja
varnosti
- 226 -
Podatkovni tipi v SQL standardu
Vir: [2,159]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 227 -
Integrity Enhancement Feature...
 Za zagotavljanje skladnosti podatkov SQL
standard ponuja več vrst omejitev:
– Obveznost podatkov
– Omejitve domene (Domain constraints)
– Pravila za celovitost podatkov (Integrity constraints)
 Celovitost entitet (Entity Integrity)
 Celovitost povezav (Referential Integrity)
– Števnost (Multyplicity)
– Splošne omejitve (General constraints)
 Omejitve so lahko definirane v CREATE in ALTER
TABLE stavkih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 228 -
Integrity Enhancement Feature...
 Obveznost podatkov
hotelNo
Numeric(3) NOT NULL
 Omejitve domene
CHECK
spol CHAR NOT NULL
CHECK (spol IN (‘M’, ‘Ž’))
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 229 -
Integrity Enhancement Feature...
 CREATE DOMAIN
CREATE DOMAIN DomainName [AS] dataType
[DEFAULT defaultOption]
[CHECK (searchCondition)]
Primer:
CREATE DOMAIN Tspol AS CHAR
CHECK (VALUE IN (‘M’, ‘Ž’));
Spol Tspol NOT NULL
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 230 -
Integrity Enhancement Feature...
 searchCondition lahko vsebuje iskalno tabelo
(lookup table):
CREATE DOMAIN guestNo AS CHAR(4)
CHECK (VALUE IN (SELECT guestNo FROM
Guest));
 Domeno lahko ukinemo z uporabo stavka DROP
DOMAIN:
DROP DOMAIN DomainName
[RESTRICT | CASCADE]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 231 -
Kaj naj se zgodi, če je
domena trenutno v uporabi
IEF – Celovitost entitet
 Primarni ključ tabele mora vsebovati enolično
neprazno vrednost v vsaki vrstici tabele.
 ISO standard podpira tuje ključe s sklopom
FOREIGN KEY v okviru CREATE in ALTER TABLE
stavkov.
PRIMARY KEY(hotelNo, roomNo)
 Vsaka tabela ima lahko največ en primarni ključ.
Enoličnost neosnovnih stolpcev lahko
zagotavljamo z uporabo UNIQUE
UNIQUE(priimek)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 232 -
IEF – Celovitost povezav...
 FK (tuji ključ) je stolpec ali množica stolpcev, ki
povezujejo vsako vrstico tabele A z vrstico
referenčne tabele B, kjer se ujemajo vrednosti
A.FK = B.PK.
 Celovitost povezav zagotavlja, da če ima FK neko
vrednost, potem se ta vrednost nahaja v
primarnem ključu povezane tabele.
 ISO standard omogoča definicijo tujih ključev s
sklopom FOREIGN KEY v CREATE in ALTER
TABLE
FOREIGN KEY(hotelNo) REFERENCES Hotel
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 233 -
IEF – Celovitost povezav...
 Vsak INSERT/UPDATE stavek, ki skuša kreirati FK
vrednost v tabeli, brez da bi ta vrednost obstajala
kot PK v povezani tabeli, je zavrnjen.
 Ob zavrnitvi so možne naslednje akcije
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
CASCADE
SET NULL
SET DEFAULT
NO ACTION
- 234 -
IEF – Celovitost povezav...
 Določimo z uporabo ON UPDATE, ON DELETE
ON UPDATE SET NULL
 Primeri:
FOREIGN KEY (hotelNo) REFERENCES Hotel
ON DELETE SET NULL
FOREIGN KEY (guestNo) REFERENCES Guest
ON UPDATE CASCADE
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 235 -
IEF – Splošne omejitve
 Splošne omejitve določimo z CHECK/UNIQUE
opcijami v CREATE in ALTER TABLE stavkih.
CREATE ASSERTION AssertionName
CHECK (searchCondition)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 236 -
IEF – Splošne omejitve – primer
CREATE ASSERTION PrevecRezervacij
CHECK (NOT EXISTS (SELECT hotelNo, dateFrom,
roomNo
FROM Booking
GROUP BY hotelNo dateFrom,
roomNo
HAVING COUNT(*) > 1))
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 237 -
Kreiranje podatkovnih objektov...
 SQL DDL omogoča kreiranje in brisanje
podatkovnih objektov, kot so: shema, domena,
tabela, pogled in indeks.
 Glavni SQL DDL stavki so:
CREATE SCHEMA
CREATE/ALTER DOMAIN
CREATE/ALTER TABLE
CREATE VIEW
DROP
DROP
DROP
DROP
SCHEMA
DOMAIN
TABLE
VIEW
 Mnogi SUPB-ji omogočajo tudi
CREATE INDEX
DROP INDEX
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 238 -
Kreiranje podatkovnih objektov...
 Relacije in drugi podatkovni objekti obstajajo v
nekem okolju.
 Vsako okolje vsebuje enega ali več katalogov,
vsak katalog pa množico shem.
 Shema je poimenovana kolekcija povezanih
podatkovnih objektov.
 Objekti v shemi so lahko tabele, pogledi,
domene, trditve, dodelitve, pretvorbe in znakovni
nizi. Vsi objekti imajo istega lastnika.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 239 -
Kreiranje sheme
CREATE SCHEMA [Name |
AUTHORIZATION CreatorId ]
DROP SCHEMA Name [RESTRICT | CASCADE ]
 RESTRICT (privzeto): shema mora biti prazna,
sicer brisanje ni možno.
 CASCADE: kaskadno se brišejo vsi objekti,
povezani s shemo. Če katerokoli brisanje ne
uspe, se zavrne celotna operacija.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 240 -
Kreiranje tabele...
CREATE TABLE TableName
({colName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption]
[CHECK searchCondition] [,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns),] […,]}
{[FOREIGN KEY (listOfFKColumns)
REFERENCES ParentTableName [(listOfCKColumns)],
[ON UPDATE referentialAction]
[ON DELETE referentialAction ]] [,…]}
{[CHECK (searchCondition)] [,…] })
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 241 -
Primer kreiranja tabele...
Najprej kreiramo domene
CREATE DOMAIN hotelNumber AS NUMERIC(3)
CHECK (VALUE IN (SELECT hotelNo FROM Hotel));
CREATE DOMAIN guestNumber AS NUMERIC(3)
CHECK (VALUE IN (SELECT guestNo FROM Guest));
CREATE DOMAIN rezervDate AS DATE;
CHECK(VALUE BETWEEN ‘1.1.1995’ AND ‘1.1.2200’);
CREATE DOMAIN roomNumber AS INTEGER;
CHECK(VALUE BETWEEN 100 AND 545);
CREATE DOMAIN comments AS VARCHAR(100);
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 242 -
Primer kreiranja tabele...
potem kreiramo tabelo
CREATE TABLE Booking (
hotelNo
hotelNumber NOT NULL,
CONSTRAINT PrevecRezervacij…
guestNo guestNumber NOT NULL,
dateFrom rezervDate NOT NULL
DEFAULT date(),
dateTo
rezervDate NOT NULL,
roomNo roomNumber NOT NULL,
comments comments,
PRIMARY KEY (hotelNo),
FOREIGN KEY (guestNo) REFERENCES Guest
ON DELETE SET NULL ON UPDATE CASCADE …);
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 243 -
ALTER TABLE stavek...
 S stavkom ALTER TABLE lahko:
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Dodajamo ali ukinjamo stolpce v tabeli;
Dodajamo ali ukinemo omejitve tabele;
Za stolpce v tabeli določamo ali ukinjamo privzete vrednosti;
Spreminjamo podatkovne tipe stolpcev v tabeli;
- 244 -
Primeri ALTER TABLE stavkov...
 Spremeni tabelo Booking tako, da ukineš privzeto
vrednost stolpca fromDate.
ALTER TABLE Booking
ALTER fromDate DROP DEFAULT;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 245 -
Primeri ALTER TABLE stavkov...
 Spremeni tabelo Booking tako, da ukineš
omejitev, da nobena soba nobenega hotela ne
sme imeti več kot eno rezervacijo na isti dan. V
tabelo Gost dodaj stolpec Spol.
ALTER TABLE Booking
DROP CONSTRAINT prevecRezervacij;
ALTER TABLE Gost
ADD Spol NOT NULL DEFAULT = ‘M’;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 246 -
Stavek DROP TABLE
 S pomočjo stavka DROP TABLE ukinemo tabelo.
Obenem se zbrišejo vsi zapisi tabele.
DROP TABLE TableName [RESTRICT | CASCADE]
 Restrict: Ukaz se ne izvede, če obstajajo objekti,
ki so vezani na tabelo, ki jo brišemo.
 Cascade: kaskadno se brišejo vsi vezani objekti.
 Primer:
DROP TABLE Gost RESTRICT;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 247 -
Stavek CREATE VIEW...
CREATE VIEW ViewName [ (newColumnName [,...]) ]
AS subselect
[WITH [CASCADED | LOCAL] CHECK OPTION]
 Vsakemu stolpcu pogleda lahko dodelimo novo
ime.
 Če določimo imena stolpcev, potem morajo stolpci
SELECT stavka ustrezati stolpcem pogleda.
 Če imena stolpcev ne določimo, se uporabijo imena
stolpcev iz SELECT stavka.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 248 -
Stavek CREATE VIEW...
 WITH CHECK OPTION: zagotavlja, da če vrstica
ne izpolnjuje WHERE pogoja, ni dodana v
osnovno tabelo, nad katero je pogled osnovan.
 Potrebujemo SELECT privilegij nad vsemi
tabelami, uporabljenimi v SELECT stavku ter
USAGE privilegij nad vsemi domenami, ki jih
uporabljajo stolpci SELECT stavka.
 Pogled ukinemo z ukazom DROP VIEW
DROP VIEW ViewName [RESTRICT | CASCADE]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 249 -
Primer horizontalnega pogleda
 Kreiraj pogled RecepcijaSlon tako, da bodo v
recepciji hotela Slon videli samo svoje
rezervacije.
CREATE VIEW RecepcijaSlon
AS SELECT *
FROM Booking B, Hotel H
WHERE B.hotelNo = H.hotelNo AND
H.hotelName = ‘Hotel Slon’;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 250 -
Primer vertikalnega pogleda
 Izdelaj pogled vseh sob hotela Slon brez cen.
CREATE VIEW RoomsSlon
AS SELECT R.roomNo, R.type
FROM Room R, Hotel H
WHERE R.hotelNo = H.hotelNo AND
H.hotelName = ‘Hotel Slon’;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 251 -
Primer pogleda z grupiranjem
CREATE VIEW HotelRez (hNo, hName, hStRez)
AS (
SELECT H.hotelNo, H.hotelName, COUNT(*) AS Cnt
FROM Hotel H, Booking B
WHERE H.hotelNo = B.hotelNo AND
B.dateFrom >= date()
GROUP BY H.hotelNo, H.hotelName)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 252 -
Izvedba pogleda...
 Imamo naslednji SELECT stavek
SELECT hNo, hName, hStRez
View HotelRez
FROM HotelRez
WHERE hNo = 201
CREATE VIEW
HotelRez (hNo, hName, hStRez)
ORDER BY hName
AS
SELECT H.hotelNo, H.hotelName, COUNT(*) AS Cnt
FROM Hotel H, Booking B
WHERE H.hotelNo = B.hotelNo AND
B.dateFrom >= date()
GROUP BY H.hotelNo, H.hotelName
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 253 -
Izvedba pogleda...
 (I) Imena stolpcev pogleda iz SELECT stavka so
prevedena v imena SELECT stavka, ki definira
pogled:
SELECT hNo, hName, hStRez
SELECT H.hotelNo, H.hotelName, COUNT(*) AS Cnt
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 254 -
Izvedba pogleda...
 (II) Imena iz FROM sklopa pogleda so zamenjana
z imeni FROM sklopa SELECT stavka, ki definira
pogled:
FROM HotelRez
FROM Hotel H, Booking B
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 255 -
Izvedba pogleda...
 (III) WHERE sklop SELECT stavka se združi z
WHERE sklopom iz SELECT stavka, ki definira
pogled:
WHERE hNo = 201 AND
H.hotelNo = B.hotelNo AND
B.dateFrom >= date()
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 256 -
Izvedba pogleda...
 (IV) GROUP BY in HAVING sklop se kopirata iz
SELECT stavka, ki definira pogled:
GROUP BY H.hotelNo, H.hotelName
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 257 -
Izvedba pogleda...
 (V) ORDER BY se kopira iz SELECT stavka. Imena
stolpcev se zamenjajo z imeni stolpcev iz SELECT
stavka, ki definira pogled
ORDER BY hName
ORDER BY H.hotelName
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 258 -
Izvedba pogleda...
 Po prevedbi dobimo stavek:
SELECT H.hotelNo, H.hotelName, COUNT(*) AS Cnt
FROM Hotel H, Booking B
WHERE hNo = 201 AND
H.hotelNo = B.hotelNo AND
B.dateFrom >= date()
GROUP BY H.hotelNo, H.hotelName
ORDER BY H.hotelName
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 259 -
Omejitve pogledov...
 Pri kreiranju in uporabi pogledov veljajo številne
omejitve:
– Če je stolpec A v pogledu V definiran z agregatno funkcijo:
 Stolpec A lahko nastopa le v SELECT ali ORDER BY sklopu v
stavkih, ki do pogleda V dostopajo;
 Stolpec A ne smemo uporabiti v WHERE sklopu niti ne sme
nastopati kot argument v agregatni funkciji poizvedbe nad
pogledom V.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 260 -
Primeri
SELECT COUNT(hStRez)
FROM HotelRez;
SELECT *
FROM HotelRez
WHERE hStRez > 2;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 261 -
Omejitve pogledov...
 Omejitve pogledov (nadaljevanje):
– Pogled, ki je kreiran z združevanjem (GROUP BY), ne smemo
stakniti z osnovno tabelo ali pogledom.
SELECT hNo, hName, hStRez
FROM HotelRez HR, Booking B
WHERE HR.hNo = B.hotelNo
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 262 -
Omejitve pogledov...
 Spreminjanje vsebine pogledov ni vedno možno
 Veljajo mnoge omejitve
 Primer
INSERT INTO HotelRez
VALUES (201, ‘HotelSlon’, 2);
 V osnovno tabelo Booking bi morali dodati dve
rezervaciji, ki se nanašati na hotel Slon. Nimamo
dovolj podatkov!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 263 -
Omejitve pogledov...
 ISO standard določa, da je pogled možno
spreminjati samo, če veljajo naslednji pogoji:
– Opcija DISTINCT v pogledu ni uporabljena;
– Vsak element v SELECT seznamu stavka, ki definira pogled,
se nanaša na stolpec ene izmed osnovnih tabel; noben
stolpec se ne pojavi več kot enkrat;
– FROM sklop v pogledu se nanaša samo na eno tabelo ali
pogled, pri čemer pogled ne sme temeljiti na stiku, uniji,
preseku ali razliki;
– V pogledu ni vgnezdenih poizvedb;
– Sklopa GROUP BY in HAVING v pogledu nista uporabljena;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 264 -
Uporaba WITH CHECK OPTION…
 Vrstice v pogledu obstajajo, ker izpolnjujejo
WHERE pogoj SELECT stavka, ki pogled definira.
 Če se vrstica spremeni in ne zadošča več pogoju,
izgine iz pogleda.
 Nove vrstice se v pogledu pojavijo le, če
zadoščajo WHERE pogoju.
 Vrstice, ki vstopijo ali zapustijo pogled,
imenujemo selitvene vrstice (migrating rows).
 WITH CHECK OPTION prepoveduje selitev vrstic
iz pogleda.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 265 -
Uporaba WITH CHECK OPTION…
 Za vpliv nad hierarhijo pogledov sta na voljo
opciji LOCAL in CASCADED.
 CASCADED (privzeto): nobeno dodajanje/
spreminjanje vrstice pogleda V ali vrstice
kateregakoli drugega pogleda, ki direktno ali
indirektno izhaja iz pogleda V, ne sme povzročiti,
da bi se ta vrstica, dodana ali spremenjena, selila
iz pogleda V.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 266 -
Uporaba WITH CHECK OPTION…
 LOCAL: nobeno dodajanje/spreminjanje vrstice
pogleda V ali vrstice kateregakoli drugega
pogleda, ki direktno ali indirektno izhaja iz
pogleda V, ne sme povzročiti, da bi se ta vrstica,
dodana ali spremenjena, selila iz pogleda V,
razen če se seli tudi iz nadrejene tabele ali
pogleda.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 267 -
Primer
CREATE VIEW DvoposteljneSobe
AS SELECT hotelNo, roomNo, type, price
FROM Room
WHERE type = 2
WITH CHECK OPTION;
 Ne moremo spremeniti sobe iz dvo v eno
posteljno, ker bi s tem povzročili selitev vrstice iz
pogleda.
 Ne moremo vnesti nove sobe v pogled, ki ne bi
bila dvoposteljna.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 268 -
Prednosti in slabosti pogledov
 PREDNOSTI
–
–
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
 SLABOSTI:
Podatkovna neodvisnost
Ažurnost
Večja varnost
Manjša kompleksnost
Udobnost
Prilagodljivost
Podatkovna celovitost
– Omejitve spreminjanja
– Omejitve strukture
– Slabša učinkovitost
- 269 -
Materializirani pogledi
 Postopek za izvedbo pogleda je lahko počasen,
še posebej pri pogostem dostopanju do pogleda.
 Materializirani pogled ob prvi uporabi shrani
pogled kot začasno tabelo za kasnejšo rabo.
 Ob kasnejši rabi večja učinkovitost.
 Problem vzdrževati ažurno stanje, če se osnovne
tabele pogosto spreminjajo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 270 -
Vzdrževanje materializiranega pogleda
 Zagotavljanje ažurnosti v materializiranem
pogledu imenujemo vzdrževanje pogleda.
 Prenašamo samo tiste spremembe, ki so
potrebne, da je pogled ažuren.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 271 -
Vaja
 Napiši poizvedbo v SQL jeziku, ki bo izpisala
naziv hotela z najvišjo povprečno ceno hotelskih
sob.
SELECT H.hotelName, avg(R.price) AS AvgPrice
FROM Room AS R, Hotel AS H
WHERE R.hotelNo = H.hotelNo
GROUP BY R.hotelNo, H.hotelName
HAVING avg(R.price) = (SELECT max(AvgPrice) AS maxAvgPrice
FROM (SELECT R.hotelNo, avg(R.price) AS AvgPrice
FROM Room AS R
GROUP BY R.hotelNo))
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 272 -
Transakcije…
 SQL definira transakcijski model z ukazoma
COMMIT in ROLLBACK.
 Transakcija je logična enota dela z enim ali več
SQL ukazi. S stališča zagotavljanja skladnega
stanja je atomarna.
 Spremembe, ki so narejene znotraj poteka
transakcije, niso vidne navzven drugim
transakcijam, dokler transakcija ni končana.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 273 -
Transakcije...
 Transakcija se lahko zaključi na enega od štirih
načinov:
– Transakcija se uspešno zaključi s COMMIT; spremembe so
permanentne.
– Transakcija se prekine z ROLLBACK; spremembe, narejene s
transakcijo, se razveljavijo.
– Program, znotraj katerega se izvaja transakcija, se uspešno
konča. Transakcija je potrjena implicitno (brez COMMITa).
– Program, znotraj katerega se izvaja transakcija, se ne konča
uspešno. Transakcija se implicitno razveljavi (brez
ROLLBACKa).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 274 -
Transakcije
 Nova transakcija se začne z novim SQL stavkom,
ki transakcijo inicira.
 SQL transakcij ne moremo gnezditi.
 Transakcijo nastavimo s pomočjo ukaza SET
TRANSACTION
SET TRANSACTION
[READ ONLY | READ WRITE] |
[ISOLATION LEVEL READ UNCOMMITTED |
READ COMMITTED|REPEATABLE READ
|SERIALIZABLE ]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 275 -
Transakcije…
 READ ONLY – pove, da transakcija vključuje
samo operacije, ki iz baze berejo.
– SUPB bo dovolil INSERT, UPDATE in DELETE samo nad
začasnimi tabelami.
 ISOLATION LEVEL – pove stopnjo interakcije, ki
jo SUPB dovoli med to in drugimi transakcijami.
– Podrobnosti glej [2, 188-189]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 276 -
Takojšnje in zapoznele omejitve...
 Včasih želimo, da se omejitve ne bi upoštevale
takoj, po vsakem SQL stavku, temveč ob
zaključku transakcije.
 Omejitve lahko definiramo kot
– INITIALLY IMMEDIATE – ob začetku transakcije;
– INITIALLY DEFERRED – ob zaključku transakcije.
 Če izberemo INITIALLY IMMEDIATE (privzeta
možnost), lahko določimo tudi, ali je zakasnitev
moč določiti kasneje. Uporabimo [NOT]
DEFERRABLE.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 277 -
Takojšnje in zapoznele omejitve
 Način upoštevanja omejitev za trenutno
transakcijo nastavimo z ukazom SET
CONSTRAINTS.
SET CONSTRAINTS
{ALL | constraintName [, . . . ]}
{DEFERRED | IMMEDIATE}
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 278 -
Nadzor dostopa...
 Ena od pomembnih nalog SUPB je zagotoviti
varnost dostopa do podatkovne baze.
 Večina današnjih SUPB omogoča eno ali obe od
naslednjih možnosti:
– Subjektivno določen nadzor dostopa (Discretionary access
control)
– Obvezen nadzor dostopa (Mandatory access control)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 279 -
Nadzor dostopa...
 Subjektivno določen nadzor dostopa:
– vsak uporabnik ima določene dostopne pravice (privilegije)
nad dostopom do objektov podatkovne baze.
– Tipično uporabnik pravice dobi, ko kreira objekt.
– Pravice lahko posreduje drugim uporabnikom na osnovi
lastne presoje.
– Tak način nadzora je tvegan.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 280 -
Nadzor dostopa
 Obvezen nadzor dostopa:
– vsak objekt podatkovne baze ima določeno stopnjo
zaupnosti (npr. zaupno, strogo zaupno,...),
– vsak subjekt (uporabnik, program) potrebuje za delo z
objektom določeno raven zaupanja (clearance level).
– Za različne operacije (branje, pisanje, kreiranje,...) nad
objekti podatkovne baze lahko subjekti potrebujejo različne
nivoje zaupanja
– Ravni zaupanja so strogo urejene
– Značilno za varovana okolja, npr. vojska
– Eden znanih modelov takega nadzora je Bell-LaPadula
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 281 -
Nadzor dostopa in SQL...
 Vsak uporabnik podatkovne baze ima dodeljeno
določeno pooblastilo (authorisation), ki mu ga
dodeli skrbnik podatkovne baze (DBA
Administrator). Pooblastilo je obenem tudi
identifikator uporabnika.
 Navadno se za pooblastilo uporablja uporabniško
ime ter geslo.
 SQL omogoča preverjanje pooblastila, s čimer
identificira uporabnika.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 282 -
Nadzor dostopa in SQL...
 Vsak SQL stavek, ki ga SUPB izvede, se izvede na
zahtevo določenega uporabnika.
 Preden SUPB SQL stavek izvede, preveri
dostopne pravice uporabnika nad objekti, na
katere se SQL nanaša.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 283 -
Nadzor dostopa in SQL...
 Vsak objekt, ki ga z SQL-om kreiramo, ima
lastnika.
 Lastnika identificiramo na osnovi pooblastila, ki je
določeno v shemi, kateri objekt pripada, in sicer
v sklopu AUTHORIZATION
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 284 -
Nadzor dostopa in SQL...
 Dostopne pravice ali privilegiji določajo, kakšne
operacije so uporabniku dovoljene nad določenim
objektom podatkovne baze.
 SQL standard pozna naslednje pravice:
–
–
–
–
–
SELECT – pravica branja podatkov
INSERT – pravica dodajanja podatkov
UPDATE – pravica spreminjanja podatkov (ne tudi brisanja)
DELETE – pravica brisanja podatkov
REFERENCES – pravica sklicevanja na stolpce določene
tabela v omejitvah
– USAGE – pravica uporabe domen, sinonimov, znakovnih
nizov in drugih posebnih objektov podatkovne baze
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 285 -
Nadzor dostopa in SQL...
 Pravice v zvezi z dodajanjem (INSERT) in
spreminjanjem (UPDATE) tabel ali pogledov so
lahko določene na ravni stolpcev tabele/pogleda.
 Enako velja za pravice sklicevanja (REFERENCES)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 286 -
Nadzor dostopa in SQL...
 Ko uporabnik kreira tabelo s CREATE TABLE
avtomatsko postane lastnik tabele z vsemi
pravicami.
 Ostalim uporabnikom dodeli pravice z ukazom
GRANT.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 287 -
Nadzor dostopa in SQL...
 Ko uporabnik kreira pogled s CREATE VIEW
avtomatsko postane lastnik, ne dobi pa nujno
vseh pravic.
 Za kreiranje pogleda potrebuje SELECT pravice
nad tabelami, iz katerih sestavlja pogled, ter
REFERENCES pravice nad tabelami, katerih
stolpce uporablja v definiciji omejitev.
 Ob kreiranju pogleda dobi pravice INSERT,
UPDATE in DELETE, če te pravice ima nad vsemi
tabelami, ki jih pogled zajema.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 288 -
Nadzor dostopa in SQL...
 Uporaba ukaza GRANT
GRANT {PrivilegeList | ALL PRIVILEGES}
ON ObjectName
TO {AuthorizationIdList | PUBLIC}
[WITH GRANT OPTION]
 PrivilegeList – je sestavljen iz ene ali več pravic,
ločenih z vejico (INSERT, UPDATE,...)
 ALL PRIVILEGES – dodeli vse pravice.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 289 -
Nadzor dostopa in SQL...
 PUBLIC – omogoča dodelitev pravic vsem
trenutnim in bodočim uporabnikom.
 ObjectName – se nanaša na osnovno tabelo,
pogled, domeno, znakovni niz, dodelitve in
prevedbe.
 WITH GRANT OPTION – dovoljuje, da uporabnik
naprej dodeljuje pravice.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 290 -
Primer dodeljevanja pravic...
 Vsem Vodjem oddelkov dodaj vse pravice nad
tabelo Delavec.
GRANT ALL PRIVILEGES
ON Delavec
TO VodjaOddelka WITH GRANT OPTION;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 291 -
Primer dodeljevanja pravic
 Uporabnikom Osebje in Direktor dodeli SELECT in
UPDATE pravice nad stolpcem Plača v tabeli
Delavec.
GRANT SELECT, UPDATE (Plača)
ON Delavec
TO Osebje, Direktor;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 292 -
Nadzor dostopa in SQL...
 Z ukazom REVOKE pravice odvzamemo
REVOKE [GRANT OPTION FOR]
{PrivilegeList | ALL PRIVILEGES}
ON ObjectName
FROM {AuthorizationIdList | PUBLIC}
[RESTRICT | CASCADE]
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 293 -
Nadzor dostopa in SQL...
 ALL PRIVILEGES določa vse pravice, ki jih je
uporabnik, ki REVOKE uporabi, dodelil
uporabniku ali uporabnikom, na katere se
REVOKE nanaša.
 GRANT OPTION FOR – omogoča, da se pravice,
ki so bile dodeljene prek opcije WITH GRANT
OPTION ukaza GRANT, odvzema posebej in ne
kaskadno.
 RESTRICT, CASCADE – enako kot pri ukazu
DROP
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 294 -
Nadzor dostopa in SQL...
 REVOKE ukaz ne uspe, kadar SUPB ugotovi, da bi
njegova izvedba povzročila zapuščenost
objektov:
– Za kreiranje določenih objektov so lahko potrebne pravice.
Če take pravice odstranimo, lahko dobimo zapuščene
objekte.
– Če uporabimo opcijo CASCADE, bo REVOKE ukaz uspel tudi
v primeru, da privede do zapuščenih objektov. Kot posledica
bodo ti ukinjeni.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 295 -
Nadzor dostopa in SQL...
 Če uporabnik Ua odvzema pravice uporabniku Ub
potem pravice, ki so bile uporabniku Ub
dodeljene s strani drugih uporabnikov, ne bodo
odvzete.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 296 -
Primer odvzemanja pravic...
 Odvzemi SELECT pravice nad tabelo Delavec
vsem uporabnikom.
REVOKE SELECT
ON Delavec
FROM PUBLIC;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 297 -
Primer odvzemanja pravic
 Uporabnikom iz skupine Osebje in Direktor
odvzemi vse pravice na tabelo Delavec.
REVOKE ALL PRIVILEGES
ON Delavec
FROM Osebje, Direktor;
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 298 -
QBE – Query-By-Example...
 Vizualen način dostopa do podatkov podatkovne
baze z uporabo vzorcev poizvedb.
 Z vzorcem povemo, kakšni podatki nas iz
podatkovne baze zanimajo.
 QBE originalno razvil IBM v 70’ letih. Včasih zelo
popularen. Večina SUPB ga nudi.
 Poizvedbo, ki jo uporabnik napiše v QBE, se v
ozadju prevede v SQL poizvedbo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 299 -
QBE – Query-By-Example...
 QBE uporabnikom omogoča:
–
–
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Poizvedovati po podatkih ene ali več tabel.
Določiti stolpce, ki jih želimo imeti v odgovoru (projekcija).
Določiti kriterije za izbiro vrstic (selekcija).
Izvajati izračune nad podatki v tabelah.
Dodajati in brisati zapise.
Spreminjati vrednosti v poljih.
Kreirati nove tabele in stolpce.
- 300 -
QBE – Query-By-Example...
 Primeri iz Accessa
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 301 -
Primeri iz Access-a...
 Poizvedba SELECT
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 302 -
Primeri iz Access-a...
 Poizvedba SELECT
 določitev kriterija (selekcija)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 303 -
Primeri iz Access-a...
 Poizvedba SELECT
 Stik tabel
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 304 -
Primeri iz Access-a...
 Poizvedba SELECT
 Uporaba agregatov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 305 -
Primeri iz Access-a...
 Poizvedba SELECT
 Uporaba parametrov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 306 -
Primeri iz Access-a...
 Poizvedba SELECT
 Uporaba “Autolookup”
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 307 -
Primeri iz Access-a...
 Posebne vrste SQL stavkov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 308 -
Primeri iz Access-a...
 Poizvedba SELECT
 Uporaba “Crosstab” poizvedbe
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 309 -
Primeri iz Access-a...
 Kreiranje nove tabele
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 310 -
Primeri iz Access-a...
 Brisanje zapisov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 311 -
Primeri iz Access-a
 Spreminjanje zapisov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 312 -
Povzeto po [1] in [5]
Poglavje 3
Shramba in indeksiranje podatkov





Diski in diskovna polja
Upravljanje z diskom in pomnilnikom
Organizacija datotek in indeksiranje
Indeksi na osnovi drevesne strukture
Hash-indeks
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 313 -
P 3.1
Diski in diskovna polja
Kaj si bomo pogledali?
 Komponente SUPB za delo s podatki
 Sestava in delovanje trdih diskov
 Polja diskov in RAID sistemi
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 314 -
Komponente SUPB za delo s podatki…
 Podatki iz PB se hranijo na diskih (in trakovih).
 Upravljalec prostora na disku (Disk Space
Manager):
– enota, ki upravlja s prostorom na disku,
– ukaze v zvezi z zaseganjem in sproščanjem prostora na
disku prejema od upravljavca z datotekami.
 Upravljalec z datotekami (File Manager):
– zasega in sprošča prostor na disku v enotah – straneh.
– je odgovoren za upravljanje strani znotraj datoteke in za
urejanje zapisov znotraj strani.
– Velikost strani je eden od parametrov SUPB. Tipično od 4KB
od 8 KB.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 315 -
Komponente SUPB za delo s podatki
 Upravljalec medpomnilnika (Buffer manager):
– skrbi za prenos določene strani iz diska v področje v
glavnem pomnilniku - medpomnilnik (buffer pool).
– stran, kjer je zapis, poišče upravljalec z datotekami. Prenos v
medpomnilnik izvede upravljalec medpomnilnika.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 316 -
Hierarhija pomnilnika…
Cena
Kapaciteta
CPU
Medpomnilnik
Zahteva po
podatkih
Prenos podatkov
na zahtevo
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Primarni pomnilnik
Glavni pomnilnik
Magnetni disk
Sekundarni pomnilnik
Magnetni trak
Terciarni pomnilnik
- 317 -
Hierarhija pomnilnika
 Drugi razlogi za shranjevanje podatkov na
sekundarnem in terciarnem pomnilniku:
– 32 bitni naslovni prostor omogoča naslavljanje samo 232 =
4Gb podatkov ...
– podatki morajo biti obstojni (primarni pomnilnik se prazni…)
 Stanje glede kapacitete in cene pomnilnikov se
hitro spreminja. Najzanesljivejši viri informacij so
spletne strani proizvajalcev, preizkuševalcev,
trgovin...
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 318 -
Magnetni diski…
Glava diska
Roka diska
Sled
Blok
Sektor
Smer premikanja glave
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 319 -
Magnetni disk…
 Nekaj lastnosti:
– Magnetni disk omogoča neposreden dostop do želene
lokacije na disku.
– Podatki na disku so shranjeni v enotah, imenovanih bloki.
– Blok predstavlja zaporedje bajtov in je najmanjša enota, ki
se jo lahko bere iz ali piše na disk.
– Bloki so organizirani v koncentrične kroge, imenovane sledi.
– Sledi se nahajajo na eni ali obeh straneh magnetne plošče.
– Vsaka sled je razdeljena na odseke ali sektorje. Sektor je
določen z diskom in ga ni mogoče spreminjati.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 320 -
Magnetni disk…
 Nekaj lastnosti (nadaljevanje):
– Velikost bloka se določi pri formatiranju diska. Njegova
velikost je mnogokratnik velikosti sektorja.
– Disk ima lahko več glav, ki se premikajo istočasno.
– Disk je z računalnikom povezan preko krmilnika. Krmilnik
izvaja ukaze za branje in pisanje na disk in zagotavlja
pravilnost izvajanja ukazov.
– Pri zapisovanju in branju sektorjev se računa kontrolka
(checksum)
– Tipična velikost plošč: 3.5 inčev.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 321 -
Magnetni disk…
 Čas, potreben za dostop do želene lokacije
(povprečni dostopni čas):
– iskalni čas (premik glave na ustrezno sled)
– rotacijska zakasnitev (čakalni čas, da se ustrezen blok na
sledi zavrti do glave). Povprečno znaša polovico časa rotacije
in je manjši od iskalnega časa.
– čas prenosa (dejanski prenos bloka – branje ali pisanje).
 Primerjava:
– Dostopni čas RAM-a ≈ 10ns
– Dostopni čas diska ≈ 10ms.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 322 -
Magnetni disk
 Organizacija podatkov na disku je pomembna –
vpliva na učinkovitost SUPB:
– podatki se morajo pred uporabo prenesti v glavni pomnilnik,
– najmanjša enota podatkov, ki se bere ali piše na disk, je
blok.
– Čas za pisanje ali branje podatkov odvisen od položaja
podatkov na disku: dostopni čas=iskalni čas + rotacijska
zakasnitev + čas prenosa.
– Čas, ki ga SUPB porabi za prenos podatkov, je navadno večji
kot čas, potreben za obdelavo določenega podatka.
– Podatke je potrebno ustrezno razporediti po disku!!!.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 323 -
Polje diskov…
 Disk predstavlja potencialno ozko grlo za
učinkovitost SUPB in vpliva na zanesljivost
delovanja sistema.
 Učinkovitost CPU raste hitreje kot učinkovitost
diskov:
– CPU: 50% na leto
– Diski: 10% na leto
 Diski vsebujejo mehanske elemente  verjetnost
za napake večja kot pri notranjem pomnilniku.
 Odpoved diska lahko pomeni katastrofo.
 Možna rešitev: polje diskov (disk array).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 324 -
Polje diskov
 Polje diskov je povezava več diskov, organiziranih
tako, da
– povečajo učinkovitost in
– izboljšajo zanesljivost.
 Učinkovitost povečamo s porazdelitvijo podatkov
(data striping):
– podatke se porazdeli po več diskih
 Zanesljivost povečamo z redundanco podatkov:
– Zapisuje se dodatne (redundantne) podatke ali pa se
podatke podvaja. V primeru napake omogoča obnovo
podatkov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 325 -
RAID
 Diskovna polja, ki implementirajo porazdelitev in
podvajanje podatkov imenujejo “Redundant
Arrays of Independent Disks” – RAID.
 Poznamo več vrst RAID.
 Razlikujejo se po kompromisu med učinkovitostjo
in zanesljivostjo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 326 -
RAID – porazdelitev podatkov…
 RAID s porazdelitvijo podatkov:
– Uporabniku se kaže kot zelo velik disk.
– Podatki se razdelijo na enake enote (striping units), ki se
zapišejo na več diskov. Vsaka enota na en disk.
– Enote se po diskih distribuirajo po “round robin” algoritmu:
če polje vključuje D diskov, se enota i zapiše na “i mod D”
disk.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 327 -
RAID – porazdelitev podatkov…
 Primer:
– RAID z D diski v polju.
– RAID enota = 1 bit.
– Vsakih D zaporednih bitov se porazdeli na D diskov.
– Vsaka I/O operacija vključuje vseh D diskov.
– Najmanjša enota prenosa je 1 blok  vsaka I/O operacija
prenese vsaj D blokov.
– Ker lahko beremo na vseh diskih paralelno, je pohitritev
prenosa podatkov v primerjavi z enim diskom D-kratna.
– Dostopni čas se v primerjavi z enim diskom ne spremeni.
– Sledi: v primerjavi z enim diskom ne pridobimo bistveno.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 328 -
RAID – porazdelitev podatkov
 Primer:
– RAID z D diski v polju.
– RAID enota = 1 blok.
– Vsakih D zaporednih blokov se porazdeli na D diskov.
– I/O operacija velikosti 1 blok vključuje le 1 disk.
– Pri več zaporednih I/O operacijah dolžine 1 blok in pri pravilno
porazdeljenih blokih lahko operacije izvajamo paralelno.
– Sledi:
 V primerjavi z enim diskom zmanjšamo povprečni dostopni čas I/O
operacije.
 Če I/O operacija vključuje več zaporednih blokov, jo lahko
procesiramo paralelno na več diskih.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 329 -
RAID – redundanca podatkov…
 Z več diski se poveča učinkovitost sistema za
shranjevanje, vendar zmanjša njegova
zanesljivost.
 Primer:
– MTTF (mean-time-to-failure) enega diska ≈ 50.000 ur (5,7
let). Pri 100 diskih v polju znaša MTTF 50.000/100 ≈ 500ur
(21 dni).
 Zanesljivost diskovnega polja povečamo z
redundanco podatkov.
 Redundantnost lahko močno poveča MTTF.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 330 -
RAID – redundanca podatkov…
 Pri odločitvi za redundanco podatkov je potrebno
določiti:
– Kje bodo shranjeni redundantni podatki: na manjšem številu
diskov ali bodo porazdeljeni po vseh diskih?
– Kako določiti redundantne podatke:
 večina diskovnih polj shranjuje podatke o pariteti (paritetna shema
uporablja dodaten – redundanten disk za obnovo po nesrečah)
 Če dodamo prejšnjemu polju 100-ih diskov 10
diskov z redundantnimi podatki, naraste MTTF na
več kot 250 let!!!
 Velik MTTF pomeni manjšo verjetnost za napako.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 331 -
RAID – redundanca podatkov
 Kako deluje paritetni bit?
Disk 1
Bit 1 na disku 1 = 1
Disk 2
Bit 1 na disku 2 = 0
Paritetni bit 1
Redundantni disk
D
Paritetni_ biti  Odd( diskn (biti ))
n 1
Disk 3
Bit 1 na disku 3 = 0
Disk D
Bit 1 na disku D = 1
S pomočjo paritetne sheme lahko obnovimo podatke, če eden
- 332 od diskov ne deluje več.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Stopnje redundance…
 V RAID sistemu je diskovno polje razdeljeno na
več kontrolnih skupin (reliability groups). Te se
sestojijo iz:
– množice podatkovnih diskov in
– množice kontrolnih diskov.
 Število kontrolnih diskov je odvisno od stopnje
redundance.
 Primer za obravnavo stopenj redundance:
– Količina podatkov za 4 diske
– Ena sama kontrolna skupina
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 333 -
Stopnje redundance…
 RAID 0: porazdeljen, brez redundance
(Nonredundant)
– Uporablja porazdeljevanje podatkov za povečanje pasovne
širine.
– Ne vzdržuje nobene redundantne informacije.
– PROBLEM: MTTF pada linearno s številom diskov v polju.
– PREDNOSTI: najvišja učinkovitost  ni potrebno vzdrževati
nobenih redundantnih podatkov.
– Izraba prostora znaša 100% prostora na disku. V našem
primeru rabimo za svoje podatke 4 diske.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 334 -
Stopnje redundance…
 RAID 1: zrcaljen (Mirrored)
– Najdražja rešitev za polje diskov  vzdržujeta se dve kopiji
podatkov na dveh diskih.
– Vsako pisanje bloka na disk vključuje pisanje na dva diska.
– Pisanje se ne izvede hkrati, ampak eno za drugo (zaradi
primera nesreče med pisanjem).
– Branje lahko vključuje paralelno branje dveh različnih blokov
iz dveh diskov. Branje se lahko dodeli na disk, ki ima
najmanjši dostopni čas.
– Izraba prostora znaša 50%. V našem primeru potrebujemo 8
diskov (4 + 4).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 335 -
Stopnje redundance…
 RAID 0+1: porazdeljen in zrcaljen
– Imenovan tudi RAID 01.
– Kombinira nivoja RAID 0 in RAID 1.
 RAID 1+0: zrcaljen in porazdeljen
– Imenovan tudi RAID 10.
– Kombinira nivoja RAID 1 in RAID 0.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 336 -
Stopnje redundance…
RAID 01
Raid 1
Raid 0
Disk 1
Disk 2
Raid 0 - Mirror
Disk 1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Disk 2
- 337 -
Stopnje redundance…
RAID 10
Raid 0
Raid 1
Disk 1
Mirror
Raid 1
Disk 1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Mirror
- 338 -
Stopnje redundance
 Druge stopnje redundance:
–
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Level
Level
Level
Level
Level
2:
3:
4:
5:
6:
Error-Correction Codes
Bit-Interleaved Parity
Block-Interleaved Parity
Block-Interleaved Distributed Parity
P+Q Redundancy
- 339 -
P 3.2
Upravljanje z diskom in pomnilnikom
Kaj si bomo pogledali?




PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Kako SUPB upravlja s prostorom na disku?
Kaj so lastnosti upravljalca s prostorom na disku?
Čemu je namenjen upravljalec medpomnilnika?
Kako deluje upravljalec medpomnilnika?
- 340 -
Upravljanje s prostorom na disku…
 Za upravljanje z diskom skrbi najnižji nivo v SUPB
arhitekturi – upravljalec z diskom (Disk Space
Manager).
 Lastnosti:
– Podpira koncept “strani”;
– Izvaja ukaze za dodeljevanje in sproščanje prostora na disku
ter branje in pisanje strani.
– Velikost strani je enaka velikosti bloka na disku. Strani se
shranjujejo kot bloki. Branje ali pisanje strani se lahko
izvede v okviru ene I/O operacije.
– Skrije podrobnosti strojne opreme (in OS); ostalim
komponentam SUPB omogoči, da vidijo podatke kot zbirko
strani.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 341 -
Upravljanje s prostorom na disku…
 Upravljalec z diskom vzdržuje stanje zasedenih in
prostih blokov na disku.
 Obstajata dva načina:
– Vzdrževanje seznama prostih blokov (kazalec na prvi blok
seznama se shrani na znano lokacijo na disku),
– Vzdrževanje bitne mape (za vsak blok je v bitni mapi bit, ki
označuje, ali je blok zaseden ali ne),
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 342 -
Upravljanje s prostorom na disku
 Uporaba datotečnega sistema za upravljanje s
prostorom:
– Upravljalec z diskom lahko uporablja datoteke operacijskega
sistema  celotna PB se nahaja v eni ali več datotekah.
– V tem primeru je zadolžen za upravljanje prostora v teh
datotekah.
– Veliko PB ne uporablja datotečnega sistema, ampak svoj
lastni sistem za upravljanje z diskom (popolnoma svoj ali pa
razširja funkcionalnost datotečnega sistema OS). Razlogi:
 PRAKTIČNI: bazo lahko uporabimo na več platformah,
 TEHNIČNI: pri 32 bitnem naslavljanju se pojavi omejitev v velikosti
datoteke.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 343 -
Upravljalec medpomnilnika…
 Upravljalec medpomnilnika je programska plast,
ki skrbi za prenašanje ustreznih strani v
pomnilnik.
– upravlja z razpoložljivim pomnilnikom (buffer pool).
– višjim plastem SUPB-ja zagotavlja strani, ki jih te rabijo za
svoje delo.
– V medpomnilnik prenese tisto stran, ki jo višja plast zahteva.
– Višja plast SUPB-ja upravljalca medpomnilnika obvešča
straneh, ki se sprostijo oziroma se jim spremeni vsebina.
– Obstajajo različne strategije, ki določijo, katere strani se v
medpomnilniku zamenjajo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 344 -
Upravljalec medpomnilnika…
Zahteve po straneh
iz višjih ravni SUPB
Okvir, napolnjen
s stranjo iz diska
Medpomnilnik
Prazen okvir
Če zahtevane strani ni v
medpomnilniku, medpomnilnik
pa je poln, mora upravljalec
medpomnilnika narediti
ustrezno zamenjavo. Zamenjava
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
se izvede v skladu z izbrano strategijo
©Laboratorij za informatiko
Glavni spomin
Disk
- 345 -
Upravljalec medpomnilnika…
 Za vsak okvir v medpomnilniku se hranita dve
spremenljivki:
– pin_count: kolikokrat je bila stran v okvirju zahtevana,
vendar ne sproščena (število trenutnih uporabnikov strani).
– dirty: logična vrednost, ki označuje, ali je bila stran
spremenjena ali ne.
 Začetno stanje okvirja:
– pin_count = 0
– dirty = off
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 346 -
Upravljalec medpomnilnika…
 Ko se pojavi zahteva po določeni strani,
upravljalec z medpomnilnikom izvede naslednje:
– če se stran nahaja v kakšnem od okvirjev, vrne pomnilniški
naslov okvirja in poveča pin_count za 1,
– sicer izvede naslednje:
 izbere okvir za zamenjavo (z uporabo strategije za zamenjavo) in
poveča pin_count.
 če je dirty bit okvirja, ki bo zamenjan, postavljen na “on”, se stran
prepiše na disk.
 stran se prenese iz diska v okvir, ki je določen za zamenjavo.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 347 -
Zahteva za stran
Je stran v
medpomnilniku?
DA
NE
Je medpomnilnik poln?
INC(pin_count)
DA
Izberi stran za
zamenjavo
INC(pin_count)
dirty = OFF
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
dirty = ON
- 348 -
NE
Prenesi stran iz
diska v prazen
okvir
Upravljalec medpomnilnika…
 Dodatna pravila:
– Če se zahtevana stran ne nahaja v medpomnilniku in če so
vsi okvirji zasedeni, se za zamenjavo izbere okvir, katerega
pin_count=0. V primeru več takih okvirjev se izmed njih
izbere okvir po določeni strategiji.
– Če v medpomnilniku ni nobene strani, ki bi imela
pin_count=0 in hkrati iskane strani ni v medpomnilniku,
potem upravljalec medpomnilnika čaka, da se kakšna stran
sprosti.
– V praksi to pomeni, da je transakcija, ki zahteva tako stran,
lahko razveljavljena.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 349 -
Upravljalec medpomnilnika…
 Nevarnost: če neko stran zahteva več neodvisnih
transakcij, lahko pride do konfliktnih sprememb...
 Reševanje z zaklepanjem:
– Obstaja protokol zaklepanja, za katerega skrbijo višje ravni
SUPB (posebej upravljalec transakcij).
– Vsaka transakcija lahko pridobi deljeno (shared) ali
ekskluzivno zaklepanje preden lahko stran bere ali
spreminja.
– Ekskluzivno zaklepanje iste strani ne sme biti odobreno
dvem transakcijam istočasno!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 350 -
Upravljalec medpomnilnika…
 Strategija zamenjave strani v medpomnilniku
močno vpliva na učinkovitost SUPB.
 Obstajajo različne strategije, ki so primerne za
različne situacije.
 Nekatere strategije:
– LRU – least recently used
 Vrsta kazalcev na okvirje s pin_count = 0
 Ko stran postane kandidat za zamenjavo (pin_count = 0), okvir
strani dodamo na konec vrste
 Za zamenjavo izberemo stran iz okvirja, na katerega kaže prvi
kazalec v vrsti
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 351 -
Upravljalec medpomnilnika…
 Strategije zamenjave (nadaljevanje):
– Clock replacement
Različica LRU z manjšo časovna kompleksnost
Okvirji so navidez organizirani v cikel (kot številke na uri)
Vsak okvir ima dva podatka: reference_bit in pin_count.
Reference_bit se postavi na ON, ko pin_count postane 0.
Za zamenjavo najprej preverimo stran, na katero trenutno kaže
posebna spremenljivka.
 Če okvir ne izberemo za zamenjavo, se kazalec pomakne naprej.
To traja, dokler ne najdemo okvirja za zamenjavo.
 Izbira okvirja:





– Če pin_count > 0  okvir ne izberemo
– Če reference_bit = ON  okvirja ne izberemo, reference_bit
postavimo na OFF.
– Če pin_count = 0 AND reference_bit = OFF  okvir izberemo!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 352 -
Upravljanje medpomnilnika...
 Primerjava z upravljanjem navideznega
pomnilnika OS:
– obstaja podobnost med navideznim pomnilnikom
operacijskega sistema in upravljanjem s pomnilnikom pri
SUPB.
– Cilj obeh: zagotoviti dostop do več podatkov, kot jih lahko
spravimo v pomnilnik. Strani iz diska se prenašajo v
pomnilnik po potrebi, nadomeščajo strani, ki se jih v
pomnilniku ne rabi več.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 353 -
Upravljanje medpomnilnika
 Zakaj ne uporabimo navideznega pomnilnika v
OS?
– SUPB lahko bolj natančno predvidi zaporedje (vzorce
dostopanja) kot tipičen OS.
– SUPB rabi več nadzora nad stranmi, ki se zapisujejo na disk,
kot ga omogoča tipičen OS.
– Najpomembneje: upravljalec medpomnilnika uporablja
strategijo vnaprejšnjega branja (prefetching), ki na osnovi
predvidevanja naslednjih zahtev v naprej prenese strani v
pomnilnik.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 354 -
P 3.3
Organizacija datotek in indeksiranje
Kaj si bomo pogledali?
 Pomen organizacije datotek in metod dostopa
 Ureditev datotek
– s kopico
– zaporedno
– razpršeno
 Kaj je indeks in kako deluje
 Razlike med primarnim in sekundarnim indeksom ter
indeksom gruče
 Različne ureditve indeksov
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 355 -
Osnovni koncepti…
 Podatkovna baza je na sekundarnem pomnilniku
organizirana v eno ali več datotek (file)
 Vsaka datoteka zajema enega ali več zapisov
(record).
 Zapis sestavljajo polja (field).
 Zapisi običajno označujejo entitete, polja pa
njihove atribute.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 356 -
Osnovni koncepti…
 Uporabnik zahteva zapis “A10” od SUPB:
– SUPB naredi preslikavo logičnega zapisa v fizični;
– Poišče fizični zapis in ga prepiše v primarni pomnilnik
oziroma v medpomnilnik;
Logični pogled
Tabela
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Fizični pogled
datoteka
entiteta/zapis
atribut/polje
- 357 -
Osnovni koncepti…
 Med fizičnim in logičnim zapisom ne velja vedno
preslikava 1:1
– Fizični zapis je enota prenosa med diskom in primarnim
pomnilnikom.
– Lahko zajema tudi več logičnih zapisov. Podobno je lahko
tudi večji logični zapis zapisan čez več fizičnih zapisov.
 Fizični zapis ustreza konceptu, ki smo ga
obravnavali kot stran.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 358 -
Osnovni koncepti
 Zapisi tabele Artikel razdeljeni na strani…
ARTIKEL
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Šifra
Naziv
Zaloga
A10
Telovadni copati Nike
10
A12
Trenerka Bali
4
BC80
Moška jakna QuickSilver
1
X12
Ženska jakna QuickSilver
0
- 359 -
Stran
1
2
Datotečna organizacija…
 Datotečna organizacija pove, kako so podatki v
datoteki fizično urejeni v zapise in strani na
sekundarnem pomnilniku.
 Osnovne vrste datotečnih organizacij:
– Kopica ali neurejena datoteka: zapisi so na disku shranjeni v
nedefiniranem vrstnem redu.
– Zaporedno urejena datoteka: zapisi so urejeni po vrednosti
določenega polja.
– Razpršena datoteka: zapisi so razpršeni z uporabo hash
funkcije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 360 -
Datotečna organizacija…
 Za delo z zapisi v datotekah obstajajo različne
tehnike ali metode dostopa (access methods).
 Metode dostopa določajo korake, ki jih je
potrebno izvesti za zapis ali iskanje nekega
zapisa v datoteki.
 Metode dostopa so odvisne od datotečne
organizacije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 361 -
Neurejene datoteke…
 Imenujemo tudi kopica (heap).
 Najenostavnejša datotečna organizacija:
– Zapisi so shranjeni v istem vrstnem redu, kot so bili dodani
– Nov zapis dodan na zadnjo stran datoteke
– Če ni dovolj prostora, se doda nova stran
 Dobra lastnost:
– Zelo učinkovito dodajanje zapisov
 Uporabljamo za masovni vnos.
– Ni potrebno računati, na katero stran bomo zapis vstavili.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 362 -
Neurejene datoteke
 Slabosti:
– Neučinkovitost iskanja. Uporabiti moramo linearno iskanje
(zapisi so neurejeni)
– Neizkoriščenost prostora: pri brisanju zapisa moramo najti
stran z zapisom, zbrisati zapis ter stran shrani nazaj na disk.
Spraznjen prostor na strani ostane neizkoriščen. Neurejene
datoteke je potrebno občasno reorganizirati!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 363 -
Urejene datoteke…
 Zapisi v datotekah so lahko urejeni po enem ali
več poljih  urejena ali zaporedna datoteka.
 Za iskanje po poljih, po katerih je datoteka
urejena, uporabimo binarno iskanje.
 Primer:
SELECT * FROM artikel
WHERE sifra = ‘BX1’
1
A1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
2
3
A12 BX1
4
5
6
7
8
9
10
11
12
13
D1
D2
D4
F18
G3
M8
M9
M99
S9
XX
- 364 -
Urejene datoteke…
 Prednosti:
– Učinkovitost iskanja
 Problem
– Dodajanje in brisanje zapisov  potrebno vzdrževati vrstni
red
– Če želimo nek zapis dodati, moramo poiskati stran, kamor bi
zapis sodil glede na vrstni red. Če stran vsebuje dovolj
praznega prostora, jo preuredimo in zapišemo nazaj na disk,
sicer moramo nekaj zapisov premakniti na naslednjo stran
itd.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 365 -
Urejene datoteke
 Dodajanje zapisa na začetek velike datoteke
posebej problematično.
 Možna rešitev: uporaba dodatne neurejene
datoteke (overflow ali transakction file):
– Nov zapis je dodan v neurejeno datoteko
– Neurejena datoteka se periodično prepiše v urejeno
– Pri iskanju zapisa se najprej pogleda urejena datoteka. Če
zapisa ne najdemo, se linearno pregleda še neurejena.
Urejene datoteke se redko uporabljajo za shranjevanje podatkov,
razen v kombinaciji s primarnim indeksom.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 366 -
Razpršene datoteke…
 V razpršenih ali hash datotekah so zapisi
razpršeni v skladu s hash funkcijo.
 Hash funkcija za vsak zapis izračuna naslov strani
(naslov bloka na disku), kamor zapis sodi glede
na vrednost določenega polja (hash polje).
fhash(P) = naslov strani;
P = vrednost hash polja.
 Iskanje zapisa na strani se izvede v primarnem
pomnilniku. Za večino zapisov moramo prebrati
le eno stran.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 367 -
Razpršene datoteke…
 Za hash funkcijo izberemo operacijo, ki
zagotavlja enakomerno porazdeljenost zapisov
po datoteki.
 Najpopularnejša hash funkcija je ostanek pri
deljenju (MOD) z določenim številom (n)
 Primer:
– Vrednost polja, ki nastopa kot argument hash funkcije je 132
– n = 24
– 132/24 = 5, ostanek je 12  zapis se zapiše na 12 stran.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 368 -
Razpršene datoteke…
 Problem razpršenih datotek:
– Zaloga vrednosti hash polja navadno večja od števila
naslovov, ki jih lahko vrne hash funkcija.
– Vsak naslov ustreza določeni strani (bucket), ki ima mesta za
več zapisov.
– Znotraj strani so zapisi urejeni po vrsti, kot so bili vstavljeni.
– Ko hash funkcija za nek zapis vrne naslov strani, ki je polna,
pride do kolizije.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 369 -
Razpršene datoteke…
 Za reševanje problemov z istim naslovnim
prostorom so na voljo različne tehnike
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Odprto naslavljanje (open addressing)
Nepovezane dodatne strani (unchained overflow)
Povezane dodatne strani (chained overflow)
Večkratno razprševanje (multiple hashing)
- 370 -
Razpršene datoteke…
 Odprto naslavljanje
– Zapisovanje: če pride do kolizije, poiščemo prvo stran, ki ima
še kakšno prosto mesto. Ko pridemo do zadnje strani,
gremo na začetek.
– Iskanje: enako kot pri zapisovanju. S to razliko, da če
naletimo na prazno mesto preden na iskani zapis,
privzamemo, da zapisa ni v datoteki.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 371 -
Razpršene datoteke…
 Primer:
–
–
–
–
dodajamo zapis SL41
Hash funkcija MOD 3
SL41 je razvrščen za stran 2
Ker stran 2 nimam praznih mest, iščemo prvo
stran s še prosim mestom. Rezultat: stran 1.
Stanje prej
Staff SA9 zapis
Staff SL21 zapis
Staff SG37 zapis
Staff SG5 zapis
Staff SG14 zapis
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Stran
Stanje potem
Stran
0
Staff SA9 zapis
Staff SL21 zapis
0
1
Staff SG37 zapis
Staff SL41 zapis
1
2
Staff SG5 zapis
Staff SG14 zapis
2
- 372 -
Razpršene datoteke…
 Nepovezane dodatne strani:
– Namesto iskanja prostega mesta za primere kolizije
vzdržujemo seznam dodatnih strani
– Rešitev na videz ne ponuja bistvenih izboljšav
– V resnici daje boljše rezultate  število kolizij je manjše (z
odprtim naslavljanjem rešimo le trenutno kolizijo. Obenem
odpremo možnosti za nove kolizije.)
Stran
Staff SA9 zapis
Staff SL21 zapis
Staff SG37 zapis
Staff SG5 zapis
Staff SG14 zapis
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Dodatni prostor
Staff SL41 zapis
0
1
Stran
3
4
2
- 373 -
Razpršene datoteke…
 Povezane dodatne strani:
– Podobno kot nepovezane dodatne strani, le da so v tem
primeru dodatne strani povezane z osnovnimi
– Vsaka stran ima dodatno polje, ki pove, ali je prišlo pri tej
strani do kolizije ali ne. V polju je naslov dodatnega polja,
kamor so razvrščeni zapisi, pri katerih pride do kolizije.
Vrednost 0 pomeni, da kolizije ni bilo.
Stran
Staff SA9 zapis
Staff SL21 zapis
Staff SG37 zapis
Staff SG5 zapis
Staff SG14 zapis
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
0
0
0
1
3
2
Dodatni prostor
Staff SL41 zapis
- 374 -
Stran
0
3
0
4
Razpršene datoteke…
 Večkratna razpršitev:
– Eden od načinov reševanja kolizij je večkratno razprševanje.
– Če pride do kolizije, se uporabi drugačna hash funkcija, ki
vrača drugačen naslov.
– Dodatna hash funkcija je navadno takšna, da razvršča v
dodati prostor.
 Razprševanje v splošnem
– Prinaša dobre rezultate pri iskanju (ob uporabi ene izmed
tehnik reševanja kolizij).
– Spreminjanje zapisov je tudi enostavno, razen v primerih, ko
spremenimo hash polje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 375 -
Dinamične razpršene datoteke…
 Obravnavane hash tehnike so vse statične:
– ko zapisu določimo naslov, se ta ne spremeni, če se ne
spremeni vrednost hash polja .
 Problem:
– Datoteka postane premajhna in zato vzamemo večjo.
Določiti moramo novo hash funkcijo in vse zapise iz stare
datoteke premestiti (z uporabo novega razprševanja) v novo
datoteko.
 Alternativa:
– Uporaba dinamičnih razpršenih datotek: datoteko dinamično
spreminjamo (večamo) po potrebi.
– Obstajajo številne tehnike realizacije dinamičnih razpršenih
datotek.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 376 -
Dinamične razpršene datoteke…
 Razširljivo razprševanje (extendible hashing)
– Strani kreiramo po potrebi. V začetku gredo zapisi v prvo
stran.
– Ko je stran polna, jo razdelimo glede na prvih i bitov, kjer
velja 0 ≤ i < b
– Izbranih i bitov določa naslov oziroma ofset v naslovni tabeli
strani oziroma imeniku (BAT - Bucket Address Table).
Vrednost i se spreminja z velikostjo datoteke
– V glavi imenika je zapisana trenutna vrednost i (globina)
skupaj z 2i kazalci.
– Vsaka stran ima tudi lokalno globino, ki pove, pri katerem i
dobimo naslov te strani.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 377 -
Dinamične razpršene datoteke…
Imenik
0
globina
0
lokalna globina
Staff SL21 zapis
Staff SG37 zapis
0
0
Izgled dinamično razpršene
datoteke po vpisu zapisov
SL21 in SL37.
1
1
0
Staff SL21 zapis
Staff SG14 zapis
Staff SG37 zapis
2
01
10
Izgled dinamično razpršene
datoteke po vpisu zapisa
SG14
1
1
00
0
1
2
Staff SA9 zapis
Staff SG14 zapis
0
2
Staff SL21 zapis
2
11
1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Staff SG37 zapis
- 378 -
1
Izgled dinamično razpršene
datoteke po vpisu zapisa
SA9.
Omejitve tehnike razprševanja
 Učinkovitost razpršenih datotek za iskanje
odvisna od hash polja.
 Uporaba razpršenih datotek ni primerna za:
– Iskanje po vzorcu
– Iskanje po nizu vrednosti
– Iskanje po polju, ki ni hash polje
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 379 -
Indeksi in indeksiranje…
 Indeks je podatkovna struktura, ki SUPB-ju
omogoča hitrejše lociranje zapisov v datoteki.
 Analogija z indeksom knjige
– Indeks knjige vsebuje ključne besede (urejene po abecedi)
ter za vsako pove, na kateri strani ali straneh se ključna
beseda pojavlja.
– Indeks omogoča, da nam ni potrebno prelistati cele knjige,
ko želimo najti določeno vsebino.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 380 -
Indeksi in indeksiranje…
 Terminologija:
– Podatkovna datoteka: datoteka s podatki (imenujemo tudi
osnovna datoteka)
– Indeksna datoteka: datoteka z indeksom. Indeks sestavlja
iskalni ključ ter kazalec na zapis v podatkovni datoteki.
– Iskalni ključ: sestavljen iz vrednosti polj, po katerih je
datoteka indeksirana. Imenujemo tudi indeksno polje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Iskalni ključ
Zapis
B003, 18000
SG14
David
- 381 -
Ford
18000
B003
Indeksi in indeksiranje…
 Indeksi gruče (clustered index)
– Z indeksom gruče označujemo indekse, ki temeljijo na poljih,
po katerih je obenem urejena tudi podatkovna datoteka.
.........
Indeksna datoteka
Podatkovna datoteka
.........
Indeksna datoteka
Podatkovna
datoteka
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 382 -
Indeksi in indeksiranje…
 Primarni in sekundarni indeksi
– Primarni indeks (Primary index): indeks po poljih, ki
vsebujejo primarni ključ. Vsak iskalni ključ kaže natanko na
en zapis v podatkovni datoteki. Datoteka je po ključu
urejena.
– Sekundarni indeks (Secondary key): vsak indeks, ki ne
temelji na poljih, ki bi vsebovala primarni ključ.
 Vsaka datoteka ima lahko:
– primarni indeks ali indeks gruče ter
– več sekundarnih indeksov!
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 383 -
Indeksi in indeksiranje…
 Redki in gosti indeksi:
– Redki indeks (sparse index): indeksna datoteka vsebuje
kazalce, ki kažejo le na določene zapise v podatkovni
datoteki. Navadno vsebuje po en zapis za vsako stran v
podatkovni datoteki;
– Gosti indeks (dense index): indeksna datoteka vsebuje
kazalce na vse zapise v podatkovni datoteki.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 384 -
Indeksi in indeksiranje…
fName
Abby
salary
SF01
Abby
Ford
18000
B002
SG37
Ann
Beech
12000
B003
SF21
Carol
White
32000
B002
David
Mike
Redki indeks
po polju name
12000
SG14
David
Ford
18100
B003
12500
SO37
Jeana
Fraser
22000
B001
18000
SX21
John
Smith
9000
B001
SL09
Mike
Tires
12500
B001
SM01
Moar
Trex
19000
B003
PODATKOVNA DATOTEKA
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
9000
- 385 -
18100
19000
22000
32000
gosti indeks
po polju salary
Indeksi in indeksiranje…
 Indeksi s sestavljenim iskalnim ključem
(composite key ali concatenated key):
– Indeksi po več kot enem polju
– Uporabljamo za kombinacije polj, po katerih pogosto iščemo
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 386 -
Indeksi in indeksiranje…
staffNo
fName
lName
salary
branchNo
9000, B005
SG14
David
Ford
18000
B003
9000
12000, B003
SG37
Ann
Beech
12000
B003
12000
18000, B003
SL21
John
White
30000
B005
18000
30000, B005
SL41
Julie
Lee
9000
B005
30000
staffNo
fName
lName
salary
branchNo
B003, 12000
SG14
David
Ford
18000
B003
B003
B003, 18000
SG37
Ann
Beech
12000
B003
B003
B005, 9000
SL21
John
White
30000
B005
B005
B005, 30000
SL41
Julie
Lee
9000
B005
B005
(salary, branchNo)
(branchNo, salary)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 387 -
(salary)
(branchNo)
Drevesno indeksiranje…
 Drevesno indeksiranje učinkovito pri:
– intervalnem iskanju ter
– dodajanju in brisanju (za razliko od urejenih datotek).
 Iskanje po enakosti boljše pri hash indeksiranju.
 Pogledali bomo dve indeksni strukturi, ki
temeljita na drevesni organizaciji:
– ISAM (Indexed Sequential Access Method):
– B+ drevesna struktura
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 388 -
Drevesno indeksiranje…
 ISAM:
– statičen indeks,
– učinkovit v primerih, ko se podatkovna datoteka ne
spreminja pogosto,
– ni učinkovit pri datotekah, ki se hitro povečujejo ali krčijo.
 B+ drevo:
– dinamična struktura; se zelo dobro prilagaja spremembam v
podatkovni datoteki,
– najbolj uporabljana vrsta indeksa; omogoča hitro iskanje
zapisov, intervalno iskanje in se učinkovito prilagaja
spremembam v podatkovni datoteki.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 389 -
ISAM…
 Primer:
– Imamo datoteko oseb, urejeno po polju “starost”.
– Če želimo najti vse osebe starejše od 30 let, moramo najprej
najti prvo (s pomočjo binarnega iskanja), ki je starejša od 30
in od te naprej prebrati preostale zapise datoteke.
 Možnost za pohitritev iskanja:
– Izdelamo dodatno datoteko, s po enim zapisom za vsako
stran v podatkovni datoteki in jo uredili po polju “starost”.
– Vsak zapis v dodatni datoteki vsebuje par
<ključ prvega zapisa na strani, kazalec na zapis>
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 390 -
ISAM…
 Primer (nadaljevanje):
– Vsak ključ v indeksni datoteki predstavlja mejnik vsebine, na
katero kažeta levi in desni kazalec  vsaka stran v indeksu
vsebuje en kazalec več, kot je ključev.
– Binarno iskanje se izvede nad indeksno datoteko, ki je
manjša od osnovne datoteke => hitrejše iskanje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 391 -
ISAM…
 Velikost indeksne datoteke poraja idejo o ISAM
indeksu:
– Zakaj ne bi ponovili koraka in zgradili še eno dodatno
datoteko, ki bi imela za vsako indeksno stran en zapis, tako
da bi velikost končnega indeksa znašala samo eno stran?
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 392 -
ISAM…
 ISAM indeks sestavljajo dve vrsti strani:
– listi: strani s podatki (in dodatne strani - overflow) in
– vozlišča: nepodatkovne strani.
 Nekatere ISAM strukture temeljijo na skrbno
oblikovanih straneh, ki ustrezajo fizični
organizaciji datotek na sekundarnem mediju
(IBM).
 ISAM je v celoti statična struktura (z izjemo
dodatnih strani)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 393 -
ISAM…
 Gradnja ISAM indeksa:
– Ko se indeksna datoteka kreira, so vse strani v listih urejene
zaporedno in po iskalnem ključu.
– Vstavljanje novih podatkov lahko zahteva kreiranje dodatnih
strani (če je stran, kamor podatek sodi, polna).
 ISAM podpira operacije iskanje, brisanje in
vstavljanje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 394 -
ISAM…
 Iskanje:
– Začnemo v korenu
– Če vrednost, ki jo iščemo manjša ali enaka ključu korena,
sledimo levemu kazalcu, sicer desnemu.
– Ponavljamo, dokler ne pridemo do listov drevesa. Če
podatke, ki ga iščemo, ni v listu, iščemo v dodatnih straneh.
Iščemo zapis z vrednostjo
iskalnega ključa 27
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 395 -
ISAM…
 Dodajanje
– Stran v listih, kamor zapis sodi, poiščemo enako kot pri
iskanju
– Zapis dodamo na prvo prosto mesto
Dodamo zapis z vrednostjo
iskalnega ključa 23, 48, 41, 42
Podatki v primarnih
straneh listov so urejeni
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 396 -
ISAM…
 Brisanje:
– Zapis, ki ga brišemo, poiščemo enako kot pri iskanju
 Če je zapis na dodatni strani in gre za zadnji zapis na strani, stran
zbrišemo.
 Če je zapis na primarni strani in gre za zadnji zapis na strani,
pustimo stran prazno. Služi kot mesto za kasnejšo rabo.
– Lahko se zgodi, da se iskalni ključ, ki nastopa v indeksnem
delu, ne pojavi v listih.
Brisanje zapisov z vrednostjo
iskalnega ključa 42, 51 in 97.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 397 -
ISAM…
 Primer izračuna stroškov iskanja zapisa v ISAM
strukturi:
– Število I/O operacij = logFN, kjer je N število primarnih
strani listov, F število otrok vsake indeksne strani.
– Število I/O operacij pri binarnem iskanju po urejeni datoteki
je log2N. Pri iskanju po eno-nivojskem indeksu: log2(N/F)
– Primer: datoteka z 1.000.000 zapisi, 10 zapisov na stran v
listih in 100 zapisov v indeksnih straneh




PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Strošek
Strošek
Strošek
Strošek
strani)
branja cele datoteke: 100.000
binarnega iskanja po urejeni datoteki: 17
binarnega iskanja po eno-nivojskem indeksu: 10
binarnega iskanja po ISAM strukturi: 3 (brez dodatnih
- 398 -
ISAM
 Problem ISAM strukture se pokaže, ko naraste
število dodatnih strani
– Podatki v dodatnih straneh so načeloma lahko urejene,
običajno pa niso (zaradi učinkovitosti dodajanja zapisov)
– Problem omilimo tako, da v začetku, ko izgradimo indeks,
pustimo nekaj praznega prostora v straneh listov.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 399 -
B+ drevesa…
 B+ indeks je dinamičen  njegova struktura se
dinamično prilagaja spremembam v podatkovni
datoteki.
 Odpravlja težave, ki so značilne za ISAM indeks
– npr. s povečevanjem števila dodatnih strani pada
učinkovitost...
 B+ drevo predstavlja iskalno strukturo
– B+ je uravnoteženo drevo, katerega vozlišča usmerjajo
iskanje, listi pa vsebujejo podatke (ključe).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 400 -
B+ drevesa…
 B+ drevo se dinamično spreminja, zato strani v
listih ni možno alocirati zaporedno. Uporabimo
kazalce.
 Liste B+ drevesa uredimo z dvosmernim
seznamom.
Indeksni del
Indeksna datoteka
Podatkovni del
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 401 -
B+ drevesa…
 Lastnosti B+ dreves:
– Operacije dodajanja in brisanja ohranjajo drevo
uravnoteženo;
– Vozlišča (razen korena) so vsaj 50% zasedena, če
uporabimo ustrezen algoritem brisanja;
– Iskanje določene vrednosti zahteva le pot od korena do
ustreznega lista.
– Poti do vseh vozlišč so zaradi uravnoteženosti enake in
določajo višino drevesa.
– Zaradi velikega razvejanja (velik F) je višina običajnih B+
dreves majhna (redko več kot 3 ali 4).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 402 -
B+ drevesa…
 Primer B+ drevesa z višino 1 in razvejanostjo
F = 5.
– Vsako vozlišče B+ drevesa vsebuje m vpisov; d ≤ m≤ 2*d.
– d je parameter B+ drevesa (red drevesa); 2*d predstavlja
kapaciteto vozlišča. Edina izjema je korensko vozlišče, za katerega
velja 1=<m=<2d.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 403 -
B+ drevesa…
 Uporaba B+ dreves se splača v primerih, ko se
podatki velikokrat spreminjajo, obenem pa
potrebujemo zaporedno iskanje.
 Prednosti pred uporabo urejenih datotek:
– Za ceno dodatnega prostora, ki ga porabimo z indeksno
datoteko, pridobimo vse prednosti urejene datoteke,
obenem pa ne izgubimo na učinkovitosti dodajanja in
brisanja.
 Prednosti pred uporabo ISAM-a:
– Zaradi dodajanja ni potrebno ustvarjati dodatnih oziroma
presežnih strani.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 404 -
B+ drevesa…
 Iskanje:
– Algoritem za iskanje deluje podobno kot pri ISAM strukturi.
Uporabimo linearno ali
binarno iskanje
P0 K1 P1 K2 P2
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
… Km Pm
- 405 - ni duplikatov.
Pri algoritmih bomo predpostavili, da v drevesu
B+ drevesa…
 Dodajanje:
– Dodajamo podatek k*
– Poiščemo list, kamor k* spada
– Če je v listu še prostor, k* dodamo, sicer moramo list
razdeliti na dva dela.
Primer: dodati želimo 8*
začetno drevo
Problem: tudi zgornje
vozlišče je polno
List se razpolovi
5 postane kazalec na nov list
Kopira se en nivo višje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 406 -
B+ drevesa…
 Dodajanje (nadaljevanje):
– Če moramo zaradi razpolovitve lista dodati k* v vozlišče, ki
je že polno, se delitev ponovi.
– V splošnem moramo vozlišče, ki ni list, razpoloviti, ko je
polno  vsebuje 2d ključev in 2d+1 kazalcev
– Z dodatnim indeksnim poljem k* imamo 2d+1 ključev in
2d+2 kazalcev  lahko razdelimo na dva minimalno
zasedena vozlišča (vsak po d ključev in d+1 kazalcev ter
dodaten ključ, ki smo ga izbrali kot delitveni ključ.
– Delitveni ključ skupaj s kazalcem na drugi del razdeljenega
vozlišča premaknemo eno raven višje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 407 -
B+ drevesa…
Dodati želimo 5*
vozlišče je polno
17 je delitveni ključ, ki ga
skupaj s kazalcem na drugo
polovico razdeljenega vozlišča
premaknemo en nivo višje.
Končno drevo
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Nov koren v
končnem drevesu
- 408 -
B+ drevesa…
 Algoritem za
dodajanje
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 409 -
B+ drevesa…
 Variacija algoritma za dodajanje elementov v B+
drevesa:
– v primeru, ko dodajamo v vozlišče N, ki je polno, uporabimo
postopek redistribucije podatkov ali razcepljanje strani.
– Redistribucija se nanaša na vozlišče N in na vozlišči, ki sta
njen levi in desni sosed in hkrati pripadata istemu nadvozlišču.
…
…
Vozlišče N+1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
…
Vozlišče N
- 410 -
…
Vozlišče N+1
B+ drevesa…
 Primer dodajanja z redistribucijo…
Primer: dodati želimo 8*
začetno drevo
Vozlišče N ima samo desnega soseda.
N je polno, desno pa ima še dve mesti.
Uporabimo redistribucijo.
Ključ 13
nadomestimo z 8 –
najmanjšim ključem
desnega soseda
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Končno drevo
- 411 -
B+ drevesa…
 Stroški redistribucije:
– Da ugotovimo, ali je redistribucija možna, moramo preveriti
sosede (do 2 I/O operaciji). Če so sosedi polni, je razdelitev
vseeno potrebna.
– Stroški redistribucije v indeksnem delu
 Preverjanje možnosti redistribucije v povprečju poveča število I/O
operacij, saj se redko zgodi, da bi bila redistribucija možna  se
ne splača.
– Stroški redistribucije v podatkovnem delu
 Če potrebno razdeliti list, moramo vseeno prebrati sosedno
vozlišče, da popravimo kazalce.
 Redistribucija se splača: če list zaseden, preberi soseda. Če prosto
mesto, dodaj, sicer razpolovi.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 412 -
B+ drevesa…
 Brisanje:
– Poiščemo zapis in ga brišemo.
– Če se zgodi, da zasedenost lista, v katerem je bil podatek,
pade pod mejo, moramo redistribuirati podatke s sosednjimi
listi ali pa združiti več listov skupaj.
– Če podatke redistribuiramo med dve vozlišči, moramo
ustrezno spremeniti vsebino nad-vozlišča.
– Če podatke združimo iz dveh vozlišč, moramo vsebino njunih
nad-vozlišč spremeniti tako, da brišemo indeksno polje za
drugo vozlišče.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 413 -
B+ drevesa…
 Primer brisanja
Brišemo 19* in 20*
Po brisanju 20*
podatke v listih
redistribuiramo.
Klljuč 24 nadomestimo
z 27.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Končno drevo
Redistribuirani
podatki
- 414
-
B+ drevesa…
Združevanje listov: ključ se premakne en nivo navzgor
Združevanje v indeksnem delu: ključ se premakne iz zgornje ravni
Brišemo 24*
Po brisanju 24*
združimo dve vozlišči.
Ključ 27 ter njegov
levi kazalec brišemo.
Problem: vozlišče je ostalo
z enim samim ključem
Združeno vozlišče
Vozlišče, ki je imelo en sam ključ, združimo
s sosedom. Ko združujemo vozlišča v
indeksnem delu, pride do manjka
ključev  v našem primeru
manjka ključ za najbolj
levi kazalec pri 30. Dodamo
ključ, ki ga je potrebno
zaradi združevanja
v nad-vozlišču
PODATKOVNE BAZE
1
brisati
(17).
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 415 -
B+ drevesa…
 Pogledali smo:
– redistribucija v listih,
– združevanje v listih in
– združevanje v indeksnem delu
 Ostane:
– redistribucija v indeksnem delu
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 416 -
B+ drevesa…
 Primer redistribucije v indeksnem delu
Primer vmesnega drevesa
po brisanju 24*
Problematično vozlišče
Zaradi združitve smo polji 17 in 20
ter polje 22 v nad-vozlišču
premaknili za dve mesti v desno.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 417 -
B+ drevesa…
 Stroški brisanja
– Pri brisanju pogledamo najprej samo enega soseda
 Če ima odvečna polja, naredimo redistribucijo, sicer združitev
– Če ima vozlišče tudi drugega soseda, se splača pogledati
zaradi možnosti za redistribucijo. Možnosti so velike.
– Redistribucija je cenejša od združevanja, saj se manifestira
kvečjemu še v nadvozlišču. Z redistribucijo pridobimo tudi
manj zasedena vozlišča (manj razlogov za razdruževanje ob
vnosu)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 418 -
B+ drevesa…
 Algoritem za
brisanje
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 419 -
B+ drevesa…
 Duplikati
– Več zapisov ima isti ključ  isti ključ se lahko pojavi v več
listih. Če upoštevamo možnost duplikatov, se postopki
iskanja, dodajanja in brisanja zakomplicirajo.
– Iskanje:
 Lahko rešimo z dodatnimi stranmi (overflow; podobno kot ISAM)
 Običajna rešitev: algoritem poišče najbolj levo podatkovno polje z
iskanim ključem in po potrebi pregleda še nadaljnje strani…
– Brisanje
 če brišemo zapis, moramo v listih pregledati več polj, da najdemo
tistega, ki ga je potrebno brisati.
 Rešitev: v iskalni ključ dodamo še rid (record ID) – tipična rešitev v
komercialnih SUPB.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 420 -
B+ drevesa v praksi…
 Stiskanje ključev
– Višina drevesa premo sorazmerna številu podatkovnih polj in
obratno sorazmerna velikosti indeksnih polj (F).
h = logF(# podatkovnih polj)
– Število I/O operacij za branje podatkovnega polja = h.
…
višina (h)
Indeksno polje
…
…
širina fan_out (F)
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 421 -
…
B+ drevesa v praksi…
 Stiskanje ključev (nadaljevanje):
– Za povečanje učinkovitosti potrebno maksimizirati F oziroma
minimizirati velikost indeksnega polja.
– Velikost indeksnega polja odvisna od velikosti iskalnega
ključa.
– V indeksnem delu se ključi uporabljajo zgolj za usmerjanje…
– Uporabimo tehniko stiskanja na osnovi prefiksov (Prefix Key
Compresion).
Kako lahko skrajšamo ključe?
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 422 -
B+ drevesa v praksi…
 Komercialni sistemi:
– IBM DB2, Informix, Microsoft SQL Server, Oracle, Sybase
ASE – vsi sistemi podpirajo indekse na osnovi B+ dreves;
razlike predvsem v obravnavi duplikatov in postopku
brisanja.
– Sybase ASE: pri brisanju se uporabi
 Združevanje (če zasedenost pod mejo) ali
 Označitev zapisa, da je brisan. Občasno se požene postopek
(garbage collection scheme), ki sprosti nezaseden prostor.
– Oracle: pri brisanju se zapis označi kot brisan. Obnovitev
indeksa možna on-line (ko je indeks v uporabi) ali na kopiji
indeksa z združevanjem nepolnih vozlišč.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 423 -
B+ drevesa v praksi
 Komercialni sistemi (nadaljevanje):
– Informix: pri brisanju se zapis označi kot brisan.
– IBM DB2, Microsoft SQL Server: pri brisanju se zapis
dejansko briše. Če pade zasedenost vozlišča pod mejo, se
uporabi združevanje.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 424 -
Bitni indeksi…
 Bitni indeksi (Bitmap index) so popularen način
indeksiranja, posebej na področju podatkovnih
skladišč.
 Koncept:
– Uporabljajo se za polja, ki imajo majhno število možnih
vrednosti
– Namesto indeksiranja dejanske vrednosti polja, se za vsak
zapis shrani bitni vektor.
– Bitni vektor ima postavljen bit v stolpcu, ki ustreza pravi
vrednosti.
– Če je možnih vrednosti malo, je bitni indeks zelo učinkovit.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 425 -
Bitni indeksi…
 Primer bitnega indeksa
staffNo
fName
lName
position
salary
branchNo
SG14
David
Ford
Manager
18000
B003
SG37
Ann
Beech
Assistant
12000
B003
SL21
John
White
Supervisor
30000
B005
SL41
Julie
Lee
Assistant
9000
B005
SF56
Tim
Becker
Manager
32000
B005
Manager
Assistent
Supervisor
1
0
0
0
1
0
Tabela Staff
B003
B005
1
0
0
1
0
0
1
0
1
0
1
0
0
1
1
0
0
0
1
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Bitni indeks po
polju position
- 426 -
Bitni indeks po
polju branchNo
Bitni indeksi
 Prednosti bitnega indeksa v primerjavi z B+
drevesi:
– Kompaktnost
– Večja učinkovitost pri iskanju po več predikatih (če za njih
obstajajo bitni indeksi)
 Primer:
SELECT staffNo, salary
FROM Staff
WHERE position = ‘Supervisor’ AND branchNo = ‘B003’
– Za rezultat pomnožimo bitna vektorja
za vrednost Supervisor in B003.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 427 -
Supervisor
B003
0
1
0
1
1
0
0
0
0
0
Stični indeksi…
 Stični indeksi (Join index) podobno kot bitni
indeksi popularni na področju podatkovnih
skladišč.
 Koncept:
– Uporabljajo se za tabele, ki imajo skupna polja (npr. tuji
ključi).
– Indeks vsebuje za vsako vrednost ključa kazalec na vse
tabele, ki so indeksirane z istim stičnim indeksom.
– Način sortiranja indeksa je poljuben.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 428 -
Stični indeksi
 Primer stičnega indeksa
Tabela Branch
rowID
branchNo
street
city
postcode
property
rowID
city
SW1 4EH
branch
rowID
20001
B005
22 Deer Rd
London
20002
B007
16 Argyll St
Aberdeen
AB2 3SU
20001
30002
London
20003
B003
163 Main St
Glasgow
G11 9QX
20002
30001
Aberdeen
20004
B004
32 Manse Rd
Bristol
BS99 1NZ
20003
30003
Glasgow
20005
…
…
…
…
20003
30004
Glasgow
…
…
…
Tabela Property
rowID
propertyNo
street
city
postcode
30001
PA14
16 Holhead
Aberdeen
AB2 3SU
30002
PL94
6 Argyll St
London
SW1 4EH
30003
PG4
6 Lawrence St
Glasgow
G11 9QX
30004
PG36
2 Manor Rd
Glasgow
G11 9QX
30005
…
…
…
…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 429 -
…
…
Koliko nepremičnin je v mestih, kjer
so locirane organizacijske enote
nepremičninske agencije?
Gruče…
 Nekateri SUPB nudijo združevanje relacij v gruče
(clustered relations)
 Gruča označuje skupino relacij, ki so fizično
shranjene skupaj, ker imajo nekatere stolpce
enake in se pogosto uporabljajo skupaj.
 Gruče izboljšajo čas dostopa do podatkov na
disku.
 Stolpce, ki so za relacije v gruči skupni,
imenujemo ključ gruče (cluster key).
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 430 -
Gruče
Ključ gruče
 Primer gruče
street
city
postcode
branchNo
staffNo
fName
lName
position
…
22 Deer Rd
London
SW1 4EH
B005
SL21
John
White
Manager
…
SL41
Julie
Lee
Assistant
…
SG37
Ann
Beech
Assistant
…
SG14
David
Ford
Supervisor
…
SG5
Susan
Brand
Manager
…
163 Main St
Glasgow
G11 9QX
B003
Tabela Branch
Tabela Staff
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 431 -
Smernice za izbiro datotečne organizacije…
 Pogledali bomo smernice za izbiro datotečne
organizacije, ko so na voljo naslednje vrste
datotek:
–
–
–
–
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
Kopica
Razpršena datoteka
ISAM
B+ drevo
- 432 -
Smernice za izbiro datotečne organizacije…
 Kopica (neurejena datoteka)
– Izkaže se, v primerih:
 Masovni vnos
 Majhne relacije (samo nekaj strani)
 Ko se večinoma poizveduje po vseh zapisih relacije (v
poljubnem vrstnem redu)
 Ko ima datoteka dodatno strukturo (indeks) in želimo
varčevati s prostorom…
– Ni uporabna ko:
 Pretežno iščemo le določene zapise in ne vseh…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 433 -
Smernice za izbiro datotečne organizacije…
 Razpršena datoteka (hash)
– Izkaže se, v primerih:
 Ko iščemo po enakosti glede na hash polje…
– Ni uporabna ko:
Ko iščemo po vzorcu iz hash polja…
Za intervalno iskanje (npr. 300-500)
Ko iščemo po polju, ki ni hash polje
Ko ne iščemo po celem hash polju ampak le po delu (npr.
samo po enem stolpcu in ne vseh, ki sestavljajo hash polje)
 Ko se hash polje pogosto spreminja




PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 434 -
Smernice za izbiro datotečne organizacije…
 ISAM
– Bolj prilagodljiv kot razpršena datoteka. Omogoča
iskanje po enakosti ključa, po vzorcu ali delu
ključa ter intervalno.
– Slabosti:
 Je statičen indeks. Kreiramo ga, ko kreiramo datoteko.
 S spremembami datoteke učinkovitost pada…
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 435 -
Smernice za izbiro datotečne organizacije
 B+ drevo:
– Bolj prilagodljiv kot razpršena datoteka. Omogoča
iskanje po enakosti ključa, po vzorcu ali delu
ključa ter intervalno.
– Je dinamičen in raste (se manjša) skupaj z
datoteko.
– Spremembe datoteke ne vplivajo na učinkovitost…
– Ohranja urejenost po ključu…
– Če se osnovna datoteka ne spreminja veliko, je
ISAM boljši.
PODATKOVNE BAZE 1
3. Letnik UNI, Informatika
©Laboratorij za informatiko
- 436 -