Top Banner
1 Podatkovne baze 3. letnik, univerzitetni študij UNIVERZA V LJUBLJANI Fakulteta za računalništvo in informatiko Doc. dr. Marko Bajec Gradivo, verzija 1.2 Splošne informacije... Predavatelj Doc. dr. Marko Bajec, univ. dipl. ing. [email protected] Asistent - vaje As. Dr. Aljaž Zrnec, univ. dipl. ing. [email protected] PODATKOVNE BAZE 3. Letnik UNI, Informatika in programska oprema ©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, Addison- Wesley [4] Tomaž Mohorič (2002).Podatkovne baze, Založba Bi-TIM. [5] Peter Rob, Carlos Coronel(2005).Database Systems: Design, Implementation and Management, Sixth Edition, Addison Wesley. PODATKOVNE BAZE 3. Letnik UNI, Informatika in programska oprema ©Laboratorij za informatiko - 3 - Citiranje: glej [4,15-20] = glej v knjigi T. Mohorič, strani od 15 do 20. Vsebina predmeta I. Osnove Uvod v podatkovne baze Relacijski podatkovni model II. Relacijsko poizvedovanje Formalni poizvedovalni jeziki SQL in QBE III. Načrtovanje PB Konceptualno načrtovanje Logično načrtovanje Fizično načrtovanje PODATKOVNE BAZE 3. Letnik UNI, Informatika in programska oprema ©Laboratorij za informatiko - 4 -
275
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OPB_predavanja

1

Podatkovne baze3. letnik, univerzitetni študij

UNIVERZA V LJUBLJANI

Fakulteta za računalništvo in informatiko

Doc. dr. Marko Bajec

Gradivo, verzija 1.2

Splošne informacije...

• Predavatelj

– Doc. dr. Marko Bajec, univ. dipl. ing.

[email protected]

• Asistent - vaje

– As. Dr. Aljaž Zrnec, univ. dipl. ing.

[email protected]

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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, Addison-Wesley

– [4] Tomaž Mohorič (2002). Podatkovne baze, Založba Bi-TIM.– [5] Peter Rob, Carlos Coronel (2005). Database Systems:

Design, Implementation and Management, Sixth Edition, Addison Wesley.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 3 -

Citiranje: glej [4,15-20] = glej v knjigi T. Mohorič, strani od 15 do 20.

Vsebina predmeta

• I. Osnove– Uvod v podatkovne baze– Relacijski podatkovni model

• II. Relacijsko poizvedovanje– Formalni poizvedovalni jeziki– SQL in QBE

• III. Načrtovanje PB– Konceptualno načrtovanje– Logično načrtovanje– Fizično načrtovanje

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 4 -

Page 2: OPB_predavanja

2

Poglavje I

Uvod v podatkovne baze

Osnove

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 5 -

� 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

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 6 -

Sistemi za upravljanje s PB

• Sistem za upravljanje s podatkovno bazo – SUPBje 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 7 -

Zgodovina shranjevanja podatkov

• Zgodnja 60’: Charles Bachman iz General Electric-a razvije prvi

splošno-namenski SUPB (Integrated Data Store).

– 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 8 -

(glej [4,159]).

Page 3: OPB_predavanja

3

Zgodovina shranjevanja podatkov

• Pozna 60’: IBM razvije Information

Management System (IMS), ki se ponekod

uporablja še danes.

– Predstavlja osnovo za hierarhični podatkovni

model.

– American Airlines in IBM razvijeta sistem SABRE za

rezervacije letalskih kart – sistem omogoča več

uporabnikom dostop do skupnih podatkov preko

mreže.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 9 -

(glej [4,181]).

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 12 -

Page 4: OPB_predavanja

4

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,

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 16 -

Page 5: OPB_predavanja

5

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 19 -

Datotečni sistemi in SUPB…

• SUPB zagotavlja nadzor nad dostopom do podatkov:

– 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 20 -

Page 6: OPB_predavanja

6

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 23 -

Datotečni sistemi in SUPB…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 24 -

Page 7: OPB_predavanja

7

Datotečni sistemi in SUPB…

• Komponente SUPB

– Strojna oprema

– Programska oprema

– Podatki

– Postopki

– Ljudje

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 25 -

Vir: [2,19]

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 aplikacijePODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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

• Skrbnik podatkov

• Skrbnik podatkovne baze (DBA – Database Administrator)

• Analitik, načrtovalec PB

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 28 -

Page 8: OPB_predavanja

8

Podatkovni model

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 29 -

Je osnova za generiranje

Primer konceptualnega modela

Model Entiteta-razmerje

Podatkovnimodel

Opis, kaj želimo hraniti

Relacijski podatkovni model

Primer logičnega modela za relacijske PB

Opiše entitete in razmerja na način, ki je neodvisen od ciljnega SUPB Konceptualni

model

Opiše entitete in razmerja v jeziku, ki ga razume ciljni SUPB.

Logični model

Tehnike

Relacijskidiagram

Diagram ERRazredni diagram

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,...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 31 -

Zunanja shema 1

Zunanja shema 2

Zunanja shema 3

Konceptualnashema

Fizičnashema

DISK

Metapodatki

Fizičnipodatki

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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 32 -

Zunanja shema 1

Zunanja shema 2

Zunanja shema 3

Konceptualnashema

Fizičnashema

DISK

Page 9: OPB_predavanja

9

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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 33 -

Zunanja shema 1

Zunanja shema 2

Zunanja shema 3

Konceptualnashema

Fizičnashema

DISK

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 34 -

Zunanja shema 1

Zunanja shema 2

Zunanja shema 3

Konceptualnashema

Fizičnashema

DISK

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 tri-nivojske 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 36 -

Page 10: OPB_predavanja

10

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 39 -

Tipična zgradba SUPB…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 40 -

Aplikacija A SQL vmesnik S

Stroj za evaluacijo poizvedb

Izvajalec plana Sintaktični analizator

Evaluator operatorjev Optimizator

Datoteke in metode dostopa

Upravljavec medpomnilnika

Upravljavec prostora na disku

Upravljalec obnove podatkov

Enota za nadzor sočasnosti

Upravljalec transakcij

Upravljalec zaklepanja

SQL ukazi

SUPB

Indeksne datoteke

Podatkovne datoteke

Sistemski katalogPodatkovna baza

Nadzorovan dostop Nenadzorovan dostop

Page 11: OPB_predavanja

11

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 SpaceManager): 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 BAZE3. Letnik UNI, Informatika in programska oprema©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ženjihpodatkov.

– Upravljalec obnove podatkov (Recovery Manager): Vzdržuje dnevnik in skrbi za obnavljanje sistema v zadnje skladno stanje pred nesrečo.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 43 -

Poglavje I

Uvod v podatkovne baze

Relacijski podatkovni model

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 44 -

� 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

Page 12: OPB_predavanja

12

Logični podatkovni modeli

• Logični podatkovni model v jeziku ciljnega SUPB predstavi podatkovne strukture.

• Vrste logičnih podatkovnih modelov:

– Hierarhični podatkovni model

– Mrežni podatkovni model

– Relacijski podatkovni model

– Objektni podatkovni model

– ...PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 46 -

Hierarhični podatkovni model…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 47 -

ODDELEK

DEL_MESTO ZAPOSLENI

NASLOV PLAČA 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,

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 48 -

Page 13: OPB_predavanja

13

Mrežni podatkovni model…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 49 -

ODDELEK

DEL_MESTO ZAPOSLENI

NASLOV PLAČA NAZIV

PROJEKT

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;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 51 -

Terminologija pri relacijskem modelu...

• Pri relacijskem modelu uporabljamo določeno terminologijo:

– Relacija

– Atribut

– Domena

– n-terica

– Stopnja relacija

– Števnost relacije

– Relacijska PBPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 52 -

Page 14: OPB_predavanja

14

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 53 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

Relacija

Terminologija pri relacijskem modelu...

• Atribut je poimenovani stolpec relacije.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 54 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

Atribut relacije

Terminologija pri relacijskem modelu...

• Domena je množica dovoljenih vrednosti enega ali več atributov, ki so vključeni v to domeno.

• Primeri domen:

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 56 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

n-terica relacijeŠtevnost relacije

Stopnja relacije

Page 15: OPB_predavanja

15

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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));

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 60 -

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 Ž

Page 16: OPB_predavanja

16

Relacijska shema...

• Relacijske sheme so del konceptualnihoziroma zunanjih shem. Razlagajo pomen relacij.

• Glede na skromno izrazno možnost nudijo informacijo le poznavalcem podatkovne baze, ki znajo relacijske sheme pravilno interpretirati.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 62 -

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

Relacija, predstavljena kot tabela

Shema relacije

Domene atributov relacije

Shema 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 istedomene.PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 64 -

Page 17: OPB_predavanja

17

PrimeriIme Starost (v letih),

teža (v kg)

Tine S15_T50

Meta S20_T45

Jure S40_T80

Ana S5_T10

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 65 -

Oseba Telefon

Tine Mikuž 1 47 68 819; 041 467 766

Ana Pregelj 5 36 61 234; 5 36 61 235

Celice ne vsebujejo atomarnih vrednosti

Celice vsebujejo več vrednosti

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 66 -

Funkcionalne odvisnosti...

• Poznamo več vrst odvisnosti:

– Funkcionalne odvisnosti (functional dependency)

– Večvrednostne odvisnosti (multivalueddependency)

– Stične odvisnosti (join dependency)

• Obravnavali bomo funkcionalne odvisnosti; ostale bodo obravnavane v okviru postopka razširjene normalizacije (PB2, drugi semester).

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 67 -

Funkcionalne odvisnosti...

• Predpostavimo, da obstaja relacijska shema Rz množico atributov, katere podmnožici sta Xin 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 Xin se ne bi ujemali v vrednostih atributov Y.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 68 -

Page 18: OPB_predavanja

18

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 BAZE3. Letnik UNI, Informatika in programska oprema©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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 70 -

Ključi relacije...

• Ker je relacija množica n-teric, so v njej vse n-terice 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 A A ... A

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 72 -

Page 19: OPB_predavanja

19

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 74 -

Primeri ključevŠifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 75 -

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

ARTIKEL

RAČUNPrimarni ključ v tabeli Artikel

Primarni ključ v tabeli Račun

Tuji ključ v tabeli Račun � kaže na primarni ključ v tabeli Artikel

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 76 -

Page 20: OPB_predavanja

20

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 79 -

Primeri omejitev

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 80 -

Pedagog

EMŠO N13 <pk>DavcnaSt C9 not nullIme C20 Priimek C20DtmRoj DKatedra N3 <fk>

Primarni ključ � ne sme biti NULL

Zahtevamo obveznost podatka

Katedra

Katedra N3 <pk>Naziv C20 not nullStLab N2 Vodja N3 <fk>

Omejitev povezave

Page 21: OPB_predavanja

21

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 poizvedbanad 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 84 -

Page 22: OPB_predavanja

22

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 85 -

Primer pogleda

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 86 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

16/05 A10 3

17/05 A10 1

RAČUNARTIKEL

SELECT A.sifra, A.naziv, sum(R.kolicina) AS ProdanihFROM artikel A, racun RWHERE A.sifra = R.sifraGROUP BY A.sifra, A.naziv

Šifra Naziv Prodanih

A10 Telovadni copati Nike 5

X12 Ženska jakna QuickSilver 1

...

Poglavje II

Relacijsko poizvedovanje

Formalni poizvedovalni jeziki

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 87 -

� O relacijskih poizvedovalnih jezikih� Relacijska algebra� Relacijski račun

Povzeto po [2, 88-111] 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 88 -

Page 23: OPB_predavanja

23

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 BAZE3. Letnik UNI, Informatika in programska oprema©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,

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 90 -

Operacije relacijske algebre…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 91 -

Operacije relacijske algebre

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 92 -

Page 24: OPB_predavanja

24

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 93 -

Primer selekcije

• Izpiši vse artikle z zalogo manjšo od 2

• σzaloga<2 (R)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 94 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

R=ARTIKEL

Šifra Naziv Zaloga

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

σzaloga<2 (R)

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 95 -

Primer projekcije

• Izpiši nazive in zalogo vseh artiklov

• Πnaziv, zaloga (R)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 96 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

R=ARTIKEL

Naziv Zaloga

Telovadni copati Nike 10

Trenerka Bali 4

Moška jakna QuickSilver 1

Ženska jakna QuickSilver 0

Πnaziv, zaloga (R)

Page 25: OPB_predavanja

25

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 97 -

Primer unije

• Izpiši vsa mesta, kjer se nahajajo skladišča ali stranke

• Πkraj (R) ∪ Πkraj (S)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 98 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

LJ

CE

PO

GO

MB

Πkraj (R) ∪ Πkraj (S)

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 99 -

Primer razlike

• Izpiši vsa mesta, kjer se nahajajo skladišča ne pa tudi stranke

• Πkraj (R) − Πkraj (S)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 100 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

MBΠkraj (R) − Πkraj (S)

Page 26: OPB_predavanja

26

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 101 -

Primer preseka

• Izpiši vsa mesta, kjer se nahajajo tako skladišča kot stranke

• Πkraj (R) ∩ Πkraj (S)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 102 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

LJ

GO

Πkraj (R) ∩ Πkraj (S)

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 BAZE3. Letnik UNI, Informatika in programska oprema©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))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 104 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

A10 Telovadni copati Nike X12 1

A12 Trenerka Bali A10 1

A12 Trenerka Bali X12 1

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

Page 27: OPB_predavanja

27

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 105 -

Primer kartezijskega produkta s selekcijo

• σR.šifra = S.šifra artikla ((Πšifra, naziv (R)) × (Πšifra artikla,

količina (S)))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 106 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

X12 Ženska jakna QuickSilver X12 1

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 107 -

Stične operacije…

• Obstaja več vrst stičnih operacij:

– Stik Theta (Theta join)

– Ekvistik (Equijoin) poseben primer stika Theta)

– Naravni stik (Natural join)

– Odprti stik (Outer join)

– Delni stik (Semijoin)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 108 -

Page 28: OPB_predavanja

28

Stik Theta (θ stik)…

• R F S

• 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 111 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

X12 Ženska jakna QuickSilver 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 112 -

Page 29: OPB_predavanja

29

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))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 113 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0 Račun Šifra Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Količina

A10 Telovadni copati Nike 1

X12 Ženska jakna QuickSilver 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

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 114 -

Primer zunanjega stika

• Izpiši osebe in njihova začasna prebivališča

• (ΠPriimek in ime, PTT (R)) S

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 115 -

ID Priimek in ime PTT

1 Kante Janez 5270

2 Tratnik Jože 5000

3 Mali Mihael

4 Brecelj Jana 1000

R=OSEBA

PTT Naziv

1000 Ljubljana

5000 Nova Gorica

5270 Ajdovščina

S=KRAJ

Priimek in ime PTT Naziv zač. preb.

Kante Janez 5270 Ajdovščina

Tratnik Jože 5000 Nova Gorica

Mali Mihael

Brecelj Jana 1000 Ljubljana

(ΠPriimek in ime, PTT(R)) S

Delni stik

• R F S

• Delni stik predstavlja relacijo, ki vsebuje tiste n-terice (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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 116 -

Page 30: OPB_predavanja

30

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))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 117 -

Š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

R=ARTIKEL

Šifra Kraj

LJ Ljubljana, Tržaška 33

MB Maribor, Prešernov trg 2

GO Nova Gorica, Cankarjeva 2

S=SKLADIŠČE

Šifra Naziv Skladišče Dobavitelj Zaloga

A10 Telovadni copati Nike LJ Nike 10

BC80 Moška jakna QuickSilver LJ Karma 1

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 BAZE3. Letnik UNI, Informatika in programska oprema©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)))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 119 -

Šifra Kupec

A10 K1

A12 K1

BC80 K2

X12 K3

A10 K3

BC80 K3

BC80 K4

X12 K4

A12 K5

Šifra

BC80

X12

Πšifra artikla(σdobavitelj = ‘Karma’ (S))Πšifra, kupec (R)

Kupec

K3

K4

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 120 -

Page 31: OPB_predavanja

31

Primer agregatnih operacij

• Kakšna je povprečna cena artiklov v skladišču?

• ρR(AvgCena) ℑAVG Cena (σZaloga > 0 (R))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 121 -

Šifra Naziv Skladišče Cena Zaloga

A10 Telovadni copati Nike LJ 17.990 10

A12 Trenerka Bali MB 6.750 4

BC80 Moška jakna QuickSilver LJ 14.290 1

X12 Ženska jakna QuickSilver GO 14.290 0

R=ARTIKEL

AvgCena

13.010

ρR(AvgCena) ℑAVG Cena (Zaloga > 0 (R))

Operacija ρR(ime) Op poimenuje atribut, ki ga dobimo z operacijami Opnad relacijo R, z imenom ime

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 BAZE3. Letnik UNI, Informatika in programska oprema©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)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 123 -

ŠifraR Šifra artikla Količina Cena za enoto

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

R=RAČUN

račun SkupnaCena

1/05 35.500

2/05 25.650

3/05 112.990

ρR(račun, SkupnaCena) šifra računa ℑ SUM cena*količina (R)

Grupiramo po šifri računa

GAℑAL(R)

Vaja

• Imamo naslednje relacije:

Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (guestNo, guestName, guestAddress)

• Opiši relacije, ki jih pridobimo z naslednjimi operacijami relacijske algebre:

a) σHotel.hotelNo=Room.hotelNo(Hotel × Room))

b) ΠhotelName(Hotel Hotel.hotelNo = Room.hotelNo(σprice >

50(Room)))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 124 -

Page 32: OPB_predavanja

32

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

3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 126 -

X zasluži več kot Y

funkcija

argument

Janez Novak zasluži več kot Marija Novak

Trditev, ki jo pridobimo z nadomestilom argumentov z vrednostmi

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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čunaiščemo n-terice, za katere je predikat resničen.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 128 -

Page 33: OPB_predavanja

33

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 n-terice A, za katere velja P(A) je resnično:

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 132 -

Page 34: OPB_predavanja

34

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 BAZE3. Letnik UNI, Informatika in programska oprema©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

3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 a1PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 136 -

Page 35: OPB_predavanja

35

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 137 -

Primeri...

• Imamo naslednje relacije:

Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price, free)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (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)

∧ ∃ ∧

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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)) }

• 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 140 -

Nevaren izraz

Izraz ni varen, ker vrača vrednosti, ki so izven relacije Artikel in zato izven domene izraza!!

Page 36: OPB_predavanja

36

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 144 -

Page 37: OPB_predavanja

37

Primeri...

• Imamo naslednje relacije:

Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (guestNo, guestName, guestAddress)

• Izpiši imena hotelov v Ljubljani

{hName | (∃hNo, hAddress) (Hotel(hNo, hName, hAddress) ∧hAddress = ‘Ljubljana’) }

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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) }

• ali

{hName | ∃hNo, hName, hAddress, rNo, rPrice: (Hotel (hNo, hName, hAddress) ∧ (Room(rNo, hNo, 2, rPrice, true) ) }

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 146 -

Uporabimo konstanto namesto domenske spremenljivke

Uporabimo isto domensko spremenljivke

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 148 -

Page 38: OPB_predavanja

38

Poglavje II

Relacijsko poizvedovanje

SQL in QBE

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 149 -

� Uvod v SQL� Pisanje SQL stavkov� Stavki skupine SQL DML� Stavki skupine SQL DDL� QBE – Query-By-Example

Povzeto po [2, 112-225] 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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-ovoimplementacijo System/38

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 152 -

Page 39: OPB_predavanja

39

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 153 -

Dodatki za proceduralnostVir 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 154 -

Proceduralnost dosegljiva tudi prek integracije SUPB in programskih jezikov. Npr. SQL standard definira dodatek SQL/JRT za podporo Javi v SQL bazah.

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 BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 156 -

Page 40: OPB_predavanja

40

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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č).

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 159 -

BNF = Backus Naur Form

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.990PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 160 -

Page 41: OPB_predavanja

41

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 kompleksnaPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 161 -

SELECT stavek…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 162 -

SELECT [DISTINCT | ALL]

{* | [columnExpression [AS newName]] [,...] }

FROM TableName [alias] [, ...]

[WHERE condition]

[GROUP BY columnList] [HAVING condition]

[ORDER BY columnList]

SELECT stavek…

• FROM Določa tabele za poizvedbo

• WHERE Filtrira vrstice

• GROUP BY Združuje vrstice po vrednostih izbranih stolpcev

• HAVING Filtrira skupine glede na določene pogoje

• SELECT Določa stolpce, ki naj se pojavijo v izhodni relaciji

• ORDER BY Določa vrstni red vrstic na izhoduPODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 163 -

Vrstnega reda sklopov ni možno spreminjati!Obvezna sta samo SELECT in FROM sklopa!

Primeri

• Za primere bomo uporabljali shemo PB o hotelihHotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo, comments)

Guest (guestNo, guestName, guestAddress)

• Izpiši vse podatke hotelih

SELECT hotelNo, hotelName, address

FROM Hotel

ali krajše

SELECT * FROM Hotel

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 164 -

Page 42: OPB_predavanja

42

Uporaba DISTINCT

• Izpiši oznake hotelov in sob, ki so bile kdaj koli rezervirane

SELECT DISTINCT hotelNo, roomNo

FROM Booking

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 165 -

Ukaz DISTINCT eliminira dvojnike

Izračunana polja

• Izpiši ceno sob za deset dnevni najem

SELECT roomID, type, price*10 ASCenaNajema

FROM Room

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 166 -

Uporabljamo formule

Izračunanemu stolpcu dodelimo naziv

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 167 -

Pogoj 1 Pogoj 2

Pogoje združujemo z logičnimi operatorji

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 168 -

BETWEEN vključuje spodnjo in zgornjo mejo!

Uporabimo lahko tudi negacijo NOT BETWEEN

BETWEEN ne doda veliko SQL moči, možno izraziti posredno

Page 43: OPB_predavanja

43

Iskanje po članstvu množice

• Izpiši oznake hotelov in številke dve ali tri-posteljnih sob

SELECT hotelNo, roomNo

FROM Room

WHERE type IN (2,3)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 169 -

Članstvo množice

Uporabimo lahko tudi negacijo NOT IN

IN ne doda veliko SQL moči; koristno pri večjih množicah

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%’

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 170 -

SQL ima dva posebna znaka za iskanje z vzorcem:

Znak % nadomešča katerikoli niz znakov

Znak _ nadomešča katerikoli znak

Iskanje z vzorcem

Iskanje z NULL vrednostjo v pogoju

• Izpiši vse rezervacije brez podanih komentarjev

SELECT *

FROM Booking

WHERE comments IS NULL

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 171 -

Iskanje z NULL vrednostjo

Uporabljamo lahko tudi negacijo IS NOT NULL

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 172 -

ASC – ascending � naraščujoče

DESC – descending � padajoče

Page 44: OPB_predavanja

44

Agregiranje podatkov…

• ISO standard definira pet agregarnih operacij

– COUNT vrne število vrednosti v določenem stolpcu

– SUM vrne seštevek vrednosti v določenem stolpcu

– AVG vrne povprečje vrednosti v določenem stolpcu

– MIN vrne najmanjšo vrednost v določenem stolpcu

– MAX vrne največjo vrednost v določenem stolpcu

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 173 -

Agregiranje podatkov…

• COUNT, MIN in MAX se uporabljajo za numerične in ne-numerične vrednosti, SUM inAVG 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 176 -

Napačna raba agregacije

Page 45: OPB_predavanja

45

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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:

• imena stolpcev

• agregarne operacije

• konstante ali

• izraze, ki so sestavljeni iz kombinacije naštetih

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 180 -

Page 46: OPB_predavanja

46

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 181 -

Za vsako skupino hotel, tip sobe vrne število sob

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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) > 4PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 SELECTstavka (subselect).

• Vgnezdeni SELECT stavki se lahko pojavijo tudi v INSERT, UPDATE in DELETE stavkih.PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 184 -

Page 47: OPB_predavanja

47

Primer vgnezdenega SELECT stavka

• Izpiši nazive hotelov, ki imajo vsaj 10 troposteljnih sob

SELECT hotelName

FROM Hotel

WHERE hotelNo IN

( SELECT hotelNo

FROM Room

GROUP BY hotelNo

HAVING COUNT(hotelNo) > 9)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 185 -

Ali je stavek pravilen?

Manjka WHERE pogoj vvgnezdenem SELECT stavku:

WHERE type = 3

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 188 -

Page 48: OPB_predavanja

48

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 192 -

Page 49: OPB_predavanja

49

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 196 -

Page 50: OPB_predavanja

50

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)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 197 -

Zunanji stik...

• S pomočjo zunanjega stika dobimo v rezultat tudi vrstice, ki nimajo stične vrednosti v drugi tabeli.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 198 -

Brecelj Jana

Mali Mihael

Tratnik Jože

Kante Janez

Priimek in ime

10004

3

50002

52701

PTTID

R=OSEBA

Ajdovščina5270

Nova Gorica

Ljubljana

Naziv

5000

1000

PTT

S=KRAJ

1000

5000

5270

PTT

Brecelj Jana

Mali Mihael

Tratnik Jože

Kante Janez

Priimek in ime

Ljubljana

Nova Gorica

Ajdovščina

Naziv zač. preb.

(ΠPriimek in ime, PTT, Naziv zač.preb.(R)) 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 199 -

Kaj izpiše zgornja poizvedba?

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.guestAddressPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 200 -

Page 51: OPB_predavanja

51

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 203 -

Kaj dobimo, če ta pogoj izpustimo?

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 204 -

Page 52: OPB_predavanja

52

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

3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 208 -

Hotel(hotelNo, hotelName, address)Guest(guestNo, guestName, address)

!

Page 53: OPB_predavanja

53

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 209 -

Presek z uporabo COORESPONDING BY

(SELECT *

FROM Hotel)

INTERSECT CORRESPONDING BY address

(SELECT *

FROM Guest)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 210 -

Hotel(hotelNo, hotelName, address)Guest(guestNo, guestName, address)

!

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 211 -

EXCEPT z uporabo COORESPONDING BY

(SELECT *

FROM Guest)

EXCEPT CORRESPONDING BY address

(SELECT *

FROM Hotel)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 212 -

Hotel(hotelNo, hotelName, address)Guest(guestNo, guestName, address)

!

Page 54: OPB_predavanja

54

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 213 -

INSERT stavek...

• Seznam dataValueList mora ustrezati seznamucolumnList:

– Š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 BAZE3. Letnik UNI, Informatika in programska oprema©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

3. Letnik UNI, Informatika in programska oprema©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);

• ali

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

VALUES (21, 109, ’12.12.2005’, ’17.12.2005’, 109);

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 216 -

stolpec comments je neobvezen

Page 55: OPB_predavanja

55

Primeri INSERT stavkov...

• Vnos več vrstic iz ene ali več drugih tabel...

INSERT INTO TableName [ (columnList) ]

SELECT ...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

WHERE hotelNo NOT IN

(SELECT DISTINCT hotelNo

FROM BookingWHERE B.dateFrom>=date()));

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 219 -

Kaj se zgodi, če spodnji del SQL stavka spustimo?

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 220 -

Page 56: OPB_predavanja

56

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 224 -

Page 57: OPB_predavanja

57

Stavki skupine SQL DDL...

• DDL skupina zajema SQL stavke za manipulacijo s strukturo podatkovne baze.

• Kaj si bomo pogledali:

– 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?PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 225 -

Stavki skupine SQL DDL...

• Kaj si bomo pogledali (nadaljevanje):

– 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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 226 -

Podatkovni tipi v SQL standardu

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 227 -

Vir: [2,159]

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 228 -

Page 58: OPB_predavanja

58

Integrity Enhancement Feature...

• Obveznost podatkov

hotelNo Numeric(3) NOT NULL

• Omejitve domene

CHECK

spol CHAR NOT NULL

CHECK (spol IN (‘M’, ‘Ž’))

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 232 -

Page 59: OPB_predavanja

59

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 HotelPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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

– CASCADE

– SET NULL

– SET DEFAULT

– NO ACTIONPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 236 -

Page 60: OPB_predavanja

60

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 DROP SCHEMA

CREATE/ALTER DOMAIN DROP DOMAIN

CREATE/ALTER TABLE DROP TABLE

CREATE VIEW DROP VIEW

• Mnogi SUPB-ji omogočajo tudi

CREATE INDEX DROP INDEX

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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

3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 240 -

Page 61: OPB_predavanja

61

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 241 -

Primer kreiranja tabele...

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 242 -

Najprej kreiramo domene

Primer kreiranja tabele...

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 243 -

potem kreiramo tabelo ALTER TABLE stavek...

• S stavkom ALTER TABLE lahko:

– 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;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 244 -

Page 62: OPB_predavanja

62

Primeri ALTER TABLE stavkov...

• Spremeni tabelo Booking tako, da ukineš privzeto vrednost stolpca fromDate.

ALTER TABLE Booking

ALTER fromDate DROP DEFAULT;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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:

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 248 -

Page 63: OPB_predavanja

63

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 252 -

Page 64: OPB_predavanja

64

Izvedba pogleda...

• Imamo naslednji SELECT stavek

SELECT hNo, hName, hStRez

FROM HotelRez

WHERE hNo = 201

ORDER BY hName

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 253 -

View HotelRez

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

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 CntPODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©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 BPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 256 -

Page 65: OPB_predavanja

65

Izvedba pogleda...

• (IV) GROUP BY in HAVING sklop se kopirata iz SELECT stavka, ki definira pogled:

GROUP BY H.hotelNo, H.hotelName

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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.hotelNamePODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 260 -

Page 66: OPB_predavanja

66

Primeri

SELECT COUNT(hStRez)

FROM HotelRez;

SELECT *

FROM HotelRez

WHERE hStRez > 2;PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 262 -

SELECT hNo, hName, hStRezFROM HotelRez HR, Booking BWHERE HR.hNo = B.hotelNo

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 BAZE3. Letnik UNI, Informatika in programska oprema©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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 264 -

Page 67: OPB_predavanja

67

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 268 -

Page 68: OPB_predavanja

68

Prednosti in slabosti pogledov

• PREDNOSTI– Podatkovna neodvisnost

– Ažurnost

– Večja varnost

– Manjša kompleksnost

– Udobnost

– Prilagodljivost

– Podatkovna celovitost

• SLABOSTI:– Omejitve spreminjanja

– Omejitve strukture

– Slabša učinkovitost

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 272 -

Page 69: OPB_predavanja

69

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 276 -

Page 70: OPB_predavanja

70

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 280 -

Page 71: OPB_predavanja

71

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

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 284 -

Page 72: OPB_predavanja

72

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,

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 286 -

Nadzor dostopa in SQL...

• Ko uporabnik kreira tabelo s CREATE TABLEavtomatsko postane lastnik tabele z vsemi pravicami.

• Ostalim uporabnikom dodeli pravice z ukazom GRANT.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 288 -

Page 73: OPB_predavanja

73

Nadzor dostopa in SQL...

• Uporaba ukaza GRANT

GRANT {PrivilegeList | ALL PRIVILEGES}

ONObjectName

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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 290 -

Primer dodeljevanja pravic...

• Vsem Vodjem oddelkov dodaj vse pravice nad tabelo Delavec.

GRANT ALL PRIVILEGESON DelavecTO VodjaOddelka WITH GRANT OPTION;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 DelavecTO Osebje, Direktor;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 292 -

Page 74: OPB_predavanja

74

Nadzor dostopa in SQL...

• Z ukazom REVOKE pravice odvzamemo

REVOKE [GRANT OPTION FOR]

{PrivilegeList | ALL PRIVILEGES}

ON ObjectName

FROM {AuthorizationIdList | PUBLIC}

[RESTRICT | CASCADE]

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 296 -

Page 75: OPB_predavanja

75

Primer odvzemanja pravic...

• Odvzemi SELECT pravice nad tabelo Delavec vsem uporabnikom.

REVOKE SELECT

ON Delavec

FROM PUBLIC;

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©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 BAZE3. Letnik UNI, Informatika in programska oprema©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

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 299 -

QBE – Query-By-Example...

• QBE uporabnikom omogoča:

– 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. PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 300 -

Page 76: OPB_predavanja

76

QBE – Query-By-Example...

• Primeri iz Accessa

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 301 -

Primeri iz Access-a...

• Poizvedba SELECT

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 302 -

Primeri iz Access-a...

• Poizvedba SELECT

• določitev kriterija (selekcija)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 303 -

Primeri iz Access-a...

• Poizvedba SELECT

• Stik tabel

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 304 -

Page 77: OPB_predavanja

77

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba agregatov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 305 -

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba parametrov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 306 -

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba “Autolookup”

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 307 -

Primeri iz Access-a...

• Posebne vrste SQL stavkov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 308 -

Page 78: OPB_predavanja

78

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba “Crosstab” poizvedbe

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 309 -

Primeri iz Access-a...

• Kreiranje nove tabele

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 310 -

Primeri iz Access-a...

• Brisanje zapisov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 311 -

Primeri iz Access-a

• Spreminjanje zapisov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 312 -

Page 79: OPB_predavanja

79

Poglavje III

Načrtovanje PB

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 313 -

� Pristopi k načrtovanju PB� Nivojsko načrtovanje� Konceptualno modeliranje� Logično modeliranje� Fizično modeliranje

Pristopi k načrtovanju PB

• Obstajata dva glavna pristopa k načrtovanju podatkovne baze:

– Pristop od spodaj navzgor in

– Pristop od vrha navzdol.

• Pristop od spodaj navzgor:

– začne z atributi ter jih združuje v skupine

– Tak pristop predstavlja normalizacija

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 314 -

Normalizacija = identifikacija potrebnih atributov in njihovih agregacij v normalizirane relacije na osnovi funkcionalnih odvisnosti.

Pristop z vrha navzdol

• Pristop od spodaj navzgor primeren za enostavne podatkovne baze z majhnim številom atributov.

• Za večje baze primeren pristop z vrha navzdol.

– Na začetku podatkovni modeli z le nekaj osnovnih entitetnih tipov in razmerij

– Korakoma razgradnja na pod-entitete, povezave in atribute

– Tak pristop predstavlja uporaba tehnike Entiteta –Razmerje (E-R).

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 315 -

Pristop znotraj navzven

• Pristop znotraj navzven povezan s pristopom od spodaj navzgor

– Najprej identificiramo nekaj najpomembnejših entitetnih tipov iz domene

– Korakoma dodajamo nove entitetne tipe, razmerja in atribute

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 316 -

Page 80: OPB_predavanja

80

Pristop po delih

• V praksi najbolj uporabna strategija

• Načrtovanje razdelimo na več lažje obvladljivih delov:

– Najprej kreiramo okvirno shemo z najpomembnejšimi entitetnimi tipi in razmerji med njimi

– Shemo razdelimo na področja (jedra so identificirani entitetni tipi)

– Za vsako področje so vključeni poznavalci področja

– Načrtovanje za posamezna področja lahko poteka vzporedno

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 317 -

Shema pristopa po delih

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 318 -

Delitev poslovne domene na področja, kreiranje

osnovne sheme

Okvirnashema

Področje 1 ...

Področnashema 1

Področnashema 2

Področnashema n

Končnashema

Področje 2 Področje n

Trije nivoji načrtovanja – trije modeli...

• Konceptualno načrtovanje – konceptualni oz.

semantični podatkovni model

• Logično načrtovanje – logični podatkovni

model

• Kreiranje fizične podatkovne baze – fizična podatkovna baza oz. fizični podatkovni model

• Prehodi med modeli in avtomatizacija prehodov

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 319 -

Trije nivoji načrtovanja – trije modeli

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 320 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Page 81: OPB_predavanja

81

Konceptualno načrtovanje

• Konceptualno načrtovanje je opredelitev podatkovnih potreb oz. zahtev poslovne domene s pomočjo konceptualnega modela.

• Konceptualno načrtovanje preko konceptualnega modela poskrbi za opis pomena podatkov, potrebnih za poslovno domeno.

• Konceptualnega načrtovanja ne moremo avtomatizirati, za njegovo izvedbo je odgovoren analitik. Gre za prenos semantike v model.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 321 -

Model je poenostavitev realnosti, pri čemer je abstrakcija realnosti poljubno natančna.

Pomembno je, da model prikazuje pomembne elemente in izpušča tiste, ki nas ne zanimajo.

Modele razvijamo zato, da bi sisteme bolje razumeli.

Pomen konceptualnega načrtovanja

• Je najbolj kritično – napake se prenašajo naprej na naslednje modele.

• Zahteva sodelovanje uporabnikov. Uporabniki so nosilci znanja o poslovni domeni, so poznavalci semantike.

• Konceptualno načrtovanje mora upoštevati tudi poslovna pravila.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 322 -

Umestitev konceptualnega načrtovanja

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 323 -

svet mentalni model konceptualni model logični model PB

Predstavitev konceptualnih modelov

• Najpogosteje uporabljana tehnika za predstavitev konceptualnih podatkovnih modelov sta entitetni model (model entiteta-razmerje) ter razredni diagram. Obravnavali bomo prvega!

• Nazivi, ki se uporabljajo:

– Konceptualni podatkovni model

– Podatkovni model

– Entitetni model

– ER model

• Obstaja tudi razširjeni model entiteta razmerje

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 324 -

Page 82: OPB_predavanja

82

Gradniki entitetnega modela

• Entitetni tip

• Atribut

• Razmerje

• Enolični identifikator

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 325 -

Entitetni tip – entiteta...

• Entitete so posamezni primerki tipov objektov iz poslovne domene: dogodki, predmeti, osebe, pravila, dejstva

• O entitetah obstaja določena predstava o tem:

– kakšne lastnosti dejansko imajo

– kakšne lastnosti jim moramo določiti (morajo imeti), da bodo izpolnjevale poslanstvo entitetnega modela

• Na osnovi predstave o tem in percepcije, lahko entitete klasificiramo v entitetne tipe: vse entitete, ki ustrezajo določeni predstavi,

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 326 -

Entitetni tip – entiteta

• Vsak trenutek pripada posameznemu entitetnemu tipu množica entitet tega entitetnega tipa, ki jo imenujemo entitetna množica

• Entitetna množica je časovno spremenljiva: entitete nastajajo, se spreminjajo in tudi izginjajo (izstopajo iz množice).

• Entitetna množica je v nekem trenutku lahko tudi prazna.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 327 -

Predstavitev entitetnega tipa

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 328 -

Page 83: OPB_predavanja

83

Atribut...

• Entitete imajo določene lastnosti, posamezne entitete (istega entitetnega tipa) se med seboj razlikujejo po vrednosti njihovih lastnosti

• Entiteta ima praviloma veliko lastnosti, le del teh lastnosti je zanimiv oz. pomemben za opazovano poslovno domeno

• Lastnosti, ki so pomembne za opazovano poslovno domeno, vključimo v konceptualni model tako, da jih kot atribute določimo entiteti (entitetnemu tipu)

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 329 -

Atribut...

• Govorimo lahko o več vrstah lastnosti:

– Entitetna imena: naziv, ime, opis

– Prave entitetne lastnosti: višina, teža, cena, vrednost

– Lastnosti, ki jih določimo za potrebe poslovnih procesov, poslovnih funkcij in poslovnih pravil: statusi

• Atribut določimo za tisto lastnost, ki je za poslovno domeno pomembna

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 330 -

Atribut

• Kardinalnost atributa je minimalna in maksimalna Glede na kardinalnost atributa ločimo:– Totalni atribut (1,n), kjer je n >= 1

– Parcialni atribut (0,n), kjer je n >= 1

– Enovrednostni atribut (m,1), kjer je m € {0,1}

– Večvrednostni atribut (m,n), kjer je m € {0,1} in n>1

• Minimalna števnost 0 pomeni, da je atribut lahko brez vrednosti (ni obvezen).

• Atribut pripada določenemu tipu: numerični, znakovni,…

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 331 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

Predstavitev atributa

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 332 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

OSEBA

EMŠOImePriimekVzdevek

Page 84: OPB_predavanja

84

Razmerja med entitetami

• Entitete niso svet zase, medsebojno se povezujejo preko razmerij, povezav

• Razmerje ima določen pomen

• Predstavitev razmerja v modelu entiteta-razmerje je povezava.

• Med opazovanim parom (v splošnem podmnožici) entitet je lahko več razmerij: OSEBA, KRAJ – stalno bivališče, začasno bivališčePODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 333 -

Predstavitev razmerja...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 334 -

OSEBA KRAJživi

OSEBA KRAJživi

Pomen razmerja

Predstavitev razmerja

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 335 -

OSEBA KRAJživi

OSEBA KRAJživi v ima

Vloga entitete v razmerju

Kardinalnost razmerja...

• Kardinalnost (števnost) predstavlja število entitet entitetnega tipa, ki so v razmerju glede na pomen razmerja.

• Vsaka entiteta ima svojo kardinalnost v razmerju – kardinalnost glede na vlogo. Entiteti OSEBA, POŠTA:

– Ena (naključno izbrana) oseba ima stalno bivališče v enem kraju

– V enem (naključno izbranem) kraju ima stalno bivališče več osebPODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 336 -

Page 85: OPB_predavanja

85

Kardinalnost razmerja...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 337 -

A

B

povezava

(n,m)

(p,r)

Kardinalnost razmerja

• Razmerji med entitetama OSEBA in POŠTA

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 338 -

Obveznost razmerja

• Obveznost pove, ali sta dve entiteti vedno v razmerju ali lahko tudi nista v razmerju: obvezno, neobvezno razmerje

• Obveznost lahko obravnavamo pod okriljem števnosti, zaradi česar dodatno uvedemo števnost 0

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 339 -

Razmerje tudi opisuje lastnost entitete

• Razmerje tudi opisuje lastnost entitete

• Primer: OSEBA, POŠTA

• Razmerje ima atributiven značaj

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 340 -

Page 86: OPB_predavanja

86

Enolični identifikator entitete...

• Enolični identifikator entitete je podmnožica lastnosti entitete (atributov in razmerij –drugih entitet), ki enolično razlikujejo posamezno instanco entitete znotraj entitetne množice

• Z ozirom na to, ali tvorijo enolični identifikator entitete le atributi entitete ali pa je v enoličnem identifikatorju tudi kakšno razmerje, ločimo med močnim entitetnim tipom in šibkim entitetnim tipom

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 341 -

Enolični identifikator entitete

• Imamo lahko več enoličnih identifikatorjev, vendar moramo enega izbrati – določiti

• Izbrani – določeni enolični identifikator je podlaga za ključ v relacijskem modelu

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 342 -

Predstavitev enoličnega identifikatorja

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 343 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

OSEBA

EMŠOImePriimekVzdevek

Močni entitetni tip• Enolični identifikator sestavljajo le atributi

entitete (identifikacijski atributi)

• {a1, … ak} je enolični identifikator entitete A, če ustreza naslednjim pogojem:

a) a1, … ak so vsi totalni enovrednostni atributi, kar zagotavlja, da imajo vsi identifikacijski atributi definirano natanko eno vrednost (eno dimenzijo)

b) T: V1 x …x Vk � ET je totalna ali parcialna enovrednostna funkcija, kar zagotavlja, da se vsak element kartezijskega produkta vrednostnih množic, ki so območja identifikacijskih atributov, preslika v največ eno entiteto tipa A

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 344 -

Page 87: OPB_predavanja

87

Šibki entitetni tip• Enolični identifikator ni sestavljen le iz lastnih

atributov, temveč tudi iz razmerij oz. drugih entitet v razmerju oz. njenih identifikatorjev.

• {a1, … ak} ∪ IT1 ∪ .. ∪ ITn je enolični identifikator entitete A, če ustreza naslednjim pogojem:

a)a1, … ak so vsi totalni enovrednostni atributi, I pa identifikatorji entitetnih tipov

b)T: V1 x …x Vkx ET1 x .. X ETn � ET je totalna ali parcialnaenovrednostna funkcija, kar zagotavlja, da se vsak element kartezijskega produkta vrednostnih množic, ki so območja identifikacijskih atributov, preslika v največ eno entiteto tipa A

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 345 -

Generalizacija in specializacija...

• Entitetni tip A s podtipoma B in C

• B in C pokrivata A totalno in ekskluzivno, če velja: EB ∪ EC = EA in EB ∩ EC = {}

• B in C pokrivata A totalno in prekrivno, če velja: EB ∪ EC = EA in EB ∩ EC ≠ {}

• B in C pokrivata A delno in ekskluzivno, če velja: EB ∪ EC ⊂ EA in EB ∩ EC = {}

• B in C pokrivata A delno in prekrivno, če velja: EB ∪ EC ⊂ EA in EB ∩ EC ≠ {}PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 346 -

Generalizacija in specializacija

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 347 -

OSEBA

MOŠKI ŽENSKA

Totalno in ekskluzivno

OSEBA

ŠTUDENT ŠPORTNIK

Delno in prekrivno

Logično načrtovanje podatkovne baze...

• Logično modeliranje podatkovne baze nastopi za konceptualnim modeliranjem.

• Osnova logičnega modela je jezik, ki je razumljiv ciljnemu SUPB.

• Če izberemo relacijski SUPB, potem govorimo o relacijskem modelu.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 348 -

svet mentalni model konceptualni model logični model PB

Page 88: OPB_predavanja

88

Podpora orodij CASE

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 349 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Logično načrtovanje

Prehod iz konceptualnega v logični model

• Prehod iz konceptualnega v logični model je navadno avtomatiziran s strani CASE orodij.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 350 -

Primer:vrsta baze: relacijskaSUPB: Oracle

NAČRTOVANJEANALIZA

Konceptualni model

Entitetni tip

Atribut

Enolični identifikator

Povezava 1:n

Povezava m:n

Atribut / Stolpec

Relacija / Tabela

Vmesna tabela

Tuji ključ

Ključ

Relacijski model

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 351 -

Ponovitev

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 352 -

Page 89: OPB_predavanja

89

Funkcionalne odvisnosti...

• Predpostavimo, da obstaja relacijska shema Rz množico atributov, katere podmnožici sta Xin 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 Xin se ne bi ujemali v vrednostih atributov Y.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 353 -

Funkcionalne odvisnosti

• Množico funkcionalnih odvisnosti, ki veljajo med atributi funkcionalne 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 354 -

Primeri funkcionalnih odvisnosti

• Imamo relacijo s shemo

Izpit( VpŠt, Priimek, Ime, ŠifraPredmeta, Datum izpita,

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.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 355 -

Ključi relacije...

• Ker je relacija množica n-teric, so v njej vse n-terice 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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 356 -

Ponovitev

Page 90: OPB_predavanja

90

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 A A ... A

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 357 -

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 358 -

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 BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 359 -

Primeri ključevŠifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 360 -

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

ARTIKEL

RAČUNPrimarni ključ v tabeli Artikel

Primarni ključ v tabeli Račun

Tuji ključ v tabeli Račun � kaže na primarni ključ v tabeli Artikel

Page 91: OPB_predavanja

91

Normalizacija...

• Kaj si bomo pogledali?

– Namen normalizacije.

– Uporaba normalizacije pri načrtovanju relacijske podatkovne baze.

– Problemi zaradi redundance podatkov v osnovnih relacijah.

– Postopek normalizacije.

– Osnovne normalne oblike:

• I. normalna oblika,

• II. Normalna oblika,

• III. Normalna oblika

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 361 -

Namen normalizacije...

• Normalizacija je postopek, s katerem pridemo do množice primernih relacij, ki ustrezajo potrebam poslovne domene.

• Nekaj lastnosti primernih relacij:

– Relacije imajo minimalen nabor atributov � zgolj tiste, ki so potrebni za pokritje potreb poslovnega sistema;

– Atributi, ki so logično povezani, so zajeti v isti relaciji;

– Med atributi relacij je minimalna redundanca �

vsak atribut (razen tujih ključev) je predstavljen

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 362 -

Namen normalizacije...

• Prednosti uporabe podatkovnih baz, ki jih sestavljajo množice primernih relacij, so:

– Enostavnejša dostop do podatkov ter vzdrževanje podatkov;

– Večja učinkovitost;

– Boljša izraba diskovnih kapacitet.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 363 -

Normalizacija pri načrtovanju relac. PB

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 364 -

Page 92: OPB_predavanja

92

Prednosti pravilnega načrtovanja

• Osnovni cilj načrtovanja relacijske podatkovne baze je grupirati atribute v relacije tako, da bo čim manj redundance med podatki.

• Potencialne koristi pravilnega načrtovanja so:

– Spremembe podatkov v podatkovni bazi dosežemo z minimalnim številom operacij � večja učinkovitost; manj možnosti za podatkovne nekonsistentnosti.

– Manjše potrebe po diskovnih kapacitetah za shranjevanje osnovnih relacij � manjši stroški. PODATKOVNE BAZE

3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 365 -

Primer

• Relacija StaffBranch ima odvečne podatke.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 366 -

Atribut z odvečnimi (ponavljajočimi) podatki

Ažurne anomalije

• Relacije, ki vsebujejo odvečne podatke lahko povzročajo anomalije pri spreminjanju podatkov � govorimo o ažurnih anomalijah.

• Poznamo več vrst anomalij:

– Anomalije pri dodajanju n-teric v relacijo

– Anomalije pri brisanju n-teric iz relacije

– Anomalije pri spreminjanju n-teric

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 367 -

Anomalije pri dodajanju

• Primeri anomalij:

– Če želimo dodati podatke o novih članih (staff) za neko organizacijsko enoto (branch) moramo vpisati tudi vse podrobnosti o organizacijski enoti.

– Če želimo dodati podatke o novi organizacijski enoti, ki še nima nobenega člana, moramo v vsa polja , ki člane opisujejo, vpisati Null.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 368 -

Page 93: OPB_predavanja

93

Anomalije pri brisanju

• Primeri anomalij:

– Če iz relacije zbrišemo n-terico, ki predstavlja zadnjega člana v neki organizacijski enoti, zgubimo tudi podatke o tej organizacijski enoti.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 369 -

Anomalije pri spreminjanju

• Primeri anomalij:

– Če želimo spremeniti vrednost nekega atributa določene organizacijske enote (npr. naslov), moramo popraviti vse n-terice, v katerih takšna vrednost atributa nastopa.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 370 -

Postopek normalizacije

• Postopku preoblikovanja relacij v obliko, pri kateri do ažurnih anomalij ne more priti, pravimo normalizacija.

• Obstaja več stopenj normalnih oblik. Obravnavali bomo:

– 1NO – Prva normalna oblika

– 2NO – Druga normalna oblika

– 3NO – Tretja normalna oblika in

– 4PNO – Četrta poslovna normalna oblikaPODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 371 -

1NO – prva normalna oblika

• Relacija je v prvi normalni obliki, če:

– Nima ponavljajočih atributov � ne obstajajo atributi ali skupine atributov, ki bi imele več vrednosti pri isti vrednosti ostalih atributov (na presečišču ene vrstice in enega stolpca je več vrednosti)

– Ima definiran primarni ključ in določene funkcionalne odvisnosti

• Koraki:

– Odstranimo ponavljajoče atribute

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 372 -

Page 94: OPB_predavanja

94

Primer – relacija v nenormalizirani obliki

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 373 -

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 200202002120033

ISTPOIPI

1088

64016209 Bizjak Tadeja 2250 Ptuj 2006020033

E1IPI

96

Indeks( VŠ, priimek, ime, pošta, kraj, ( šifra predmeta, naziv, ocena ) )

Skupina ponavljajočih se atributov.

Primer – pretvorba v 1NO...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 374 -

Indeks( VŠ, priimek, ime, pošta, kraj, ( šifra predmeta, naziv, ocena ) )

Indeks( VŠ, priimek, ime, pošta, kraj, šifra predmeta, naziv, ocena )

Odpravimo ponavljajoče atribute

Identificiramo funkcionalne odvisnosti

F ≡ { VŠ � (priimek, ime, pošta, kraj), šifra predmeta �naziv, pošta � kraj, (VŠ, šifra predmeta) � ocena }

Določimo primarni ključ

Indeks( VŠ, priimek, ime, pošta, kraj, šifra predmeta, naziv, ocena )

Primer – pretvorba v 1NO

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 20020 IS 10

64010632 Bratina Simon 4100 Kranj 20021 TPO 8

64010632 Bratina Simon 4100 Kranj 20033 IPI 8

64016209 Bizjak Tadeja 2250 Ptuj 20060 E1 9

64016209 Bizjak Tadeja 2250 Ptuj 20033 IPI 6

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 200202002120033

ISTPOIPI

1088

64016209 Bizjak Tadeja 2250 Ptuj 2006020033

E1IPI

96

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 375 -

2NO – druga normalna oblika

• Relacija je v drugi normalni obliki:– Če je v prvi normalni obliki in

– Ne vsebuje parcialnih odvisnosti � noben atribut, ki ni del ključa, ni funkcionalno odvisen le od dela primarnega ključa, temveč od celotnega ključa

• Druga normalna oblika je odvisna predvsem od ključa relacije. Relacija je avtomatsko v drugi normalni obliki, če: – Je njen primarni ključ sestavljen le iz enega

atributa,

– Je njen primarni ključ sestavljen iz vseh atributov relacije ali

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 376 -

Page 95: OPB_predavanja

95

Primer – pretvorba v 2NO...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 377 -

Indeks( VŠ, šifra predmeta, priimek, ime, pošta, kraj, naziv, ocena )

!

Relacijo razbijemo

Študent( VŠ, priimek, ime, pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

!

Primer – pretvorba v 2NOVŠ priime

kime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 20020 IS 10

64010632 Bratina Simon 4100 Kranj 20021 TPO 8

64010632 Bratina Simon 4100 Kranj 20033 IPI 8

64016209 Bizjak Tadeja 2250 Ptuj 20060 E1 9

64016209 Bizjak Tadeja 2250 Ptuj 20033 IPI 6

VŠ priimek

ime pošta kraj

64010632 Bratina Simon 4100 Kranj

64016209 Bizjak Tadeja 2250 Ptuj

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 378 -

šifra predmeta naziv

20020 IS

20021 TPO

20033 IPI

20060 E1

20033 IPI

VŠ šifra predmeta ocena

64010632 20020 10

64010632 20021 8

64010632 20033 8

64016209 20060 9

64016209 20033 6

3NO – tretja normalna oblika

• Relacija je v tretji normalni obliki:

– Če je v drugi normalni obliki in

– Če ne vsebuje tranzitivnih funkcionalnih odvisnosti� med atributi, ki niso del primarnega ključa, ni odvisnosti.

• Relacija je avtomatsko v tretji normalni obliki, če:

– Je njen ključ sestavljen iz vseh atributov relacije

– Je njen ključ sestavljen iz vseh razen enega atributa relacije.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 379 -

Primer – pretvorba v 3NO...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 380 -

Študent( VŠ, priimek, ime, pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

!

Študent( VŠ, priimek, ime, #pošta)Pošta(pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

Relacijo razbijemo

Page 96: OPB_predavanja

96

Primer – pretvorba v 3NO

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 381 -

VŠ priimek

ime pošta kraj

64010632 Bratina Simon 4100 Kranj

64016209 Bizjak Tadeja 2250 Ptuj

VŠ priimek

ime pošta

64010632 Bratina Simon 4100

64016209 Bizjak Tadeja 2250

pošta kraj

4100 Kranj

2250 Ptuj

4PNO – četrta poslovna normalna oblika

• Relacija je v četrti poslovni normalni obliki, če:

– je v tretji normalni obliki in

– v relaciji ne obstajajo atributi, ki bi bili odvisni od vrednosti primarnega ključa.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 382 -

Primer – pretvorba v 4PNO...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 383 -

Študent( VŠ, priimek, ime, #pošta, datum plačila šolnine, rok diplome)

Za izredne študenta Za redne študenta

Študent( VŠ, priimek, ime, #pošta)Redni študent( #VŠ, rok diplome)Izredni študent( #VŠ, datum plačila šolnine)

Primer – pretvorba v 4PNO

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 384 -

VŠ Priimek Ime Datum plačila šolnine Rok diplome

64010632 Bratina Simon 15.3.2005

64016209 Bizjak Tadeja 19.4.2002

64010670 Berce Marjan 12.4.2004

64620010 Mele Silvana 1.4.2005

65120987 Leban Tibor 15.7.2005

VŠ Priimek Ime

64010632 Bratina Simon

64016209 Bizjak Tadeja

64010670 Berce Marjan

64620010 Mele Silvana

65120987 Leban Tibor

VŠ Datum plačila šolnine

64016209 19.4.2002

64010670 12.4.2004

VŠ Rok diplome

64010632 15.3.2005

64620010 1.4.2005

65120987 15.7.2005

Page 97: OPB_predavanja

97

Uporaba nenormaliziranih relacij...

• Včasih zavestno uporabljamo relacije, ki ne ustrezajo najvišjim normalnim oblikam.

• Prve in druge normalne oblike nikoli ne kršimo.

• Višjim normalnim oblikam se včasih odrečemo na račun doseganja boljše učinkovitosti.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 385 -

Uporaba nenormaliziranih relacij

• Primer:

– Rezultat (športnik, tekmovanje, čas prvega teka, čas drugega teka, čas skupaj)

– Relacija ni v tretji normalni formi.

– Čas skupaj je izpeljan atribut � ni odvisen od ključa, temveč je seštevek časov obeh tekov.

– Skupen čas računamo ob vpisu v bazo, zato izboljšamo učinkovitost pri nadaljnji obdelavi podatkov.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 386 -

Vaja

• Spodnjo relacijo pretvorite v 4PNO

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 387 -

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, (datum izplačila, plača))

Pomen relacije: delavec s šifro (šifra delavca), priimkom (priimek) ter imenom (ime) je zaposlen v natanko enem podjetju (podjetje). To podjetje se nahaja v natanko enem mestu (mesto). Vsi delavci imajo sklenjene delovne pogodbe (številka pogodbe), s to razliko, da imajo vodilni delavci sklenjene individualne pogodbe, ostali delavci pa kolektivne pogodbe, na osnovi katerih so tudi točkovani (število točk).

V relaciji so zajeti tudi atributi, ki povedo, kakšne plače so prejemali delavci (datum izplačila, plača)

Vaja

• Prva normalna oblika – odprava ponavljajočih skupin

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 388 -

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, (datum izplačila, plača))

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, datum izplačila, plača)

Page 98: OPB_predavanja

98

Vaja

• Prva normalna oblika – identifikacija funkcionalnih odvisnosti

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 389 -

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, datum izplačila, plača)

šifra delavca � priimek, ime, podjetje, mesto, številka pogodbe, število točk

številka pogodbe ���� število točk

podjetje � mesto

šifra delavca, datum izplačila � plača

F ≡ {šifra delavca � (priimek, ime, podjetje, mesto, številka pogodbe, število točk), podjetje � mesto, številka pogodbe � število točk,(šifra delavca, datum izplačila) � plača}

Vaja

• Prva normalna oblika – določitev ključa

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 390 -

F ≡ {šifra delavca � (priimek, ime, podjetje, mesto, številka pogodbe, število točk), podjetje � mesto, številka pogodbe � število točk,(šifra delavca, datum izplačila) � plača}

Ključ = {šifra delavca ,datum izplačila}

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, datum izplačila, plača)

1NO

Vaja

• Druga normalna oblika

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 391 -

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk, datum izplačila, plača)

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk)

Plača (#šifra delavca, datum izplačila, plača)

2NO

Vaja

• Tretja normalna oblika

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 392 -

Delavec (šifra delavca, priimek, ime, #podjetje, #številka pogodbe)

Podjetje (podjetje, mesto)

Pogodba (številka pogodbe, število točk)

Plača (#šifra delavca, datum izplačila, plača)

3NO

!

Delavec ( šifra delavca, priimek, ime, podjetje, mesto, številka pogodbe, število točk)

!

Page 99: OPB_predavanja

99

Načrtovanje fizične podatkovne baze...

• Načrtovanje fizične PB je korak, ki sledi logičnemu načrtovanju.

• Logični načrt opredeljuje “kaj”, fizični načrt pa “kako”.

• Vhod v načrtovanje fizične PB so:

– Logični podatkovni model,

– Relacijska shema

– dokumentacija

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 393 -

svet mentalni model konceptualni model logični model PB

Načrtovanje fizične podatkovne baze...

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 394 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Načrtovanje fizične PB

Načrtovanje fizične podatkovne baze

• Fizično načrtovanje PB opredeljuje proces, s katerim izdelamo opis implementacije PB na sekundarnem pomnilnem mediju.

• Opisuje

– osnovne relacije,

– datotečno organizacijo,

– indekse za dosego učinkovitega dostopa do podatkov,

– povezane omejitve in

– varnostne mehanizme.PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 395 -

Vaja iz načrtovanja

• Za opisano problemsko domeno naredite:

– Konceptualni podatkovni model,

– Relacijski podatkovni model in

– Fizični podatkovni model.

• Podatkovni modeli naj bodo ustrezno dokumentirani. Označite tiste sklope vsebine iz opisa problemske domene, ki jih ne morete predstaviti v okviru podatkovnega modela.

PODATKOVNE BAZE3. Letnik UNI, Informatika in programska oprema©Laboratorij za informatiko

- 396 -

Page 100: OPB_predavanja

1

Upravljanje z diskom in pomnilnikom

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 1 -

� Upravljanje s prostorom na disku

� Upravljanje z medpomnilnikom

Povzeto po [1] in [5]

Upravljanje s prostorom na disku…

• Za upravljanje z diskom skrbi najnižji nivo v SUPB arhitekturi – upravljalec z diskom (Disk SpaceManager).

• Lastnosti:– Skrije podrobnosti strojne opreme (in OS); ostalim

komponentam SUPB omogoči, da vidijo podatke kot zbirko strani.

– Izvaja ukaze za dodeljevanje in sproščanje prostora na disku ter branje in pisanje;

– Vse operacije izvaja nad enotami, ki obsegajo eno stran (page). 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;

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 2 -

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 3 -

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 4 -

Page 101: OPB_predavanja

2

Upravljalec medpomnilnika…

• Upravljalec medpomnilnika je programska plast, ki skrbi za prenašanje ustreznih strani v pomnilnik. Ključne lastnosti:– 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 o

straneh, ki se sprostijo oziroma se jim spremeni vsebina.– Obstajajo različne strategije, ki določijo, katere strani se v

medpomnilniku zamenjajo.

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 5 -

Upravljalec medpomnilnika…

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 6 -

MedpomnilnikOkvir, napolnjens stranjo iz diska

Prazen okvirGlavni spomin

Disk

Zahteve po stranehiz višjih ravni SUPB

Če zahtevane strani ni v medpomnilniku, medpomnilnik pa je poln, mora upravljalec medpomnilnika narediti ustrezno zamenjavo. Zamenjavase izvede v skladu z izbrano strategijo

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 7 -

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).

• č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.

• pin_count okvirja se postavi na 1

• ko sistem sporoči, da se stran sprostila, se pin_count zmanjša za 1. Ko doseže vrednost 0, sistem prepiše stran nazaj na disk (če dirty bit ON)

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 8 -

Page 102: OPB_predavanja

3

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 9 -

Zahteva za stran

Je stran v medpomnilniku?

INC(pin_count)

DA NE

Je medpomnilnik poln?

NE

Prenesi stran iz diska v prazen

okvir

DA

Izberi stran za zamenjavo

Je dirty bit = ON

Stran, ki je določena za zamenjavo,prepiši na disk

NE DA

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 10 -

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 (exclusive) zaklepanje preden lahko stran bere ali spreminja.

– Ekskluzivno zaklepanje iste strani ne sme biti odobreno dvema transakcijama istočasno!

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 11 -

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 12 -

Page 103: OPB_predavanja

4

Upravljalec medpomnilnika…

• Strategije zamenjave (nadaljevanje):– Clock replacement

• Različica LRU z manjšo časovna kompleksnost• Okvirji so navidezno 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.• Kdaj izberemo okvir za zamenjavo?:

– Č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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 13 -

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

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 14 -

Upravljanje medpomnilnika

• Zakaj ne uporabimo navideznega pomnilnika v OS?

– SUPB lahko bolj natančno predvidi zaporedje (vzorce dostopanja) kot tipičen OS. Uporablja strategijo vnaprejšnjega branja (prefetching), ki na osnovi predvidevanja naslednjih zahtev v naprej prenese strani v pomnilnik.

– SUPB rabi več nadzora nad stranmi, ki se zapisujejo na disk, kot ga omogoča tipičen OS.

PODATKOVNE BAZE

Modul: Upravljanje z diskom

in pom. v 1.1

©Laboratorij za informatiko- 15 -

Page 104: OPB_predavanja

1

Relacijski podatkovni model

PODATKOVNE BAZE

Modul: Logični podatkovni modeli©Laboratorij za informatiko

- 1 -

� O relacijskem modelu� Terminologija pri relacijskem modelu� Matematična definicija relacije� Relacijska shema� Lastnosti relacij� Funkcionalne odvisnosti� Ključi relacije� Omejitve nad podatki� Pogledi

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 2 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 3 -

O relacijskem podatkovnem modelu

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 4 -

DEPARTMENT

DNAME …

STUDENT

SNAME …

MAJOR_DEPTComputer Science . . .

Manuel Rivera . . .

William Smith . . .

Jane Wong . . .

Ram Prasad . . .

Kareem Rashad . . .

Za primerjavo: predstavitev relacijskega

in mrežnega modela DEPARTMENT

1 Computer Science

2 Information Systems

3 Cognitive Systems

4 Artificial Inteligence

ID NAME

Page 105: OPB_predavanja

2

Terminologija pri relacijskem modelu...

• Pri relacijskem modelu uporabljamo določeno terminologijo:– Relacija

– Atribut

– Domena

– n-terica

– Stopnja relacija

– Števnost relacije

– Relacijska PB

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 5 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 6 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

Relacija

Terminologija pri relacijskem modelu...

• Atribut je poimenovani stolpec relacije.

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 7 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

Atribut relacije

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 8 -

Page 106: OPB_predavanja

3

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.

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 9 -

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

n-terica relacijeŠtevnost relacije

Stopnja 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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 10 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 11 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 12 -

Page 107: OPB_predavanja

4

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));

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 13 -

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 Ž

Relacijska shema...

• Relacijske sheme so del konceptualnihoziroma 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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 14 -

Relacijska shema

Ime Starost (v letih)

Teža (v kg)

Tine 15 50

Meta 20 45

Jure 40 80

Ana 5 10

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 15 -

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

Relacija, predstavljena kot tabela

Shema relacije

Domene atributov relacije

Shema 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 istedomene.PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 16 -

Page 108: OPB_predavanja

5

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 17 -

PrimeriIme Starost (v letih),

teža (v kg)

Tine S15_T50

Meta S20_T45

Jure S40_T80

Ana S5_T10

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 18 -

Oseba Telefon

Tine Mikuž 1 47 68 819; 041 467 766

Ana Pregelj 5 36 61 234; 5 36 61 235

Celice ne vsebujejo atomarnih vrednosti

Celice vsebujejo več vrednosti

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 19 -

Funkcionalne odvisnosti...

• Poznamo več vrst odvisnosti:

– Funkcionalne odvisnosti (functional dependency)

– Večvrednostne odvisnosti (multivalueddependency)

– Stične odvisnosti (join dependency)

• Obravnavali bomo funkcionalne odvisnostiostale so pomembne za razumevanje višjih ravni normalizacije.

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 20 -

Page 109: OPB_predavanja

6

Funkcionalne odvisnosti...

• Predpostavimo, da obstaja relacijska shema Rz množico atributov, katere podmnožici sta Xin 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 Xin se ne bi ujemali v vrednostih atributov Y.

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 21 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 22 -

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.

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 23 -

Ključi relacije...

• Ker je relacija množica n-teric, so v njej vse n-terice 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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 24 -

Page 110: OPB_predavanja

7

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 A A ... A

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 25 -

Ključi relacije...

• Poznamo več konceptov, ki jih imenujemo ključ:

– Kandidat za ključ (a key candidate)

– Primarni ključ (primary key)

– Superključ ali nadključ (superkey) – v resnici nima lastnosti ključa, saj ne zadošča pogoju “minimalnosti”.

– Tuji ključ (foreign key)

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 26 -

Primeri ključevŠ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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 27 -

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

ARTIKEL

RAČUNPrimarni ključ v tabeli Artikel

Primarni ključ v tabeli Račun

Tuji ključ v tabeli Račun � kaže na primarni ključ v tabeli Artikel

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 28 -

Page 111: OPB_predavanja

8

Posebnost - 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

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 29 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 30 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 31 -

Primeri omejitev

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 32 -

Pedagog

EMŠO N13 <pk>DavcnaSt C9 not nullIme C20 Priimek C20DtmRoj DKatedra N3 <fk>

Primarni ključ � ne sme biti NULL

Zahtevamo obveznost podatka

Katedra

Katedra N3 <pk>Naziv C20 not nullStLab N2 Vodja N3 <fk>

Omejitev povezave

Page 112: OPB_predavanja

9

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 33 -

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 poizvedbanad 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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 34 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 35 -

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 36 -

Page 113: OPB_predavanja

10

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

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 37 -

Primer pogleda

PODATKOVNE BAZE

Modul: Relacijski podatkovni model©Laboratorij za informatiko

- 38 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

16/05 A10 3

17/05 A10 1

RAČUNARTIKEL

SELECT A.sifra, A.naziv, sum(R.kolicina) AS ProdanihFROM artikel A, racun RWHERE A.sifra = R.sifraGROUP BY A.sifra, A.naziv

Šifra Naziv Prodanih

A10 Telovadni copati Nike 5

X12 Ženska jakna QuickSilver 1

...

Page 114: OPB_predavanja

1

OSNOVE PB

1. letnik, bolonjski univerzitetni študij

UNIVERZA V LJUBLJANI

Fakulteta za računalništvo in informatiko

Prof. dr. Marko Bajec

Gradivo 2009/10

Splošne informacije...

• Predavatelj– Prof. dr. Marko Bajec, univ. dipl. ing.

[email protected]

• Asistenti – vaje– Viš. pred. dr. Aljaž Zrnec, univ. dipl. inž. rač. in inf.

[email protected]

– Dejan Lavbič, univ. dipl. inž rač. [email protected]

– Martin Potočnik, univ. dipl. inž rač. [email protected]

OSNOVE PB

Kazalo

©Laboratorij za informatiko- 2 -

Splošne informacije

• Priporočena literatura

[1] Raghu Ramakrishnan, Johannes Gehrke (2003). DatabaseManagement Systems, Third Edition, McGraw-Hill

[2] Thomas M. Connolly, Carolyn E. Begg (2005). DatabaseSystems, A Practical Approach to Design, Implementationand Management, Fourth Edition, Addison-Wesley

[3] Ramez Elmasri, Shamkant B. Navathe (2003). Fundamentals of Database Systems, Fourth Edition, Addison-Wesley

[4] Peter Rob, Carlos Coronel (2005). Database Systems: Design, Implementation and Management, Sixth Ed., Addison Wesley.

[5] Tomaž Mohorič (1997). Načrtovanje relacijskih podatkovnih baz, Založba Bi-TIM.

OSNOVE PB

Kazalo

©Laboratorij za informatiko- 3 -

Citiranje: glej [4,15-20] = glej v knjigi T. Mohorič, strani od 15 do 20. OSNOVE PB

Kazalo

©Laboratorij za informatiko- 4 -

Osnove o PB

Poizvedovanje v PB

Opisovanje in shranjevanje podatkov v PB

Uvod v PB

Relacijska algebra

Relacijski račun

SQL – Structured Query Language

QBE – Query By Example

Diski in diskovna polja

Upravljanje z diskom in pomnilnikom

Organizacija in indeksiranje datotek

Zgradba SUPB

Relacijski podatkovni model

Uvod v XML in XQuery

Page 115: OPB_predavanja

2

OSNOVE PB

Kazalo

©Laboratorij za informatiko- 5 -

Načrtovanje PB

Pristopi k načrtovanju PB

Konceptualno modeliranje

Logično modeliranje

Fizično modeliranje

Podatkovna skladišča in njihovo načrtovanje

OSNOVE PB

Kazalo

©Laboratorij za informatiko- 6 -

Terminski plan 2011

OSNOVE PB

Kazalo

©Laboratorij za informatiko- 7 -

Plan preostalih predavanj OPB 2011

Datum Vsebina predavanja

06. 05. 11 Logično načrtovanje

13. 05. 11 Fizično načrtovanje

20. 05. 11 Podatkovna skladišča in njihovo načrtovanje

27. 05. 11 Uvod v XML, XML tehnologije

03. 06. 11 Vabljena predavanja – SUPB Oracle

10. 06. 11 Vabljena predavanja

Page 116: OPB_predavanja

1

Relacijski račun

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 1 -

� Deklarativno poizvedovanje in predikatni račun� N-terični relacijski račun� Domenski relacijski račun

Povzeto po [2, 103-109] in [3, 173-185] Deklarativno poizvedovanje

• Relacijski račun je deklarativni poizvedovalni jezik.

– V nasprotju z relacijsko algebro, kjer (implicitno) določimo postopek, s katerim pridemo do rezultata, pri relacijskem računu določimo le, kaj nas zanima.

• Temelji na simbolični logiki imenovani predikatni račun prvega reda.

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 2 -

KonstantaPredikat

Stavki v predikatnem računu

• Stavki v predikatnem računu so sestavljeni iz predikatovin konstant. Predikat je logična funkcija z argumenti.

• Primer:– Marija je ženska.

– Janez je moški.

– Marija in Janez sta sestra in brat.

– Ženska(marija)

– Moški(janez)

– SestraBrat(marija,janez)

PODATKOVNE BAZEModul: Relacijski račun©Laboratorij za informatiko

- 3 -

SpremenljivkaKvantifikator

Spremenljivke in kvantifikatorji

• Predikati imajo lahko spremenljivke kot argumente, katerih vrednosti so lahko kvantificirane.

• Primer:– Vsakdo je bodisi moški ali ženska.– Moški ni ženska.

∀x. Moški(x) ∨ Ženska(x)∀x. Moški(x) ⇒ ¬Ženska(x)

PODATKOVNE BAZEModul: Relacijski račun©Laboratorij za informatiko

- 4 -

Page 117: OPB_predavanja

2

Funkcije

• V predikatnem računu so domene objektov lahko določene s funkcijami, ki so aplicirane na objekte.

• Primer:

– Oče osebe je moški

∀x. Moški(Oče(x))

PODATKOVNE BAZEModul: Relacijski račun©Laboratorij za informatiko

- 5 -

Sintaksa predikatnega računa

• Č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

Modul: Relacijski račun©Laboratorij za informatiko

- 6 -

Vrste relacijskih računov

• V povezavi s podatkovnimi bazami poznamo dve vrsti relacijskega računa:

– N-terični relacijski račun (Tuple RelationalCalculus)

• Spremenljivke se nanašajo na n-terice ali vrstice relacije.

– Domenski relacijski račun (Domain RelationalCalculus).

• Spremenljivke se nanašajo na domene atributov.PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 7 -

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.

• Splošna oblika zapisa n-teričnega računa je:

{t | COND(t)}

– kjer t prestavlja n-terično spremenljivko, COND(t) pa nabor pogojev, ki naj jih n-terice, ki jih iščemo,

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 8 -

Page 118: OPB_predavanja

3

Domena: zahtevamo, da so iskane n-terice iz relacije Artikel!

Primeri

• Poišči vse 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

Modul: Relacijski račun©Laboratorij za informatiko

- 9 -

Uporaba kvantifikatorjev

• Na 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

Modul: Relacijski račun©Laboratorij za informatiko

- 10 -

Eksistencialni kvantifikator

• Eksistencialni kvantifikator uporabimo v izrazih, ko želimo povedati, da mora obstajati vsaj en primerek, za katerega je predikat resničen.

• Primer: iščemo take zapise iz relacije Artikel, ki se nahajajo v skladišču v Ljubljani:

{A | Artikel(A) ∧ (∃S)(Skladišče(S) ∧

(A.skladišče = S.ID) ∧ (S.kraj = ‘Ljubljana’)}

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 11 -

Artikel

Šifra_artiklaNazivSkladišče…

Skladišče

IDLokacija…

Skladišče = ID

Univerzalni kvantifikator

• Univerzalni kvantifikator uporabimo v izrazih, ki se nanašajo na vse primerke…

• Primer: iščemo take primere računov, ki imajo ceno vsake postavke večjo od 1.000 EUR

{R | Račun(R) ∧ (∀P)(Postavka(P) ∧

(R.ID = P.račun) ∧ (P.cena > 1000)}

Lahko zapišemo tudi z negacijo:

{R | Račun(R) ∧ ¬(∃P)(Postavka(P) ∧

(R.ID = P.račun) ∧ (P.cena <= 1000)}

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 12 -

Račun

IDValutaKupec…

Postavka

RačunPostavka_IDKoličinaCena…

Račun = ID

Page 119: OPB_predavanja

4

Proste in vezane spremenljivke

• 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’)}

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 13 -

Dobri izrazi

• Izrazi v relacijskem računu morajo biti 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čnespremenljivke Si

je formula.

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 14 -

Dobro definirana formula

• Dobro definirana formula je sestavljena iz naslednjih atomov:

– R(Si), kjer je Si n-terična spremenljivka in Rrelacija

– 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, θ paaritmetični operator (<, ≤, >, ≥, =, ≠)

– Si.a1 θ c, kjer je Si n-terična spremenljivka, a1atributi relacije, ki je domena Si, θ aritmetični

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 15 -

Pravila gradnje formul

• 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

Modul: Relacijski račun©Laboratorij za informatiko

- 16 -

Page 120: OPB_predavanja

5

Primeri...

• Imamo naslednje relacije:Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price, free)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (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 prosto vsaj eno dvoposteljno sobo (type=2)

{H. hotelName| Hotel(H) ∧ (∃R)(Room(R)

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 17 -

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

Modul: Relacijski račun©Laboratorij za informatiko

- 18 -

DeMorganova zakona:¬(A ∧ B) = ¬A ∨ ¬B¬(A ∨ B) = ¬A ∧ ¬B

Varni izrazi

• V relacijskem računu je možno zapisati stavke, ki vračajo neskončne množice.

• Primer:

{A | ¬(Artikel(A)) }

• 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

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 19 -

Nevaren izraz

Izraz ni varen, ker vrača vrednosti, ki so izven relacije Artikel in zato izven domene izraza!!

Domenski relacijski račun...

• N-terični relacijski račun:

– uporabljamo spremenljivke, katerih zaloga vrednosti so relacije.

– SQL temelji na n-teričnem relacijskem računu!

– Razvil IBM (raziskovalni laboratorij v San Jose, California)

• Domenski relacijski račun:

– uporabljamo spremenljivke, katerih zaloga vrednosti so domene atributov.

– QBE temelji na domenskem relacijskem računu!

– Razvil IBM (raziskovalni laboratorij v Yorktown

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 20 -

Page 121: OPB_predavanja

6

Sintaksa domenskega računa

• 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

Modul: Relacijski račun©Laboratorij za informatiko

- 21 -

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

Modul: Relacijski račun©Laboratorij za informatiko

- 22 -

Gradnja izrazov domenskega računa

• 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

Modul: Relacijski račun©Laboratorij za informatiko

- 23 -

Primeri...

• Imamo naslednje relacije:Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (guestNo, guestName, guestAddress)

• Izpiši imena hotelov v Ljubljani

{hName | (∃hNo, hAddress) (Hotel(hNo, hName, hAddress) ∧ hAddress = ‘Ljubljana’) }

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 24 -

Page 122: OPB_predavanja

7

Primeri

• Izpiši nazive hotelov, ki imajo prosto vsaj eno dvoposteljno sobo (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) }

• ali

{hName | ∃hNo, hName, hAddress, rNo, rPrice:

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 25 -

Uporabimo konstanto namesto domenske spremenljivke

Uporabimo isto domensko spremenljivke

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

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 26 -

Drugi formalni jeziki

• Relacijski račun je kljub kompleksnosti zaželen zaradi svoje nepostopkovnosti.

• Z raziskavami prišli še do dveh različic nepostopkovnih 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 primeri opišemo, kaj nas zanima (kaj vemo), sistem vrne rezultat, ki takšni obliki ustreza. Primer QBE (Query-by-example).

PODATKOVNE BAZE

Modul: Relacijski račun©Laboratorij za informatiko

- 27 -

Page 123: OPB_predavanja

1

Uvod v podatkovne baze

Osnove

PODATKOVNE BAZEModul: Uvod v PB©Laboratorij za informatiko

- 1 -

� Splošno o podatkovnih bazah� Zgodovina shranjevanja podatkov� Datotečni sistem in SUPB� Opisovanje in shranjevanje podatkov v PB� Poizvedovanje v PB� Obvladovanje transakcij

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.

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 2 -

Sistemi za upravljanje s PB

• Sistem za upravljanje s podatkovno bazo – SUPBje programska oprema za obvladovanje velikih količin podatkov.

• Alternativa – shranjevanje v aplikaciji lastni obliki; problemi: neprenosljivost idr.

• Obstaja veliko vrst SUPB– Relacijski, objektni, XML,…

• Primeri SUPB: Oracle, Sybase, DB2, MS SQL, Ingres, Postgres, MySQL, ObjectStore, Jasmine, Objectivity/DB, Versant Object Database,...

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 3 -

Zgodovina shranjevanja podatkov

• Zgodnja 60’: Charles Bachman iz General Electric-a razvije prvi

splošno-namenski SUPB (Integrated Data Store).

– 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 Modul: Uvod v PB ©Laboratorij za informatiko

- 4 -

(glej [4,159]).

Page 124: OPB_predavanja

2

Zgodovina shranjevanja podatkov

• Pozna 60’: IBM razvije Information Management

System (IMS), ki se ponekod uporablja še danes.

– Predstavlja osnovo za hierarhični podatkovni model.

– 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 Modul: Uvod v PB ©Laboratorij za informatiko

- 5 -

(glej [4,181]).

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 6 -

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 7 -

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 8 -

Page 125: OPB_predavanja

3

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, PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 9 -

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 10 -

Zgodovina shranjevanja podatkov

• Najnovejša področja:

– Multimedijske PB,

– PB za interaktivni video,

– Digitalne knjižnice,

– Odločitveni sistemi, vrtanje po podatkih, odkrivanje zakonitosti

– NoSQL

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 11 -

Zgodovina shranjevanja podatkov

• Zanimive raziskave povezane z zbiranjem podatkov:

– Human Genome Project

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 12 -

Page 126: OPB_predavanja

4

Zgodovina shranjevanja podatkov

• Zanimive raziskave povezane z zbiranjem podatkov:

– Projekt GEOSS

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 13 -

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 14 -

Velikost spleta� Število spletnih strani

neskončno� 1998: Google indeksira 26

milijonov (26.000.000) URL-jev

� 2008: Google indeksira tisoč milijard (1.000.000.000.000) URL-jev

Datotečni sistemi in SUPB…

• Zaradi 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 Modul: Uvod v PB ©Laboratorij za informatiko

- 15 -

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 16 -

Page 127: OPB_predavanja

5

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 17 -

Tri-nivojska predstavitev podatkov...

• Podatki so v PB opisani na treh ravneh:

– Zunanja shema

– Konceptualna ali logična shema

– Fizična shema

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 18 -

Zunanja shema 1

Zunanja shema 2

Zunanja shema 3

Konceptualnashema

Fizičnashema

DISK

Metapodatki

Fizičnipodatki

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 Modul: Uvod v PB ©Laboratorij za informatiko

- 19 -

Primer poizvedbe v SQL jeziku

• Zanima nas, kateri delavci imajo višjo plačo od 3.500 EUR.

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 20 -

SELECT Priimek, Ime, PlačaFROM DelavecWHERE Plača >3500

DELAVECŠifraIme PriimekPlača…

USE DelavecGO TO 1DO WHIEL NOT EOF

IF Plača > 3500THEN Print (Priimek, Ime, Plača)

END WHILE

Deklarativno

Proceduralno

Page 128: OPB_predavanja

6

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č.

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 21 -

BEGIN TRANSACTION

END TRANSACTION

Primer: prenos €100 iz enega na drugi TRR

Dvig €100 iz TRR1 TRR1 = TRR1 – 100Polog €100 na TRR2 TRR2 = TRR2 + 100

Upravljanje s transakcijami

• 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 Modul: Uvod v PB ©Laboratorij za informatiko

- 22 -

Zakaj sočasnost?

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 23 -

t1

t2

t3

t4

t5

t6

t7

t8

t9

t10

t12

t13

t14

t15

t11

T1 T2

CPU

CPU

CPU

I/O

I/O

I/O

I/O

CPU

CPU

CPU

CPU

CPU

CPU

CPU

CPU

I/O

I/O

CPU

T1 T2

CPU

CPU

CPU

I/O CPU

I/O CPU

I/O CPU

I/O CPU

CPU

CPU

CPU

CPU

I/O

I/O

CPU

Upravljanje s transakcijami -problemi

• V centraliziranem SUPB zaradi sočasnosti dostopa različni problemi:

– Izgubljene spremembe: uspešno izveden UPDATE se razveljavi zaradi istočasno izvajane operacije s strani drugega uporabnika.

– Uporaba nepotrjenih podatkov (dirty read): transakciji je dovoljen vpogled v podatke druge transakcije, še preden je ta potrjena.

– Neskladnost analize: transakcija prebere več vrednosti iz podatkovne baze. Nekatere izmed njih se v času izvajanja prve transakcije zaradi drugih

PODATKOVNE BAZE Modul: Uvod v PB ©Laboratorij za informatiko

- 24 -

Page 129: OPB_predavanja

7

Primer težav pri zagotavljanju sočasnosti

• Izgubljene spremembe• T1 dvig $10 iz TRR, na katerem je začetno stanje $100.

• T2 depozit $100 na isti TRR.

• Po zaporedju T1, T2 končno stanje enako $190.

OSNOVE PB Modul: Uvod v PB ©Laboratorij za informatiko

- 25 -

Page 130: OPB_predavanja

1

Structured Query Language

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 1 -

� Uvod v SQL� Stavki skupine SQL DML� Stavki skupine SQL DDL

Povzeto po [2, 112-195] Uvod v SQL…

• SQL 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

Modul: SQL©Laboratorij za informatiko - 2 -

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

Modul: SQL©Laboratorij za informatiko - 3 -

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-ovoimplementacijo System/38

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 4 -

Page 131: OPB_predavanja

2

Standardizacija SQL

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 5 -

Vir: Wikipedia EN

SQL:2008

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 6 -

SQL:2008

Framework

Foundation

Call-Level Interface

PersistentStored

Modules

Management of External

Data

Object Language Bindings

Information and Definition

Schemas

SQL Routines SQL Routines and Types

Using the Java TM

Programming Language

XML-Related Specifications

ISO/ANSI SQL:2008 standardAvailable on-line for cca $450

Pomembnost jezika SQL…

• SQL do sedaj edini široko sprejet standardni podatkovni poizvedovalni jezik.

• SQL 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

Modul: SQL©Laboratorij za informatiko - 7 -

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 8 -

Page 132: OPB_predavanja

3

Implementacije SQL

• Med standardi SQL-92, SQL:1999; SQL:2008,… razlike

• Implementacije ponudnikov SUPB različne (dialekti)

• Primerjava implementacij SQL

– http://troels.arvin.dk/db/rdbms/

PODATKOVNE BAZEModul: SQL©Laboratorij za informatiko - 9 -

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

Modul: SQL©Laboratorij za informatiko - 10 -

SELECT stavek…

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 11 -

SELECT [DISTINCT | ALL]

{* | [columnExpression [AS newName]] [,...] }

FROM TableName [alias] [, ...]

[WHERE condition]

[GROUP BY columnList] [HAVING condition]

[ORDER BY columnList]

SELECT stavek…

• FROM Določa tabele za poizvedbo

• WHERE Filtrira vrstice

• GROUP BY Združuje vrstice po vrednostih izbranih stolpcev

• HAVING Filtrira skupine glede na določene pogoje

• SELECT Določa stolpce, ki naj se pojavijo v izhodni relaciji

• ORDER BY Določa vrstni red vrstic na izhoduPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 12 -

Vrstnega reda sklopov ni možno spreminjati!Obvezna sta samo SELECT in FROM sklopa!

Page 133: OPB_predavanja

4

Primeri

• Za primere bomo uporabljali shemo PB o hotelihHotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo, comments)

Guest (guestNo, guestName, guestAddress)

• Izpiši vse podatke hotelih

SELECT hotelNo, hotelName, address

FROM Hotel

ali krajše

SELECT * FROM Hotel

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 13 -

Uporaba DISTINCT

• Izpiši oznake hotelov in sob, ki so bile kdaj koli rezervirane

SELECT DISTINCT hotelNo, roomNo

FROM Booking

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 14 -

Ukaz DISTINCT eliminira dvojnike

Glej primer 1 Q_Distinct

V Accessu so na voljo še DISTINCTROW in TOP n

Izračunana polja

• Izpiši ceno sob za deset dnevni najem

SELECT RoomNo, type, price*10 ASCenaNajema

FROM Room

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 15 -

Uporabljamo formule

Izračunanemu stolpcu dodelimo naziv

Glej primer 2 Q_CalcFields

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 16 -

Pogoj 1 Pogoj 2

Pogoje združujemo z logičnimi operatorji

Page 134: OPB_predavanja

5

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 17 -

BETWEEN vključuje spodnjo in zgornjo mejo!

Uporabimo lahko tudi negacijo NOT BETWEEN

BETWEEN ne doda veliko SQL moči, možno izraziti posredno

Glej primer 3 Q_Between

Iskanje po članstvu množice

• Izpiši oznake hotelov in številke dve ali tri-posteljnih sob

SELECT hotelNo, roomNo

FROM Room

WHERE type IN (2,3)

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 18 -

Članstvo množice

Uporabimo lahko tudi negacijo NOT IN

IN ne doda veliko SQL moči; koristno pri večjih množicah

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%’

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 19 -

SQL ima dva posebna znaka za iskanje z vzorcem:

Znak % nadomešča katerikoli niz znakov

Znak _ nadomešča katerikoli znak

Iskanje z vzorcem

Glej primer 4 Q_Like

Iskanje z NULL vrednostjo v pogoju

• Izpiši vse rezervacije brez podanih komentarjev

SELECT *

FROM Booking

WHERE comments IS NULL

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 20 -

Iskanje z NULL vrednostjo

Uporabljamo lahko tudi negacijo IS NOT NULL

Page 135: OPB_predavanja

6

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 21 -

ASC – ascending � naraščujoče

DESC – descending � padajoče

Agregiranje podatkov…

• ISO standard definira pet agregarnih operacij

– COUNT vrne število vrednosti v določenem stolpcu

– SUM vrne seštevek vrednosti v določenem stolpcu

– AVG vrne povprečje vrednosti v določenem stolpcu

– MIN vrne najmanjšo vrednost v določenem stolpcu

– MAX vrne največjo vrednost v določenem stolpcu

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 22 -

Agregiranje podatkov…

• COUNT, MIN in MAX se uporabljajo za numerične in ne-numerične vrednosti, SUM inAVG 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

Modul: SQL©Laboratorij za informatiko - 23 -

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

Modul: SQL©Laboratorij za informatiko - 24 -

Page 136: OPB_predavanja

7

Agregiranje podatkov

• Če SELECT sklop vsebuje agregarno operacijo, mora obstajati tudi GROUP BY sklop, sicer ni moč dodeliti agregirane vrednosti.

SELECT roomNo, AVG(price)

FROM Room

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 25 -

Napačna raba agregacije

Glej primer 5 Q_Group By problem

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

Modul: SQL©Laboratorij za informatiko - 26 -

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

Modul: SQL©Laboratorij za informatiko - 27 -

Združevanje podatkov…

• Sklop GROUP BY uporabimo za združevanjepodatkov v skupine.

• SELECT in GROUP BY sta tesno povezana

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 28 -

Tip sobe Avg(Cena)1 $501 $451 $552 $702 $80

Tip sobe Avg(Cena)1 $502 $75

Page 137: OPB_predavanja

8

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 agregarnihoperacijah.

• Če uporabljamo WHERE sklop v kombinaciji z GROUP BY, se WHERE upošteva najprej, združevanje pa se izvede na preostalih vrsticah.

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 29 -

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 30 -

Za vsako skupino hotel, tip sobe vrne število sob

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 31 -

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 1.

SELECT hotelNo, type, COUNT(roomNo), AVG(price)

FROM Room

GROUP BY hotelNo, type

HAVING COUNT(roomNo) > 1PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 32 -

Glej primer 6 Q_Having

Page 138: OPB_predavanja

9

Gnezdenje poizvedb…

• Nekateri SQL stavki imajo lahko vgnezdene SELECT stavke.

• Vgnezdeni SELECT stavki se lahko uporabijo v WHERE ali HAVING sklopih drugega SELECTstavka (subselect).

• Vgnezdeni SELECT stavki se lahko pojavijo tudi v INSERT, UPDATE in DELETE stavkih.PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 33 -

Primer vgnezdenega SELECT stavka

• Izpiši nazive hotelov, ki imajo vsaj 10 troposteljnih sob

SELECT hotelName

FROM Hotel

WHERE hotelNo IN

( SELECT hotelNo

FROM Room

GROUP BY hotelNo

HAVING COUNT(hotelNo) > 9)

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 34 -

Ali je stavek pravilen?

Manjka WHERE pogoj vvgnezdenem SELECT stavku:

WHERE type = 3

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

Modul: SQL©Laboratorij za informatiko - 35 -

Glej primer 7 Q_Exists

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

Modul: SQL©Laboratorij za informatiko - 36 -

Page 139: OPB_predavanja

10

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

Modul: SQL©Laboratorij za informatiko - 37 -

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 = 5).

SELECT R.hotelNo, R.roomNo

FROM room AS R

WHERE R.hotelNo <>5 AND

R.price > ANY ( SELECT price

FROM Room

WHERE hotelNo = 5 );PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 38 -

Glej primer 9 Q_Any

Primer uporaba ALL

• Izpiši številke sob ter pripadajočih hotelov, katerih cena je večja kot cena vseh sob v hotelu ‘Hilton New York’ (hotelNo = ‘HIL’).

SELECT R.hotelNo, R.roomNo

FROM Room AS R

WHERE R.hotelNo <>5 AND

R.price > ALL ( SELECT Price

FROM Room

WHERE hotelNo = 5 );PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 39 -

Glej primer 10 Q_All

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

Modul: SQL©Laboratorij za informatiko - 40 -

Page 140: OPB_predavanja

11

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

Modul: SQL©Laboratorij za informatiko - 41 -

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

Modul: SQL©Laboratorij za informatiko - 42 -

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

Modul: SQL©Laboratorij za informatiko - 43 -

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

Modul: SQL©Laboratorij za informatiko - 44 -

V Accessu so na voljo ukazi INNER JOIN, LEFT JOIN, RIGHT JOIN

Page 141: OPB_predavanja

12

Zunanji stik

• Za zapis SELECT stavka, ki vsebuje zunanji stik med dvema tabelama, uporabimo naslednjo sintakso:

SELECT DISTINCT H.hotelName, B.roomNo

FROM Hotel H LEFT JOIN

Booking B ON H.hotelNo = B. hotelNo

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 45 -

Kaj izpiše zgornja poizvedba?

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.guestAddressPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 46 -

V Accessu ukaz FULL JOIN ni na voljo.

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

Modul: SQL©Laboratorij za informatiko - 47 -

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

Modul: SQL©Laboratorij za informatiko - 48 -

Page 142: OPB_predavanja

13

Primer uporabe EXISTS

• Izpiši vse goste, ki so kdaj koli imeli rezervacije v hotelu Hilton New York.

SELECT guestName, guestAddress

FROM Guest G

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

Modul: SQL©Laboratorij za informatiko - 49 -

Kaj dobimo, če ta pogoj izpustimo?

Glej primer 11 Q_Exists

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

Modul: SQL©Laboratorij za informatiko - 50 -

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

Modul: SQL©Laboratorij za informatiko - 51 -

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 52 -

V Accessu opcija CORRESPONDING BY ni na voljo.

Page 143: OPB_predavanja

14

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

Modul: SQL©Laboratorij za informatiko - 53 -

Kako bo naziv stolpca, ki ga poizvedba vrne?

V Accessu se polja imenujejo tako kot v levi tabeli pri ukazu UNION.

Glej primer 12 Q_Union

Unija z uporabo CORRESPONDING BY

(SELECT *

FROM Hotel)

UNION CORRESPONDING BY address

(SELECT *

FROM Guest)

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 54 -

Hotel(hotelNo, hotelName, address)Guest(guestNo, guestName, address)

!

INSERT stavek...

INSERT INTO TableName [ (columnList) ]

VALUES (dataValueList)

• Seznam columnList ni obvezen;

• Pri vnosu moramo vpisati najmanj vse obvezne vrednosti (not null), razen za stolpce s privzeto vrednostjo (DEFAULT).

• Seznam dataValueList mora ustrezati seznamucolumnList.PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 55 -

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

Modul: SQL©Laboratorij za informatiko - 56 -

Glej primer 13 Q_Insert Simple

Page 144: OPB_predavanja

15

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);

• ali

INSERT INTO Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

VALUES (21, 109, ’12.12.2005’, ’17.12.2005’, 109);

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 57 -

stolpec comments je neobvezen

Primeri INSERT stavkov...

• Vnos več vrstic iz ene ali več drugih tabel...

INSERT INTO TableName [ (columnList) ]

SELECT ...

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 58 -

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 (morajo ustrezati po podatkovnem tipu).

• WHERE sklop neobvezen.

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 59 -

Primeri UPDATE stavkov

• Vse dvoposteljne sobe v hotelu Hilton (HotelNo = 5) povišaj za 5%

UPDATE Room

SET price = price * 1,05

WHERE type = 2 AND hotelNo = 5

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 60 -

Glej primer 14 Q_Update Simple, 15 Q_Update Complex

Page 145: OPB_predavanja

16

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

Modul: SQL©Laboratorij za informatiko - 61 -

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

Modul: SQL©Laboratorij za informatiko - 62 -

Stavki skupine SQL DDL...

• DDL skupina zajema SQL stavke za manipulacijo s strukturo podatkovne baze.

• Kaj si bomo pogledali:

– 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?

– Način delovanja ISO transakcijskega modelaPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 63 -

Podatkovni tipi v SQL standardu

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 64 -

Vir: [2,159]

Page 146: OPB_predavanja

17

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

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 65 -

Integrity Enhancement Feature...

• Obveznost podatkov

hotelNo Numeric(3) NOT NULL

• Omejitve domene

CHECK

spol CHAR NOT NULL

CHECK (spol IN (‘M’, ‘Ž’))

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 66 -

V Accessu DOMENE niso na voljo.

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

Modul: SQL©Laboratorij za informatiko - 67 -

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

Modul: SQL©Laboratorij za informatiko - 68 -

Kaj naj se zgodi, če je domena trenutno v uporabi

Access omogoča definicijo LOOKUP tabel.

Page 147: OPB_predavanja

18

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

Modul: SQL©Laboratorij za informatiko - 69 -

V Accessu je mogoče definirati validacijska pravila.

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 HotelPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 70 -

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

– CASCADE

– SET NULL

– SET DEFAULT

– NO ACTIONPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 71 -

Access omogoča zagotavljanje celovitosti povezav, vendar ne omogoča vseh od zgoraj naštetih možnosti.

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 CASCADEPODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 72 -

Page 148: OPB_predavanja

19

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

Modul: SQL©Laboratorij za informatiko - 73 -

Access ne omogoča kreiranja objektov z ukazom CREATE, saj ne implementira DDL ukazov . Izjema so ukazi v zvezi s kreiranjem, spreminjanjem in brisanjem tabel CREATE/DROP/ALTER TABLE.

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

Modul: SQL©Laboratorij za informatiko - 74 -

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 DROP SCHEMA

CREATE/ALTER DOMAIN DROP DOMAIN

CREATE/ALTER TABLE DROP TABLE

CREATE VIEW DROP VIEW

• Mnogi SUPB-ji omogočajo tudi

CREATE INDEX DROP INDEX

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 75 -

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

Modul: SQL©Laboratorij za informatiko - 76 -

Page 149: OPB_predavanja

20

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

Modul: SQL©Laboratorij za informatiko - 77 -

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

Modul: SQL©Laboratorij za informatiko - 78 -

Primer kreiranja tabele...

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

Modul: SQL©Laboratorij za informatiko - 79 -

Najprej kreiramo domene Primer kreiranja tabele...

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

Modul: SQL©Laboratorij za informatiko - 80 -

potem kreiramo tabelo

Glej primer 17 Q_CreateTable

Page 150: OPB_predavanja

21

ALTER TABLE stavek...

• S stavkom ALTER TABLE lahko:

– 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;

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 81 -

Glej primer 18 Q_AlterTable

Primeri ALTER TABLE stavkov...

• Spremeni tabelo Booking tako, da ukineš privzeto vrednost stolpca fromDate.

ALTER TABLE Booking

ALTER fromDate DROP DEFAULT;

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 82 -

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

Modul: SQL©Laboratorij za informatiko - 83 -

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:

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 84 -

Page 151: OPB_predavanja

22

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, praviloma niso vidne navzven drugim transakcijam, dokler transakcija ni končana.

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 85 -

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

Modul: SQL©Laboratorij za informatiko - 86 -

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

Modul: SQL©Laboratorij za informatiko - 87 -

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.

– READ UNCOMMITTED

– READ COMMITTED

– REPEATABLE READ

– SERIALIZABLE

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 88 -

Page 152: OPB_predavanja

23

Transakcije…

PODATKOVNE BAZE

Modul: SQL©Laboratorij za informatiko - 89 -

Isolation level Dirty ReadNon-repeatable

readPhantom read

READ UNCOMMITTED

Y Y Y

READ COMMITTED N Y Y

REPEATABLE READ N N Y

SERIALIZABLE N N N

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

Modul: SQL©Laboratorij za informatiko - 90 -

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

Modul: SQL©Laboratorij za informatiko - 91 -

Page 153: OPB_predavanja

1

Relacijska algebra

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 1 -

� O relacijskih poizvedovalnih jezikih� Relacijska algebra� Operacije relacijske algebre

Povzeto po [2, 88-102] 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

Modul: Relacijska algebra©Laboratorij za informatiko - 2 -

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

Modul: Relacijska algebra©Laboratorij za informatiko - 3 -

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

Modul: Relacijska algebra©Laboratorij za informatiko - 4 -

Page 154: OPB_predavanja

2

Relacijska algebra…

• Izpeljava preseka s pomočjo operacije razlika

A ∩ B = A – (A – B)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 5 -

A BB

Operacije relacijske algebre…

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 6 -

Operacije relacijske algebre

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 7 -

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

Modul: Relacijska algebra©Laboratorij za informatiko - 8 -

Page 155: OPB_predavanja

3

Primer selekcije

• Izpiši vse artikle z zalogo manjšo od 2

• σzaloga<2 (R)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 9 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

R=ARTIKEL

Šifra Naziv Zaloga

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

σzaloga<2 (R)

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

Modul: Relacijska algebra©Laboratorij za informatiko - 10 -

Primer projekcije

• Izpiši nazive in zalogo vseh artiklov

• Πnaziv, zaloga (R)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 11 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

R=ARTIKEL

Naziv Zaloga

Telovadni copati Nike 10

Trenerka Bali 4

Moška jakna QuickSilver 1

Ženska jakna QuickSilver 0

Πnaziv, zaloga (R)

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 in njihovih podatkovnih tipih.– R(ime: text, EMSO: num(13)) ∪ 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

Modul: Relacijska algebra©Laboratorij za informatiko - 12 -

Page 156: OPB_predavanja

4

Primer unije

• Izpiši vsa mesta, kjer se nahajajo skladišča ali stranke

• Πkraj (R) ∪ Πkraj (S)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 13 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

LJ

CE

PO

GO

MB

Πkraj (R) ∪ Πkraj (S)

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 in njihovih podatkovnih tipih.

– R(ime: text, EMSO: int) − S (priimek: text, starost: int)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 14 -

Primer razlike

• Izpiši vsa mesta, kjer se nahajajo skladišča ne pa tudi stranke

• Πkraj (R) − Πkraj (S)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 15 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

MBΠkraj (R) − Πkraj (S)

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 in njihovih podatkovnih tipih.

– R(ime: text, EMSO: num(13)) − S (priimek: text, starost: int)

• Presek lahko izpeljemo iz osnovnih operacij:PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 16 -

Page 157: OPB_predavanja

5

Primer preseka

• Izpiši vsa mesta, kjer se nahajajo tako skladišča kot stranke

• Πkraj (R) ∩ Πkraj (S)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 17 -

Šifra Naziv Kraj

A10 Telovadni copati Nike LJ

A12 Trenerka Bali MB

BC80 Moška jakna QuickSilver LJ

X12 Ženska jakna QuickSilver GO

R=ARTIKEL

Šifra Naziv Kraj

S1 Novak Janez LJ

S2 Krašna Miha CE

S3 Bele Simon PO

S4 Šuc Vilma GO

S=STRANKA

Kraj

LJ

GO

Πkraj (R) ∩ Πkraj (S)

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

Modul: Relacijska algebra©Laboratorij za informatiko - 18 -

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))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 19 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

A10 Telovadni copati Nike X12 1

A12 Trenerka Bali A10 1

A12 Trenerka Bali X12 1

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

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

Modul: Relacijska algebra©Laboratorij za informatiko - 20 -

Page 158: OPB_predavanja

6

Primer kartezijskega produkta s selekcijo

• σR.šifra = S.šifra artikla ((Πšifra, naziv (R)) × (Πšifra artikla,

količina (S)))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 21 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

X12 Ženska jakna QuickSilver X12 1

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

Modul: Relacijska algebra©Laboratorij za informatiko - 22 -

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.

• Ključno za učinkovitost optimizacije poizvedb je:

– iskalni prostor: koliko različnih strategij imamo ter PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 23 -

Iskalni prostor

• V splošnem je iskalni prostor lahko izjemno velik.

• Že pri stikih na voljo izjemno veliko možnosti: npr. pri n relacijah možnih x = (2(n-1)!)/(n-1)! različnih stikov.

– Če n = 4 � x = 120

– Če n = 6 � x = 30.240

– Če n = 10 � x je več kot 176 bilijonov.

• Obstajajo metode, s pomočjo katerih PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 24 -

Page 159: OPB_predavanja

7

Stične operacije…

• Obstaja več vrst stičnih operacij:

– Stik Theta (Theta join)

– Ekvistik (Equijoin) poseben primer stika Theta)

– Naravni stik (Natural join)

– Odprti stik (Outer join)

– Delni stik (Semijoin)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 25 -

Stik Theta (θ stik)…

• R F S

• 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

Modul: Relacijska algebra©Laboratorij za informatiko - 26 -

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 Ekvistik.

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 27 -

Primer stika Ekvistik

• 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))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 28 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0Račun Šifra

artikla

Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Šifra

artikla

Količina

A10 Telovadni copati Nike A10 1

X12 Ženska jakna QuickSilver X12 1

Page 160: OPB_predavanja

8

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

Modul: Relacijska algebra©Laboratorij za informatiko - 29 -

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))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 30 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0 Račun Šifra Količina

15/05 A10 1

15/05 X12 1

R=ARTIKEL

S=RAČUN

Šifra Naziv Količina

A10 Telovadni copati Nike 1

X12 Ženska jakna QuickSilver 1

Odprti stik

• Odprti 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

Modul: Relacijska algebra©Laboratorij za informatiko - 31 -

Primer odprtega stika

• Izpiši osebe in njihova začasna prebivališča

• (ΠPriimek in ime, PTT (R)) S

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 32 -

ID Priimek in ime PTT

1 Kante Janez 5270

2 Tratnik Jože 5000

3 Mali Mihael

4 Brecelj Jana 1000

R=OSEBA

PTT Naziv

1000 Ljubljana

5000 Nova Gorica

5270 Ajdovščina

S=KRAJ

Priimek in ime PTT Naziv zač. preb.

Kante Janez 5270 Ajdovščina

Tratnik Jože 5000 Nova Gorica

Mali Mihael

Brecelj Jana 1000 Ljubljana

(ΠPriimek in ime, PTT(R)) S

Page 161: OPB_predavanja

9

Delni stik

• R F S

• Delni stik predstavlja relacijo, ki vsebuje tiste n-terice (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

Modul: Relacijska algebra©Laboratorij za informatiko - 33 -

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))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 34 -

Š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

R=ARTIKEL

Šifra Kraj

LJ Ljubljana, Tržaška 33

MB Maribor, Prešernov trg 2

GO Nova Gorica, Cankarjeva 2

S=SKLADIŠČE

Šifra Naziv Skladišče Dobavitelj Zaloga

A10 Telovadni copati Nike LJ Nike 10

BC80 Moška jakna QuickSilver LJ Karma 1

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

Modul: Relacijska algebra©Laboratorij za informatiko - 35 -

Primer količnika

• Izpiši vse kupce, ki so kupili vse izdelke dobavitelja Karma.

• (Πšifra, kupec (R)) / (Πšifra artikla(σdobavitelj = ‘Karma’ (S)))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 36 -

Šifra Kupec

A10 K1

A12 K1

BC80 K2

X12 K3

A10 K3

BC80 K3

BC80 K4

X12 K4

A12 K5

Šifra

BC80

X12

Πšifra artikla(σdobavitelj = ‘Karma’ (S))Πšifra, kupec (R)

Kupec

K3

K4

Page 162: OPB_predavanja

10

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

Modul: Relacijska algebra©Laboratorij za informatiko - 37 -

Primer agregatnih operacij

• Kakšna je povprečna cena artiklov v skladišču?

• ρR(AvgCena) ℑAVG Cena (σZaloga > 0 (R))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 38 -

Šifra Naziv Skladišče Cena Zaloga

A10 Telovadni copati Nike LJ 17.990 10

A12 Trenerka Bali MB 6.750 4

BC80 Moška jakna QuickSilver LJ 14.290 1

X12 Ženska jakna QuickSilver GO 14.290 0

R=ARTIKEL

AvgCena

13.010

ρR(AvgCena) ℑAVG Cena (Zaloga > 0 (R))

Operacija ρR(ime) Op poimenuje atribut, ki ga dobimo z operacijami Opnad relacijo R, z imenom ime

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

Modul: Relacijska algebra©Laboratorij za informatiko - 39 -

Primer združevalnih operacij

• Izpiši vrednosti posameznih računov?

• ρR(račun, SkupnaCena) šifra računa

ℑ SUM cena*količina (R)

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 40 -

ŠifraR Šifra artikla Količina Cena za enoto

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

R=RAČUN

račun SkupnaCena

1/05 35.500

2/05 25.650

3/05 112.990

ρR(račun, SkupnaCena) šifra računa ℑ SUM cena*količina (R)

Grupiramo po šifri računa

GAℑAL(R)

Page 163: OPB_predavanja

11

Vaja…

• Imamo naslednje relacije:

Hotel (hotelNo, hotelName, address)

Room (roomNo, hotelNo, type, price)

Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)

Guest (guestNo, guestName, guestAddress)

• Opiši relacije, ki jih pridobimo z naslednjimi operacijami relacijske algebre:

a) σHotel.hotelNo=Room.hotelNo(Hotel × Room))

b) ΠhotelName(Hotel Hotel.hotelNo = Room.hotelNo(σprice >

50(Room)))

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 41 -

Vaja

• Z uporabo relacijske algebre naredite pogled, ki bo vključeval vse podatke o sobah iz Grosvenor hotela, razen podatka o ceni.

ΠroomNo, hotelNo, type(Room hotelNo (σhotelName=‘Grosvenor Hotel’ (Hotel)))

• Kaj je prednost takšnega pogleda?

PODATKOVNE BAZE

Modul: Relacijska algebra©Laboratorij za informatiko - 42 -

Page 164: OPB_predavanja

1

Organizacija datotek in indeksiranje

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 1 -

� Načini ureditve datotek� Indeksi in njihov način delovanja� ISAM, B+ drevo

Povzeto po [1] in [5]

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 2 -

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;

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 3 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

entiteta/zapis

atribut/polje

datoteka

Logični pogled Fizični pogledTabela

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 4 -

Page 165: OPB_predavanja

2

Osnovni koncepti

• Zapisi tabele Artikel razdeljeni na strani…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 5 -

Šifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

Stran

1

2

ARTIKEL

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 6 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 7 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 8 -

Page 166: OPB_predavanja

3

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 9 -

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 = 14

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 10 -

10 12 14 18 23 34 35 65 89 90 9972 78

1 2 3 4 5 6 7 8 11 12 139 10

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 11 -

Urejene datoteke

• Dodajanje zapisa na začetek velike datoteke posebej problematično.

• Možna rešitev: uporaba dodatne neurejene datoteke (overflow ali transaction 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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 12 -

Urejene datoteke se redko uporabljajo za shranjevanje podatkov, razen v kombinaciji s primarnim indeksom.

Page 167: OPB_predavanja

4

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 13 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 14 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 15 -

Razpršene datoteke…

• Za reševanje problemov z istim naslovnim prostorom so na voljo različne tehnike

– Odprto naslavljanje (open addressing)

– Nepovezane dodatne strani (unchained overflow)

– Povezane dodatne strani (chained overflow)

– Večkratno razprševanje (multiple hashing)

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 16 -

Page 168: OPB_predavanja

5

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 17 -

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 18 -

Staff SA9 zapisStaff SL21 zapis

Staff SG37 zapis

Staff SG5 zapisStaff SG14 zapis

Stanje prej Stran

0

1

2

Staff SA9 zapisStaff SL21 zapis

Staff SG37 zapisStaff SL41 zapis

Staff SG5 zapisStaff SG14 zapis

Stanje potem Stran

0

1

2

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.)

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 19 -

Staff SA9 zapisStaff SL21 zapis

Staff SG37 zapis

Staff SG5 zapisStaff SG14 zapis

Stran

0

1

2

Staff SL41 zapis

Dodatni prostor Stran

3

4

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 20 -

0

0

3

0

0Staff SA9 zapisStaff SL21 zapis

Staff SG37 zapis

Staff SG5 zapisStaff SG14 zapis

Stran

0

1

2

Staff SL41 zapis

Dodatni prostor Stran

3

4

Page 169: OPB_predavanja

6

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 hashfunkcija, 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).

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 21 -

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 22 -

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 23 -

Dinamične razpršene datoteke…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 24 -

0

Staff SL21 zapisStaff SG37 zapis

Imenik

0

0

globinalokalna globina

0

Izgled dinamično razpršenedatoteke po vpisu zapisovSL21 in SL37.

1

0

1

1

Staff SL21 zapisStaff SG14 zapis

0

1

Staff SG37 zapis1

Izgled dinamično razpršenedatoteke po vpisu zapisa SG14

2

00

01

10

11

2

Staff SA9 zapisStaff SG14 zapis

0

2

Staff SL21 zapis2

1

Staff SG37 zapis1

Izgled dinamično razpršenedatoteke po vpisu zapisaSA9.

Page 170: OPB_predavanja

7

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 25 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 26 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 27 -

B003, 18000 SG14 David Ford 18000 B003B003, 18000

Iskalni ključ Zapis

Indeksna datoteka Podatkovna datoteka

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 28 -

.........

Podatkovna datoteka

Indeksna datoteka

.........

Podatkovna datoteka

Indeksna datoteka

Page 171: OPB_predavanja

8

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 29 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 30 -

Indeksi in indeksiranje…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 31 -

Abby

David

Mike SG14 David Ford 18100 B003

SG37 Ann Beech 12000 B003

SF21 Carol White 32000 B002

SF01 Abby Ford 18000 B002

SO37 Jeana Fraser 22000 B001

SX21 John Smith 9000 B001

SL09 Mike Tires 12500 B001

SM01 Moar Trex 19000 B003

9000

12000

12500

18000

18100

19000

22000

32000

PODATKOVNA DATOTEKA

Redki indekspo polju name

gosti indekspo polju salary

fName 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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 32 -

Page 172: OPB_predavanja

9

Indeksi in indeksiranje…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 33 -

staffNo fName lName salary branchNo

SG14 David Ford 18000 B003

SG37 Ann Beech 12000 B003

SL21 John White 30000 B005

SL41 Julie Lee 9000 B005

9000, B005

12000, B003

18000, B003

30000, B005

9000

12000

18000

30000

staffNo fName lName salary branchNo

SG14 David Ford 18000 B003

SG37 Ann Beech 12000 B003

SL21 John White 30000 B005

SL41 Julie Lee 9000 B005

B003, 12000

B003, 18000

B005, 9000

B005, 30000

B003

B003

B005

B005

(salary, branchNo)

(branchNo, salary)

(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):

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 34 -

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 35 -

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 36 -

Page 173: OPB_predavanja

10

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 37 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 38 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 39 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 40 -

Page 174: OPB_predavanja

11

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 41 -

Iščemo zapis z vrednostjoiskalnega ključa 27

ISAM…

• Dodajanje

– Stran v listih, kamor zapis sodi, poiščemo enako kot pri iskanju

– Zapis dodamo na prvo prosto mesto

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 42 -

Podatki v primarnih straneh listov so urejeni

Dodamo zapis z vrednostjoiskalnega ključa 23, 48, 41, 42

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 43 -

Brisanje zapisov z vrednostjoiskalnega ključa 42, 51 in 97.

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

• Strošek branja cele datoteke: 100.000

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 44 -

Page 175: OPB_predavanja

12

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 45 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 46 -

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 47 -

Indeksni del

Podatkovni del

Indeksna datoteka

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 48 -

Page 176: OPB_predavanja

13

B+ drevesa…

• Primer B+ drevesa. Kakšna je višina in kakšna razvejanost F?

– d je parameter B+ drevesa imenovan red drevesa;

– 2*d predstavlja kapaciteto vozlišča. Edina izjema je korensko vozlišče, za katerega velja 1=<m=<2d.

– Vsako vozlišče B+ drevesa vsebuje m vpisov, pri čemer velja d ≤ m≤ 2*d.PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 49 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 50 -

B+ drevesa…

• Iskanje:

– Algoritem za iskanje deluje podobno kot pri ISAM strukturi.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 51 -Pri algoritmih bomo predpostavili, da v drevesu ni duplikatov.

Uporabimo linearno alibinarno iskanje

P0 K1 P1 K2 P2 Km Pm…

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 52 -

Primer: dodati želimo 8*

začetno drevo

List se razpolovi5 postane kazalec na nov list

Kopira se en nivo višje.

Problem: tudi zgornje vozlišče je polno

Page 177: OPB_predavanja

14

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 53 -

B+ drevesa…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 54 -

17 je delitveni ključ, ki ga skupaj s kazalcem na drugo

polovico razdeljenega vozliščapremaknemo en nivo višje.

Dodati želimo 5*vozlišče je polno

Končno drevo Nov koren vkončnem drevesu

B+ drevesa…

• Algoritem za dodajanje

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 55 -

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 nad-vozlišču.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 56 -

… … …

Vozlišče N Vozlišče N+1Vozlišče N+1

Page 178: OPB_predavanja

15

B+ drevesa…

• Primer dodajanja z redistribucijo…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 57 -

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.

Končno drevoKljuč 13

nadomestimo z 8 –

najmanjšim ključem desnega soseda

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 58 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 59 -

B+ drevesa…

• Primer brisanja

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 60 -

Brišemo 19* in 20*

Končno drevo

Redistribuirani podatki

Po brisanju 20*podatke v listihredistribuiramo.Klljuč 24 nadomestimoz 27.

Page 179: OPB_predavanja

16

B+ drevesa…

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 61 -

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 brisati (17).

Brišemo 24*

Po brisanju 24*združimo dve vozlišči.Ključ 27 ter njegovlevi kazalec brišemo.

Združeno vozlišče

Problem: vozlišče je ostalo z enim samim ključem

Združevanje listov: ključ se premakne en nivo navzgorZdruževanje v indeksnem delu: ključ se premakne iz zgornje ravni

B+ drevesa…

• Pogledali smo:

– redistribucija v listih,

– združevanje v listih in

– združevanje v indeksnem delu

• Ostane:

– redistribucija v indeksnem delu

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 62 -

B+ drevesa…

• Primer redistribucije v indeksnem delu

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 63 -

Primer vmesnega drevesapo brisanju 24* Problematično vozlišče

Zaradi združitve smo polji 17 in 20ter polje 22 v nad-vozlišču premaknili za dve mesti v desno.

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 64 -

Page 180: OPB_predavanja

17

B+ drevesa…

• Algoritem za brisanje

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 65 -

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 66 -

B+ drevesa v praksi…

• Stiskanje ključev

– Višina drevesa premo sorazmerna številu podatkovnih polj in obratno sorazmerna velikosti indeksnih polj (F).

– Število I/O operacij za branje podatkovnega polja = h.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 67 -

… … …

višina (h)

širina fan_out (F)

h = logF(# podatkovnih polj)

Indeksno polje

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).

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 68 -

Kako lahko skrajšamo ključe?

Page 181: OPB_predavanja

18

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.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 69 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 70 -

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

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 71 -

Bitni indeksi…

• Primer bitnega indeksa

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 72 -

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

0 0 1

0 1 0

1 0 0

Tabela Staff

Bitni indeks po polju position

B003 B005

1 0

1 0

0 1

0 1

0 1

Bitni indeks po polju branchNo

Page 182: OPB_predavanja

19

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 vektorjaza vrednost Supervisor in B003.

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 73 -

Supervisor

0

0

1

0

0

B003

1

1

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 74 -

Stični indeksi

• Primer stičnega indeksa

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 75 -

rowID branchNo street city postcode

20001 B005 22 Deer Rd London SW1 4EH

20002 B007 16 Argyll St Aberdeen AB2 3SU

20003 B003 163 Main St Glasgow G11 9QX

20004 B004 32 Manse Rd Bristol BS99 1NZ

20005 … … … …

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 … … … … …

branch

rowID

propertyrowID

city

20001 30002 London

20002 30001 Aberdeen

20003 30003 Glasgow

20003 30004 Glasgow

… … …

Tabela Branch

Tabela Property

Koliko nepremičnin je v mestih, kjerso 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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 76 -

Page 183: OPB_predavanja

20

Gruče

• Primer gruče

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 77 -

street city postcode branchNo staffNo fName lName position …

22 Deer Rd London SW1 4EH B005 SL21 John White Manager …

SL41 Julie Lee Assistant …

163 Main St Glasgow G11 9QX B003 SG37 Ann Beech Assistant …

SG14 David Ford Supervisor …

SG5 Susan Brand Manager …

Tabela Branch

Tabela Staff

Ključ gruče

Smernice za izbiro datotečne organizacije…

• Pogledali bomo smernice za izbiro datotečne organizacije, ko so na voljo naslednje vrste datotek:

– Kopica

– Razpršena datoteka

– ISAM

– B+ drevo

PODATKOVNE BAZE

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 78 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 79 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 80 -

Page 184: OPB_predavanja

21

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 81 -

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

Modul: Organiz. dat. in ind. v 1.2©Laboratorij za informatiko

- 82 -

Page 185: OPB_predavanja

1

Query By Example

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 1 -

� Uvod v QBE

� Poizvedovanje

� Spreminjanje, brisanje in dodajanje

� Kreiranje tabel

Povzeto po [2, 198-225] 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

Modul: QBE v 1.0

©Laboratorij za informatiko- 2 -

QBE – Query-By-Example...

• QBE uporabnikom omogoča:

– 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. PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 3 -

QBE – Query-By-Example...

• Primeri iz Accessa

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 4 -

Page 186: OPB_predavanja

2

Primeri iz Access-a...

• Poizvedba SELECT

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 5 -

Primeri iz Access-a...

• Poizvedba SELECT

• določitev kriterija (selekcija)

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 6 -

Primeri iz Access-a...

• Poizvedba SELECT

• Stik tabel

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 7 -

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba agregatov

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 8 -

Page 187: OPB_predavanja

3

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba parametrov

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 9 -

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba “Autolookup”

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 10 -

Primeri iz Access-a...

• Posebne vrste SQL stavkov

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 11 -

Primeri iz Access-a...

• Poizvedba SELECT

• Uporaba “Crosstab” poizvedbe

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 12 -

Page 188: OPB_predavanja

4

Primeri iz Access-a...

• Kreiranje nove tabele

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 13 -

Primeri iz Access-a...

• Brisanje zapisov

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 14 -

Primeri iz Access-a

• Spreminjanje zapisov

PODATKOVNE BAZE

Modul: QBE v 1.0

©Laboratorij za informatiko- 15 -

Page 189: OPB_predavanja

1

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML

Spletne tehnologije

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Primerjava relacijskih in XML podatkov

{ row: { name: “John”, phone: 3634 },

row: { name: “Sue”, phone: 6343 },

row: { name: “Dick”, phone: 6363 }

}

row row row

name name name

phone phone phone

“John” 3634 “Sue” “Dick”6343 6363

Relacija

… v XML

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Primerjava relacijskih in XML podatkov

• Relacija je v osnovi drevo, ki ima:– Neomejeno število vozlišč na prvem nivoju

(poljubno število vrstic)

– Vozlišča prvega nivoja imajo natančno določeno stopnjo oz. število potomcev (natančno določeno število polj)

• XML podatkovna struktura je v osnovi poljubno drevo, ki ima:– Neomejeno število vozlišč na vseh nivojih

– Poljubno število nivojev

– Spremenljivo število potomcev posameznih vozlišč

– Spremenljivo dolžino poti

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Poizvedovalni jezik za XML

• Mora biti visoko nivojski � “SQL za XML”

• Mora biti skladen z XSchema:

– Delovati mora tudi v primerih, ko informacij o shemi ni.

• Podpirati mora enostavne in kompleksne (gnezdene) podatkovne tipe.

• Podpirati mora univerzalne in eksistencialne kvantifikatorje ter agregacijo.

• Omogočati mora izvajanje operacij nad sekvencami in hierarhičnimi strukturami dokumentov.

• Omogočati mora pretvorbo in izdelavo XML struktur.

Page 190: OPB_predavanja

2

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery

• Vplivi: XML-QL, Lorel, Quilt, YATL

• Prebere sekvenco XML fragmentov ali pa

atomarne vrednosti in vrne sekvenco XML

fragmentov ali atomarne vrednost.

– Vhodi/izhod so objekti, ki so definirani z XML-

Query podatkovnim modelom in ne z nizi iz XML

sintakse.

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Pregled

• Izrazi za pot (Path expressions)

• Konstruktorji (Element constructors)

• FLWOR izrazi (For-Let-Where-Order-Return expressions):– FOR, LET, WHERE, ORDER, RETURN stavek

– Vključujejo tudi nekatere druge izraze, kot so na primer pogojni izrazi, izpisi, kvantifikatorji itd.

– Generalizacija SELECT, FROM, HAVING, WHERE stavkov iz SQL

• Kontekstno odvisni izrazi:– Element (trenutno vozlišče),

– Pozicija (v nizu, ki ga obdelujemo),

– Velikost (niza, ki ga obdelujemo),

– Vključujejo tudi imenske prostore , spremenljivke, funkcije, datume itd.

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Izraz za pot (Path Expressions)

• Primer:

– Bib/paper

– Bib/book/publisher

– Bib/paper/author/lastname

• V XML dokumentu je vrednost poti p množica

objektov, ki so dostopni po tej poti

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer poti

Doc =

&o1

&o12 &o24 &o29

&o43

&o70 &o71

&96

&243 &206

&25

“Serge” “Abiteboul”

1997

“Victor” “Vianu” 122 133

paper bookpaper

references

references referencesauthortitle year http

author

authorauthor

titlepublisherauthor

authortitle

page

firstname lastname firstname lastnamefirst last

Bib

&o44 &o45 &o46

&o47 &o48 &o49 &o50 &o51

&o52

Bib/paper = <&o12,&o29>

Bib/book/publisher = <&o51>

Bib/paper/author/lastname = <&o71,&206>

Zaporedje elementov

je pomembno

Page 191: OPB_predavanja

3

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Konstruktorji (Element Construction)

• Z XQuery izrazi lahko sestavimo nove vrednosti

in strukture.

• Primer: če pogledamo poti, ki smo jih definirali

na prejšnjem diapozitivu:

– Vsaka pot opredeljuje nov niz elementov

– Tvorimo lahko nove poljubne strukture

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: FLWOR izrazi

• FOR-LET-WHERE-ORDERBY-RETURN = FLWORFOR/LET stavek

WHERE stavek

ORDERBY/RETURN stavek

Seznam n-teric

Seznam n-teric

Instanca (primerek) XQuery

podatkovnega modela

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET…

• FOR $x IN list-expr

– Poveže $x s posameznimi vrednostmi v seznamu.

• LET $x = list-expr

– Poveže $x s celotnim seznamom

– Uporaben je za gnezdenje izrazov in agregacijo

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET…

• FOR obdela vsak element vhodnega zaporedja in rezultate združi v izhodno zaporedje– V običajnih primerih obstaja en izhodni element za

vsak vhodni…

• Primer:

– Vhod (vhodno zaporedje): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

– Izhod (izhodno zaporedje): 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

for $n in (1 to 10)

return $n * $n

Page 192: OPB_predavanja

4

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET…

• Z XQuery LET stavkom deklariramo spremenljivko in ji priredimo vrednost

• Primer:

– Vsako pojavitev reference na spremenljivko zamenjamo z vrednostjo spremenljivke

– Rezultat je ekvivalenten spodnjemu izrazu:

let $maxCredit := 3000

let $overdrawnCustomers := //customer[overdraft > $maxCredit]

return count($overdrawnCustomers)

count(//customer[overdraft > 3000])

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET

FOR $x IN document("bib.xml")/bib/book

RETURN <result> $x </result>

Izhod:

LET $x IN document("bib.xml")/bib/book

RETURN <result> $x </result>

Izhod:

FOR vrne seznam kjer je $x združen z

vsakim elementom book znotraj

datoteke bib.xml

LET vrne rezultat kjer je $x združen s

celotnim seznamom elementov book

iz datoteke bib.xml.

<result> <book>...</book>

<book>...</book>

<book>...</book>

...

</result>

<result> <book>...</book></result>

<result> <book>...</book></result>

<result> <book>...</book></result>

...

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer (1)

• Poišči vse naslove knjig, ki so bile izdane po

letu 1995:

FOR $x IN document("bib.xml")/bib/book

WHERE $x/year > 1995

RETURN $x/title

Izhod:<title> abc </title>

<title> def </title>

<title> ghi </title>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer (2) …

• Za vsakega avtorja knjige, ki jo je izdala založba Morgan

Kaufmann, izpišite vse njegove izdane knjige

FOR $a IN distinct(document("bib.xml")/bib/book[publisher=“Morgan Kaufmann”]/author)

RETURN <result>

$a,

FOR $t IN /bib/book[author=$a]/title

RETURN $t

</result>

distinct je funkcija, ki izloči duplikate (vhodni podatki se najprej pretvorijo v atomarne vrednosti, nato se izločijo duplikati)

Page 193: OPB_predavanja

5

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer (2)

Ugnezdena struktura elementov

rezultata je določena z ugnezdeno

strukturo poizvedbe

FOR $t IN /bib/book[author=$a]/title

<result>

<author>Jones</author>

<title> abc </title>

<title> def </title>

</result>

<result>

<author> Smith </author>

<title> ghi </title>

</result>

Izhod:

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: WHERE

• WHERE stavek opravlja podobno vlogo kot v

SQL

– določa selekcijski pogoj (filter)

– je opcijski

– pojavi se lahko samo enkrat in sicer takoj po FOR

ali LET stavku

for $genre in //genre/choice

for $video in //video

for $actorRefs in $video/actorRef

for $actor in //actor

where $video/genre = $genre and $actor/@id = $actorRefs

return concat($genre, ": ", $actor)

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer (3)

count je funkcija, ki vrne število elementov

<big_publishers>

FOR $p IN distinct(document("bib.xml")//publisher)

LET $b := document("bib.xml")/book[publisher = $p]

WHERE count($b) > 100

RETURN $p

</big_publishers>

� Izpišite vse založnike, ki so izdali več kot 100 knjig:

Za vsakega založnika p

V b shrani seznam

objavljenih knjig p-ja

Preštej število knjig v b in

vrni p, če je število knjig >

100

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Primer (4)

• Izpišite vse knjige, ki imajo višjo ceno od

povprečne:LET $a=avg(document("bib.xml")/bib/book/price)

FOR $b in document("bib.xml")/bib/book

WHERE $b/price > $a

RETURN $b

Page 194: OPB_predavanja

6

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Zbirke (Collections) …

• Urejena zbirka

– /bib/book/author

• Neurejena zbirka

– distinct(/bib/book/author)LET $a = /bib/book $a je stavek, ki iterira skozi vse knjige v zbirki

RETURN <result> $b/author </result>

Stavek vrne eno zbirko!

<result><author>...</author><author>...</author><author>...</author>...

</result>

Izhod:

$b/author tudi zbirka (več avtorjev…)

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Zbirke (Collections) …

• Zbirke v izrazih:

Izraz je veljaven samo v primeru, da imata oba niza največ en element

Atomatizacija

$b/price seznam n cen

$b/price * 0.7

$b/price * $b/quantity

seznam n številk ??

seznam n x m številk ??

/book1/author eq “Kennedy“ Primerjava vrednosti

Splošna primerjava/book1/author = “Kennedy“

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: ORDERBY

• Order by stavek uredi rezultate poizvedbe

• Primer:

Video posnetke uredi oz. izpiši naraščajoče glede ne

leto nastanka, znotraj posameznega leta pa padajoče

glede na oceno gledalcev.FOR $x in //videoORDERBY $x/year ascending, number($x/user-rating)

descendingRETURN $x/title

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: RETURN

• Vsak XQuery FLWOR izraz vsebuje return

stavek

• Return stoji vedno na koncu izraza

• S stavkom določimo strukturo oz. zgradbo

rezultata (Kaj vse bo vključeno v rezultat?)

Izpišite vse igralce, ki igrajo v komedijah.

FOR $v in //video[genre="comedy"]RETURN //actor[@id = $v/actorRef]

Page 195: OPB_predavanja

7

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Urejanje

<publisher_list>FOR $p IN distinct(document("bib.xml")//publisher)ORDERBY $pRETURN <publisher> <name> $p/text() </name>,

FOR $b IN document("bib.xml")//book[publisher = $p] ORDERBY $b/price DESCENDING

RETURN <book> $b/title, $b/price

</book></publisher>

</publisher_list>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: If-Then-Else

FOR $h IN //holdingORDERBY $h/titleRETURN <holding>

$h/title, IF $h/@type = "Journal"

THEN $h/editorELSE $h/author

</holding>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Eksistenčni kvantifikator…

• Eksistenčni kvantifikator je XQuery SOME

operator.

– Ali podanemu pogoju zadošča vsaj eno vozlišče

znotraj množice vozlišč?

some $price in document("data/items.xml")//reserve_price

satisfies $price > 1000

Ali obstaja vsaj ena cena, ki je višja od 1000?

Vrni vrednost, če obstaja vsaj ena cena, ki je višja od 1000.

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Eksistenčni kvantifikator

FOR $b IN //book

WHERE SOME $p IN $b//para SATISFIES

contains($p, "sailing")

AND contains($p, "windsurfing")

RETURN $b/title

Page 196: OPB_predavanja

8

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Univerzalni kvantifikator

FOR $b IN //book

WHERE EVERY $p IN $b//para SATISFIES

contains($p, "sailing")

RETURN $b/title

� Univerzalni kvantifikator je XQuery EVERY operator

– Ali podanemu pogoju zadoščajo vsa vozlišča znotraj podane

množice vozlišč?

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XQuery: Razno

• Before in After:

– Urejanje vhodnih podatkov.

• Filter:

– Omejevanje izhodnega drevesa.

• Rekurzivne funkcije,

• Imenski prostori (Namespaces)

• Reference, povezave …

• …

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model

• Opis XML podatkov v obliki drevesa

http://www.w3.org/TR/query-datamodel/2/2001

Node ::= DocNode | ElemNode |ValueNode | AttrNode | NSNode |PINode |CommentNode |InfoItemNode | RefNode

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model

• Elementarno vozlišče (poenostavljena

definicja)Daj mi značko, nabor atributov,

seznam elementov/vrednosti in

jaz ti bom vrnil element

elemNode : (QNameValue, {AttrNode },[ ElemNode | ValueNode])

� ElemNode

QNameValue je naziv značke

Page 197: OPB_predavanja

9

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model

<book price = “55”

currency = “USD”>

<title> Foundations … </title>

<author> Abiteboul </author>

<author> Hull </author>

<author> Vianu </author>

<year> 1995 </year>

</book>

book1= elemNode(book,{price2, currency3},[title4,author5, author6, author7,year8])

price2 = attrNode(…) /* next */currency3 = attrNode(…)title4 = elemNode(title, string9)…

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Dodatno gradivo:

• Dodatne informacije so dostopne na spodnjih povezavah:

– http://www.w3.org/TR/xquery• Specifikacije

– http://www.w3.org/XML/Query#products • Implementacije

– http://xml.coverpages.org/xmlQuery.html • XQuery (povzetki in povezave)

– http://www.xmlstarterkit.com/

• Software AG’s XML server s podporo XQuery

– http://www.xquery.com

• Tutoriali

– http://www.saxonica.com

Page 198: OPB_predavanja

1

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Uvod v XML

- 1 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

˝For every complex problem there is a solution that is

simple, neat and wrong.”

H. L. Mencken

- 2 -

<?xml version "1.0" ?>

<CITAT>

<TEKST>For every complex problem there is a solution

that is simple, neat and wrong.

</TEKST>

<AVTOR H. L. Mencken </AVTOR>

</CITAT>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Kaj je XML?

• Razširljivi označevalni jezik (eXtensible Markup

Language)

• Podoben jeziku HTML

• Ni namenjen prikazu ampak prenosu podatkov

• Značke (tags) niso predpisane vnaprej

• Je samopojasnjujoč

• Priporočilo organizacije W3C

(http://www.w3.org/)

- 3 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Dejavniki uspeha XML

• Vsesplošno sprejet standard

• Uporablja se za izmenjavo podatkov

• Zagotavlja mehanizem interoperabilnosti

• Tekstovni format, ki ga je moč prebrati povsod

• Cena dodatnega procesiranja je zanemarljiva

- 4 -

Page 199: OPB_predavanja

2

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Ključne prednosti XML dokumentov

• Aplikacijska neodvisnost dokumentov in podatkov

– Podatki so razumljivi vsem in ne samo aplikacijam, ki so jih zapisale;

– Iskanje po podatkih je relativno enostavno oziroma ekvivalentno iskanju po običajnih spletnih straneh;

• Standardizirana sintaksa meta-podatkov (pomena podatkov)

– Meta-podatki so podatki o podatkih;

– Gre za podoben princip kot je kazalo v knjigi;

- 5 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Ključne prednosti XML dokumentov

• Standardizirana struktura – Omogoča zapis semantičnih podatkov za dokumente

in podatkovna polja

– Zapis hierarhične strukture v obliki drevesa;

– Drevesna struktura omogoča rekurzivno dekompozicijo konceptov na sestavne dele;

• Uveljavljena tehnologija– XML je podmnožica standarda SGML (Standardized

Generalized Markup Language), ki je bil definiran že leta 1969

- 6 -

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Kaj je XML?

• Nabor sintaktičnih pravil, ki omogočajo izdelavo semantično bogatih označevalnih jezikov za različne domene

• Jezik za ustvarjanje jezikov, ki opisujejo podatke– Nov jezik ustvarimo oz. definiramo s pomočjo pravil

XML

• Ključno načelo: označevanje je ločeno od vsebine!

- 7 -

Označevalni jeziki dokumentom dodajo semantične

podatke o surovi vsebini.

Z označevalnim jezikom opredelimo tiste tipe

podatkov, ki jih smatramo za pravilne.

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Ravni skladnosti XML dokumentov

• Dobro definiran (well formed) dokument je dokument, ki zadošča vsem WC3 sintaktičnim pravilom za XML

– Pravila za poimenovanje, gnezdenje, označevanje atributov…

– Dobra definiranost je za XML dokumente obvezna

• Formalen (valid) dokument je dokument, ki je skladen s shemo

– Formalnost je za XML dokument opcijska;

- 8 -

Page 200: OPB_predavanja

3

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML shema

• Shema je ločen dokument, ki definira elemente, atribute in strukturo XML dokumenta

• Shemo določimo tako, da

1. definiramo slovar in

2. določimo postavitev ter število elementov in atributov v označevalnem jeziku

• Shema definira točno določen razred dokumentov

- 9 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="Author">

<xs:complexType>

<xs:sequence>

<xs:element name="FirstName" type="xs:string" />

<xs:element name="LastName" type="xs:string" />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

<?xml version="1.0"?>

<Author xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="Author.xsd">

<FirstName>Mark</FirstName>

<LastName>Twain</LastName>

</Author>

XML Shema - Primer

- 10 -

Author.xsd

MarkTwain.xml

Shema Author.XSD definira

strukturo elementa Author

MarkTwain.XML je instanca

oz. primerek zgoraj

definirane sheme

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Kaj je XML?

• XML je jezik, ki se uporablja za elektronsko

predstavitev strukturiranih dokumentov in

podatkov

Primer:

- 11 -

<Article >

<Headline>Direct Marketer Offended by Term 'Junk Mail' </Headline>

<authors>

<author> Joe Garden</author>

<author> Tim Harrod</author>

</authors>

<abstract>Dan Spengler, CEO of the direct-mail-marketing firm Mailbox

of Savings, took umbrage Monday at the use of the term "junk

mail."

</abstract>

<body type="url" > http://www.theonion.com/archive/3-11-01.html </body>

</Article>

Vrstni red je pomemben, presledki niso!

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Primer…<?xml version="1.0" ?>

<rooms>

<room name="Red">

<capacity>10</capacity>

<equipmentList>

<equipment>Projector</equipment>

</equipmentList>

</room>

<room name="Green">

<capacity>5</capacity>

<equipmentList />

<features>

<feature>No Roof</feature>

</features>

</room>

</rooms>

- 12 -

Page 201: OPB_predavanja

4

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Kaj je XML?

• Prilagodljiv format s katerim je mogoče opisati

poljuben dokument

• Samopojasnjujoč format

– XML dokument vsebuje vse podatke o vrednostih

polj, ki so z njim povezane

• XML dokumente le opiše

– XML ne definira pomena

– XML ne opredeli načina prikaza

- 13 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Razlike med HTML in XML

HTML XML

vnaprej določen nabor značk značke definiramo sami

značke usmerjene v videz

dokumenta

značke opisujejo pomen

dokumenta

značke lahko izpuščamo vse značke morajo biti prisotne

strani dostikrat niso pravilno

napisane

dokumenti morajo biti dobro

napisani

- 14 -

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Prednosti jezika XML pred jezikom

HTML

• HTML stran vsebuje podatke, ki so kodirani v

obliki, ki jo ljudje enostavno interpretirajo

• Programska obdelava HTML strani je zahtevna

ker manjka struktura podatkov

- 15 -

Novica v html formatu:

• Kaj je naslovna vrstica zgodbe?

• Kdo je avtor zgodbe?

• V katero kategorijo je umeščena?

• Kdaj je bila objavljena?

• …PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Prednosti jezika XML pred jezikom

HTML• Potrebujemo stran, ki ima eksplicitno

definirano strukturo in omogoča enostavno

obdelavo podatkov s programsko opremo

- 16 -

<?xml version="1.0" ?>

<novice>

<novica naslov="Google ustavil digitalizacijo starih časnikov">

<kategorija1>omrežja</kategorija1>

<kategorija2>internet</kategorija2>

<datum>20.5.2011</datum>

<vir>Heise</vir>

<avtor>Matej Huš</avtor>

<besedilo>Google je končal digitalizacijo starih časnikov, ki predstavljajo odsev dogajanja po svetu v zadnjih 250 letih. Projekt se je začel leta 2006 z indeksiranjem starih izvodov The New York Timesa… </besedilo>

</novica>

</novice>

Page 202: OPB_predavanja

5

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

<B>John Q Public</B>

<P>

[email protected]<BR>

phone: 301-286-aaaa<BR>

fax: 301-286-bbbb<BR>

Bldg. 23, Rm. 999<BR>

NASA<BR>

Goddard Space Flight Center<BR>

588.0<BR>

Greenbelt, MD 20221<BR>

<EMPOLYEE>

<NAME>

<FIRST>John</FIRST>

<MIDDLE>Q</MIDDLE>

<LAST>Public</LAST>

</NAME>

<EMAIL>[email protected]</EMAIL>

<PHONE>301-286-aaaa</PHONE>

<FAX>301-286-bbbb</FAX>

<LOCATION>

<BUILDING>Bldg. 23</BUILDING>

<ROOM>999</ROOM>

</LOCATION>

<ADDRESS>

<ORG>NASA</ORG>

<CENTER>Goddard Space Flight Center</CENTER>

<MAILSTOP>588.0</MAILSTOP>

<CITY>Greenbelt</CITY>

<STATE>MD</STATE>

<ZIP>20221</ZIP>

</ADDRESSV>

</EMPLOYEE>

Prednosti jezika XML pred jezikom

HTML

- 17 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Aplikacije, ki uporabljajo XML

• Komunikacija med računalniki

• EAI (Enterprise Application Integration)

• CMS (Content Management Systems)

• Sistemi namenjeni brezžični komunikaciji

(Wireless Communication Systems)

• Dlančniki in pametni telefoni

• Sistemi za eUčenje

• Spletne storitve

• … - 18 -

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Zakaj ravno sedaj?

• Imamo splet

– Enostavna množica protokolov za posredovanje

dokumentov (HTTP/TCP/IP)

– Velika množica gostiteljev, ki so pripravljeni za

izmenjavo dokumentov

• Kako uporabiti to infrastrukturo za reševanje

večnih problemov:

– avtomatizacija poslovanja,

– izmenjava strokovnih člankov,

– izmenjava recenzij,

– …

- 19 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Zakaj ravno sedaj?

• Rešitev naštetih problemov je v uporabi

infrastrukture, ki omogoča, da strežniki

generirajo strani, ki jih splošni odjemalci znajo

interpretirati

- 20 -

Page 203: OPB_predavanja

6

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML tehnologije

• XML urejevalniki:

– Orodja, ki omogočajo izdelavo, urejanje in validacijoXML dokumentov.

• Orodja za obdelavo XML:

– Orodja, ki omogočajo transformacijo XML podatkov (dokumentov) v nekaj kar lahko prikažemo v brskalniku.

• Orodja, ki omogočajo obdelavo XML iz programskih jezikov:

– Orodja (XML parsers), ki omogočajo pretvorbo XMLpodatkov v podatkovne tipe programskih jezikov (Xerces (Apache) in XT (James Clark)).

– XML API-ji, ki omogočajo posodabljanje in branje XML - 21 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML tehnologije

• Xpath – omogoča identifikacijo podsklopov

dokumentov, ki se uporabljajo znotraj XSL, Xquery

ali kakšnega drugega jezika, ki bazira na XML.

• DTDs in XML Shema – omogoča opis različnih

dialektov XML.

• Xquery – omogoča poizvedovanju po XML

dokumentih.

• Xlink, Xpointer – omogoča povezovanje in

referenciranje podatkov znotraj XML dokumenta.

• XML-RPC, SOAP – omogoča oddaljene klice

procedur (RPC) prek XML.- 22 -

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Zgodovina XML

• SGML - Structured Generalized Markup

Language:

– Zasnoval W. Goldfarb 1969-1986,

– Predlog za opisovanje dokumentov,

– Standardiziran s strani ISO 1986,

– Osnovna ideja je prikaz strukture dokumenta

- 23 -

<BOOK genre="essay">

<TITLE> The Anatomy of Melancholy </TITLE>

<AUTHOR> Robert Burton </AUTHOR>

<PREFACE>

<TITLE> Democritus Junior to the Reader </TITLE>

</PREFACE>

</BOOK>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Zgodovina XML

– Sintaksa zelo podobna XML, ampak omogoča

številne nepravilnosti, ki jih XML odpravi.

– Orientiran proti velikim centraliziranim

repozitorijem dokumentov, kot so založniške hiše,

tehnični in pravni dokumenti itd.

– Težavna implementacija.

• eXtensible Markup Language (XML):

– Zasnovan s strani W3C leta 1996.

– Standardiziran v letu 1998.

– Podeduje številne lastnosti SGML:

• enostavnejši,- 24 -

Page 204: OPB_predavanja

7

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML in HTML

• HTML zasnovan kot tip dokumenta znotraj

SGML

– V praksi malo HTML dokumentov ustreza

standardom (konvencijam) SGML in XML

• Skupaj z XML je bila sprejeta tudi nova verzija

HTML-ja imenovana XHTML

– XHTML je skladen z XML– HTML dokumenti, ki nastanejo iz drugih virov (XML, PPT) so načeloma

skladni z XHTML

• Isti javanski vmesniki (API), ki se uporabljajo za

delo z XML, delujejo tudi na HTML (ne zgolj na - 25 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

<?xml version "1.0" ?>

<CML>

<MOL TITLE="Water" >

<ATOMS>

<ARRAY BUILTIN="ELSYM" > H O H</ARRAY>

</ATOMS>

<BONDS>

<ARRAY BUILTIN="ATID1" >1 2</ARRAY>

<ARRAY BUILTIN="ATID2" >2 3</ARRAY>

<ARRAY BUILTIN="ORDER" >1 1</ARRAY>

</BONDS>

</MOL>

</CML>

Začetna značka

Zaključna značka

Značke (Tags)

Atributi

XML dokument

- 26 -

Deklaracija

Vrednost atributadokument = besedilo + značke

element = začetna značka + vsebina + končna značka

element vsebuje besedilo ali elemente ali oboje (ali nič)

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML dokument in drevesna

struktura• Značke opredelijo

strukturo dokumenta

• Značke razčlenijo dokument na posamezne elemente– Najvišji element

imenujemo korenski element

• Vsebina se nahaja znotraj posameznih elementov– Element lahko vključuje

besedilo (CDATA) ali elemente ali oboje (ali nič)

- 27 -

CML

MOL

ATOMS BONDS

ARRAY ARRAY ARRAY ARRAY

HOH 12 23 11

Korenski

element

CDATA sekcija

Elementi

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML in drevesna struktura

Primer:

- 28 -

<?xml version="1.0" ?>

<rooms>

<room name="Red">

<capacity>10</capacity>

<equipmentList>

<equipment>Projector</equipment>

</equipmentList>

</room>

<room name="Green">

<capacity>5</capacity>

<equipmentList />

<features>

<feature>No Roof</feature>

</features>

</room>

</rooms>

Page 205: OPB_predavanja

8

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XML in drevesna struktura• Značke opredelijo strukturo dokumenta

• Značke razčlenijo dokument na posamezne

elemente

- 29 -

rooms

room

capacity equipmentlistequipmentlist

equipment

capacity

room

features

feature10

projector

5

No Roof

<?xml version="1.0" ?>

<rooms>

<room name="Red">

<capacity>10</capacity>

<equipmentList>

<equipment>Projector</equipment>

</equipmentList>

</room>

<room name="Green">

<capacity>5</capacity>

<equipmentList />

<features>

<feature>No Roof</feature>

</features>

</room>

</rooms>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Deli XML dokumenta

• ELEMENTI

– Element = začetna značka + vsebino + končna

značka

– Element lahko vsebuje besedilo ali druge

elemente ali oboje (ali nič)element z vsebino

prazen element

• ATRIBUTI

– Elementom lahko pripišemo lastnosti oz. atribute

– Lastnosti zapišemo v začetne značke kot pare

atribut = "vrednost"

• Vrednost mora biti v enakih enojnih ali dvojnih

- 30 -

<KNJIGA>…</KNJIGA>

<VRSTICA/>

<PRELOM stran="11"/>

<RAZDELEK številka="11" zvrst="podpoglavje">…</RAZDELEK>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Deli XML dokumenta

• BESEDILO (CDATA sekcija):

– Lahko se nahaja znotraj elementov

– Lahko je podano eksplicitno kot

• POSEBNI ZNAKI

– dokument XML lahko vsebuje tudi posebne znake, ki se ob procesiranju

nadomestijo z nečim drugim

– sklic na poseben znak se začne z znakom & (ubežni znak) in konča s podpičjem

&…;

- 31 -

<![CDATA[To je CDATA sekcija, ki lahko vsebuje tudi <‘’> posebne znake]]>

&lt; = <

&gt; = >

&amp; = &

&apos; = '

&quot; = "

<formula>1 &lt; 2</formula>

<podjetje>Procter &amp; Gamble</podjetje>

1 < 2 (formula)

Procter & Gamble (podjetje)

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Deli XML dokumenta

• XML deklaracija

– Označuje začetek dokumenta

• Navodila za procesiranje (PIs):

– <? …?>

• Komentarji

– <!-- … -->

• Deklaracija tipa dokumenta

- 32 -

<?xml version="1.0"?>

<?xml-stylesheet type=“text/css” href=“mys.css”?>

<!-- comment text -->

<!DOCTYPE DOCUMENT[document info]>

<!DOCTYPE POEM [<!ELEMENT STANZA (LINE*)>…]> Poimenovanje dokumenta, ki

mu je pripet podatek o

formatu

Page 206: OPB_predavanja

9

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Pravila dobro definiranih XML

dokumentov

• XML standard zahteva, da se v dokumentih

upoštevajo naslednja pravila:

– Obstajati mora en element, ki vsebuje vse ostale

– Značke morajo biti uravnotežene

– Gnezdenje značk mora biti izvedeno pravilno.

– Tekst značk je občutljiv na velike in male črke- 33 -

<BOOK>...</BOOK>

<BOOK />

<BOOK> <LINE> this is OK </LINE> </BOOK>

<LINE> <BOOK> this is </LINE> definitely NOT </BOOK> OK

<P> this is not ok, even though we do it all the time in

HTML!</p>

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Pravila dobro definiranih XML

dokumentov• Atributi v značkah (tags) morajo biti znotraj

narekovajev.

• Komentiranje je dovoljeno.

• Dokument se mora začeti z ustreznim nizom

(XML deklaracija).

• Posebni znaki se morajo pričeti z ubežnim

znakom (&)- 34 -

< ITEM CATEGORY=“Home and Garden” Name=“hoe-matic t500”>

<!-– They are done just as in HTML… -->

<?xml version=‘1.0’ ?>

< " ' > &

<formula> x &lt; y+2x </formula>

<cd title="&quot; music &quot;">

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Izdelava XML dokumentov

• Primeri XML urejevalnikov:

– XMLSpy – http://www.altova.com

– Jedit - http://www.jedit.org/

– Oxygen - http://www.oxygenxml.com/

– XML Marker - http://symbolclick.com/

– Notepad

- 35 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

XMLSpy

- 36 -

Page 207: OPB_predavanja

10

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Oxygen

- 37 - PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Oxygen

- 38 -

PODATKOVNE BAZE

Modul: XML

©Laboratorij za podatkovne tehnologije

Stylus Studio

- 39 -

Page 208: OPB_predavanja

1

Načrtovanje podatkovnega skladišča

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 1 -

Načrtovanje podatkovnega skladišča

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 2 -

Kaj si bomo pogledali?

� Vprašanja povezana z načrtovanjem podatkovnega skladišča

� Tehnika načrtovanja podatkovne baze za podatkovno skladišče – modeliranje dimenzij

� Kako se dimenzijski model razlikuje or ER modela

� Metodologija načrtovanja PB za podatkovno skladišče

Načrtovanje podatkovnega skladišča...

• Pred začetkom izdelave podatkovnega skladišča, potrebno razčistiti več zadev:– Katere so najpomembnejše zahteve uporabnikov?

– Katere podatke najprej uporabiti?

– Ali s DW pokriti celoten poslovni sistem ali le določeno poslovno področje?

– Če začnemo z manjšim obsegom, ali naj infrastruktura, na kateri se bo razvilo skladišče, pripravljena tudi za končno podatkovno skladišče?

– …PODATKOVNE BAZEModul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 3 -

Načrtovanje podatkovnega skladišča...

• Izdelava DW za celoten poslovni sistem težka naloga – veliko področij, številne uporabniške zahteve itn.

• Pogosto odločitev za razvoj več področnih podatkovnih skladišč (Data marts) in na koncu združitev v enotno skladišče.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 4 -

Page 209: OPB_predavanja

2

Načrtovanje podatkovnega skladišča

• Aktivnosti:– Zajem zahtev,

– Analiza

• Intervjuji v fazi zajema zahtev:– odgovorni za posamezna poslovna področja

(marketing, prodaja, finance, vodstvo…) – uporabniške zahteve

– administratorji podatkovnih virov – kateri podatki obstajajo?

PODATKOVNE BAZEModul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 5 -

Modeliranje dimenzij...

• Tehnika logičnega načrtovanja, ki omogoča predstaviti podatke na način, da so hitro dostopni…

• Tehnika uporablja koncepte ER modeliranja z nekaj pomembnimi omejitvami.

• Vsak model dimenzij vsebuje:– eno tabelo, ki vsebuje kompozitni primarni ključ – tabela dejstev

in

– množico manjših dimenzijskih tabel.• Vsaka dimenzijska tabela ima enostaven ključ – komponenta

kompozitnega ključa iz tabele dejstev

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 6 -

Modeliranje dimenzij...

• Omenjene tabele tvorijo ti. zvezdno shemo.– Primarni ključ tabele dejstev je sestavljen iz dveh ali več tujih

ključev posameznih dimenzijskih tabel.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 7 -

Tabela dejstev

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Dimenzijska tabela

Modeliranje dimenzij...

• Vse naravne primarne ključe se nadomesti s surogati: vsak stik med tabelo dejstev in dimenzijsko tabelo temelji na surogatih.

• Surogat – umetni ključ

• Surogati omogočajo neodvisnost med podatki DW in OLTP!

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 8 -

Delavec

ID

DavčnaŠt

Ime

Priimek

Delavec

DavčnaŠt

Ime

Priimek

Page 210: OPB_predavanja

3

Modeliranje dimenzij...

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 9 -

Modeliranje dimenzij...

• Zvezdna shema – logična struktura, ki vsebuje v središču tabelo z dejstvi in je

obkrožena z dimenzijskimi tabelami z referenčnimi podatki, ki so lahko denormalizirani.

• Dejstva se generirajo na podlagi dogodkov, ki so se zgodila v preteklosti – spremembe malo verjetne.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 10 -

Modeliranje dimenzij...

• Večina podatkov v DW hranjena v tabeli dejstev �lahko ekstremno obsežne tabele.

• Podatki v tabelah dejstev – referenčni podatki – namenjeni branju,

– skozi čas se ne spreminjajo,

– numerične vrednosti.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 11 -

T a b e l a d e j s t e v

M1 M2 M3 M4 M5

Numerične vrednosti (dogodki)

Modeliranje dimenzij...

• Podatki v dimenzijskih tabelah– navadno opisni tekstovni podatki.

– atributi uporabni kot omejitve (filter) v poizvedbah po DW.

• Povečanje hitrosti poizvedb v zvezdnih shemah: uporaba denormaliziranih podatkov v posameznih dimenzijah .

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 12 -

Page 211: OPB_predavanja

4

Modeliranje dimenzij...

• Snežena shema (ang. snowflake) –– shema brez denormaliziranih podatkov

• Zvezdna snežna shema (ang. starflake) –– hibridna struktura, ki vsebuje tako zvezdno (denormalizirano)

kot sneženo (normalizirano) shemo.

– shema omogoča predstavitev dimenzij na oba načina – ustreza različnim performančnim zahtevam poizvedb.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 13 -

Modeliranje dimenzij...• Normalizirana varianta dimenzije Branch:

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 14 -

Zvezdna shema

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 15 -

Snežna shema

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 16 -

Page 212: OPB_predavanja

5

Sozvezdna shema

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 17 -

Modeliranje dimenzij...

• Zvezdna shema prinaša pomembne prednosti (ne glede na uporabljeno različico) :– Učinkovitost,

– Zmožnost prilagajanja različnim zahtevam,

– Razširljivost,

– Zmožnost modeliranja splošnih poslovnih situacij,

– Predvidljivo procesiranje poizvedb.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 18 -

Primerjava zvezdna shema, ER model

• En ER podatkovni model se normalno dekomponira v več zvezdnih shem.

• Omenjenih več zvezdnih shem se medsebojno povezuje preko dimenzij v "skupni rabi".

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 19 -

Metodologija načrtovanja DW

• Metodologija načrtovanja po Kimballu:– Faza 1:

• K1: Izbira procesa

• K2: Določitev zrnatosti

• K3: Izbira dimenzij

• K4: Identifikacija dejstev

– Faza 2:• K5: določitev atributov dimenzij

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 20 -

Izbira procesa

Določitev zrnatosti

Izbira dimenzij

Identifikacija dejstev

Določitev atributov dimenzij

Faza 1 Faza 2

Page 213: OPB_predavanja

6

Metodologija načrtovanja DW

• K1: Izbira procesa (poslovne funkcije)– Izbira vsebine za področno skladišče.

– Pomembno: • izdelava v predvidenem času in finančnem obsegu,

• pokrivanje ključnih poslovnih vprašanj (tipično prodaja, finance),

• podatkovna zasnova za nadaljnja področja (ponovno uporabne dimenzije).

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 21 -

Metodologija načrtovanja DW

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 22 -

Metodologija načrtovanja DW

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 23 -

Metodologija načrtovanja DW

• K2: Izbira zrnatosti– Kaj bo zajemal zapis v tabeli dejstev

– Priporočilo: najvišja možna zrnatost

– Z izbiro zrnatosti določimo možne dimenzije ter njihovo zrnatost.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 24 -

Page 214: OPB_predavanja

7

Metodologija načrtovanja DW

• K3. Identifikacija in prilagajanje dimenzij– Kako bomo pregledovali tabelo dejstev?

– Slabo izbrane dimenzije zmanjšajo uporabnost skladišča.

– Skladnost dimenzij pomembna za integracijo področnih skladišč.

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 25 -

Metodologija načrtovanja DW

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 26 -

Metodologija načrtovanja DW

• K4. Identifikacija dejstev– Dejstva odvisna od izbrane zrnatosti

– Dejstva naj bodo numerična in seštevna

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 27 -

Primer: slabo strukturirana tabela dejstev

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 28 -

Page 215: OPB_predavanja

8

Primer: pravilno strukturirana tabela dejstev

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 29 -

Metodologija načrtovanja DW

• K5. Določitev atributov dimenzij– Določitev časovne osi – zgodovine

– Dolga časovna os – problem spreminjanja dimenzij

PODATKOVNE BAZE

Modul: Načrtovanje podatkovnega skladišča©Laboratorij za podatkovne tehnologije

- 30 -

Page 216: OPB_predavanja

1

Načrtovanje PB

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 1 -

� Pristopi k načrtovanju PB� Nivojsko načrtovanje� Konceptualno modeliranje� Logično modeliranje� Fizično modeliranje

Pristopi k načrtovanju PB

• Obstajata dva glavna pristopa k načrtovanju podatkovne baze:

– Pristop od spodaj navzgor in

– Pristop od vrha navzdol.

• Pristop od spodaj navzgor:

– začne z atributi ter jih združuje v skupine

– Tak pristop predstavlja normalizacija

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 2 -

Normalizacija = identifikacija potrebnih atributov in njihovih agregacij v normalizirane relacije na osnovi funkcionalnih odvisnosti.

Pristop z vrha navzdol

• Pristop od spodaj navzgor primeren za enostavne podatkovne baze z majhnim številom atributov.

• Za večje baze primeren pristop z vrha navzdol. – Na začetku podatkovni modeli z le nekaj osnovnih

entitetnih tipov in razmerij

– Korakoma razgradnja na pod-entitete, povezave in atribute

– Tak pristop predstavlja uporaba tehnike Entiteta –Razmerje (E-R).

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 3 -

Pristop znotraj navzven

• Pristop znotraj navzven povezan s pristopom od spodaj navzgor

– Najprej identificiramo nekaj najpomembnejših entitetnih tipov iz domene

– Korakoma dodajamo nove entitetne tipe, razmerja in atribute

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 4 -

Page 217: OPB_predavanja

2

Pristop po delih

• V praksi najbolj uporabna strategija• Načrtovanje razdelimo na več lažje obvladljivih

delov:– Najprej kreiramo okvirno shemo z najpomembnejšimi

entitetnimi tipi in razmerji med njimi– Shemo razdelimo na področja (jedra so identificirani

entitetni tipi)– Za vsako področje so vključeni poznavalci področja– Načrtovanje za posamezna področja lahko poteka

vzporedno– Posamezne sklope na koncu združimo v eno shemo

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 5 -

Shema pristopa po delih

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 6 -

Delitev poslovne domene na področja, kreiranje

osnovne sheme

Okvirnashema

Področje 1 ...

Področnashema 1

Področnashema 2

Področnashema n

Končnashema

Področje 2 Področje n

Trije nivoji načrtovanja – trije modeli...

• Konceptualno načrtovanje – konceptualni oz.

semantični podatkovni model

• Logično načrtovanje – logični podatkovni

model

• Kreiranje fizične podatkovne baze – fizična podatkovna baza oz. fizični podatkovni model

• Prehodi med modeli in avtomatizacija prehodov

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 7 -

Trije nivoji načrtovanja – trije modeli

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 8 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Page 218: OPB_predavanja

3

Konceptualno načrtovanje

• Konceptualno načrtovanje je opredelitev podatkovnih potreb oz. zahtev poslovne domene s pomočjo konceptualnega modela.

• Konceptualno načrtovanje preko konceptualnega modela poskrbi za opis pomena podatkov, potrebnih za poslovno domeno.

• Konceptualnega načrtovanja ne moremo avtomatizirati, za njegovo izvedbo je odgovoren analitik. Gre za prenos semantike v model.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 9 -

Model je poenostavitev realnosti, pri čemer je abstrakcija realnosti poljubno natančna.

Pomembno je, da model prikazuje pomembne elemente in izpušča tiste, ki nas ne zanimajo.

Modele razvijamo zato, da bi sisteme bolje razumeli.

Pomen konceptualnega načrtovanja

• Je najbolj kritično – napake se prenašajo naprej na naslednje modele.

• Zahteva sodelovanje uporabnikov. Uporabniki so nosilci znanja o poslovni domeni, so poznavalci semantike.

• Konceptualno načrtovanje mora upoštevati tudi poslovna pravila.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 10 -

Umestitev konceptualnega načrtovanja

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 11 -

svet mentalni model konceptualni model logični model PB

Predstavitev konceptualnih modelov

• Najpogosteje uporabljana tehnika za predstavitev konceptualnih podatkovnih modelov sta entitetni model (model entiteta-razmerje) ter razredni diagram. Obravnavali bomo prvega!

• Nazivi, ki se uporabljajo:

– Konceptualni podatkovni model

– Podatkovni model

– Entitetni model

– ER model

• Obstaja tudi razširjeni model entiteta razmerje

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 12 -

Page 219: OPB_predavanja

4

Gradniki entitetnega modela

• Entitetni tip

• Atribut

• Razmerje

• Enolični identifikator

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 13 -

Entitetni tip – entiteta...

• Entitete so posamezni primerki tipov objektov iz poslovne domene: dogodki, predmeti, osebe, pravila, dejstva

• O entitetah obstaja določena predstava o tem:

– kakšne lastnosti dejansko imajo

– kakšne lastnosti jim moramo določiti (morajo imeti), da bodo izpolnjevale poslanstvo entitetnega modela

• Na osnovi predstave o tem in percepcije, lahko entitete klasificiramo v entitetne tipe: vse entitete, ki ustrezajo določeni predstavi,

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 14 -

Entitetni tip – entiteta...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 15 -

Prevozna sredstva

Osebe

Živali

Hiše

Entitetni tip – entiteta

• Vsak trenutek pripada posameznemu entitetnemu tipu množica entitet tega entitetnega tipa, ki jo imenujemo entitetna množica

• Entitetna množica je časovno spremenljiva: entitete nastajajo, se spreminjajo in tudi izginjajo (izstopajo iz množice).

• Entitetna množica je v nekem trenutku lahko tudi prazna.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 16 -

Page 220: OPB_predavanja

5

Predstavitev entitetnega tipa

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 17 -

Atribut...

• Entitete imajo določene lastnosti, posamezne entitete (istega entitetnega tipa) se med seboj razlikujejo po vrednosti njihovih lastnosti

• Entiteta ima praviloma veliko lastnosti, le del teh lastnosti je zanimiv oz. pomemben za opazovano poslovno domeno

• Lastnosti, ki so pomembne za opazovano poslovno domeno, vključimo v konceptualni model tako, da jih kot atribute določimo entiteti (entitetnemu tipu)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 18 -

Atribut...

• Govorimo lahko o več vrstah lastnosti:

– Entitetna imena: naziv, ime, opis

– Prave entitetne lastnosti: višina, teža, cena, vrednost

– Lastnosti, ki jih določimo za potrebe poslovnih procesov, poslovnih funkcij in poslovnih pravil: statusi

• Atribut določimo za tisto lastnost, ki je za poslovno domeno pomembna

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 19 -

Atribut

• Kardinalnost atributa je minimalna in maksimalna Glede na kardinalnost atributa ločimo:– Totalni atribut (1,n), kjer je n >= 1

– Parcialni atribut (0,n), kjer je n >= 1

– Enovrednostni atribut (m,1), kjer je m € {0,1}

– Večvrednostni atribut (m,n), kjer je m € {0,1} in n>1

• Minimalna števnost 0 pomeni, da je atribut lahko brez vrednosti (ni obvezen).

• Atribut pripada določenemu tipu: numerični, znakovni,…

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 20 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

Page 221: OPB_predavanja

6

Predstavitev atributa

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 21 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

OSEBA

EMŠOImePriimekVzdevek

Razmerja med entitetami

• Entitete niso svet zase, medsebojno se povezujejo preko razmerij, povezav

• Razmerje ima določen pomen

• Predstavitev razmerja v modelu entiteta-razmerje je povezava.

• Med opazovanim parom (v splošnem podmnožici) entitet je lahko več razmerij: OSEBA, KRAJ – stalno bivališče, začasno bivališčePODATKOVNE BAZE

Modul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 22 -

Predstavitev razmerja...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 23 -

OSEBA KRAJživi

OSEBA KRAJživi

Pomen razmerja

Predstavitev razmerja

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 24 -

OSEBA KRAJživi

OSEBA KRAJživi v ima

Vloga entitete v razmerju

Page 222: OPB_predavanja

7

Kardinalnost razmerja...

• Kardinalnost (števnost) predstavlja število entitet entitetnega tipa, ki so v razmerju glede na pomen razmerja.

• Vsaka entiteta ima svojo kardinalnost v razmerju – kardinalnost glede na vlogo. Entiteti OSEBA, POŠTA:

– Ena (naključno izbrana) oseba ima stalno bivališče v enem kraju

– V enem (naključno izbranem) kraju ima stalno bivališče več osebPODATKOVNE BAZE

Modul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 25 -

Kardinalnost razmerja...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 26 -

A

B

povezava

(n,m)

(p,r)

Kardinalnost razmerja

• Razmerji med entitetama OSEBA in POŠTA

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 27 -

Obveznost razmerja

• Obveznost pove, ali sta dve entiteti vedno v razmerju ali lahko tudi nista v razmerju: obvezno, neobvezno razmerje

• Obveznost lahko obravnavamo pod okriljem števnosti, zaradi česar dodatno uvedemo števnost 0

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 28 -

Page 223: OPB_predavanja

8

Razmerje tudi opisuje lastnost entitete

• Razmerje tudi opisuje lastnost entitete

• Primer: OSEBA, POŠTA

• Razmerje ima atributiven značaj

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 29 -

Enolični identifikator entitete...

• Enolični identifikator entitete je podmnožica lastnosti entitete (atributov in razmerij –drugih entitet), ki enolično razlikujejo posamezno instanco entitete znotraj entitetne množice

• Z ozirom na to, ali tvorijo enolični identifikator entitete le atributi entitete ali pa je v enoličnem identifikatorju tudi kakšno razmerje, ločimo med močnim entitetnim tipom in šibkim entitetnim tipom

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 30 -

Enolični identifikator entitete

• Imamo lahko več enoličnih identifikatorjev, vendar moramo enega izbrati – določiti

• Izbrani – določeni enolični identifikator je podlaga za ključ v relacijskem modelu

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 31 -

Predstavitev enoličnega identifikatorja

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 32 -

OSEBA

(1,1)

(1,3)

(1,1)

(0,n)

EMŠO

Ime

Priimek

Vzdevek

OSEBA

EMŠOImePriimekVzdevek

Page 224: OPB_predavanja

9

Močni entitetni tip• Enolični identifikator sestavljajo le atributi

entitete (identifikacijski atributi)

• {a1, … ak} je enolični identifikator entitete A, če ustreza naslednjim pogojem:

a) a1, … ak so vsi totalni enovrednostni atributi, kar zagotavlja, da imajo vsi identifikacijski atributi definirano natanko eno vrednost (eno dimenzijo)

b) T: V1 x …x Vk � ET je totalna ali parcialna enovrednostna funkcija, kar zagotavlja, da se vsak element kartezijskega produkta vrednostnih množic, ki so območja identifikacijskih atributov, preslika v največ eno entiteto tipa A

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 33 -

Šibki entitetni tip• Enolični identifikator ni sestavljen le iz lastnih

atributov, temveč tudi iz razmerij oz. drugih entitet v razmerju oz. njenih identifikatorjev.

• {a1, … ak} ∪ IT1 ∪ .. ∪ ITn je enolični identifikator entitete A, če ustreza naslednjim pogojem:

a)a1, … ak so vsi totalni enovrednostni atributi, I pa identifikatorji entitetnih tipov

b)T: V1 x …x Vkx ET1 x .. X ETn � ET je totalna ali parcialnaenovrednostna funkcija, kar zagotavlja, da se vsak element kartezijskega produkta vrednostnih množic, ki so območja identifikacijskih atributov, preslika v največ eno entiteto tipa A

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 34 -

Generalizacija in specializacija...

• Entitetni tip A s podtipoma B in C

• B in C pokrivata A totalno in ekskluzivno, če velja: EB ∪ EC = EA in EB ∩ EC = {}

• B in C pokrivata A totalno in prekrivno, če velja: EB ∪ EC = EA in EB ∩ EC ≠ {}

• B in C pokrivata A delno in ekskluzivno, če velja: EB ∪ EC ⊂ EA in EB ∩ EC = {}

• B in C pokrivata A delno in prekrivno, če velja: EB ∪ EC ⊂ EA in EB ∩ EC ≠ {}PODATKOVNE BAZE

Modul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 35 -

Generalizacija in specializacija

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 36 -

OSEBA

MOŠKI ŽENSKA

Totalno in ekskluzivno

OSEBA

ŠTUDENT ŠPORTNIK

Delno in prekrivno

Metoda konceptualneganačrtovanja

Page 225: OPB_predavanja

10

Logično načrtovanje podatkovne baze...

• Logično modeliranje podatkovne baze nastopi za konceptualnim modeliranjem.

• Osnova logičnega modela je jezik, ki je razumljiv ciljnemu SUPB.

• Če izberemo relacijski SUPB, potem govorimo o relacijskem modelu.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 37 -

svet mentalni model konceptualni model logični model PB

Podpora orodij CASE

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 38 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Logično načrtovanje

Prehod iz konceptualnega v logični model

• Prehod iz konceptualnega v logični model je navadno avtomatiziran s strani CASE orodij.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 39 -

Primer:vrsta baze: relacijskaSUPB: Oracle

NAČRTOVANJEANALIZA

Konceptualni model

Entitetni tip

Atribut

Enolični identifikator

Povezava 1:n

Povezava m:n

Atribut / Stolpec

Relacija / Tabela

Vmesna tabela

Tuji ključ

Ključ

Relacijski model

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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 40 -

Ponovitev

Page 226: OPB_predavanja

11

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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 41 -

Funkcionalne odvisnosti...

• Predpostavimo, da obstaja relacijska shema Rz množico atributov, katere podmnožici sta Xin 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 Xin se ne bi ujemali v vrednostih atributov Y.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 42 -

Funkcionalne odvisnosti

• Množico funkcionalnih odvisnosti, ki veljajo med atributi funkcionalne 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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 43 -

Primeri funkcionalnih odvisnosti

• Imamo relacijo s shemo

Izpit( VpŠt, Priimek, Ime, ŠifraPredmeta, Datum izpita,

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.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 44 -

Page 227: OPB_predavanja

12

Ključi relacije...

• Ker je relacija množica n-teric, so v njej vse n-terice 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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 45 -

Ponovitev

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 A A ... A

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 46 -

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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 47 -

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 BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 48 -

Page 228: OPB_predavanja

13

Primeri ključevŠifra Naziv Zaloga

A10 Telovadni copati Nike 10

A12 Trenerka Bali 4

BC80 Moška jakna QuickSilver 1

X12 Ženska jakna QuickSilver 0

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 49 -

Račun Šifra artikla Količina

15/05 A10 1

15/05 X12 1

ARTIKEL

RAČUNPrimarni ključ v tabeli Artikel

Primarni ključ v tabeli Račun

Tuji ključ v tabeli Račun � kaže na primarni ključ v tabeli Artikel

Normalizacija...

• Kaj si bomo pogledali?

– Namen normalizacije.

– Uporaba normalizacije pri načrtovanju relacijske podatkovne baze.

– Problemi zaradi redundance podatkov v osnovnih relacijah.

– Postopek normalizacije.

– Osnovne normalne oblike:

• I. normalna oblika,

• II. Normalna oblika,

• III. Normalna oblika

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 50 -

Namen normalizacije...

• Normalizacija je postopek, s katerem pridemo do množice primernih relacij, ki ustrezajo potrebam poslovne domene.

• Nekaj lastnosti primernih relacij:

– Relacije imajo minimalen nabor atributov � zgolj tiste, ki so potrebni za pokritje potreb poslovnega sistema;

– Atributi, ki so logično povezani, so zajeti v isti relaciji;

– Med atributi relacij je minimalna redundanca �

vsak atribut (razen tujih ključev) je predstavljen

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 51 -

Primer

• Relacija StaffBranch ima odvečne podatke.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 52 -

Atribut z odvečnimi (ponavljajočimi) podatki

Page 229: OPB_predavanja

14

Ažurne anomalije

• Relacije, ki vsebujejo odvečne podatke lahko povzročajo anomalije pri spreminjanju podatkov � govorimo o ažurnih anomalijah.

• Poznamo več vrst anomalij:

– Anomalije pri dodajanju n-teric v relacijo

– Anomalije pri brisanju n-teric iz relacije

– Anomalije pri spreminjanju n-teric

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 53 -

Anomalije pri dodajanju

• Primeri anomalij:

– Če želimo dodati podatke o novih članih (staff) za neko organizacijsko enoto (branch) moramo vpisati tudi vse podrobnosti o organizacijski enoti.

– Če želimo dodati podatke o novi organizacijski enoti, ki še nima nobenega člana, moramo v vsa polja , ki člane opisujejo, vpisati Null.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 54 -

Anomalije pri brisanju

• Primeri anomalij:

– Če iz relacije zbrišemo n-terico, ki predstavlja zadnjega člana v neki organizacijski enoti, zgubimo tudi podatke o tej organizacijski enoti.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 55 -

Anomalije pri spreminjanju

• Primeri anomalij:

– Če želimo spremeniti vrednost nekega atributa določene organizacijske enote (npr. naslov), moramo popraviti vse n-terice, v katerih takšna vrednost atributa nastopa.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 56 -

Page 230: OPB_predavanja

15

Postopek normalizacije

• Postopku preoblikovanja relacij v obliko, pri kateri do ažurnih anomalij ne more priti, pravimo normalizacija.

• Obstaja več stopenj normalnih oblik. Obravnavali bomo:

– 1NO – Prva normalna oblika

– 2NO – Druga normalna oblika

– 3NO – Tretja normalna oblika in

– 4PNO – Četrta poslovna normalna oblikaPODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 57 -

1NO – prva normalna oblika

• Relacija je v prvi normalni obliki, če:

– Nima ponavljajočih atributov � ne obstajajo atributi ali skupine atributov, ki bi imele več vrednosti pri isti vrednosti ostalih atributov (na presečišču ene vrstice in enega stolpca je več vrednosti)

– Ima definiran primarni ključ in določene funkcionalne odvisnosti

• Koraki:

– Odstranimo ponavljajoče atribute

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 58 -

Primer – relacija v nenormalizirani obliki

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 59 -

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 200202002120033

ISTPOIPI

1088

64016209 Bizjak Tadeja 2250 Ptuj 2006020033

E1IPI

96

Indeks( VŠ, priimek, ime, pošta, kraj, ( šifra predmeta, naziv, ocena ) )

Skupina ponavljajočih se atributov.

Primer – pretvorba v 1NO...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 60 -

Indeks( VŠ, priimek, ime, pošta, kraj, ( šifra predmeta, naziv, ocena ) )

Indeks( VŠ, priimek, ime, pošta, kraj, šifra predmeta, naziv, ocena )

Odpravimo ponavljajoče atribute

Identificiramo funkcionalne odvisnosti

F ≡ { VŠ � (priimek, ime, pošta, kraj), šifra predmeta �naziv, pošta � kraj, (VŠ, šifra predmeta) � ocena }

Določimo primarni ključ

Indeks( VŠ, priimek, ime, pošta, kraj, šifra predmeta, naziv, ocena )

Page 231: OPB_predavanja

16

Primer – pretvorba v 1NO

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 20020 IS 10

64010632 Bratina Simon 4100 Kranj 20021 TPO 8

64010632 Bratina Simon 4100 Kranj 20033 IPI 8

64016209 Bizjak Tadeja 2250 Ptuj 20060 E1 9

64016209 Bizjak Tadeja 2250 Ptuj 20033 IPI 6

VŠ priimek

ime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 200202002120033

ISTPOIPI

1088

64016209 Bizjak Tadeja 2250 Ptuj 2006020033

E1IPI

96

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 61 -

2NO – druga normalna oblika

• Relacija je v drugi normalni obliki:– Če je v prvi normalni obliki in

– Ne vsebuje parcialnih odvisnosti � noben atribut, ki ni del ključa, ni funkcionalno odvisen le od dela primarnega ključa, temveč od celotnega ključa

• Druga normalna oblika je odvisna predvsem od ključa relacije. Relacija je avtomatsko v drugi normalni obliki, če: – Je njen primarni ključ sestavljen le iz enega

atributa,

– Je njen primarni ključ sestavljen iz vseh atributov relacije ali

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 62 -

Primer – pretvorba v 2NO...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 63 -

Indeks( VŠ, šifra predmeta, priimek, ime, pošta, kraj, naziv, ocena )

!

Relacijo razbijemo

Študent( VŠ, priimek, ime, pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

!

Primer – pretvorba v 2NOVŠ priime

kime pošta kraj šifra predmeta naziv ocena

64010632 Bratina Simon 4100 Kranj 20020 IS 10

64010632 Bratina Simon 4100 Kranj 20021 TPO 8

64010632 Bratina Simon 4100 Kranj 20033 IPI 8

64016209 Bizjak Tadeja 2250 Ptuj 20060 E1 9

64016209 Bizjak Tadeja 2250 Ptuj 20033 IPI 6

VŠ priimek

ime pošta kraj

64010632 Bratina Simon 4100 Kranj

64016209 Bizjak Tadeja 2250 Ptuj

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 64 -

šifra predmeta naziv

20020 IS

20021 TPO

20033 IPI

20060 E1

20033 IPI

VŠ šifra predmeta ocena

64010632 20020 10

64010632 20021 8

64010632 20033 8

64016209 20060 9

64016209 20033 6

Page 232: OPB_predavanja

17

3NO – tretja normalna oblika

• Relacija je v tretji normalni obliki:

– Če je v drugi normalni obliki in

– Če ne vsebuje tranzitivnih funkcionalnih odvisnosti� med atributi, ki niso del primarnega ključa, ni odvisnosti.

• Relacija je avtomatsko v tretji normalni obliki, če:

– Je njen ključ sestavljen iz vseh atributov relacije

– Je njen ključ sestavljen iz vseh razen enega atributa relacije.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 65 -

Primer – pretvorba v 3NO...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 66 -

Študent( VŠ, priimek, ime, pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

!

Študent( VŠ, priimek, ime, #pošta)Pošta(pošta, kraj)Predmet( šifra predmeta, naziv)Indeks( #VŠ, #šifra predmeta, ocena)

Relacijo razbijemo

Primer – pretvorba v 3NO

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 67 -

VŠ priimek

ime pošta kraj

64010632 Bratina Simon 4100 Kranj

64016209 Bizjak Tadeja 2250 Ptuj

VŠ priimek

ime pošta

64010632 Bratina Simon 4100

64016209 Bizjak Tadeja 2250

pošta kraj

4100 Kranj

2250 Ptuj

4PNO – četrta poslovna normalna oblika

• Relacija je v četrti poslovni normalni obliki, če:

– je v tretji normalni obliki in

– v relaciji ne obstajajo atributi, ki bi bili odvisni od vrednosti primarnega ključa.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 68 -

Page 233: OPB_predavanja

18

Primer – pretvorba v 4PNO...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 69 -

Študent( VŠ, priimek, ime, #pošta, datum plačila šolnine, rok diplome)

Za izredne študenta Za redne študenta

Študent( VŠ, priimek, ime, #pošta)Redni študent( #VŠ, rok diplome)Izredni študent( #VŠ, datum plačila šolnine)

Primer – pretvorba v 4PNO

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 70 -

VŠ Priimek Ime Datum plačila šolnine Rok diplome

64010632 Bratina Simon 15.3.2005

64016209 Bizjak Tadeja 19.4.2002

64010670 Berce Marjan 12.4.2004

64620010 Mele Silvana 1.4.2005

65120987 Leban Tibor 15.7.2005

VŠ Priimek Ime

64010632 Bratina Simon

64016209 Bizjak Tadeja

64010670 Berce Marjan

64620010 Mele Silvana

65120987 Leban Tibor

VŠ Datum plačila šolnine

64016209 19.4.2002

64010670 12.4.2004

VŠ Rok diplome

64010632 15.3.2005

64620010 1.4.2005

65120987 15.7.2005

Uporaba nenormaliziranih relacij...

• Včasih zavestno uporabljamo relacije, ki ne ustrezajo najvišjim normalnim oblikam.

• Prve in druge normalne oblike nikoli ne kršimo.

• Višjim normalnim oblikam se včasih odrečemo na račun doseganja boljše učinkovitosti.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 71 -

Uporaba nenormaliziranih relacij

• Primer:

– Rezultat (športnik, tekmovanje, čas prvega teka, čas drugega teka, čas skupaj)

– Relacija ni v tretji normalni formi.

– Čas skupaj je izpeljan atribut � ni odvisen od ključa, temveč je seštevek časov obeh tekov.

– Skupen čas računamo ob vpisu v bazo, zato izboljšamo učinkovitost pri nadaljnji obdelavi podatkov.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 72 -

Metoda logičneganačrtovanja

Page 234: OPB_predavanja

19

Načrtovanje fizične podatkovne baze...

• Načrtovanje fizične PB je korak, ki sledi logičnemu načrtovanju.

• Logični načrt opredeljuje “kaj”, fizični načrt pa “kako”.

• Vhod v načrtovanje fizične PB so:

– Logični podatkovni model,

– Relacijska shema

– dokumentacija

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 73 -

svet mentalni model konceptualni model logični model PB

Načrtovanje fizične podatkovne baze...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 74 -

SUPB

Konceptualni PM

Logični PM

Fizični PM(skripta)

Podatkovna baza

i-CASE

ODBC

Reverse Engineering

Odločitev o PB:-Relacijska-Hierarhična-Objektna

Načrtovanje fizične PB

Načrtovanje fizične podatkovne baze

• Fizično načrtovanje PB opredeljuje proces, s katerim izdelamo opis implementacije PB na sekundarnem pomnilnem mediju.

• Opisuje

– osnovne relacije,

– datotečno organizacijo,

– indekse za dosego učinkovitega dostopa do podatkov,

– povezane omejitve in

– varnostne mehanizme.PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 75 -

Metoda fizičneganačrtovanja Metoda konceptualnega

načrtovanja• Možni koraki konceptualnega načrtovanja:

– K1.1: Identificiraj entitetne tipe

– K1.2: Identificiraj povezave

– K1.3: Identificiraj in z entitetnimi tipi poveži atribute

– K1.4: Atributom določi domene

– K1.5: Določi kandidate za ključe; izmed kandidatov izberi

primarni ključ

– K1.6: Po potrebi uporabi elemente razširjenega diagrama

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 76 -

Page 235: OPB_predavanja

20

K1.1 – Identificiraj entitetne tipe...

• Na voljo različne tehnike

• Ena izmed tehnik je pregled uporabniških zahtev:

– Pregledamo vse omenjene samostalnike in fraze(npr. profesor, predmet, izpit, rok, datum izpita,...)

– Pozorni smo na pomembne objekte (npr. ljudje, lokacije...)

– Skušamo ločiti objekte (npr. profesor, izpit,...) od lastnosti objektov (ime, vpisna številka,...)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 77 -

K1.1 – Identificiraj entitetne tipe...

• Težave:

– Entitete niso vedno jasno predstavljene v dokumentaciji

• Uporaba primerov, analogij, sinonimov, homonimov

• Uporaba konkretnih imen oseb

– Ni vedno jasno, kaj je entitetni tip, kaj povezava in kaj atribut (npr. izpit)

• Načrtovanje je subjektivne narave – možnih je več (pravilnih) rešitev.

• Načrt zavisi od uporabnikove presoje in izkušenj

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 78 -

K1.1 – Identificiraj entitetne tipe

• Entitetne tipe je potrebno dokumentirati

• Primer dokumentacije:

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 79 -

Naziv entitetnega tipa

Opis Sinonim Število entitet

Profesor Predstavlja pedagoškega delavca, ki je nosilec enega ali več predmetov

Pedagoški delavec

Vsaka katedra ima enega ali več profesorjev

Izpitni rok Predstavlja datum, na katerega je za nek predmet in določeno ciljno skupino (letnik, smer,...) razpisan izpitni rok.

Rok, pisni izpit, kolokvij

Na leto se razpiše okrog 300 pisnih izpitov. Vsak predmet mora imeti vsaj tri roke letno

...

K1.2 – Identificiraj povezave...

• Ko smo identificirali entitetne tipe, skušamo opredeliti vse povezave med njimi

• Uporabimo lahko podoben postopek kot v K1 (pregled uporabniških zahtev):

– Iščemo glagole (npr. profesor razpiše rok, študent polaga izpit, študent izbere mentorja, študent se vpiše v letnik,...)

– Zanimajo nas samo tiste povezave, ki so res potrebne (očitne povezave ali povezave, ki nas ne zanimajo z vidika hranjenja podatkov, so odveč) PODATKOVNE BAZE

Modul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 80 -

Page 236: OPB_predavanja

21

K1.2 – Identificiraj povezave...

• Postopek identifikacije povezav (nadaljevanje)

– Pozorni smo na povezave, ki niso binarne -povezujejo več kot dve entiteti ali so rekurzivne.

Npr. študent opravi izpit za nek predmet pri nekem profesorju.

Ali, pedagoški delavec ima asistenta, ki je tudi pedagoški delavec.

– Preverimo, če smo zajeli vse povezave (načeloma lahko preverimo za vsak par entitetnih tipov, če med njima obstaja povezava) – postopek je lahko zelo potraten, zato ga ne izvajamo vedno (preverjanje modela je stvar K8)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 81 -

K1.2 – Identificiraj povezave...

• Postopek identifikacije povezav (nadaljevanje)

– Povezavam določimo števnost

– Preverimo, če obstajajo kakšne dvoumne ali nepopolne povezave (ang. chasm and fan tramps)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 82 -

Primer dvoumne povezave

1..* 1..1 1..1 1..*Profesor Katedra Laboratorij

je član vključuje

Pr1

Pr2

Pr3

K1

K2

L1

L2

L3

K1.2 – Identificiraj povezave....

• Dvoumno povezavo odpravimo z restrukturiranjem modela

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 83 -

Profesor Laboratorij Katedraje član vključuje

Pr1

Pr2

Pr3

L1

L2

K1

K2

K3

1..* 1..1 1..* 1.1

K1.2 – Identificiraj povezave...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 84 -

Primer nepopolne povezave

1..1 1..* 0..1 0..*Katedra Član Oprema

ima je skrbnik

K1

K2

K3

Čl1

Čl2

O1

O2

O3Čl3

Kateri katedri pripada oprema O2?

Page 237: OPB_predavanja

22

K1.2 – Identificiraj povezave...

• Tudi nepopolno povezavo odpravimo z restrukturiranjem modela

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 85 -

1..1 1..* 0..1 0..*Katedra Član Oprema

ima je skrbnik

K1

K3

Čl1

Čl2

O1

O2

Čl3

1..1 1..*pripada

K2

K1.2 – Identificiraj povezave

• Povezave je potrebno dokumentirati

• Primer dokumentacije:Entitetni tip

Števnost Povezava Števnost Entitetni tip

Član 1..*

1..1

Pripada

Je predstojnik

1..1

0..1

Katedra

Laboratorij 1..* Sodi v 1..1 Katedra

...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 86 -

K1.3 – Identificiraj atribute...

• Skušamo identificirati lastnosti entitet ter povezav

• Uporabimo lahko tehniko proučevanja uporabniških zahtev

– iščemo samostalnike, ki predstavljajo lastnosti, opisne vrednosti ali identifikatorje objektov

• Korak določanja atributov entitetnih tipov je relativno enostaven

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 87 -

K1.3 – Identificiraj atribute...

• Nekaj primerov, kjer je potrebna pazljivost:

– Enostavni in sestavljeni atributi (npr. naslov �ulica, hišna številka, številka pošte, naziv pošte). Kaj potrebuje

uporabnik?

– Eno- in več-vrednostni atributi (npr. telefonska števila� domača, v služni, mobilna...

– Izpeljani atributi (npr. skupna cena računa, starost študenta,...) � pogosto ne kažemo v konceptualnih modelih. Obravnavamo pri fizičnem načrtovanju.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 88 -

Page 238: OPB_predavanja

23

K1.3 – Identificiraj atribute...

• Dodatna priporočila:

– Če identificiramo atributi, ki navidez pripadajo več entitetam, preverimo:

• Ali je možno združiti entitete (npr. asistent in profesor združimo v pedagoški delavec);

• Če imajo entitete več skupnih vendar tudi svoje atribute, razmislimo o uporabi generalizacije (npr. poleg entitetnega tipa asistent in profesor uvedemo še entitetni tip pedagoški delavec, ki prevzame vse skupne atribute.)

– Če identificiramo atribut, ki odraža povezavo (npr. atribut katedra v entitetnem tipu Profesor predstavlja povezavo z entiteto katedra):

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 89 -

K1.3 – Identificiraj atribute

• Atribute je potrebno dokumentirati:

– Naziv atributa, opis, podatkovni tip, dolžina, sinonimi, ali je atribut sestavljen (iz katerih atributov je sestavljen?), ali je atribut izpeljan (iz katerih atributov je izpeljan?),...

• Primer dokumentacije:Entitetni tip

Atributi Opis Podatkovni tip

Dolžina ...

Študent VpisSt

Ime

Priimek

...

Vpisna številka študenta

Ime študenta

Priimek študenta

Number

Character

Character

8

20

20

...

... ...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 90 -

K1.4 – Atributom določi domene...

• Domena je množica vrednosti, ki jih lahko zavzamejo atributi, vključeni v to domeno.

• Domeni lahko določimo: – Seznam dovoljenih vrednosti

– Minimalno in maksimalno vrednost

– Podatkovni tip in dolžino

– Dovoljene operacije nad atributom (še v raziskavi)

• Primeri domen:– Barva � {bela, rumena, oranžna, rdeča}

– Opis elementa � character 50

– Starost � [0..120]

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 91 -

K1.4 – Atributom določi domene

• Tudi domene dokumentiramo

• Zapišemo naziv domene ter lastnosti oz. pravila, ki jih domena določa.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 92 -

Page 239: OPB_predavanja

24

K1.5 - Določi kandidate za ključe...

• Za vsak entitetni tip določimo kandidate za ključ ter izberemo enega za primarni ključ.

• Kandidati za ključ so minimalne podmnožice atributov, ki enolično identificirajo vsako entiteto.

• Če je kandidatov več, izberemo enega, ki je primeren za primarni ključ.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 93 -

Študent

EMŠOVpisStDavcnaStImePriimekDtmRoj

Primer

K1.5 - Določi kandidate za ključe...

• Nekaj priporočil za izbiro ključa, če je več kandidatov:

– Kandidat z najmanj atributi;

– Kandidat, za katerega je najmanj verjetno, da se bodo njegove vrednosti spreminjale;

– Kandidat z najmanjšo dolžino znakov (za alfanumerične kandidate);

– Kandidat z najmanjšo maksimalno vrednostjo (za numerične kandidate);

– Kandidat, ki ga je najlažje uporabiti s stališča uporabnika

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 94 -

K1.5 - Določi kandidate za ključe

• Dodatna priporočila:

– Imena navadno niso dober kandidat za ključ

– Bodi pozoren na šibke entitetne tipe (šibkim entitetam v okviru konceptualnega načrtovanja ne moremo določiti ključa)

• Tudi primarne in alternativne ključe je potrebno dokumentirati.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 95 -

K1.6 – uporabi elemente EER diagrama...

• EER – razširjen ER diagram

• Elementi razširjenega ER diagrama so:

– Specializacija: ugotovljamo razlike med entitetami doočenega tipa in entitetni tip razbiti na več specializiranih entitet.

– Generalizacija: ugotavljamo skupne lastnosti entitet različnih tipov in kreirati nov tip s skupnimi lastnostmi.

– Agregacija: modeliramo povezavo “je del” oziroma “ima”, s katero določimo pripadnost tipa “del” tipu “celota”.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 96 -

Page 240: OPB_predavanja

25

K1.6 – uporabi elemente EER diagrama...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 97 -

Primer specializacije

Študent

Redni študent Izredni študent

Znak za specializacijo/generalizacijo.

Lahko tudi:

K1.6 – uporabi elemente EER diagrama...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 98 -

Primer generalizacije

Profesor Asistent

Pedagoški delavec

K1.6 – uporabi elemente EER diagrama...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 99 -

Primer agregacije

Študent Indekspripada

1..1 1..*

Agregacija povečuje semantiko modela

Študent Indekspripada

1..1 1..*

Navadna povezava

Znak zaagregacijo.

K1.6 – uporabi elemente EER diagrama...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 100 -

Primer kompozicije

Študent Indekspripada

1..1 1..*

Kompozicija povečuje semantiko modela

Študent Indekspripada

1..1 1..*

Navadna povezava

Znak zakompozicijo.

Page 241: OPB_predavanja

26

K1.6 – uporabi elemente EER diagrama

• Kdaj uporabiti elemente razširjenega ER diagrama?

– Elementi razširjenega diagrama povečajo semantiko modela vendar lahko negativno vplivajo na “berljivost” modela

– Berljivost, enostavnost modela naj bo vodilo pri odločanju o uporabi naprednih modelirnih elementov (predvsem agregacija in kompozicija)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 101 -

K1.7 - Preveri obstoj odvečnih elem....

• Preverimo, če v modelu obstajajo redundantni elementi:

– Pregledamo povezava 1 – 1

– Odstranimo odvečne povezave

– Preverimo “časovni okvir”

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 102 -

K1.7 - Preveri obstoj odvečnih elem....

• Povezave 1 – 1

– Pri identifikaciji entitetnih tipov smo morda zajeli več tipov, ki predstavljajo iste objekte (npr. Profesor, Pedagoški delavec, Asistent)

– Če taki tipi obstajajo, jih je potrebno združiti

– Če so primarni ključi različni, izberemo enega

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 103 -

Profesor

EMŠODavcnaStImePriimekDtmRoj

Asistent

EMŠODavcnaStImePriimekDtmRoj

Pedagog

EMŠODavcnaStImePriimekDtmRoj

K1.7 - Preveri obstoj odvečnih elem....

• Odstrani odvečne povezave

– Povezava je odvečna, če je možno priti do iste informacije prek drugih povezav!

– Izdelati želimo minimalen podatkovni model �odvečne povezave zato odstranimo.

– Zgolj pregledovanje poti med entitetnimi tipi ne zadošča (povezave imajo lahko različen pomen)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 104 -

Page 242: OPB_predavanja

27

K1.7 - Preveri obstoj odvečnih elem....

• Ali je kakšna povezava odveč?

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 105 -

Profesor Katedraje predstojnik

1..1 0..1

Laboratorij

pripada

1..1

1..*je član

1..1

1..*

K1.7 - Preveri obstoj odvečnih elem....

• Ali je kakšna povezava odveč?

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 106 -

Profesor Katedrapripada

1..* 1..1

Laboratorij

pripada

1..1

1..*je član

1..1

1..*

K1.7 - Preveri obstoj odvečnih elem....

• Preveri časovni okvir

– Časovni okvir povezav je lahko pomemben

– Povezava „je oče“ ni odveč! Kaj npr. če ima oče

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 107 -

Oče Matije poročen z

0..1 0..1

Otrok

je mati

1..1

0..*je oče

0..*

1..1

?

K1.8 - Preveri če model zdrži transkacije...

• Preveriti moramo če model, ki smo ga dobili s koraki od K1 do K7, podpira vse zahtevane transakcije.

– Transakcije izvajamo ročno

– Če neke transkacije ne uspemo izvesti, je model pomanjkljiv (manjka bodisi entitetni tip, povezava ali atribut)

• Možna dva pristopa:

– Preverjanje opisa transakcij

– Preverjanje transakcijskih potiPODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 108 -

Page 243: OPB_predavanja

28

K1.8 - Preveri če model zdrži transkacije...

• Preverjanje opisa transakcij

– Vsako transakcijo opišemo;

– Preverimo, če model zajema vse entitetne tipe, povezave in atribute, ki jih transakcija potrebuje.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 109 -

K1.8 - Preveri če model zdrži transkacije...

• Primer opisa transakcijskih zahtev– Vnos podatkov:

• Vnesi podatke o študentih (npr. 24010637, Monika Jemec,...)

• Vnesi podatke o predmetih (npr. 70029, Razvoj IS, Letni,...)

• ...

– Urejanje in brisanje podatkov:• Uredi/briši podatke o študentu

• Uredi/briši podatke o predmetih

• ...

– Poizvedbe• Izpiši vse študente, ki so se vpisali v določen letnik,

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 110 -

K1.8 - Preveri če model zdrži transkacije...

• Preverjanje transakcijskih poti

– Transakcije preverimo na modelu – pot transakcije narišemo

– Pristop načrtovalcu omogoča:

• Da identificira pomanjkljivosti modela (če pot za neko transkacijo ni možna)

• Da identificira dele modela, ki so transakcijsko kritični

• Da odkrije odvečne dele modela (deli, ki jih ne potrebuje nobena transakcija)

• Preverjanje transkacij je zamudno vendar

pomembno delo!!PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 111 -

K1.8 - Preveri, če model zdrži transkacije

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 112 -

PrijavaprID

PredmetpredID

SmersmerID

ProgramprogID

RokrokID

ŠtudentvpisSt

IzpitstPol

ima

0..11..1

se predava na

1..*

1..*

za

1..10..*

iz

1..1

0..*

se nanaša na

1..10..*

pripada

1..1

0..*

je opravljal

1..1 0..*

a) Izpiši vse predmete, ki jih je opravil določen študentb) Izpiši vse študente, ki so se vpisali v določen letnik, določene smeri,

določenega programa

a

?b

Page 244: OPB_predavanja

29

K1.9 – Preveri model z uporabnikom

• Na koncu model preverimo z uporabnikom

• Anomalije, pomanjkljivosti, napake,... lahko vodijo v ponovitev korakov od K1 do K9.

• V mnogih podjetjih mora uporabnik podpisati podatkovni model

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 113 -

Logičnonačrtovanje

Podatkovni model?

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 114 -

Logičnonačrtovanje

Metoda logičnega načrtovanja...

• Možni koraki logičnega načrtovanja:

– K2.1: Za entitetne tipe kreiraj relacije

– K2.2: Preveri relacije z normalizacijo

– K2.3: Preveri relacije s pregledom uporabniških transakcij

– K2.4: Preveri omejitve integritete

– K2.5: Preveri model z uporabnikom

– K2.6: Združi lokalne modele v globalni model (opcijsko)

– K2.7: Preveri zmožnosti modela za razširitvePODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 115 -

K2.1 – Za entitetne tipe kreiraj relacije...

• Namen

– Izdelati relacije za logični model, ki bo predstavljal entitete, povezave in atribute, ki smo jih identificirali v okviru konceptualnega modeliranja.

• Ta korak je navadno avtomatiziran �

pretvorba iz konceptualnega v logični model je podprta s strani številnih CASE orodij.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 116 -

Page 245: OPB_predavanja

30

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba:

– Močni entitetni tipi

• Za vsak močan entitetni tip kreiraj relacijo, ki vključuje vse enostavne atribute tega entitetnega tipa. Namesto sestavljenih atributov vključi njihove atribute, ki jih sestavljajo.

– Šibki entitetni tipi

• Za vsak šibki entitetni tip kreiraj relacijo, ki vključuje vse enostavne atribute tega entitetnega tipa. Primarni ključ šibkega entitetnega tipa je delno ali v celoti sestavljen iz atributov, ki so ključ v entitetnih tipih, s katerimi je opazovani entitetni tip povezan. Da bi lahko določili ključ, moramo najprej pretvoriti vse povezave.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 117 -

Enolični identifikator sestavljajo le atributi entitete (identifikacijski atributi)

Primer: močni in šibki entitetni tipi

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 118 -

Študent

EMŠOVpisStDavcnaStImePriimekDtmRojNaslov

Predmet

PredmetOpisStUrLetni

Izpit

DatumOcena

1..1 0..* 0..* 1..1je opravil za

šibki entitetni tip

Študent(EMŠO, VpisSt, DavcnaSt, Ime, Priimek, DtmRoj, Ulica, Mesto)Predmet(Predmet, Opis, StUr, Letni)Izpit(Datum, #VpisSt, #Predmet, Ocena)

Sestavljene atribute razbijemo

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba (nadaljevanje):

– Povezave 1:*

• Za vsako povezavo 1:* prenesi ključ entitetnega tipa, ki nastopa v povezavi na strani 1 (oče) v entitetni tip, ki nastopa v povezavi na strani * (otrok). Dobimo tuji ključ.

– Povezave 1:1

• Pri števnosti 1:1 ne moremo vedno enostavno določiti očeta in otrok. Za odločitev, ali bomo entitetna tipa, ki sta povezana s povezavo 1:1, povezali v eno relacijo ali ju predstavili z dvema, preverimo predvsem, kako je z obveznostjo povezav. Možne omejitve so: obveznost na obeh straneh, neobveznost na eni in obveznost na

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 119 -

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba (nadaljevanje):

– Povezave 1:1 (nadaljevanje...)

• Obveznost na obeh straneh 1:1 povezave– Entitetna tipa združi v eno relacijo. Za primarni ključ izberi

enega izmed primarnih ključev originalnih entitetnih tipov.

• Obveznost na eni strani 1:1 povezave– Entitetni tip, ki ni obvezen v povezavi, naj bo oče, entitetni tip

z obvezno povezavo pa naj bo otrok. Kopija primarnega ključa entitetnega tipa očeta se prenese na entitetni tip otroka.

• Neobvezna povezava na obeh straneh 1:1 povezave– V primerih, ko sta oba entitetna tipa neobvezna, je težko

določiti očeta in otroka povezave. Ko pridobimo dovolj podatkov, določimo ključ.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 120 -

Page 246: OPB_predavanja

31

Primer: povezave 1:*

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 121 -

Študent

EMŠOVpisStDavcnaStImePriimekDtmRojNaslov

Diploma

DatumOcena

1..1 1..*je opravil

Študent(EMŠO, VpisSt, DavcnaSt, Ime, Priimek, DtmRoj, Ulica, Mesto)Diploma(Datum, #VpisSt, Ocena)

Prenos tujega ključa v smeri ena “proti mnogo”

Primer: povezave 1:1

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 122 -

Fakulteta

FakultetaNaziv

Dekan

IDImePriimek

1..1 1..1vodi

Dekan(ID, Ime, Priimek, Naziv_fakultete)

Obveznost na obeh straneh: entitetna tipa predstavimo z eno relacijo; izberemo ključ

Primer: povezave 1:1

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 123 -

Fakulteta

FakultetaNaziv

Profesor

IDImePriimek

1..1 0..1je dekan

Fakulteta(Fakulteta, Naziv, #ID)Profesor(ID, Ime, Priimek)

Obveznost na eni strani: entitetni tip, ki igra vlogo očeta, dobi tuji ključ � primarni ključdrugega entitetnega tipa v povezavi se prenese.

oče

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba (nadaljevanje):

– Rekurzivne povezave 1:1

• Pri rekurzivnih povezavah tipa 1:1 upoštevaj pravila, ki izhajajo iz obveznosti povezav.

– Obveznost na obeh straneh: rekurzivno povezavo predstavi z eno relacijo in dvema kopijama primarnega ključa.

– Obveznost na eni, neobveznost na drugi strani: kreiraj eno relacijo z dvema kopijama primarnega ključa ali kreiraj novo relacijo. Nova relacija naj ima samo dva atributa – kopiji primarnega ključa.

– Neobveznost na obeh straneh: kreiraj novo relacijo. Nova relacija naj ima samo dva atributa – kopiji primarnega ključa.

– Kopije primarnih ključev je v rekurzivnih povezavah potrebno ustrezno poimenovati, da

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 124 -

Page 247: OPB_predavanja

32

Primer: rekurzivne povezave

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 125 -

PDelavec

IDImePriimekNaziv

1..1

0..*

je mentor

PDelavec(ID, Ime, Priimek, Naziv, IDmentorja)

Obveznost na eni strani: kreiramo relacijo z dvema kopijama primarnega ključa. Eden igra vlogo primarnega drugi pa tujega ključa.

Primer: rekurzivne povezave

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 126 -

PDelavec

IDImePriimekNaziv

1..1

0..*

je mentor

PDelavec(ID, Ime, Priimek, Naziv)Mentor(#IDmentorja, #IDdelavca)

Obveznost na eni strani: Rekurzivno povezavo pretvorimo v relacijo. Relacija za vsakega pedagoškegadelavca pove, kdo mu je (bil) mentor.

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba (nadaljevanje):

– Povezave med nadtipi in podtipi

• Identificiraj nadtipe kot očete ter podtipe kot otroke.Obstajajo različne možnosti, kako takšne povezave predstaviti z relacijami.

• Izbira najbolj ustrezne opcije je odvisna od številnih faktorjev: izključevanje, obveznost povezav, število entitet v povezavi....

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 127 -

Primer: nadtipi, podtipi

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 128 -

PREVOZNO SREDSTVO

Registrska št.Datum izdelaveDatum registracijeMoč motorjaBarvaŠt. motorja

OSEBNI AVTO

Št. sedeževKilovatiVrsta motorjaPovprečna poraba

TOVORNO VOZILO

NosilnostTip

x Tip specializacije

Page 248: OPB_predavanja

33

K2.1 – Za entitetne tipe kreiraj relacije...

• Ročna pretvorba (nadaljevanje):

– Povezave *:*

• Kreiraj relacijo, ki predstavlja povezavo ter vse njene atribute. Primarne ključe entitetnih tipov, ki sta povezana s tako povezavo, vključi v novo relacijo kot tuji ključ. Tuji ključi bodo obenem tudi primarni ključi –samostojno ali v kombinaciji z drugimi atributi relacije.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 129 -

Primer: povezave *:*

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 130 -

Študent

EMŠOVpisStDavcnaStImePriimekDtmRojNaslov

Predmet

PredmetOpisStUrLetni

0..* je opravil 0..*

Študent(EMŠO, VpisSt, DavcnaSt, Ime, Priimek, DtmRoj, Ulica, Mesto)Predmet(Predmet, Opis, StUr, Letni)Izpit(Datum, #VpisSt, #Predmet, Ocena)

K2.1 – Za entitetne tipe kreiraj relacije

• Ročna pretvorba (nadaljevanje):

– Več-vrednostni atributi

• Za predstavitev več-vrednostnih atributov kreiraj novo relacijo. V novo relacijo vključi tudi ključ entitetnega tipa, iz katerega izhajajo več-vrednostni atributi. V novi relaciji predstavlja tuji ključ. Primarni ključ v novi relaciji je kombinacija tujega ključa in več-vrednostnih atributov. Če več-vrednostni atributi sami predstavljajo kandidata za ključ, potem ni potrebno, da primarni ključ zajema tudi tuji ključ.

• Če je število vrednosti za večvrednostni atribut znano in ni veliko (npr. je manjše d 5), lahko tak atribut predstavimo z več atributi v relaciji. Za vsako vrednost svoj atribut.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 131 -

Primer: večvrednostni atributi…

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 132 -

Študent

VpisStImePriimekDtmRojNaslovTelefon

Študent(VpisSt, Ime, Priimek, DtmRoj, Mesto, Ulica, GSM, StcTelefon)

Večvrednostni atribut: Število vrednosti za Telefon je znano, zato za vsako določimo svoj atribut v isti relaciji.

Page 249: OPB_predavanja

34

Primer: večvrednostni atributi…

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 133 -

Konferenca

IDDatumNazivKonfKrajSponzor

Konferenca(ID, Datum, NazivKonf, Kraj)Sponzor(Sponzor, Naziv)SponzorKonference(#ID, #Sponzor)

Večvrednostni atribut: Število vrednosti za atribut sponzor ni znano, zato kreiramo novi relaciji.

K2.2 – Preveri relacije z normalizacijo...

• Namen tega koraka je preveriti, če so vse pridobljene relacije v ustrezni normalni obliki. To zagotavlja:

– Da imajo relacije minimalno, vendar zadostno število atributov za potrebe problemske domene;

– Da ni odvečnih podatkov (razen za potrebe povezovanja)

• Prevedba konceptualnega modela v logični model navadno da relacije, ki ustrezajo 3NO.

– Če to ne drži, so v konceptualnem modelu ali v postopku prevedbe napake.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 134 -

K2.2 – Preveri relacije z normalizacijo...

• Včasih se zdi, da normalizirane relacije ne omogočajo zadovoljive učinkovitosti podatkovne baze.

• Upoštevati je potrebno:

– V normaliziranih relacijah so podatki organizirani v skladu s funkcionalnimi odvisnostmi.

– Logični podatkovni model ni dokončen. Predstavlja le, kako načrtovalec razume pomen in naravo podatkov, potrebnih za obravnavano problemsko domeno; Specifične potrebe v zvezi z učinkovitostjo lahko zahtevajo drugačen fizični model.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 135 -

K2.2 – Preveri relacije z normalizacijo

• Upoštevati je potrebno (nadaljevanje):

– Normaliziran načrt je robusten in odporen na podatkovne anomalije.

– Moderni računalniki so veliko zmogljivejši �včasih je upravičeno uporabiti rešitve, ki omogočajo enostavnejšo obdelavo na račun več procesiranja.

– Normalizacija načrtovalca prisili, da se natanko spozna z vsakim atributom relacije.

– Z normalizacijo pridemo do fleksibilnega načrta, ki ga brez težav razširimo.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 136 -

Page 250: OPB_predavanja

35

K2.3 – Preveri relacije z vidika transakcij

• Podobno kot konceptualni model preverimo tudi logični model z vidika podpore transakcij, ki jih uporabnik specificira (glej K1.8).

• Če vseh transakcij ni moč izvesti ročno, smo pri pretvorbi naredili napako, ki jo je potrebno odpraviti.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 137 -

K2.4 – Preveri omejitve integritete...

• V tem koraku preverimo pravila za zagotavljanje celovitosti podatkov:

– Obveznost atributov

– Omejitve domen atributov

– Števnost

– Omejitve entitet (celovitost entitet)

– Omejitve povezav (celovitost povezav)

– Splošne omejitve

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 138 -

Primeri omejitev povezav

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 139 -

K2.5 – Preveri model z uporabnikom...

• Namen tega koraka je preveriti model z uporabnikom ter ugotoviti, če ustreza vsem uporabniškim zahtevam.

• Model lahko zajema več uporabniških pogledov. Pri pregledu lahko nastopa več uporabnikov.

• Odličen način za pregled celovitosti podatkovnega modela je specifikacija podatkovnih tokov s pomočjo diagrama podatkovnih tokov.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 140 -

Page 251: OPB_predavanja

36

Povezava podatkovni model in DFD

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 141 -

DFD PM

K2.6 – Združi lokalne modele...

• Namen tega koraka je združiti vse lokalne modele v en globalni model, ki predstavlja vse uporabniške vidike podatkovne baze.

• Čeprav so lokalni modeli preverjeni, lahko pri njihovem združevanju pride do prekrivanja in neskladnosti.

• Globalni model preverim podobno kot smo preverjali lokalne modele.

• Če pri načrtovanju nismo zajeli več uporabniških vidikov, lahko korak preskočimo.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 142 -

K2.6 – Združi lokalne modele

• Pri združevanju lokalnih modelov uporabimo naslednje korake:

– K2.6.1 – Lokalne modele združi v globalni model

– K2.6.2 – Preveri globalni model

– K2.6.3 – Globalni model preveri z uporabniki

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 143 -

Pravila združevanja lokalnih modelov...

• Pravila združevanja lokalnih modelov:

– Preveri imena in vsebino relacij ter njihove kandidate za ključ.

– Preveri imena in vsebino povezav in tujih ključev.

– Združi relacije z lokalnih podatkovnih modelov

– Brez združevanja vključi relacije, ki so unikatne v posameznih podatkovnih modelih.

– Združi povezave in tuje ključe z lokalnih podatkovnih modelov.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 144 -

Page 252: OPB_predavanja

37

Pravila združevanja lokalnih modelov

• Pravila združevanja lokalnih modelov (nadaljevanje):

– Brez združevanja vključi povezave in tuje ključe, ki so unikatni v posameznih podatkovnih modelih.

– Preveri, če morda manjkajo relacije, povezave in tuji ključi.

– Preveri tuje ključe.

– Preveri pravila za zagotavljanje celovitosti podatkov.

– Nariši globalni podatkovni model.

– Ažuriraj dokumentacijo.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 145 -

Primer

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 146 -

Primer uporabniškega pogleda

Primer

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 147 -

Primer globalnega logičnega podatkovnegamodela.

K2.7 – Preveri možnosti za razširitve...

• V primeru, da so predvidene bodoče razširitve sistema, moramo preveriti, če logični model take razširitve podpira.

• Podatkovni model mora biti prilagodljiv; omogočati mora razširitve skladno z novimi zahtevami ter z minimalnim vplivom na obstoječe uporabnike.

• Popolnoma odprt sistem za razširitve je težko doseči.

• Pravilo agilnega načrtovanja:– Fool me once, shame on you, fool me twice,

shame on me!

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 148 -

Fizičnonačrtovanje

Page 253: OPB_predavanja

38

Metoda načrtovanja fizične PB...

• Možni koraki načrtovanja fizične PB:

– K3 – Pretvori logični model v jezik za ciljni SUPB

• K3.1 – Izdelaj načrt osnovnih relacij

• K3.2 – Izdelaj načrt predstavitve izpeljanih atributov

• K3.3 – Izdelaj načrt splošnih omejitev

– K4 – Izdelaj načrt datotečne organizacije ter indeksov

• K4.1 – Analiziraj transakcije

• K4.2 – Izberi datotečno organizacijo

• K4.3 – Določi indekse

• K4.4 – Oceni velikost podatkovne bazePODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 149 -

Koraka K1 in K2 se nanašata na izdelavo konceptualnega in logičnega podatkovnega modela

Metoda načrtovanja fizične PB...

• Možni koraki načrtovanja fizične PB (nadaljevanje):

– K5 – Izdelaj načrt uporabniških pogledov

– K6 – Izdelaj načrt varnostnih mehanizmov

– K7 – Preveri smiselnost uvedbe nadzorovane redundance podatkov (denormalizacija)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 150 -

K3 – Pretvorba v jezik za SUPB

• Namen koraka: iz logičnega modela izdelati podatkovno shemo za ciljni SUPB.

• Poznati moramo funkcionalnosti ciljnega SUPB, npr.:

– Kako izdelati osnovne relacije?

– Ali ciljni SUPB podpira primarne, tuje in alternativne ključe?

– Ali podpira obveznost podatkov (NOT NULL)?

– Ali podpira domene?

– Ali podpira pravila omejitve podatkov?

– Ali podpira sprožilce (triggers) in bazne programe

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 151 -

K3.1 – Izdelava osnovnih relacij...

• Namen: določiti, kako bodo osnovne relacije predstavljene v ciljnem SUPB.

• Vir podatkov je podatkovni slovar, jezik za opis pa DBDL (database definition language)

• Za vsako relacijo definiramo:

– Naziv relacije;

– Listo osnovnih atributov;

– Primarni ključ ter kjer smiselno alternativne in tuje ključe;

– Omejitve povezav.PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 152 -

Page 254: OPB_predavanja

39

K3.1 – Izdelava osnovnih relacij

• V podatkovnem slovarju imamo za vsak atribut :

– Domeno, ki se sestoji iz podatkovnega tipa, dolžine in omejitev domene;

– Morebitno privzeto vrednost;

– Podatek o obveznosti atributa;

– Podatek, ali je atribut izpeljan in če je, kako ga izračunamo.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 153 -

Primer opisa osnovnih relacij z DBDL

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 154 -

K3.2 – Predstavitev izpeljanih atributov...

• Namen: določiti, kako bodo v SUPB predstavljeni izpeljani atributi.

• Preuči logični podatkovni model in podatkovni slovar; izdelaj seznam izpeljanih atributov.

• Za vsak izpeljani atribut določi:

– Atribut je shranjen v podatkovni bazi

– Atribut se vsakokrat posebej izračuna in se ne hrani v podatkovni bazi.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 155 -

K3.2 – Predstavitev izpeljanih atributov...

• Pri odločitvi, kako predstaviti izpeljane atribute, upoštevaj:

– “strošek” shranjevanja in vzdrževanja skladnosti izpeljanih atributov z osnovnimi atributi, iz katerih je izpeljan;

– “strošek” vsakokratnega izračunavanja izpeljanega atributa.

• Izberi stroškovno ugodnejšo rešitev.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 156 -

Page 255: OPB_predavanja

40

Primer hranjenja izpeljanega atributa

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 157 -

K3.3 – Načrt splošnih omejitev

• Namen: izdelava načrta splošnih omejitev za ciljni SUPB.

• Glede podpore splošnim omejitvam obstajajo velike razlike med SUPB-ji.

• Primer splošne omejitve:

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 158 -

CONSTRAINT StaffNotHandlingTooMuchCHECK (NOT EXISTS (SELECT staffNo

FROM PropertyForRentGROUP BY staffNoHAVING COUNT(*) > 100))

Pomen omejitve: nihče od zaposlenih ne sme skrbeti za več kot 100 nepremičnin

K4 – Datotečna organizacija in indeksi

• Namen: izbrati optimalno datotečno organizacijo za shranjevanje osnovnih relacij ter potrebne indekse za doseganje ustrezne učinkovitosti.

• Načrtovalec mora dobro poznati, kakšne strukture in organizacije SUPB podpira ter kako deluje.

• Ključnega pomena so uporabniške zahteve v zvezi z želeno/pričakovano učinkovitostjo transakcij.

• Med SUPB-ji velike razlike.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 159 -

K4.1 – Analiza transakcij...

• Namen: razumeti namen transakcij, ki bodo tekle na SUPB ter analizirati tiste, ki so najpomembnejše.

• Poskušaj določiti kriterije učinkovitosti:

– Pogoste transakcije, ki imajo velik vpliv na učinkovitost;

– Transakcije, ki so kritičnega pomena za poslovanje;

– Pričakovana obdobja (v dnevu/ tednu), ko bo SUPB najbolj obremenjen (peak load).

• Preveri tudi:

– Atribute, ki jih transakcije spreminjajo

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 160 -

Page 256: OPB_predavanja

41

K4.1 – Analiza transakcij...

• Pogosto ni moč analizirati vseh transakcij. Pregledamo zgolj najpomembnejše.

• Za identifikacijo najpomembnejših transakcij lahko uporabimo:

– Matriko transakcija/relacija, ki kaže, katere relacije se v transakcijah uporabljajo.

– Diagram uporabe transakcij, ki kaže, katere transakcije bodo potencialno zelo frekventno izvajane.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 161 -

K4.1 – Analiza transakcij...

• Možen pristop k obravnavi potencialno problematičnih delov modela:

– Izdelamo matriko povezav transakcija/relacija,

– Ugotovimo, katere relacije se najpogosteje uporabljajo v transakcijah,

– Analiziramo, kateri podatki se uporabljajo v transakcijah, ki te relacije uporabljajo.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 162 -

Primer matrike transakcija/relacija

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 163 -

F: Identify the total number of properties assigned to each member of staff at a given branch.

Dodatno lahko zapišemo številooperacij na časovno enoto

Primer diagrama uporabe transakcij

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 164 -

V specifikaciji zahtev je ocenjeno:• 100.000 nepremičnin;• 2.000 zaposlenih v 100 agencijah;• Vsaka agencija ima od 1.000 do 3.000 nepremičnin

Page 257: OPB_predavanja

42

Obrazec za podrobno analizo transakcij

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 165 -

K4.2 – Izbira datotečne organizacije

• Namen: izbrati učinkovito datotečno organizacijo za vse osnovne relacije.

• Datotečne organizacije:

– Kopica (Heap),

– Hash,

– Metoda indeksiranega zaporednega dostopa (Indexed Sequential Access Method - ISAM),

– Drevo B+-

– Gruča (Cluster).

• Nekateri SUPB-ji ne podpirajo vseh datotečnih organizacij.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 166 -

K4.3 – Izbira indeksov...

• Namen: ugotoviti, ali lahko z dodatnimi indeksi povečamo učinkovitost sistema.

• Možen pristop:

– Zapise pustimo neurejene.

– Izdelamo toliko sekundarnih indeksov, kolikor je potrebno.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 167 -

Sekundarni indeks = indeks po atributu, ki ni obenem tudi atribut, po katerem je urejena relacija

K4.3 – Izbira indeksov...

• Alternativni pristop

– Zapise uredimo po primarnem ključu ali po indeksu gruče. V tem primeru kot atribut za sortiranje izberemo:

• Atribut, ki se največkrat uporablja za povezovanja ali

• Atribut, ki se najpogosteje uporablja za dostop do podatkov v relaciji.

• Če je izbrani atribut za sortiranje primarni ključ, potem gre za primarni indeks sicer za indeks gruče.

– Relacija ima lahko primarni indeks ali indeks gručePODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 168 -

Primarni indeks = indeks po primarnem ključu, po katerem je urejena relacija.Vsak zapis ima svojo vrednost.

Indeks gruče = indeks po atributu, ki je obenem tudi atribut, po katerem je urejena relacija, ni pa primarni ključ. Ključ ni unikaten!

Page 258: OPB_predavanja

43

K4.3 – Izbira indeksov...

• Sekundarni indeksi so način, kako omogočiti učinkovito iskanje s pomočjo dodatnih ključev.

• Pri določanju sekundarnih indeksov upoštevamo:

– Povečanje učinkovitosti (predvsem pri iskanju po PB)

– Dodatno delo, ki ga mora sistem opravljati za vzdrževanje indeksov. To vključuje:

• Dodajanje zapisa v vsak sekundarni indeks, kadarkoli dodamo nek zapis v osnovno relacijo

• Spreminjanje sekundarnega indeksa vsakokrat, ko se osnovna relacija spremeni

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 169 -

K4.3 – Izbira indeksov...

• Nekaj smernic za uporabo sekundarnih indeksov:

– Ne indeksiraj majhnih relacij.

– Če datoteka ni urejena po primarnem ključu, potem kreiraj indeks na osnovi primarnega ključa.

– Če je tuji ključ pogosto v uporabi, dodaj sekundarni indeks na tuji ključ.

– Sekundarni indeks dodaj vsakemu atributu, ki se pogosto uporablja kot sekundarni ključ.

– Sekundarne indekse dodaj atributom, ki nastopajo v pogojih za selekcijo ali stik: ORDER BY; GROUP BY

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 170 -

K4.3 – Izbira indeksov

• Nekaj smernic za uporabo sekundarnih indeksov: (nadaljevanje):

– Dodaj sekundarni indeks atributom, ki nastopajo v vgrajenih funkcijah;

– Izogibaj se indeksiranju atributov, ki se pogosto spreminjajo.

– Izogibaj se indeksiranju atributov v relacijah, nad katerimi se bodo pogosto izvajale poizvedbe, ki bodo vključevale večji del zapisov.

– Izogibaj se indeksiranju atributov, ki so predstavljeni z daljšimi stringi.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 171 -

K4.4 – Ocena velikosti podatkovne baze

• Namen: oceniti, koliko prostora v sekundarnem pomnilniku zahteva načrtovana podatkovna baza.

• Ocena je odvisna

– od velikosti in števila zapisov ter

– od ciljnega SUPB.

• Primer: ocena velikosti podatkovne baze s pomočjo orodja PowerDesigner.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 172 -

Page 259: OPB_predavanja

44

K5 – Načrt uporabniških pogledov

• Namen: izdelati načrt uporabniških pogledov, ki so bili opredeljeni v okviru zajema uporabniških zahtev.

• Uporabimo mehanizem pogledov (view).

• Pogled je navidezna relacija, ki fizično ne obstaja v PB, temveč se vsakokratno kreira s pomočjo poizvedbe.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 173 -

Primer pogleda

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 174 -

create or replace view OBREMENITEV asSelect PMET.PEDAGOG as Predavatelj,

(PDG.PRIIMEK + PDG.IME) as Naziv_predavatelja, count(*) as Stevilo_Predmetov, sum(PMET.STUR) as Stevilo_ur_tedensko

from PREDMET as PMET, PEDAGOŠKI DELAVEC as PDGwhere PMET.NOSILEC = PDG.PEDAGOGgroup by PMET.NOSILEC, (PDG.PRIIMEK + PDG.IME);

Pedagoški delavec

Pedagog <pk>Vrsta PD <fk>Laboratorij <fk>ImePriimekStatus <fk>

Predmet

Predmet <pk>Smer <fk>Nosilec <fk>Asistent <fk>NazivStUr

Nosilec = Pedagog

Asistent = Pedagog

Obremenitev

PredavateljNaziv_predavateljaStevilo_PredmetovStevilo_ur_tedensko

K6 – Načrt varnostnih mehanizmov

• Namen: izdelati načrt varnostnih mehanizmov skladno z zahtevami naročnika.

• SUPB-ji tipično podpirajo dve vrsti varnosti:

– Sistemsko varnost: varnost dostopa in uporabe podatkovne baze (navadno zagotovljeno s pomočjo uporabniških imen in gesel);

– Podatkovno varnost: varnost uporabe podatkov –kdo lahko uporablja določene relacije ter kako.

• Med SUPB-ji so velike razlike v mehanizmih, ki jih imajo na voljo za dosego varnosti.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 175 -

K7 – Uvedba nadzorovane redundance...

• Namen: ugotoviti, ali je smiselno dopustiti določeno mero redundance (denormalizacija) ter tako izboljšati učinkovitost.

• Rezultat normalizacije je načrt, ki je po strukturi konsistenten ter minimalen.

• Včasih normalizirane relacije ne dajo zadovoljive učinkovitosti.

• Razmislimo, ali se zavoljo izboljšanja učinkovitosti odpovemo določenim koristim, ki jih prinaša normalizacija.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 176 -

Page 260: OPB_predavanja

45

K7 – Uvedba nadzorovane redundance...

• Upoštevamo tudi:

– Implementacija denormaliziranih relacij je težja;

– Z denormalizacijo velikokrat zgubimo na prilagodljivosti modela;

– Denormalizacija navadno pospeši poizvedbe, vendar upočasni spreminjanje podatkov.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 177 -

K7 – Uvedba nadzorovane redundance...

• Denormalizacija:

– Denormaliacija se nanaša na dopolnitev relacijske sheme, tako da eni ali več relacij znižamo stopnjo normalne oblike (npr. 3NO � 2NO).

– Nanaša se tudi na primere, ko dve normalizirani relaciji združimo v eno, ki je še vedno normalizirana, vendar zaradi združitve vsebuje več nedefiniranih vrednosti (NULL).(4PNO � 3NO).

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 178 -

K7 – Uvedba nadzorovane redundance...

• Koraki denormalizacije:

– K7.1 – združevanje 1:1 povezav

– K7.2 – Podvajanje neosnovnih atributov v povezavah 1:* za zmanjšanje potrebnih stikov.

– K7.3 – Podvajanje tujih ključev v 1:* povezavah za zmanjšanje potrebnih stikov.

– K7.4 – Podvajanje atributov v *:* povezavah za zmanjšanje potrebnih stikov.

– K7.5 – Uvedba ponavljajočih skupin atributov

– K7.6 – Kreiranje tabel, ki predstavljajo izvleček osnovne tabele.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 179 -

Primer normaliziranega modela

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 180 -

Page 261: OPB_predavanja

46

Primeri relacij

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 181 -

K7.1 – Združevanje 1:1 povezav

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 182 -

Če podatke, ki so v različnih relacijah obravnavamo skupaj, je združitev primerna.

K7.2 – Podvajanje neosnovnih atributov

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 183 -

Ko dostopamo do podatkov o nepremičninah, nas v večini primerov zanima tudi ime lastnika (IName)

“Lookup Tabele”...

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 184 -

LookUp tabele se sestoje zgolj iz šifre in naziva. Prednosti uporabe LookUp tabel so mnoge. Vseeno obstajajo primeri, ko je smiselno (LookUp tabele ukiniti in) podatke podvajati v osnovnih relacijah. Taki primeri so:•Ko se do LookUp tabele frekventno dostopa •Ko so LookUp tabele uporabljene v kritičnih poizvedbah•Ko je majhna verjetnost, da se bodo po vrednosti spreminjale

Page 262: OPB_predavanja

47

“Lookup tabele”

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 185 -

K7.3 - Podvajanje tujih ključev

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 186 -

K7.4 - Podvajanje atributov v povez. *:*

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 187 -

K7.5 - Uvedba ponavljajočih skupin

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 188 -

Page 263: OPB_predavanja

48

K7.6 – Uporaba izvlečkov

• Številne poizvedbe in poročila zahtevajo dostop do več osnovnih relacij ter kompleksne povezave med njimi.

• Z namenom izboljšanja učinkovitosti je v določenih primerih smiselno uvesti novo denormalizirano relacijo, ki vsebuje podatke z več osnovnih relacij.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 189 -

K7.7 – Razbitje relacij

• Za povečanje učinkovitosti nad relacijami z zelo velikim številom n-teric uporabimo pristop, kjer relacijo razbijemo na manjše dele - particije.

• Dva načina delitve sta:

– Horizontalni in

– Vertikalni.

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 190 -

Prednosti razbitja relacije na particije

• Uporaba particioniranja prinaša številne prednosti:

– Boljša porazdelitev vnosa (load balancing)

– Večja učinkovitosti (manj podatkov za obdelavo, paralelnost izvajanja,...)

– Boljša razpoložljivost

– Boljša obnovljivost

– Več možnosti za zagotavljanje varnosti

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 191 -

Slabosti razbitja relacije na particije

• Particioniranje ima tudi slabosti:

– Kompleksnost (particije niso vedno transparentne za uporabnike...)

– Slabša učinkovitost (pri poizvedbah, kjer je potrebno poizvedovati po več particijah, je učinkovitost slabša)

– Podvajanje podatkov (pri vertikalnem particioniranju)

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 192 -

Page 264: OPB_predavanja

49

Primer – particije v SUPB Oracle

PODATKOVNE BAZEModul: Načrtovanje PB©Laboratorij za podatkovne tehnologije

- 193 -

CREATE TABLE ArchivedPropertyForRentPartition(propertyNo VARCHAR2(5) NOT NULL,street VARCHAR2(25) NOT NULL,...PRIMARY KEY (propertyNo),FOREIGN KEY (ownerNo) REFERENCES PrivateOwner(ownerNo),...

PARTITION BY HASH (branchNo) (PARTITION b1 TABLESPACE TB01,PARTITION b2 TABLESPACE TB02,...);

Page 265: OPB_predavanja

1

Podatkovna skladišča

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 1 -

Podatkovno skladišče

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 2 -

Kaj si bomo pogledali?

� Namen podatkovnih skladišč

� Evolucija podatkovnih skladišč

� Lastnosti podatkovnih skladišč

� OLTP

� Problemi pri uvajanju podatkovnih skladišč

� Arhitektura podatkovnega skladišče

� Orodja, ki uporabljajo podatkovna skladišča

Zakaj podatkovna skladišča?...

• Za odločanje potrebni podatki:

– iz različnih aplikacij informacijskega sistema, ne glede na uporabljeno platformo in fizično lokacijo aplikacije;

– ki omogočajo pregled nad zgodovino vrednosti, ne le trenutne vrednosti podatkov in kazalnikov

– ki omogočajo pregled nad trendi, kot so rast, padanje, stagnacija itn.

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 3 -

Zakaj podatkovna skladišča?

• Podatkovna skladišča omogočajo realizacijo podpore odločanju. Za te potrebe hranijo:

– podatke iz več različnih podatkovnih virov

– zgodovinske podatke

– sumarizirane podatke

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 4 -

Page 266: OPB_predavanja

2

Evolucija podatkovnih skladišč…

• V sedemdesetih aplikativni sistemi �avtomatizacija procesov na operativnem nivoju

• Posledica: akumulacija velikih količin podatkov v PB transakcijskih sistemov

• Danes poudarek različnim načinom uporabe teh podatkov za podporo odločitvenim procesom z namenom pridobiti strateško prednost pred konkurenco!

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 5 -

Evolucija podatkovnih skladišč…• Podpora odločanju na operativnem in taktičnem

nivoju tudi v nekaterih transakcijskih IS � poročila, sumarni pregledi, grafi, …

• Problem več transakcijskih IS. Področja obravnavana ločeno, po svoje…

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 6 -

Evolucija podatkovnih skladišč

• Potrebujemo podatkovno skladišče, ki:

– predstavlja arhiv vseh podatkov na enem mestu,

– predstavlja vir znanja in

– omogoča enoten in hkrati uporabniku prilagojen in konsolidiran pogled na (sumarizirane, zgodovinske, ..) podatke.

• Podatkovna skladišča predstavljajo vir podatkov za različna orodja za podporo odločanju:

– Relacijska orodja,

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 7 -

Podatkovno skladišče kot vir podatkov

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 8 -

Primer: Data Warehouse Architect

Page 267: OPB_predavanja

3

Lastnosti podatkovnega skladišča

• Definicija:

– Podatkovno skladišče je vsebinsko organizirana, integrirana, časovno odvisna in nespremenljivazbirka podatkov za namene podpore odločitvenim procesom.

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 9 -

Vsebinska organizacija podatkov

• Organizacija podatkovnega skladišča temelji na glavnih entitetah podjetja, npr.:

– stranka,

– izdelek,

– regija,

– račun,…

• Ne temelji na funkcionalnih področjih oz. področjih, ki jih pokrivajo posamezni transakcijski sistemi!

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 10 -

Integriranost

• Podatkovno skladišče integrira podatke iz več aplikativnih sistemov v okviru IS podjetja.

• Podatki večkrat nekonsistentni. Naloga skladišča je, da omogoči konsistenten pogled na podatke!

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 11 -

Časovna odvisnost

• Podatki v skladišču veljavni za določen časoziroma interval.

• Za podatek v podatkovnem skladišču moramo poznati čas prenosa in čas veljavnosti.

• Časovna odvisnost večkrat prikazana v razširjenem časovnem formatu (poleg leta še kvartal, četrtletje)

• Časovna odvisnost omogoča opazovanje trendov

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 12 -

Page 268: OPB_predavanja

4

Nespremenljivost

• Podatki v podatkovnem skladišču niso podvrženi spremembam v realnem času s strani aplikacij!

• Osveževanje (iz transakcijskih sistemov in ostalih virov) z neko (smiselno) frekvenco

– Osveževanje: večinoma le dodajanje novih podatkov v podatkovno skladišče.

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 13 -

DW in OLTP..

• Podatkovno skladišče: DW – Data Warehouse

• OLTP – On Line Transaction Processing

• Praviloma imamo za DW in OLTP različne instance podatkovne baze

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 14 -

DW in OLTP..

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 15 -

Vir: Connolly, str. 1153

DW in OLTP…

• Primeri vprašanj za OLTP…

– Kakšen je bil celoten prihodek podjetja v prvem kvartalu 2011?

– Kakšen je bil celoten prihodek iz prodaje nepremičnin za vsak tip nepremičnine v Veliki Britaniji v letu 2003?

– Katera so tri najbolj popularna področja v velikih mestih za najem nepremičnin v 2004 in kako je to v primerjavi s preteklimi tremi leti.

– Kakšen bi bil učinek na prodajo nepremičnin v različnih regijah Velike Britanije če bi cene nepremičnin, dražjih od 100.000 funtov povečali

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 16 -

Page 269: OPB_predavanja

5

DW in OLTP

• Primeri vprašanj za OLTP

– Katere vrste nepremičnin se prodajajo s ceno, ki je večja od povprečne cene nepremičnin v glavnih mestih Velike Britanije in v kakšni korelaciji je to z demografskimi podatki?

– Ali obstaja signifikantna povezava med celotnim prihodkom, generiranim v posamezni nepremičninski agenciji, in številom agentov v tej agenciji?

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 17 -

Problemi z uvajanjem pod. skladišč..

• Podcenjevanje potrebnega časa in resursov za polnjenje podatkovnih skladišč (čiščenje)

• Skriti problemi transakcijskih in drugih sistemov, ki predstavljajo podatkovni vir (Izvorni sistemi)

• Manjkajoči podatki: v izvornih sistemih se nekateri pomembni podatki niso zajemali

• Večja zahtevnost s strani končnih uporabnikov ali nerealne zahteve

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 18 -

Problemi z uvajanjem pod. skladišč

• Homogenizacija podatkov in problemi pri integraciji

– Načrtovalec DW ima včasih probleme pri združevanju podatkov iz različnih izvornih sistemov in pri tem lahko prihaja do napak

• Velika poraba diskovnega prostora

• Lastništvo podatkov

• Zahtevno vzdrževanje

• Izgradnja in vzpostavitev DW praviloma dolgotrajen projekt

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 19 -

Arhitektura DW…

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 20 -

Page 270: OPB_predavanja

6

Arhitektura DW..

• Izvorni sistemi (Operational Data Sources):

– Podatkovne baze transakcijskih aplikativnih sistemov

– Internet

– Ostali viri

• Repozitorij (Operational Data Store):

– Repozitorij podatkov podatkovnega skladišča

– Večkrat vmesni člen pri prenosu podatkov v DW

– Vzpostavljen predvsem v primerih, ko so med izvornimi sistemi stari sistemi, do katerih DW ne more direktno dostopati

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 21 -

Arhitektura DW…

• Upravljalec prenosa podatkov (LoadManager):

– Izvaja vse operacije vezane na ekstrakcijo podatkov in prenos podatkov v DW: transformacije in čiščenje podatkov

– Podatke prenaša bodisi direktno iz izvornih sistemov bodisi preko Repozitorija

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 22 -

Arhitektura DW…

• Upravljalec DW (Warehouse Manager):

– Upravlja s podatki v DW

– Izvaja operacije nad podatki:

• Analizira podatke za zagotavljanje konsistentnosti

• Transformira podatke iz izvornih sistemov in jih združuje (integrira)

• Kreira indekse in poglede nad tabelami

• Generira (odkriva in kreira) denormalizacije (če je potrebno)

• Generira agregacije (če je potrebno)

• Izvaja arhiviranje podatkov in izdelovanja varnostnih kopij

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 23 -

Arhitektura DW…

• Upravljalec poizvedb (Query Manager):

– Izvaja vse operacije vezane na poizvedbe uporabnikov

– Izdeluje plane izvajanja poizvedb in urnike za izvajanje poizvedb

– Izdeluje profile poizvedb, kar omogoča Upravljalcu DW, da določi, katere indekse in agregacije potrebuje

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 24 -

Page 271: OPB_predavanja

7

Arhitektura DW…

• Različni nivoji “agregiranosti” podatkov:

– Podrobni oz. transakcijski podatki (Detailed Data), ki predstavljajo vir za višja dva nivoja

– Delno in visoko agregirani podatki (Lightly andHighly Summarized Data), ki jih generira Upravljalec DW. Cilj agregiranih podatkov je pohitritev izvajanja poizvedb. Ta del DW se spreminja glede na spremembe profilov poizvedb

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 25 -

Arhitektura DW…

• Arhivski podatki in varnostne kopije (Archive/Backup Data):

– Za arhiviranje/hranjenje podrobnih in agregiranihpodatkov

– Pomembno je izdelati varnostno kopijo agregiranih podatkov, če ne bomo arhivirali podrobne podatke

• Meta podatki (Metadata):

– Gre za ekvivalent podatkovnega slovarja oz. sistemskega kataloga pri SUPB oz. instanci podatkovne baze

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 26 -

Arhitektura DW

• Meta podatki se uporabljajo:

– Pri ekstrakciji in polnjenju DW (polnjenje DW)

– Pri izdelavi agregiranih tabel (upravljanje DW)

– Pri poizvedbah, ko na podlagi meta podatkov Upravljalec poizvedb določi najprimernejši podatkovni vir in uporabo najprimernejšega indeksa (delovanje DW)

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 27 -

Podatkovni tokovi…

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 28 -

Page 272: OPB_predavanja

8

Orodja za dostop do DW

• DW mora podpirati učinkovite ad-hoc in rutinske analize.

– Visoka učinkovitost dosežena s pred-planiranjem povezav, agregacij, periodičnih poročil itn.

• Tipična orodja končnih uporabnikov:

– Orodja za poročila in poizvedovanje,

– Razvojna orodja,

– Direktorski IS,

– OLAP orodja,

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 29 -

Generatorji poročil

• Priprava in generiranje poročil – različna orodja za pripravo standardnih poročil (navadno desktop aplikacije) ter generatorji poročil (strežnike aplikacije).

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 30 -

Orodja za poizvedovanje

• Orodja za poizvedovanje – orodja za poizvedovanje po relacijskih DW sprejmejo SQL na vhodu ali generirajo SQL. QBE stil. za kompleksne poizvedbe manj primerna.

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 31 -

Razvojna okolja

• Razvojna okolja – če uporabniških zahtev ni moč realizirati z orodji za generiranje poročil ali poizvedovalnimi orodji, potrebno razviti uporabniško aplikacijo.

• Na voljo mnoga razvojna okolja. Večina omogoča povezavo s poljubnimi SUPB ter OLAP mnogimi orodji.

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 32 -

Page 273: OPB_predavanja

9

Direktorski informacijski sistemi

• Direktorski informacijski sistemi – inicialno razviti za potrebe najvišjega vodstva in podporo strateškemu odločanju. Danes podpirajo odločanje na vseh ravneh.

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 33 -

OLAP orodja

• OLAP orodja – zasnovana na konceptu več-dimenzionalnih PB. Izkušenim uporabnikom omogočajo analiziranje podatkov s pomočjo kompleksnih več-dimenzijskih pogledov.

• Primeri poizvedb: merjenje učinkovitosti marketinške akcije, napovedovanje prodaje, planiranje virov ipd.

• Kot vir za OLAP orodja potrebujemo podatke, organizirane v posebne več-dimenzijske modele.

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 34 -

Data mining

• Data mining – proces odkrivanja korelacij med podatki, vzorcev in trendov z analizo velike količine podatkov in uporabo matematičnih in statističnih metod ter tehnik umetne inteligence.

• V primerjavi z OLAP orodji data mining ponuja tudi predikcijo in ne le restrospektive!

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 35 -

Orodja in tehnologije področja DW

• Pri izgradnji in vpeljavi DW pogosto uporaba orodij različnih proizvajalcev � dodaten element v kompleksnosti procesa razvoja in vpeljave DW

• Doseči “sodelovanje” več orodij je večkrat velik izziv

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 36 -

Page 274: OPB_predavanja

10

SUPB za DW…• Standardni SUPB imajo posebne dodatne

funkcionalnosti za potrebe DW.

• Karakteristike polnjenja

– Visoke zahteve za polnjenje, zahteva po sposobnosti polnjenja več milijonov vrstic na uro

– Brez omejitev navzgor

• Procesiranje pri polnjenju

– Konverzije tipov, transformiranje, filtriranje, preverjanje konsistentnosti (lokalne in globalne)

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 37 -

SUPB za DW

• Odzivnost poizvedb

• Upravljanje z enormnimi količinami podatkov

– SUPB ne sme imeti omejitev za količino podatkov

• Možnost sočasne uporabe s strani veliko uporabnikov

• DW kot distribuirana PB

• Podpora več-dimenzionalnim podatkovnim strukturam (za potrebe OLAP orodij)

• Razširjen nabor funkcionalnosti pri poizvedbahPODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 38 -

Data Mart…

• Data mart je del (podmnožica) DW, ki pokriva zahteve določenega oddelka ali funkcionalnega področja – področno podatkovno skladišče (PPS)

• Značilnosti PPS:

– Fokusiran na zahteve določenega oddelka ali funkcionalnega področja

– Praviloma ne vsebuje podrobnih transakcijskih podatkov, le sumarne podatke

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 39 -

Data Mart…

PODATKOVNE BAZE

Modul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 40 -

Page 275: OPB_predavanja

11

Data Mart…

• Razlogi za kreiranje PPS:

– Dati uporabnikom na voljo le podatke, ki jih najpogosteje analizirajo

– Omogočiti posameznikom ali skupinam, da opazujejo podatke (oddelka ali funkcionalnega področja) formatirane na način, na katerega so navajeni

– Izboljšati odzivne čase zaradi manjše količine podatkov

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 41 -

Data Mart - primer

PODATKOVNE BAZEModul: Podatkovna skladišča©Laboratorij za podatkovne tehnologije

- 42 -