informatika predmet: podatkovne baze

ŠOLSKI CENTER VELENJE
VIŠJA STROKOVNA ŠOLA
Trg mladosti 3, 3320 VELENJE
PROGRAM: INFORMATIKA
PREDMET: PODATKOVNE BAZE
LETNIK: 1.
Gradivo za interno uporabo
julij, 2006
Srečko Zorman, univ. dipl. inž.
Kazalo
1
OSNOVNI POJMI ........................................................................................................................ 5
2
SISTEMI ZA UPRAVLJANJE ZBIRK PODATKOV.............................................................. 6
2.1
PREDNOSTI IN SLABOSTI SISTEMOV ZA URAVLJANJE ZBIRK PODATKOV....................... 8
2.1.1 CILJI OBLIKOVANJA ZBIRKE PODATKOV .................................................................... 9
2.2
ARHITEKTURA ZBIRKE PODATKOV ................................................................................... 10
3
ŽIVLJENSKI KROG ZBIRKE PODATKOV ......................................................................... 12
3.1
KORAKI USTVARJANJA OZ. OBLIKOVANJA ZBIRKE PODATKOV......................................... 12
PODATKOVNI PRISTOP (BATINI)....................................................................................... 13
3.2
KONCEPTUALNO MODELIRANJE ZBIRKE PODATKOV............................................ 14
Koraki oblikovanja konceptualnega modela zbirke podatkov....................................................... 15
3.3
PODATKOVNI MODELI (DATA MODEL) ................................................................................. 17
Hierarhični podatkovni model............................................................................................... 17
Mrežni podatkovni model ..................................................................................................... 17
Relacijski podatkovni model ................................................................................................. 17
Objektno relacijski podatkovni model................................................................................... 18
Objektni podatkovni model ................................................................................................... 18
3.3.1 ENTITETNO RELACIJSKI (E-R) MODEL ....................................................................... 19
3.3.2 OSNOVNI GRADNIKI E-R MODELA .............................................................................. 19
3.3.3 GRAFIČNA NOTACIJA E-R MODELA............................................................................ 21
4
CASE STUDIO ............................................................................................................................ 29
Spreminjanje lastnosti modela................................................................................................... 32
Spreminjanje nastavitev okolja.................................................................................................. 32
Skrivanje in prikazovanje orodne vrstice .................................................................................. 34
Orodne vrstice ........................................................................................................................... 34
Ustvarjanje entitete in določanje atributov................................................................................ 36
Spreminjanje atributov entitete.................................................................................................. 37
Postopek ustvarjanja ERD za evidenco lastnikov avtomobilov ................................................ 39
Ustvarjanje relacije.................................................................................................................... 42
Brisanje relacije......................................................................................................................... 46
Razporejanje elementov ERD ................................................................................................... 46
Ustvarjanje in spreminjanje indeksov ....................................................................................... 47
Uporaba pravil........................................................................................................................... 48
Ustvarjanje poročil .................................................................................................................... 51
Ustvarjanje skripte (DDL)......................................................................................................... 52
5
RELACIJSKI PODATKOVNI MODEL .................................................................................. 55
TERMINOLOGIJA IN OSNOVNA STRUKTURA............................................................. 55
RELACIJSKA INTEGRITETA – CELOVITOST ................................................................... 56
LASTNOSTI RELACIJ: ....................................................................................................... 57
5.2
PRETVORBA IZ E-R MODELA V RELACIJSKI PODATKOVNI MODEL..................... 57
5.1
6
NORMALIZACIJA .................................................................................................................... 59
6.1
POMEN NORMALIZACIJE .................................................................................................. 59
6.2
FUNKCIONALNA ODVISNOST........................................................................................... 60
6.3
FORMALNA PREDSTAVITEV FUNKCIONALNE ODVISNOSTI ....................................... 60
6.4
NORMALNE OBLIKE......................................................................................................... 61
FORMALNA DEFINICIJA NORMALNIH OBLIK........................................................................ 61
6.4.1 UPORABNA DEFINICIJA NORMALNIH OBLIK............................................................ 62
7
SISTEM ZA UPRAVLJANJE ZBIRK PODATKOV (SUZP)................................................ 65
FUNKCIJE SISTEMA ZA UPRAVLJANJE ZBIRK PODATKOV...................................................... 65
7.1
FIREBIRD................................................................................................................................ 70
Namestitev programa ................................................................................................................ 70
Ustavitev in zagon Firebirdovega servisa.................................................................................. 71
7.2
DATABASE WORKBENCH ...................................................................................................... 72
Namestitev programa Database Workbench ............................................................................. 72
Registracija Firebirdovega strežnika v DBW............................................................................ 74
Ustvarjanje nove prazne zbirke podatkov ................................................................................. 75
Ustvarjanje organizacije zbirke podatkov s SQL skripto .......................................................... 76
Vstavljanje podatkov s SQL skripto.......................................................................................... 78
8
POIZVEDOVALNI JEZIKI ..................................................................................................... 80
8.1
POIZVEDOVANJA S PRIMER ELEMENTI (QBE)........................................................................ 80
8.2
SQL (STRUCTURED QUERY LANGUAGE) .................................................................... 81
8.3
DML ...................................................................................................................................... 84
8.3.1 SELECT stavek .................................................................................................................. 84
Oblika SELECT stavka: ........................................................................................................ 85
Filter oz. pogoj poizvedbe ......................................................................................................... 87
Primerjalni operatorji ................................................................................................................ 88
BETWEEN................................................................................................................................ 89
NULL ........................................................................................................................................ 90
LIKE.......................................................................................................................................... 91
OPERATOR IN......................................................................................................................... 92
LOGIČNI OPERATORJI.......................................................................................................... 94
Razvrščanje rezultata poizvedbe ............................................................................................... 97
ZDRUŽITVENE FUNKCIJE ................................................................................................... 99
Združevanje po vrednostih polj - GROUP BY........................................................................ 102
HAVING ............................................................................................................................. 102
Združevanje (povezovanje) tabel - JOIN ................................................................................ 104
JOIN (združitev).................................................................................................................. 105
VZDEVKI TABEL in PREIMENOVANJE POLJ ............................................................. 107
Združitev tabele same s seboj.............................................................................................. 108
8.3.2 POGLEDI (VIEWS)......................................................................................................... 110
8.3.3 UGNEZDENE POIZVEDBE ........................................................................................... 112
8.3.4 ANY | SOME | ALL (UGNEZDENA POIZVEDBA) ....................................................... 114
8.3.5 UNION (UNIJA).............................................................................................................. 115
8.3.6 INSERT stavek................................................................................................................. 117
USTVARJANJE GENERATORJA - CREATE GENERATOR stavek ................................. 118
8.3.7 DELETE stavek ............................................................................................................... 121
8.3.8 UPDATE stavek............................................................................................................... 122
Spreminjanje podatkov v zbirki podatkov s pogledi ........................................................... 123
8.4
DDL (DATA DEFINITION LANGUAGE) ................................................................................ 124
8.4.1 CREATE TABLE stavek................................................................................................... 124
Ustvarjanje relacij.................................................................................................................... 126
VELJAVNOSTNA PRAVILA ............................................................................................... 127
8.4.2 ALTER TABLE stavek ..................................................................................................... 129
8.4.3 DROP TABLE stavek....................................................................................................... 134
8.4.4 INDEKSI.......................................................................................................................... 135
8.4.5 CREATE INDEX stavek................................................................................................... 136
8.4.6 ALTER INDEX stavek ..................................................................................................... 136
8.4.7 DROP INDEX stavek....................................................................................................... 136
8.4.8 CREATE DOMAIN stavek............................................................................................... 137
8.4.9 ALTER DOMAIN stavek.................................................................................................. 138
8.4.10 DROP DOMAIN stavek............................................................................................... 139
9
RELACIJSKA ALGEBRA ...................................................................................................... 140
9.1
OPERACIJE RELACIJSKE ALGEBRE ....................................................................................... 140
9.1.1 UNIJA.............................................................................................................................. 140
9.1.2 RAZLIKA ......................................................................................................................... 140
9.1.3 KARTEZIJSKI PRODUKT .............................................................................................. 141
9.1.4 PROJEKCIJA .................................................................................................................. 143
9.1.5 SELEKCIJA ..................................................................................................................... 143
9.1.6 PRESEK........................................................................................................................... 144
9.1.7 NARAVNI STIK ............................................................................................................... 145
9.1.8 θ − STIK .......................................................................................................................... 145
9.1.9 KOLIČNIK....................................................................................................................... 146
9.1.10 PRIORITETA OPERACIJ ........................................................................................... 146
9.1.11 Združitvene funkcije .................................................................................................... 148
10
TRANSAKCIJE .................................................................................................................... 149
11
ORGANIZACIJA DATOTEK............................................................................................. 151
11.1 KOPICA - NEUREJENA (ZAPOREDNA) DATOTEKA.................................................. 152
11.2 UREJENE DATOTEKE...................................................................................................... 152
11.3 DATOTEKE S POMOČJO SEKLJALNIH FUNKCIJ (DIREKTNE, NAKLJUČNE
DATOTEKE) .................................................................................................................................. 152
11.4 INDEKSNE DATOTEKE................................................................................................... 153
12
ADMINISTRIRANJE ZBIRKE PODATKOV .................................................................. 158
12.1
12.2
ADMINISTRATOR PODATKOV ..................................................................................... 158
ADMINISTRATOR ZBIRKE PODATKOV ...................................................................... 159
1
OSNOVNI POJMI
S podatki se srečujemo na vsakem koraku. V poslovnih sistemih je vedno manj delovnih mest, kjer
zaposleni nimajo posredno ali neposredno opravka s podatki. Pri poslovnih in privatnih aktivnostih se
srečujemo z vedno večjimi količinami podatkov. Že vsako preprosto srečanje ali športno druženje
zahteva ustrezne evidence za organizacijo srečanja ali športnih iger. V preteklosti se je uporabljalo
predvsem ročno zapisovanje podatkov na kartoteke (npr. zdravstvena kartoteka, športni karton ...). V
sodobni informacijsko komunikacijski družbi pa se vedno več podatkov shranjuje in obdeluje v
elektronski obliki (zdravstvena kartica, elektronska plačila ...).
Danes se za shranjevanje in obdelavo evidenc podatkov uporabljajo sistemi za upravljanje zbirk
podatkov.
PODATEK
Dogodke in pojave opisujemo s podatki. Podatke lahko zabeležimo na različne načine (jezik, slika ...)
na različnih medijih (papir, magnetni mediji ...). Podatki nam brez ustrezne interpretacije ne povedo
veliko. Npr. avtobusni vozni redi imajo zapisane ure prihodov in odhodov avtobusov v različnih
barvah. Če ne vemo pomena posameznih barv, potem je takšen vozni red za nas neuporaben. Podatek
je lahko besedilo, številka, slika itd.
Definicija:
• Podatek je predstavitev dejstva, koncepta na formalen način (ANSI, ISO).
• Podatek je poljubna predstavitev s pomočjo simbolov ali analognih veličin, ki ji je pripisan ali
se ji lahko pripiše nek pomen.
Preprost primer so podatki o osebah, npr. Ana, Jure, Tine, 170, 180, 175.
Na osnovi teh podatkov ne moremo natančno določiti pomen podatkov. Glede na vrednosti
predpostavljamo, da predstavljajo imena oseb in telesne višine.
INFORMACIJA
Informacija je novo spoznanje, ki ga prejemnik informacije doda svojemu poznavanju sveta.
Spoznanje je posamezna sestavina znanja in je model enega od vidikov obravnavanega sveta.
Definicija:
Informacija je pomen, ki ga človek pripiše podatkom s pomočjo znanih konvencij, ki so uporabljene
pri njihovi predstavitvi (ANSI, ISO).
Če Janezu sporočimo, da je Jure visok 180 cm, je to sporočilo za Janeza informacija, če ima za Janeza
(prejemnika) novo sporočilno vrednost.
SISTEM ZBIRKE PODATKOV
Sistem zbirke podatkov je skupek pripomočkov (programska + strojna oprema) in ljudi, katerih naloga
in zmožnost je odgovorno ustvarjanje, hranjenje in vzdrževanje zbirke podatkov.
SISTEM ZA UPRAVLJANJE ZBIRK PODATKOV
Sistem za upravljanje zbirk podatkov (angl. DataBase Management System - DBMS) je programska
aplikacija, ki uporabniku omogoča delo z zbirkami podatkov in hkrati nadzoruje dostop do zbirk
podatkov.
Značilnosti:
• sistem za upravljanje zbirk podatkov omogoča delo z zbirkami podatkov;
• zbirka podatkov vsebuje zbirko povezanih podatkov o zaključeni celoti (subjektu, poslovnem
sistemu, izobraževalni ustanovi …);
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 5/160
•
•
2
sistem za upravljanje zbirk podatkov je okolje, ki je najustreznejše za podatkovne aplikacije:
bančne aplikacije, trgovske aplikacije, letalske aplikacije, izobraževalne aplikacije, proizvodne
aplikacije …;
z zbirkami podatkov se srečujemo v vseh vidikih našega življenja.
SISTEMI ZA UPRAVLJANJE ZBIRK PODATKOV
Kompleksnejši:
• ORACLE (http://www.oracle.com),
• Microsoft SQL Server (http://www.microsoft.com/sql/default.mspx),
• IBM DB2 (http://www.ibm.com/software/data/db2),
• Ingres SQL Server (http://opensource.ingres.com/projects/ingres),
• PostgreSQL (http://www.postgresql.org),
• MySQL (http://www.mysql.com),
• Firebird (http://www.firebirdsql.org),
• …
V večjih poslovnih sistemih imata največji tržni delež ORACLE in Microsoft SQL Server.
Slika 1: SUZP (najpogosteje uporabljena sistema)
Od naštetih sistemov so odprtokodni Ingres, PostgreSQL, MySQL in Firebird.
Slika 2: SUZP (odprtokodni sistemi)
Enostavnejši:
• Microsoft Access (pisarniška zbirka Microsoft Office),
• Paradox (Borland) …
Datotečni sistem je zbirka aplikacijskih programov, ki zagotavljajo servis končnemu uporabniku.
Vsak izmed programov definira in uporablja lastne podatke.
Pojmi:
• PODATEK (angl. DATA)
Dejstvo z relativno malo pomena. Najmanjši še prepoznavni del podatka je posamezen znak.
• POLJE (angl. FIELD)
Skupina znakov s specifičnim pomenom.
• ZAPIS (angl. RECORD)
Logično povezana množica enega ali več polj, ki opisujejo nek objekt.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 6/160
•
DATOTEKA (angl. FILE)
Zbirka povezanih zapisov.
Slabosti shranjevanja podatkov v datotečne sisteme:
! podatki so shranjeni v ločenih datotekah (otežen dostop, ovirana razpoložljivost podatkov,
dodatno delo programerja);
! večkratno shranjevanje podatkov je praviloma nenadzorovano (dodatni stroški, omejena
možnost porazdeljevanja podatkov, izguba podatkovne celovitosti);
! izdelani programi so vezani na podatkovno strukturo datotek;
! struktura datotek je vezana na uporabljen programski jezik;
! nove poizvedbe zahtevajo dodatne aktivnosti programerja;
! nova aktivnost zahteva spremembe programa;
! veljavnostna pravila (npr. ocena je celo število med 1 in 10) so del programa in vsaka
sprememba le - tega zahteva spremembo programa;
! varnostni problemi …
Sistemi za upravljanje zbirk podatkov predstavljajo rešitev vseh omenjenih problemov.
Danes ni industrije ali dejavnosti, ki ne bi bila tako ali drugače povezana z zbirko podatkov.
Zbirka podatkov predstavlja jedro (srce) informacijskega sistema vsakega poslovnega sistema.
Preverjanje razumevanje
1. Izberite značilnost, ki ne velja za sisteme za upravljanje zbirk podatkov?
a) Sistem za upravljanje zbirk podatkov omogoča shranjevanje, spreminjanje, brisanje in
poizvedovanje podatkov v zbirki podatkov.
b) Odprtokodni sistemi za upravljanje zbirk podatkov so na voljo samo za operacijski sistem
Linux.
c) Sistem za upravljanje zbirk podatkov je okolje, ki je najustreznejše za podatkovne aplikacije:
bančne aplikacije, trgovske aplikacije, letalske aplikacije, izobraževalne aplikacije, proizvodne
aplikacije …
d) Sistem za upravljanje zbirk podatkov je programska aplikacija.
2. Med naštetimi sistemi za upravljanje zbirk podatkov izberite tista dva, ki se v praksi najpogosteje
uporabljata v večjih poslovnih sistemih.
a) MySQL
b) ORACLE
c) PostgreSQL
d) Microsoft SQL Server
e) Firebird
3. Izberite pravilno tujo kratico za sistem za upravljanje zbirk podatkov.
a) DBM
b) DBMS
c) MDB
d) CASE
4. Izberite sistem za upravljanje zbirk podatkov, ki je v Microsoftovi pisarniški zbirki.
a) MySQL
b) Microsoft SQL Server
c) PostgreSQL
d) Access
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 7/160
2.1
PREDNOSTI
PODATKOV
IN
SLABOSTI
SISTEMOV
ZA
URAVLJANJE
ZBIRK
Danes ni industrije ali dejavnosti, ki ne bi bila tako ali drugače povezana z zbirko podatkov. Zbirka
podatkov predstavlja jedro (srce) informacijskega sistema vsakega poslovnega sistema.
podatki
(okolje)
poročila
AŽURIRANJE
POROČILA
Zbirka
podatkov
UPORABNIŠKI
PROGRAM
vhod
rezultati
UPORABNIŠKI
PROGRAM
vhod
rezultati
Slika 3: V jedru so podatki v zbirki podatkov
Središče obdelave podatkov je zbirka podatkov. Uporabniki uporabljajo obrazce, poročila in ostale
predmete uporabniških aplikacij za dodajanje, spreminjanje, brisanje in poizvedovanje. Večina
uporabniških aplikacij je razvita z modelom odjemalec - strežnik.
Novejše programske aplikacije so razvite kot spletne aplikacije. Uporabniki uporabljajo informacijski
sistem v spletnem brskalniku. Posodobitve programskih aplikacij ne zahtevajo namestitve novih verzij
aplikacije na strani uporabnika. Posodobitve programske aplikacije se izvedejo le na strežniku, kar
bistveno zmanjša stroške vzdrževanja aplikacij.
PREDNOSTI
" Nadzor redundance (odvečnost) podatkov
Sistem za upravljanje zbirk podatkov ne odstrani redundance v celoti, vendar jo nadzoruje.
" Celovitost (angl. consistency)
Nadzorovana redundanca (odvečnost podatkov) zagotavlja tudi celovitost podatkov. Vsi podatki v
zbirki podatkov so veljavni oz. ustrezni. Predvsem je to potrebno zagotoviti pri povezavah (relacijah)
med različnimi tabelami (odvisnost »starš - otrok«).
" Ista količina podatkov nudi več informacij in delitev podatkov
Integracija operativnih podatkov omogoča izpeljavo dodatnih informacij iz istih podatkov, ki so
shranjeni le na enem mestu in so na voljo vsem avtoriziranim uporabnikom, ki imajo pravico dela s
podatki.
" Večja integriteta
Integriteta se nanaša na celovitost in veljavnost podatkov in je izražena v obliki omejitev, kar podpira
sistem za upravljanje zbirk podatkov (povezave med tabelami).
" Večja varnost
Podatki v zbirki podatkov so zaščiteni pred nepooblaščenimi dostopi (uporabniki imajo dodeljene
pravice oz. dovoljenja).
" Uveljavljanje standardov
Uveljavimo lahko interne ali mednarodne standarde, povezane s formatom podatkov, izmenjavo
podatkov, poizvedovanji in podobno.
" Prihranek denarja
Prihranek stroškov ob združitvi vseh podatkov v eni zbirki podatkov za različne aplikacije.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 8/160
" Večja dostopnost in odzivnost
Poveča se funkcionalnost sistema …
" Večja produktivnost
Sistem za upravljanje zbirk podatkov prevzame nekatere naloge programerja.
" Enostavnejše vzdrževanje na osnovi podatkovne neodvisnosti
V zbirki podatkov so opisi podatkov in ločeni podatki, kar povečuje podatkovno neodvisnost in ločuje
spremembe na posameznih nivoji.
" Večja sočasnost (angl. concurrency)
Hkratni pristopi so nadzorovani.
" Preverjanje varnostne kopije in servis ponovne vzpostavitve
Minimalna izguba podatkov pri procesiranju.
SLABOSTI
" Kompleksnost
Sistem za upravljanje zbirk podatkov predstavlja zahteven programski paket, ki ga morajo uporabniki
razumeti, če ga želijo v celoti izkoristiti. Poleg poznavanja omenjenega sistema pa morajo načrtovalci
poznati tudi vse značilnosti in omejitve obravnavanega problema.
" Velikost
Kompleksnost je povezana tudi z velikostjo in zasedanjem pomnilniškega prostora.
" Cena SUPB
Kompleksni sistemi za upravljanje zbirk podatkov so dragi. Cena je odvisna od velikosti poslovnega
sistema oz. števila uporabnikov, ki lahko sočasno uporabljajo zbirke podatkov.
" Dodatni stroški za strojno opremo
Močnejši in učinkovitejši računalniki ...
" Cena prehoda
Nova oprema, izobraževanje in dodatno zaposlovanje poveča ceno prehoda.
" Izvedba
Posebne aplikacije so lahko hitrejše z uporabo datotečnega sistema ...
2.1.1
CILJI OBLIKOVANJA ZBIRKE PODATKOV
Cilj oblikovanja je učinkovita zbirka podatkov, ki:
! zadovolji vse informacijske zahteve oz. potrebe vseh možnih potencialnih uporabnikov področja
uporabe,
! zagotovi "naravno" in lahko razumljivo strukturiranje informacijske vsebine,
! ohrani celotno semantično informacijo oblikovanja za poznejše preoblikovanje,
! doseže vse zahteve procesiranja in visoko stopnjo učinkovitosti procesiranja,
! doseže logično neodvisnost za vprašanja na tem nivoju.
Posledica slabega oblikovanja zbirke podatkov so slabe odločitve na vseh nivojih upravljanja
poslovnih sistemov.
Če je zbirka podatkov dobro načrtovana oz. strukturirana, potem je preprosto:
! spreminjanje in vzdrževanje strukture zbirke podatkov,
! spreminjanje podatkov,
! poizvedovanje oz. zajemanje informacij,
! ustvarjanje uporabniških aplikacij.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 9/160
Preverjanje razumevanje
1. Izmed naštetih značilnosti izberite tisto, ki predstavlja slabost sistemov za upravljanje zbirk
podatkov?
a) Podatki v zbirki podatkov so zaščiteni pred nepooblaščenimi dostopi.
b) Sistem za upravljanje zbirk podatkov prevzame nekatere naloge programerja.
c) Nadzorovana redundanca (odvečnost podatkov) zagotavlja tudi celovitost podatkov. Vsi
podatki v zbirki podatkov so veljavni oz. ustrezni.
d) Sistem za upravljanje zbirk podatkov predstavlja zahteven programski paket, ki ga morajo
uporabniki razumeti, če ga želijo v celoti izkoristiti.
2. Večina komercialnih sistemov za upravljanje zbirk podatkov ima podoben način določitve cene
SUZP. Izberite trditev, ki je najustreznejša za določitev cene komercialnega SUZP.
a) Cena komercialnega sistema za upravljanje zbirk podatkov je odvisna od števila zaposlenih v
poslovnem sistemu.
b) Cena komercialnega sistema za upravljanje zbirk podatkov je odvisna od števila
uporabnikov, ki lahko sočasno uporabljajo zbirke podatkov.
c) Cena odprtokodnega sistema za upravljanje zbirk podatkov je odvisna od števila
uporabnikov, ki lahko sočasno uporabljajo zbirke podatkov.
3. Katera trditev ni posledica dobro načrtovane oz. strukturirane zbirke podatkov?
a) Preprosto je spreminjanje in vzdrževanje strukture zbirke podatkov.
b) Zahtevano spremembo posameznega podatka moramo večkrat opraviti na različnih mestih
(tabelah) v zbirki podatkov.
c) Preprosto je spreminjanje podatkov, poizvedovanje oz. zajemanje informacij in ustvarjanje
uporabniških aplikacij.
2.2
ARHITEKTURA ZBIRKE PODATKOV
Zaposleni v poslovnih sistemih uporabljajo poslovni informacijski sistem le z vidika opravljanja svojih
delovnih funkcij. Le v manjših poslovnih sistemih morajo zaposleni pri svojem delu uporabljati
celoten informacijski sistem. V teh primerih so informacijski sistemi nekoliko preprostejši.
Arhitektura zbirke podatkov predstavlja različne nivoje abstrakcije podatkov.
Trinivojska arhitektura:
•
ZUNANJI NIVO (angl. external level)
Uporabniški pogled na zbirko podatkov oz. opis dela zbirke podatkov, ki je pomemben za opravljanje
delovnih nalog posameznega uporabnika. Aplikacijski programi končnemu uporabniku skrijejo
podrobnosti o podatkovnih tipih.
Predstavljen je z entitetami, atributi, relacijami lastnega realnega okolja.
Različne predstavitve istih podatkov za potrebe opravljanja delovnih nalog.
•
KONCEPTUALNI NIVO (angl. conceptual level)
Skupen pogled (angl. global view) na zbirko podatkov je predstavljen z vsemi entitetami, relacijami in
pripadajočimi atributi, omejitvami, semantičnimi informacijami o podatkih …
•
NOTRANJI NIVO (angl. internal level)
Fizična predstavitev zbirke podatkov na računalniku. Opisi, kako so podatki shranjeni v zbirki
podatkov: opis zapisov skupaj s podatki, enkripcijske tehnike in stiskanje podatkov.
Za fizično organizacijo podatkov je zadolžen operacijski sistem ob podpori sistema za upravljanje
zbirke podatkov.
ANSI - American National Standard Institute; SPARC - Standard Planning And Requirements
Comitee
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 10/160
POGLED 1
...
POGLED 2
POGLED N
zunanji
nivo
konceptualni
nivo
KONCEPTUALNA
SHEMA
NOTRANJA
SHEMA
notranji
nivo
ZBIRKA
PODATKOV
fizična
organizacija
podatkov
Slika 4: Trinivojska arhitektura (ANSI-SPARC)
S trinivojsko arhitekturo je zagotovljena podatkovna neodvisnost. Podatkovna neodvisnost določa,
da spremembe na nižjem nivoju ne vplivajo na višji nivo.
Ločimo:
! LOGIČNO PODATKOVNO NEODVISNOST
Zunanji nivo (pogledi) je imun na spremembe na konceptualnem nivoju.
! FIZIČNO PODATKOVNO NEODVISNOST
Spremembe na notranjem nivoju (shemi) ne vplivajo na spremembe na konceptualnem nivoju.
Preverjanje razumevanje
1. Izberite nivo abstrakcije podatkov v zbirki podatkov, s katerim se pri opravljanju svojih delovnih
nalog srečuje največ zaposlenih v poslovnih sistemih?
a) zunanji nivo
b) konceptualni nivo
c) fizični nivo
2. Pravilno povežite slovenske in angleške izraze za nivoje trinivojske arhitekture zbirke podatkov.
zunanji nivo
internal level
konceptualni nivo
external level
fizični nivo
conceptual level
3. Izberite pravilno trditev za podatkovno neodvisnost.
a) Velika podatkovna neodvisnost zagotavlja, da zahtevane spremembe na nižjem nivoju
abstrakcije zbirke podatkov povzročijo veliko sprememb na višjem nivoju abstrakcije.
b) Velika podatkovna neodvisnost zagotavlja, da zahtevane spremembe na nižjem nivoju
abstrakcije zbirke podatkov povzročijo malo sprememb na višjem nivoju abstrakcije.
c) Mala podatkovna neodvisnost zagotavlja, da zahtevane spremembe na nižjem nivoju
abstrakcije zbirke podatkov povzročijo malo sprememb na višjem nivoju abstrakcije.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 11/160
3
ŽIVLJENSKI KROG ZBIRKE PODATKOV
Zbirka podatkov je osrednji del obdelav podatkov v poslovnem sistemu. Spremembe zakonodaje oz.
dodatne funkcionalne zahteve v poslovnem sistemu narekujejo spremembe in dopolnitve strukture
zbirke podatkov. Procesi, povezani z zbirko podatkov, se odvijajo v »začaranem« krogu. Zaključek oz.
implementacija posameznih poslovnih funkcij večkrat poteka že vzporedno z novimi zahtevami.
NAČRTOVANJE ZBIRKE
NAČRTOVANJE
PODATKOV ZBIRKE
PODATKOV
SISTEMSKE
SISTEMSKE
DEFINICIJE
DEFINICIJE
ZBIRANJE ZAHTEV
ZBIRANJE
ZAHTEV
IN ANALIZA
IN ANALIZA
OBLIKOVANJE ZBIRKE
PODATKOV
IZBIRA
IZBIRA
SISTEMA
ZA
SISTEMA ZA
UPRAVLJANJE
UPRAVLJANJE
ZBIRKE
ZBIRKE
PODATKOV
PODATKOV
KONCEPTUALNO
KONCEPTUALNO
NAČRTOVANJE
NAČRTOVANJE
NAČRTOVANJE
NAČRTOVANJE
APLIKACIJ
APLIKACIJ
LOGIČNO
LOGIČNO
NAČRTOVANJE
NAČRTOVANJE
FIZIČNO
FIZIČNO
NAČRTOVANJE
NAČRTOVANJE
PROTOTIPIRANJE
PROTOTIPIRANJE
IMPLEMENTACIJA
IMPLEMENTACIJA
VNOS PODATKOV
PODATKOV
INVNOS
PRETVORBE
IN PRETVORBE
TESTIRANJE
TESTIRANJE
OPERATIVNO
OPERATIVNO
VZDRŽEVANJE
VZDRŽEVANJE
Slika 5: Življenjski krog zbirke podatkov
ZUNANJI MODEL
ZUNANJI MODEL
LOGIČNO
OBLIKOVANJE
ZBIRKE
PODATKOV
KONCEPTUALNI
KONCEPTUALNI
MODEL
MODEL
NOTRANJI
NOTRANJI
MODEL
MODEL
FIZIČNO
FIZIČNO
SHRANJENA
SHRANJENA
ZBIRKA
ZBIRKA
PODATKOV
PODATKOV
KONCEPTUALNO
OBLIKOVANJE
ZBIRKE PODATKOV
LOGIČNO
OBLIKOVANJE
ZBIRKE PODATKOV
FIZIČNO
OBLIKOVANJE
ZBIRKE
PODATKOV
Slika 6: Ustvarjanje zbirke podatkov
3.1
KORAKI USTVARJANJA OZ. OBLIKOVANJA ZBIRKE PODATKOV
! KONCEPTUALNO OBLIKOVANJE
Oblikujemo model za informacijsko uporabo izbranega zaključenega organiziranega sistema (angl.
enterprise), ki je popolnoma neodvisen od logičnega in fizičnega oblikovanja.
! LOGIČNO OBLIKOVANJE
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 12/160
Ustvarimo (oblikujemo) model izbranega zaključenega organiziranega sistema za ciljno skupino
sistema za upravljanje zbirke podatkov.
! FIZIČNO OBLIKOVANJE
Proces priprave opisa implementacije zbirke podatkov v sekundarnem pomnilniku (opis podatkovne
strukture in metod dostopa) za izbrani ciljni sistem za upravljanje zbirk podatkov.
PODATKOVNI PRISTOP (BATINI)
svet
mentalni
model
konceptualni
model
logični model
Slika 7: Načrtovanje zbirke podatkov
Načrtovanje oz. oblikovanje zbirke podatkov je
kompleksen proces, ki zahteva odločitve na
različnih nivojih. Najprej načrtujemo oz.
oblikujemo zbirko podatkov in šele nato
aplikacijo.
Podatkovne
zahteve
KONCEPTUALNO
KONCEPTUALNO
NAČRTOVANJE
NAČRTOVANJE
Konceptualna
shema
LOGIČNO
LOGIČNO
NAČRTOVANJE
NAČRTOVANJE
Logična
shema
FIZIČNO
FIZIČNO
NAČRTOVANJE
NAČRTOVANJE
Fizična
shema
Slika 8: Podatkovni pristop načrtovanja
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 13/160
ZAČETNA
ZAČETNA
ŠTUDIJA
ŠTUDIJA
NAČRTOVANJE
NAČRTOVANJE
ZBIRKE
ZBIRKE
PODATKOV
PODATKOV
IMPLEMENTACIJA
IMPLEMENTACIJA
IN
POLNJENJE
IN POLNJENJE
TESTIRANJE IN
TESTIRANJE IN
VREDNOTENJE
VREDNOTENJE
OPERACIJE
OPERACIJE
VZDRŽEVANJE
VZDRŽEVANJE
IN
RAZVOJ
IN RAZVOJ
Analiza podjetja
Definiranje problema in omejitev
Definiranje dejstev
Definiranje namena
Načrtovanje konceptualnega,
logičnega in fizičnega modela
Izbor sistema za upravljanje zbirke
podatkov
Oblikovanje zbirke podatkov
Polnjenje zbirke podatkov
Testiranje zbirke podatkov
Vrednotenje zbirke podatkov in njenih
aplikacijskih programov
Oblikovanje zahtevanih
informacijskih tokov
Predstavitev sprememb
Izvedba rešitev
Slika 9: Življenjski krog zbirke podatkov
Preverjanje razumevanja
1. Izberite fazo načrtovanja zbirke podatkov, ki pri načrtovanju zbirke podatkov zahteva izbor
ciljnega sistema za upravljanje zbirke podatkov.
a) zbiranje in analiza zahtev
b) konceptualno in logično načrtovanje
c) fizično načrtovanje
d) implementacija zbirke podatkov
2.
Izberite najustreznejšo trditev za konceptualno načrtovanje zbirke podatkov.
a) V konceptualnem načrtovanju oblikujemo model za informacijsko uporabo izbranega
zaključenega organiziranega sistema (angl. enterprise), ki je odvisen od logičnega in fizičnega
oblikovanja.
b) V konceptualnem načrtovanju oblikujemo model za informacijsko uporabo izbranega
zaključenega organiziranega sistema (angl. enterprise), ki je popolnoma neodvisen od
logičnega in fizičnega oblikovanja.
c) V konceptualnem načrtovanju opišemo proces priprave implementacije zbirke podatkov v
sekundarnem pomnilniku za izbrani ciljni sistem za upravljanje zbirk podatkov.
3. Določite pravilno zaporedje korakov podatkovno vodenega pristopa načrtovanja zbirke podatkov.
konceptualno načrtovanje
podatkovne zahteve
fizično načrtovanje
logično načrtovanje
3.2
KONCEPTUALNO MODELIRANJE ZBIRKE PODATKOV
Konceptualni model predstavlja dokumentacijo strukture oz. organizacije zbirke podatkov.
Konceptualni model je enostaven, razumljiv in je osnova za komunikacijo z vsemi uporabniki v
poslovnem sistemu. Zbirko podatkov oblikujemo z uporabo konceptualnega modela.
Izhodiščna točka oblikovanja, katere rezultat je abstrakten in splošen opis problema, se imenuje
konceptualni model. Uporabljamo ga za različne namene.
Na začetku oblikovanja povezuje različne interese in vidike končnega uporabnika.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 14/160
Je uporaben opis, primeren za komunikacijo z uporabniki.
Oblikovalcu zbirke podatkov omogoča izgradnjo ustrezne organizacije (strukture) zbirke podatkov.
Omogoča učinkovito predstavitev oblikovane zbirke podatkov.
Konceptualni model predstavlja model okolja, ki ga moramo modelirati v informacijskem sistemu.
Vsak konceptualni model naj bi imel naslednje lastnosti:
! GRAFIČNA POPOLNOST
Vsi koncepti imajo svojo grafično predstavitev.
! MINIMALNOST
Vsak koncept, predstavljen v modelu, ima svoj pomen - posamezen koncept ni predstavljen s
pomočjo drugih osnovnih konceptov.
! IZRAZNOST
Razpolagamo z različnimi koncepti, prilagojenimi za modeliranje različnih aspektov sveta.
! PREPROSTOST
Enostavna uporaba in razumljivost za načrtovalce in tudi za uporabnike.
! FORMALNOST
Vsak koncept modela ima enoumno, natančno in dobro definirano interpretacijo.
! BERLJIVOST
Grafični simboli se med seboj jasno razlikujejo.
Modeliranje podatkov v fazi konceptualnega oblikovanja zbirke podatkov omogoča oblikovanje
abstraktne strukture zbirke podatkov za predstavitev realnega sveta na realen način.
Konceptualni model zagotavlja neodvisen razvoj zbirke podatkov (glede na strojno in programsko
opremo).
Namen konceptualnega modeliranja je doseči cilj: VSE KAR JE POTREBNO, JE V
KONCEPTUALNEM MODELU.
KORAKI OBLIKOVANJA KONCEPTUALNEGA MODELA ZBIRKE PODATKOV
•
•
•
podatkovna analiza in zbiranje zahtev,
oblikovanje E-R (angl. Entity-Relationship) modela oz. ERD (angl. Entity Relationship
Diagram),
normalizacija (angl. Normalization).
Podatkovna analiza in zbiranje zahtev
Opredelitev skupin uporabnikov in področij uporabe:
• opredelitev zaključenega organiziranega sistema in aplikacije,
• opredelitev uporabnikov informacij in njihovih pogledov na podatke v zbirki podatkov,
• uporaba informacij.
Analiza operativnega okolja in zahtev procesiranja:
• opredelitev trenutne uporabe informacij,
• opredelitev predvidene uporabe informacij v prihodnosti,
• določitev pogostosti uporabe podatkov,
• opredelitev pretvorb, potrebnih za zagotavljanje informacij.
Proučitev izvorov informacij in podatkov:
• pregled obstoječe dokumentacije in obstoječih sistemov,
• povpraševanja in intervjuji.
V vsebini določimo:
Ime in opis entitete
Čeprav že ime entitete nedvoumno predstavi entiteto (predmet), podamo tudi njen opis, ki predstavi
uporabo entitete in njene osnovne funkcije.
Atribut
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 15/160
Za vsako "lastnost" (atribut), ki opisuje entiteto, poskušamo zagotoviti naslednje informacije:
ime in opis: podamo seznam imen ter kratek opis posameznega atributa,
izvor, vir atributa: podan z organizacijskega vidika,
lastnost: določimo podatkovni tip atributa (numerični, znakovni itd.) ter dopustne in mejne vrednosti,
uporaba: navedemo podatke o uporabniku in pogostost uporabe atributa,
varnost: podatki o tem, kdo in kako ima dostop do atributa (branje, vpisovanje, popravljanje, brisanje),
pomembnost: kakšna je stopnja pomembnosti atributa za entiteto in celoten organiziran zaključen
sistem (nujno, priporočljivi itd.).
Arhiviranje
Podamo čas in način hranjenja podatkov, kakor tudi vzrok, če je znan (npr. zakonski predpisi).
Primer:
Entiteta AVTOMOBILI
Opis entitete: Evidenca osnovnih podatkov o avtomobilih.
Ključ
PK
Polje
RegistracijskaStevilka
TK
DavcnaStevilka
Znamka
Barva
Cena
Zap. št.
1.
Polje
Barva
2.
Cena
Zap. št.
1.
Polje
DavcnaStevilka
Opis polja
Registracijska
številka
Davčna številka
Znamka
Barva
Cena
Podatkovni tip
Varchar (15)
Primer vrednosti
CE-23-54A
Varchar (10)
Varchar (120)
Varchar (20)
Decimal (12,2)
25486524
Reanult
črna
12.600,00
Opis pravila
Možne vrednosti so 'črna', 'bela', 'siva', 'modra', 'rdeča',
'rumena', 'zelena', 'rjava', 'oranžna'.
Cena mora biti večja ali enaka 0.
Opis reference (povezave)
Kdo je lastnik avtomobila? Avtomobil je lahko tudi brez
lastnika (NULL).
Entiteta LASTNIKI
Opis entitete: Evidenca osnovnih podatkov lastnikov avtomobilov.
Ključ
PK
Polje
DavcnaStevilka
Ime
Priimek
DatumRojstva
ŠC VELENJE
Opis polja
Davčna številka
Ime
Priimek
Datum rojstva
INFORMATIKA
Podatkovni tip
Varchar (10)
Varchar (30)
Varchar (30)
Date
Primer vrednosti
25486524
Marko
Verdev
12.05.1985
Oblika:
dd.mm.llll
PODATKOVNE BAZE (1.letnik)
Stran 16/160
Preverjanje razumevanje
1. Izberite dve lastnosti, ki nista značilni za konceptualno modeliranje.
a) grafična popolnost
b) sledljivost
c) izraznost
d) preprostost
e) formalnost
f) uravnoteženost
g) berljivost
2. Določite pravilno zaporedje korakov oblikovanja konceptualnega modela.
normalizacija
oblikovanje E-R
podatkovna analiza in zbiranje zahtev
3. Izberite informacije, ki jih v analizi podatkovnih zahtev določimo vsakemu atributu.
a) ime in opis
b) starost
c) vrsta podatkov (podatkovni tip …)
d) uporaba (varnost …)
e) cena
f) pomembnost
3.3
PODATKOVNI MODELI (DATA MODEL)
Podatkovni model predstavlja abstrakten način predstavitve podatkov v informacijskih sistemih ali
zbirkah podatkov. Podatkovni model je zbirka orodij za opis podatkov, podatkovnih povezav,
podatkovnih omejitvenih pravil (angl. constraint).
Podatkovni model definira:
• kako so podatki organizirani v zbirki podatkov ali
• kako so podatki v posamezni poslovni funkciji logično organizirani.
Vrste podatkovnih modelov:
• hierarhični podatkovni model (angl. Hierarhical);
• mrežni podatkovni model (angl. Network);
• relacijski podatkovni model (angl. Relational);
• objektno relacijski podatkovni model (angl. Object - Relational);
• objektni podatkovni model (angl. Object).
HIERARHIČNI PODATKOVNI MODEL
Podatki so organizirani v obliki drevesne strukture, omogoča uporabo povezav starši/otroci (angl.
Parent/Child). Zapis otroka lahko ima le en zapis starša (povezava 1:N); zapis starša lahko ima več
zapisov otrok. Hierarhični podatkovni model je bil zelo pogosto uporabljen na začetku uporabe zbirk
podatkov v velikih sistemih za upravljanje zbirk podatkov. Glede na omejitve, ga pogosto ne moremo
uporabiti za ustrezno predstavitev strukture, ki obstaja v realnem svetu. Danes se zelo redko uporablja
v zbirkah podatkov. Pogosto pa se uporablja v pomenu shranjevanja podatkov (datotečni sistemi,
XML dokumenti …).
MREŽNI PODATKOVNI MODEL
V primerjavi s hierarhičnim podatkovnim modelom mrežni podatkovni model dovoljuje, da lahko ima
zapis več zapisov staršev in otrok.
RELACIJSKI PODATKOVNI MODEL
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 17/160
(avtor: Edgar Codd)
Relacijski podatkovni model temelji na predikatni logiki in teoriji množic. Vsi podatki so predstavljeni
kot matematične relacije, ki si jih lahko predstavljamo s tabelami. Relacijski podatkovni model se v
praksi najpogosteje uporablja.
OBJEKTNO RELACIJSKI PODATKOVNI MODEL
Razširitve relacijskega podatkovnega modela z vidika objektnega pristopa in novih podatkovnih tipov.
Atributi lahko vsebujejo kompleksnejše vrednosti: tabele, množice, ugnezdene relacije.
Primer:
Relacija KNJIGE
NASLOV
AVTOR (MNOŽICA)
PC Hardware in a Nutshell
Robert
Bruce Thompson,
Barbara F. Thompson
KLJUČNE
ZALOŽNIK (MNOŽICA)
O'Reilly
BESEDE
Motherboards,
Processors,
Memory, PC, Hard Disk Drives,
DVD Drives …
…
OBJEKTNI PODATKOVNI MODEL
Integracija objektne orientacije in značilnosti zbirk podatkov.
Razlog za nastanek je podpora shranjevanja v objektno orientiranih (OO) programskih jezikih.
Prednosti:
" bolj neposredna predstavitev in moduliranje problemov realnega sveta,
" prikrivanje podrobnosti implementacije,
" delitev objektov.
Definicija:
OO = abstraktni podatkovni tipi (ADT) + dedovanje + identiteta objektov
OO komponente
Abstraktni podatkovni tip: opis množice objektov z isto predstavitvijo. Razširitev podatkovnega tipa z
implementacijo uporabnikovega sporočila.
Dedovanje: nove module lahko ustvarimo na obstoječih modulih oz. hierarhiji modulov.
Identiteta objekta: lastnost objekta, ki je unikatno za vsak objekt in loči objekte med seboj.
Značilnosti OO PB =
ŠC VELENJE
trajnost (persistence) +
hkratnost +
transakcije +
ponovna vzpostavitev (recovery) +
povpraševanje +
zagotavljanje verzij +
integriteta PB +
varnost +
izvedljivost.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 18/160
3.3.1
ENTITETNO RELACIJSKI (E-R) MODEL
Entity-Relationship (E-R) Model oz. Entity-Relationship Diagram (ERD)
Poznavanje gradnikov in namena uporabe je predpogoj za oblikovanje oz. načrtovanje zbirke
podatkov.
E-R model je diagramska tehnika za opis konceptualnega modela zbirke podatkov. Vsebuje
grafično notacijo za predstavitev organizacije (strukture) zbirke podatkov v obliki entitetno relacijskih diagramov (ERD).
E-R model zagotavlja sistematično predstavitev entitet in relacij, ki dopolnjujejo pogled na entitete,
relacije in omejitve s ciljem zajeti vse neločljive pomene posamezne aplikacije.
Najpomembnejši prispevek E-R modela predstavlja diagramska tehnika, ki na jedrnat in opisen način
predstavlja podatkovni del aplikacije.
E-R diagram predstavlja komunikacijsko orodje za oblikovanje zbirke podatkov, zagotavlja
notacijo za dokumentiranje oblikovanja zbirke podatkov in s tem predstavitev
najpomembnejših lastnosti.
Prednosti:
• enostavno in hitro učenje,
• razširjena uporaba v literaturi in praksi,
• enostavna in čitljiva predstavitev,
• združljivost z orodji, ki jih vsebujejo sistemi za upravljanje zbirk podatkov.
3.3.2
OSNOVNI GRADNIKI E-R MODELA
ENTITETA
Entiteta je neodvisni podatkovni objekt (fizični, konceptualni), ki je po definiciji nosilec podatkov.
Entiteta je oseba, prostor, objekt, dogodek, koncept …
ENTITETNI TIP
Entitetni tip je množica entitet, ki jih opisujejo isti atributi. Primer: Osebe
Predstavnik entitetnega tipa: Jure Smolar
ŠIBKA ENTITETA:
Šibka entiteta je entiteta brez lastnega ključnega atributa (ni razpoznavna sama po sebi). Vedno je
predstavljena skupaj z močno entiteto (v relaciji z njo), katere ključ je predstavljen iz lastnih atributov.
Entitete so:
! Objekti, ki imajo več primerkov v zbirki podatkov.
! Objekti, ki so predstavljeni z več atributi.
! Objekti, ki jih modeliramo.
Če gledamo z vidika E-R modela posamezne zaključene aplikacije, potem entitete niso:
! Uporabniki zbirke podatkov.
! Izhodna poročila (angl. report) aplikacije.
RELACIJA
Relacija je povezava med dvema ali več entitetami. Relacija sama po sebi ne obstaja niti
konceptualno niti fizično.
ATRIBUT
Atribut zagotavlja informacije o entitetah in relacijah z opisom njihovih lastnosti. Atribut je lastnost
oz. značilnost entitete (pogosto ustreza polju v tabeli).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 19/160
KLJUČ (IDENTIFIKATOR)
Vodilni atribut, ki omogoča identifikacijo posamezne entitete.
Ločimo: kandidacijski, primarni, sekundarni, sestavljen in zunanji (tuji) ključ.
DOMENA ATRIBUTA
Domena atributa je množica dovoljenih vrednosti za posamezen atribut.
KARDINALNOST (UDELEŽENOST)
Kardinalnost je udeleženost entitete v posamezni relaciji.
Ločimo kardinalnosti:
• 1 : 1 - ena-proti-ena (one-to-one),
• 1 : M - ena-proti-mnogo (one-to-many),
• M : N - mnogo-proti-mnogo (many-to-many).
Kardinalnost M : N je nezaželjena, zato jo nadomestimo z dvema novima relacijama
kardinalnosti 1 : N in N : 1 ter novo (vmesno) entiteto.
Udeleženost entitete v relaciji je lahko opcijska (angl. optional) ali obvezna (angl. mandatory).
Udeleženost opisuje minimalna kardinalnost.
(min, max)
1 : 1=>(1,1) : (1,1) ali (0,1) : (0,1) ali (1,1) : (0,1) ali (0,1) : (1,1)
1 : N=>(1,N) : (1,1) ali (0,N) : (0,1) ali (0,N) : (1,1) ali (1,N) : (0,1)
M : N=>(1,N) : (1,M) ali (0,N) : (0,M) ali (1,N) : (0,M) ali (0,N) : (1,M)
Preverjanje razumevanja
1. Kaj predstavlja relacija v E-R modelu?
a) Relacija predstavlja poslovni dogodek.
b) Relacija predstavlja povezavo med dvema ali več entitetami.
c) Relacija predstavlja povezavo med atributi entitete.
d) Relacija predstavlja lastnosti entitete.
2. Izberite vse pravilne izjave.
a) Entiteta je podatkovni objekt (fizični, konceptualni), ki je po definiciji nosilec podatkov.
b) Relacija je povezava med dvema ali več atributi v isti relaciji.
c) Atribut je posamezna lastnost entitete.
d) Entiteta ima najmanj 2 in največ 10 atributov.
2. Izberite (povežite) pravilne zaključke stavkov, ki predstavljajo pravilen opis pojma.
Kardinalnost je udeleženost
nosilec podatkov.
Entiteta je neodvisni podatkovni objekt
(fizični, konceptualni), ki je po
definiciji
posamezne entitete.
Relacija je povezava
posamezen atribut.
Atribut je lastnost oz. značilnost
entitete v posamezni relaciji.
Ključ je vodilni atribut, ki omogoča
identifikacijo
entitete.
Domena atributa
dovoljenih vrednosti za
med dvema ali več entitetami.
je
množica
3. Izberite elemente, ki niso entitete v entitetno-relacijskem diagramu.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 20/160
a)
b)
c)
d)
3.3.3
POSLOVNI PARTNERJI
IZDELKI
IME IN PRIIMEK
DRŽAVE
GRAFIČNA NOTACIJA E-R MODELA
Poznavanje gradnikov in pravil za ustvarjanje E-R diagramov je predpogoj za oblikovanje oz.
načrtovanje zbirke podatkov in komunikacijo z uporabniki podatkovne zbirke.
Slika 10: Osnovna notacija E-R modela
Notacijski standard
Vsaka entiteta je predstavljena s pravokotnikom.
Relacije so predstavljene z rombi ali črto, ki povezuje entiteti.
Entitete so poimenovane s samostalniki.
Relacije so praviloma poimenovane z glagoli.
Slika 11: Preprost ERD brez kardinalnosti relacij
Odkrivanje entitet:
Entitete so temeljni elementi zaključenega organiziranega sistema, o katerem zbiramo podatke. V
okviru posameznega zaključenega organiziranega sistema so to lahko:
Ljudje, ki so nosilci določenih funkcij (zaposleni, kupci, učitelji, študenti …).
Kraji, kjer bivajo ali delajo ljudje ali so v njih nameščeni predmeti (mesta, pisarne, države ...).
Predmeti, ki predstavljajo posamezne fizične predmete ali skupine predmetov (naprave, orodja,
produkti, stavbe …).
Organizacije, ki so formalno organizirana skupina ljudi, predmetov ali krajev z natančno definirano
nalogo. Obstoj organizacije je neodvisen od obstoja posameznih elementov te organizacije (ekipe,
oddelki, podjetja …).
Dogodki so stvari, ki se dogajajo neki entiteti v določenem trenutku (nakup blaga, projektne faze,
finančna nakazila …). Pojav dogodka je vezan na trenutek, v katerem se je zgodil in na identifikator
entitete, ki je v dogodek vpletena (plačilo računa: dan plačila, identifikator - številka računa).
Koncepti so ideje ali principi, ki jih organizacije uporabljajo oz. imajo nadzor nad njimi (projekti,
bančni računi, pritožbe …).
Poimenovanje entitet:
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 21/160
Entitete se pojavljajo praviloma v obliki samostalnika (poslovni_partnerji) ali ustreznih izpeljav
(naročila_poslovni_partnerji). Pričakujemo, da imena niso kodirana, saj tako povedo največ o objektu
(tako uporabniku kot tudi načrtovalcu). Praviloma jih uporabljamo v množinski obliki
(poslovni_partnerji).
Uporaba posameznih orodij to trditev zanika.
Odkrivanje relacij:
Relacija je povezava med dvema entitetama, ki predstavlja interakcije med njima. Običajno jo lahko
zapišemo v obliki preprostega stavka, ki ga sestavljajo osebek, povedek in predmet: »oseba je rojena v
kraju«. Osebek in predmet sta pri tem entiteti, povedek pa predstavlja relacijo. Cilj odkrivanja relacij
so torej stavki oblike »ENTITETA-1 glagol ENTITETA-2«.
Poimenovanje:
Uveljavila sta se dva načina poimenovanja relacij:
• z uporabo GLAGOLA iz razmerja »Entiteta1 Glagol Entiteta2«,
• s kombinacijo imen obeh entitet, ki ju povezuje »Entiteta1_ Entiteta2«.
Vsak zapis relacije oblike »Entiteta1 Glagol Entiteta2« lahko podamo tudi v obliki »Entiteta2 Glagol
Entiteta1«.
Npr: »posamezna oseba je rojena natanko v enem kraju« | »v enem kraju je rojenih več oseb«
Preverjanje razumevanja
1. Izberite vse izjave, ki so pravilne za gradnike ERD.
a) Entiteta je v ERD, predstavljena s pravokotnikom.
b) Relacija je v ERD, predstavljena s krogom.
c) Atribut je v ERD, predstavljen s črto ali rombom.
d) Relacija povezuje dve ali več entitet.
2. Izberite dva načina poimenovanja relacij, ki se v praksi najpogosteje uporabljata.
a) Entiteta je v ERD, predstavljena s pravokotnikom.
b) Relacija je v ERD, predstavljena s krogom.
c) Atribut je v ERD, predstavljen s črto ali rombom.
d) Relacija povezuje dve ali več entitet.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 22/160
Grafična notacija za kardinalnost (udeleženost) relacij
Pravilna določitev kardinalnosti je pogoj za ustrezno oblikovanje strukture zbirke podatkov. Napake
pri določanju kardinalnosti lahko povzročijo neustrezno strukturo zbirke podatkov.
Slika 12: Kardinalnost
Slika 13: Preprost ERD
Odkrivanje kardinalnosti:
Kardinalnost podaja informacijo o udeleženosti posamezne entitete v relaciji. Kardinalnost je odvisna
od pravil, ki veljajo v določenem zaključenem organiziranem sistemu, za katerega oblikujemo E-R
diagram. Pri odkrivanju kardinalnosti si izberemo izhodiščno entiteto v relaciji R in se vprašamo,
kolikokrat (iščemo maksimalno število) se v tej relaciji glede na entiteto E1 pojavi entiteta E2.
Nato vprašanje obrnemo.
Za izražanje kardinalnosti večje od 1 nikoli ne uporabljamo konkretnih številk, temveč le splošen
zapis M oz. N.
Primer:
E1 = osebe | R = je rojen | E2 = kraji
V koliko krajih je rojena ena oseba? Odgovor: 1 (1,1)
Koliko oseb je rojenih v enem (posameznem) kraju? Odgovor: N (več) (0, N)
Pojavnostno pravilo
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 23/160
Pojavnostno pravilo predstavlja število primerkov ene entitete, ki so lahko ali morajo biti v povezavi z
vsakim primerkom druge entitete.
Če ima min del v paru (min, mak) vrednost 0, potem je to opcijska pojavnostna omejitev (angl.
optional). V primeru vrednosti min 1 ali več je obvezna pojavnostna omejitev (angl. mandatory).
Slika 14: Določanje kardinalnosti
Uporabniška predstavitev relacije na sliki:
V enem kraju je rojenih minimalno 0 oseb, maksimalno pa jih je lahko več.
Ena oseba je rojena natanko v enem kraju (minimalno enem in maksimalno enem).
Poimenovanje:
Uveljavila sta se dva načina poimenovanja relacij:
• z uporabo GLAGOLA iz izraza «Entiteta1 Glagol Entiteta2«,
• s kombinacijo imen obeh entitet, ki ju povezuje »Entiteta1_ Entiteta2«.
Vsak zapis relacije oblike »Entiteta1 Glagol Entiteta2« lahko podamo tudi v obliki »Entiteta2 Glagol
Entiteta1«.
Npr:
• oseba je rojena v enem kraju,
• v enem kraju je rojenih več oseb.
Različni avtorji in različna orodja uporabljajo različno notacijo za določitev kardinalnosti.
Primer določitve
kardinalnosti z
uporabo para (min,
mak):
Slika 15: Kardinalnosti (notacija min, mak)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 24/160
Slika 16: Kardinalnost (notacija min, mak)
Slika 17: ERD z atributi
Ključni atribut je običajno podčrtan ali zapolnjen (pobarvan).
Rekurzivna relacija
Pri rekurzivni relaciji je začetek in konec relacije v isti entiteti. Največkrat se uporablja za večnivojsko
hierarhično razvrščanje npr. kategorije izdelkov.
Slika 18: Rekurzivna relacija
Slika 19: Rekurzivna relacija v Case Studio
Stopnja relacije
Stopnja relacije je število entitet, ki so povezane z relacijo. Najpogostejše so binarne (angl. binary)
relacije, ki povezujejo dve entiteti.
Rekurzivna relacija je unarna.
Posamezna orodja za risanje ERD imajo različno notacijo.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 25/160
Preverjanje razumevanja
1. Med zapisanimi trditvami izberite tisto, ki ne velja za kardinalnost.
a) Kardinalnost podaja informacijo o udeleženosti posamezne entitete v relaciji.
b) Kardinalnost je odvisna od pravil, ki veljajo v določenem zaključenem organiziranem sistemu,
za katerega oblikujemo E-R diagram.
c) Kardinalnost podaja informacijo o številu atributov v posamezni entiteti.
d) Pri odkrivanju kardinalnosti si izberemo izhodiščno entiteto v relaciji R in se vprašamo,
kolikokrat (iščemo maksimalno število) se v tej relaciji glede na entiteto E1 pojavi entiteta E2.
2. Izberite kardinalnost, ki je v ERD predstavljena z dvema ravnima črtama?
a) opcijska ena
b) opcijska mnogo
c) obvezna ena
d) obvezna mnogo
3. Kardinalnost je udeleženost entitete v posamezni relaciji. Izberite kardinalnost, ki je nezaželena.
a) 1 : 1 - ena-proti-ena (one-to-one)
b) 1 : N - ena-proti-mnogo (one-to-many)
c) M : N - mnogo-proti-mnogo (many-to-many)
4. Izberite vse primere pojavnosti, ki imajo opcijsko (angl. optional) pojavnost. Pojavnost je
predstavljena s parom (min, mak).
a) (1,1)
b) (0,N)
c) (1,N)
d) (0,1)
Primeri entitetno relacijskih diagramov
Posamezna orodja za risanje ERD imajo različno notacijo.
Slika 20: ERD v Case Studio
Slika 21: ERD v Case Studio (opis notacije)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 26/160
Slika 22: ERD za telesni karton (Case Studio)
Slika 23: ERD za evidenco šol (Case Studio)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 27/160
Slika 24: ERD za evidenco dogodkov (Case Studio)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 28/160
Preverjanje razumevanja
1. Kaj določa oznaka FK v ERD, ki je ustvarjen z orodjem Case Studio?
a) Oznaka FK predstavlja primarni ključ entitete.
b) Oznaka FK določa, da je za atribut zahtevan vnos.
c) Oznaka FK predstavlja, da je atribut tuj ključ, ki se uporablja za povezovanje entitete z drugo
entiteto.
d) Oznaka FK določa, da je za atribut ustvarjen indeks.
2. Kako je v Case Studio predstavljenja relacija M : N?
a) Relacija M : N je v Case Studio predstavljena s črto, ki ima na obeh zaključkih črte
kardinalnost (1,N).
b) Relacija M : N je v Case Studio predstavljena s trikotnikom.
c) Relacija M : N je v Case Studio predstavljena z vmesno entiteto in dvema relacijama
kardinalnosti 1 : N.
4
CASE STUDIO
Za oblikovanje entitetno - relacijskih diagramov lahko uporabimo različne programe. Boljši programi
za risanje ERD so del programov za računalniško podprto načrtovanje informacijskih sistemov (angl.
Computer Aided Software Engeniring – CASE orodja).
Spoznali bomo načrtovanje ERD z uporabo programa CASE
Studio.
Demo verzija programa je na voljo na spletnem naslovu
http://www.casestudio.com in omogoča popolno funkcionalnost
z omejitvijo, da ni možno shraniti več kot šest entitet ERD.
Slika 25: Logotip CHARONWARE
Slika 26: Spletni portal CASE STUDIO 2
Namestitev programa CASE Studio je enostavna in ne zahteva posebnega znanja. V namestitvenem
čarovniku potrjujemo korake in po zaključku namestitve je program na voljo za delo. Za popolno
uporabo programa moramo program odkleniti z uporabo licence, ki jo dobimo ob nakupu programa.
Postopek namestitve
V raziskovalcu odpremo mapo, v kateri imamo shranjen namestitveni program programa CASE
Studio.
V seznamu dokumentov dvokliknemo namestitveni program cs2_setup.
Odpre se okno Setup (Namestitev).
Skozi korake namestitve nas vodi čarovnik.
V prvem koraku se izpiše priporočilo, da zapremo vse ostale programe pred nadaljevanjem namestitve.
V oknu Setup kliknemo gumb Next > (Naprej).
Izpišejo se licenčni pogoji uporabe programa.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 29/160
Sprejmemo licenčne pogoje.
Izberemo opcijski gumb I accept the agreement (Sprejmem licenčne pogoje).
V oknu Setup kliknemo gumb Next > (Naprej).
Prikaže se izbor namestitvene mape. Sprejmemo privzeto namestitveno mapo.
V oknu Setup kliknemo gumb Next > (Naprej).
Prikaže se izbor programske skupine. Sprejmemo privzeto programsko skupino.
V oknu Setup kliknemo gumb Next > (Naprej).
Prikaže se izbor dodatnih namestitvenih aktivnosti. Sprejmemo privzete nastavitve (ustvarjanje
bližnjice na namizju, ustvarjanje ikone v meniju start za vse uporabnike, XP izgled).
V oknu Setup kliknemo gumb Next > (Naprej).
Prikažejo se namestitvene nastavitve. Preverimo nastavitve in nadaljujemo z namestitvijo.
V oknu Setup kliknemo gumb Install (Namesti).
Namestitev je končana.
Po namestitvi lahko pregledamo vsebino datoteke README in odpremo program.
Počistimo potrditveno polje View the README file (Pregled datoteke README).
V oknu Setup kliknemo gumb Finish (Dokončaj).
Program odpremo s
klikom na program
CASE Studio 2 v
programski skupini
CASE Studio v meniju
Vsi programi.
Slika 27: Odpiranje programa CASE STUDIO 2
Če imamo na namizju ustvarjeno bližnjico do programa CASE Studio, potem
ga odpremo z dvoklikom na bližnjico.
Po zaključku dela v programu program zapremo z ukazom File | Exit
(Datoteka | Izhod) ali kliknemo gumb Zapri v zgornjem desnem delu okna.
Dokumente običajno shranjujemo v mape v področju Moji dokumenti. Pri odpiranju dokumentov se
odpre pogovorno okno za izbor dokumenta. V njem izberemo mapo, v kateri se nahaja dokument.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 30/160
Dokument odpremo z uporabo
hitrega gumba Open (Odpri)
v orodni vrstici File
(Datoteka) ali z uporabo ukaza
File | Open (Datoteka | Odpri).
Če smo uporabljali dokument
med zadnjimi dokumenti v
CASE Studio, potem ga lahko
odpremo z uporabo hitrega
gumba Reopen (Odpri znova)
ali z uporabo ukaza File |
Reopen (Datoteka | Odpri
znova).
Slika 28: Odpiranje dokumenta (ERD)
Program CASE Studio omogoča delo z več dokumenti. Za učinkovito delo na računalniku moramo
poznati osnovno delo z okni.
Osnovne operacije nad okni navadno izvajamo z miško.
Operacija
Spreminjanje velikosti
Minimiranje
Opis
Kazalec miške postavimo nad obrobo okna. Ko se kazalec miške
spremeni v ikono za spreminjanje velikosti, pridržimo levi gumb
miške in s premikanjem kazalca miške v levo, desno, navzgor, navzdol
ali poševno določimo novo velikost in nato sprostimo levi gumb
miške.
Okno navidezno zapremo oz. pomanjšamo v najmanjšo velikost s
klikom na gumb Minimiraj v desnem zgornjem delu okna.
Maksimiranje
Okno povečamo čez celotno površino s klikom na gumb Maksimiraj
v desnem zgornjem delu okna.
Obnovitev
zadnje Oknu obnovimo zadnjo velikost površine s klikom na gumb Obnovi v
velikosti
desnem zgornjem delu okna.
Premikanje
Okno lahko z vlekom miške enostavno premaknemo. Kazalec miške
premaknemo v naslovno vrstico okna, pridržimo levi gumb miške. Ko
imamo pridržan levi gumb miške, s premikanjem kazalca miške
določimo nov položaj okna in nato sprostimo levi gumb miške.
Razporeditev oken
Če imamo odprtih v programu več podoken, potem lahko uporabimo
ukaze za razporeditev. Okna lahko razporedimo:
- stopničasto enega za drugim (Cascade (Kaskadna
razporeditev)),
- navpično (Tile Vertically),
- vodoravno (Tile Horizontaly).
Zapiranje
V desnem zgornjem delu okna kliknemo gumb Zapri.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 31/160
Spreminjanje lastnosti modela
Nastavitve lastnosti modela nam olajšajo delo pri ustvarjanju entitetno - relacijskih diagramov in
diagramov toka podatkov. Pred ustvarjanjem predmetov prilagodimo lastnosti modela.
Okno nastavitev modela odpremo z
ukazom Model | Model properties
(Model | Lastnosti) ali uporabimo hitri
gumb Model properties (Lastnosti
v orodni vrstici File
modela)
(Datoteka).
V oknu Model properties (Lastnosti
modela) določimo nastavitve in jih
potrdimo s klikom na gumb OK (V
redu).
Slika 29: Lastnosti modela
Spreminjanje nastavitev okolja
Nastavitve delovnega okolja so skupne vsem dokumentom. Omogočajo nam prilagoditev pisav,
barvnega označevanja elementov itd. Nastavitve določimo na začetku uporabe programa in jih nato
običajno ne spreminjamo.
Okno nastavitev delovnega okolja odpremo z ukazom File | Environment setup (Datoteka |
Nastavitve delovnega okolja) ali uporabimo hitri gumb Environment setup (Nastavitve delovnega
okolja)
ŠC VELENJE
v orodni vrstici File (Datoteka).
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 32/160
V oknu Environment
setup (Nastavitve
delovnega okolja)
določimo nastavitve
pisave, urejevalnikov,
način barvnega
označevanja elementov
… in jih potrdimo s
klikom na gumb OK
(V redu).
Slika 30: Nastavitve delovnega okolja
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 33/160
Skrivanje in prikazovanje orodne vrstice
Orodne vrstice v CASE
Studio skrivamo in
prikazujemo z uporabo
ukaza View | Toolbars
(Pogled | Orodne vrstice).
Slika 31: Prikaz orodnih vrstic
Orodne vrstice od zgoraj navzdol, ki imajo izbrano potrditveno polje, so privzeto postavljene v
orodnih vrsticah z leve proti desni.
Operacija
Skrivanje
Prikazovanje
Opis
Počistimo potrditveno polje pred imenom orodne vrstice z uporabo ukaza View |
Toolbars (Pogled | Orodne vrstice).
Izberemo potrditveno polje pred imenom orodne vrstice z uporabo ukaza View |
Toolbars (Pogled | Orodne vrstice).
Orodne vrstice
File (Datoteka)
Slika 32: Orodna vrstica File
1
nov dokument oz. model
ŠC VELENJE
INFORMATIKA
7
raziskovalec modela
PODATKOVNE BAZE (1.letnik)
Stran 34/160
2
3
4
5
6
odpri dokument
odpri znova
shrani
natisni
nastavitve delovnega okolja
8
9
10
11
preveri model
ustvari sql skripto
lastnosti modela oz. dokumenta
podatkovni slovar
5
6
7
8
M : N relacija
informativna relacija
opomba
podpis avtorja
ERD Objects (ERD objekti)
Slika 33: Orodna vrstica ERD Objects
1
2
3
4
kazalec za izbor
entiteta
vezana relacija
relacija
Display Mode (Način oz. vrsta prikaza)
Slika 34: Orodna vrstica Display Mode
1
2
preklopni gumb – logični / fizični način 3 nivo prikaza:
! Entity (Entiteta)
prikaza
! Primary Keys (Primarni ključi)
preklopni gumb – prikaži / skrij indekse
! Keys (Ključi)
! Attributes (Atributi)
Reports (Poročila)
Slika 35: Orodna vrstica Reports
1
2
ustvari HTML poročilo
ustvari RTF poročilo
Align (Poravnava)
Slika 36: Orodna vrstica Align
1
2
poravnava na spodnji rob
poravnava na levi rob
3 poravnava na desni rob
4 poravnava na zgornji rob
Edit (Urejanje)
Slika 37: Orodna vrstica Edit
1
kopiraj
ŠC VELENJE
3 prilepi
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 35/160
2
izreži
Colors and Fonts (Barve in pisava)
Slika 38: Orodna vrstica Colors and Fonts
1
2
3
preklopni gumb prikaži / skrij strukturo 4 samodejna razporeditev
(drevo) modela
pisava
5 povečava
barve
6 izbirni seznam povečave
Exit (Izhod)
Slika 39: Orodna vrstica Exit
1
2
izhod
pomoč
Ustvarjanje entitete in določanje atributov
Prepoznavanje entitet in določevanje ustreznih atributov je pomembno z vidika učinkovitega
shranjevanja podatkov v zbirki podatkov. Entitete so osnova za ustvarjene tabele v procesu ustvarjanja
SQL skripte.
Entiteto ustvarimo tako, da v orodni vrstici ERD Objects (ERD objekti) izberemo entiteto
(kazalec miške se spremeni) in kliknemo na delovno površino na mesto,
kamor želimo vstaviti entiteto. Za vsako dodajanje moramo najprej izbrati
objekt (entiteto). Objekt entitete lahko izberemo tudi z uporabo bližnjice –
E.
Okno za urejanje entitete odpremo tako, da v ERD dvokliknemo na entiteto
ali dvokliknemo na ime entitete v raziskovalcu modela.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 36/160
Slika 40: Seznam atributov entitete
Polje
Opis
Entity
Name
(Ime Logično ime entitete.
entitete)
Table
Name
(Ime Fizično ime entitete oz. ime tabele v SQL skripti.
tabele)
Generate (Ustvari)
Potrjeno polje določa, da se za to entiteto ustvari tabela v SQL skripti.
Kartica Attributes (Atributi) vsebuje seznam atributov entitete.
Stolpec
Opis
Key (Ključ)
Določa, ali je atribut ključ.
Zavzame lahko eno izmed vrednosti:
!
primarni ključ,
!
tuj ključ,
primarni ključ, ki je hkrati tuj ključ.
!
Name (Ime atributa)
Ime atributa.
Not Null vrednost v tem stolpcu določa zahtevan vnos.
Not Null
Unique (Edinstven)
Atribut lahko vsebuje samo edinstvene vrednosti (ni podvajanja enakih
vrednosti).
Description (Opis)
Opis atributa.
Gumb
Opis
Add (Ustvari) – zraven Hitro ustvarjanje atributa.
polja
Add (Ustvari)
Ustvari atribut.
Edit (Uredi)
Urejanje atributa.
Delete (Izbriši)
Brisanje atributa.
Spreminjanje vrstnega reda (premik navzgor in premik navzdol).
Spreminjanje atributov entitete
V praksi pogosto izvajamo reorganizacije strukture zbirke podatkov. Reorganizacija zahteva
spremembe v obstoječem entitetno - relacijskem diagramu.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 37/160
Okno za urejanje entitete odpremo tako, da v ERD dvokliknemo na entiteto ali dvokliknemo na ime
entitete v raziskovalcu modela. V oknu Entity (Entiteta) je na kartici Attributes (Atributi) seznam
atributov.
Slika 41: Spreminjanje atributov
Dodajanje atributa
Dodajanje atributa je enako, kot smo ga spoznali v prejšnji enoti.
Spreminjanje vrstnega reda atributov
Vrstni red atributov spreminjamo na dva načina:
! Z vlekom miške: Vrstico atributa v seznamu atributov premaknemo z vlekom miške tako, da
kazalec premaknemo v prvi stolpec vrstice, ki jo moramo premakniti (zaporedna številka) in
pridržimo levi gumb miške. Ko imamo pridržan levi gumb miške, premaknemo kazalec miške
na mesto, kamor želimo premakniti vrstico in nato sprostimo levi gumb miške.
!
: Vrstico atributa, ki ga želimo premakniti, najprej izberemo.
Z uporabo gumbov
Izberemo jo tako, da kazalec miške premaknemo v stolpec Name (Ime) vrstice in pritisnemo
levi gumb miške. Nato s klikom na gumb
oz. navzdol.
premaknemo izbrano vrstico za eno navzgor
Brisanje atributa
V seznamu atributov najprej izberemo vrstico atributa, ki ga želimo izbrisati. Izbrano vrstico
izbrišemo s klikom na gumb Delete (Izbriši).
Gumb
Opis
Add (Ustvari) – zraven Hitro ustvarjanje atributa.
polja
Add (Ustvari)
Ustvari atribut.
Edit (Uredi)
Urejanje atributa.
Delete (Izbriši)
Brisanje atributa.
Spreminjanje vrstnega reda (premik navzgor in premik navzdol).
Notacija entitete
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 38/160
Slika 42: Notacija entitete
Postopek ustvarjanja ERD za evidenco lastnikov avtomobilov
V orodni vrstici File (Datoteka) kliknemo ikono gumba New Model (Nov model).
Odpre se okno za izbor sistema za upravljanje zbirk podatkov.
Odprimo seznam Target database (Izbran sistem za uprabljanje zbirk podatkov).
V oknu izbora sistema zbirk podatkov kliknemo v polje s seznamom Target database (Ciljni sistem
zbirk podatkov).
Prikaže se seznam sistemov zbirk podatkov, ki jih program podpira.
Izberemo Firebird.
V seznamu Target database kliknemo Firebird.
V oknu za izbor sistema za upravljanje zbirk podatkov potrdimo izbor.
V oknu za izbor SUZP kliknemo gumb OK (V redu).
Odpre se prazno podokno, v katerem bomo ustvarili model.
Podokno modela povečajmo čez celo delovno površino.
V desnem zgornjem delu podokna kliknemo gumb Maksimiraj.
V levem odseku skrijmo prikaz raziskovalca modela (hierarhične strukture modela). Odpremo
priročni meni delovnega področja.
V praznem delu delovnega področja podokna kliknemo desni gumb miške.
Prikaže se priročni meni.
V priročnem meniju počistimo potrditveno polje Overview tree (Hierarhična struktura).
V priročnem meniju kliknemo Overview tree (Hierarhična struktura).
V model vstavimo prvo entiteto.
V orodni vrstici ERD Objects (ERD objekti) izberemo gradnik entitete.
V orodni vrstici ERD Objects (ERD objekti) kliknemo gradnik Entity (Entiteta).
Na označeno mesto v modelu vstavimo entiteto.
V delovni površini modela kliknemo na označeno mesto.
V model vstavimo še drugo entiteto.
V orodni vrstici izberemo gradnik entitete.
V orodni vrstici ERD Objects (ERD objekti) kliknemo gradnik Entity (Entiteta).
Na označeno mesto delovne površine vstavimo drugo entiteto.
V delovni površini modela kliknemo na označeno mesto.
Spremenimo privzeto ime entitete Entitiy1 v AVTOMOBILI.
Na delovni površini dvokliknemo entiteto Entity1.
Odpre se okno lastnosti entitete.
V polje Entity name (Ime entitete) vpišemo AVTOMOBILI.
Entiteti določimo atribute.
Na spodnjem odseku okna lastnosti entitete na kartici Attributes (Atributi) kliknemo gumb Add
(Dodaj).
Odpre se okno Attribute (Atribut).
V polje Attribute Name (Ime atributa) vpišimo RegistracijskaStevilka.
Izberemo polje Attribute Name.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Attribute Name (Ime
atributa).
V polje Attribute Name (Ime atributa) vpišemo RegistracijskaStevilka.
Največjo dolžino polja spremenimo v 15 znakov.
Postavimo se v polje Length (Dolžina).
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo na konec polja Length (Dolžina).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 39/160
Označimo vrednost polja Length (Dolžina).
Na koncu vrednosti polja Length (Dolžina) pridržimo levi gumb miške, kazalec miške premaknemo
na začetek polja in nato sprostimo levi gumb miške.
Označeno vrednost v polju Length (Dolžina) prepišemo s 15.
Atribut RegistracijskaStevilka izberemo za ključ entitete Avtomobili.
V oknu Attribute (Atribut) na vrhu obrazca Attribute (Atribut) kliknemo potrditveno polje Key
(Ključ).
Določili smo lastnosti prvega atributa.
Potrdimo vrednosti prvega atributa in dodajmo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišemo Znamka.
Izberimo polje za vnos dolžine atributa.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Length (Dolžina).
Označimo vrednost polja Length (Dolžina).
Na koncu polja Length (Dolžina) pridržimo levi gumb miške, kazalec miške premaknemo na začetek
polja in nato sprostimo levi gumb miške.
Označeno vrednost v polju Length (Dolžina) prepišemo s 120.
Potrdimo vrednosti atributa in dodajmo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišemo Barva.
Največja dolžina polja je ustrezna (20 zankov).
Potrdimo vrednosti atributa in dodajmo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišemo Cena. Polje Cena je podatkovnega tipa
Decimal(10,2). Prikažimo seznam podatkovnih tipov polja Datatype (Podtkovni tip).
V oknu Attribute (Atribut) na obrazcu kartice Attribute (Atribut) kliknemo v polje s seznamom
DataType (Podatkovni tip).
Prikaže se seznam podatkovnih tipov.
Izberemo podatkovni tip Decimal.
V seznamu DataType (Podatkovni tip) v oknu Attribute (Atribut) na kartici Attribute (Atribut)
kliknemo Decimal.
Izberimo vrednost v polju Length (Dolžina).
V oknu Attribute (Atribut) na kartici Attribute (Atribut) pridržimo levi gumb miške na koncu
vrednosti polja Length. Pridržimo levi gumb miške in premaknemo kazalec miške na začetek
vrednosti polja in sprostimo levi gumb miške.
Vrednost v polju Length (Dolžina) spremenimo v 12.
Označimo vrednost v polju Decimal (Decimalni del) za vnos števila mest za decimalnim ločilom.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) pridržimo levi gumb miške na koncu
vrednosti polja Decimal (Število decimalnih mest). Pridržimo levi gumb miške in premaknemo
kazalec miške na začetek vrednosti polja in sprostimo levi gumb miške.
V polju Decimal (Število decimalnih mest) spremenimo vrednost v 2.
Izbrano vrednost v polju Decimal prepišemo z 2.
Potrdimo vnos atributa Cena in zaključimo vnos atributov.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb OK (V
redu).
Okno lastnosti atributa Attribute se zapre.
V oknu lastnosti entitete so v seznamu prikazane lastnosti atributov.
Potrdimo spremembe v oknu Entity (Entiteta).
V spodnjem delu okna Entity (Atributi) kliknemo gumb OK (V redu).
Okno lastnosti entitete Entity (Entiteta) se zapre.
V modelu je prikazana entiteta in njeni atributi.
Na podoben način določimo atribute druge entitete.
Na delovni površini dvokliknemo entiteto Entity2.
Na spodnjem odseku okna lastnosti entitete na kartici Attributes (Atributi) kliknemo gumb Add
(Dodaj).
Odpre se okno lastnosti entitete.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 40/160
V polje Entity name (Ime entitete) vpišemo LASTNIKI.
Entiteti določimo atribute.
Odpre se okno Attribute (Atribut). Prikazan je obrazec kartice Attribute (Atribut). V polje Attribute
Name (Ime atributa) vpišimo DavcnaStevilka.
Izberemo polje Attribute Name.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Attribute Name (Ime
atributa).
V polje Attribute Name (Ime atributa) vpišemo DavcnaStevilka.
Največjo dolžino polja spremenimo v 10 zankov.
Postavimo se v polje Length (Dolžina).
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo na konec polja Length (Dolžina).
Označimo vrednost v polju Length (Dolžina).
Na koncu polja Length (Dolžina) pridržimo levi gumb miške, kazalec miške premaknemo na začetek
polja in nato sprostimo levi gumb miške.
Označeno vrednost v polju Length (Dolžina) prepišemo z 10.
Atribut DavcnaStevilka izberemo za ključ entitete Avtomobili.
Na vrhu obrazca kartice Attribute (Atribut) kliknemo potrditveno polje Key (Ključ).
Določili smo lastnosti prvega atributa.
Potrdimo vrednosti prvega atributa in dodajmo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišemo Ime.
Izberemo polje za vnos dolžine atributa.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Length (Dolžina).
Označimo vrednost polja Length (Dolžina).
Na koncu polja Length (Dolžina) pridržimo levi gumb miške, kazalec miške premaknemo na začetek
polja in nato sprostimo levi gumb miške.
Označeno vrednost v polju Length (Dolžina) prepišemo s 30.
Potrdimo vrednosti atributa in dodajmo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišimo Priimek.
Izberemo polje Attribute Name.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Attribute Name (Ime
atributa).
V polje Attribute Name (Ime atributa) vpišemo Priimek.
Izberemo polje za vnos dolžine atributa.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Length (Dolžina).
Označimo vrednost polja Length (Dolžina).
Na koncu polja Length (Dolžina) pridržimo levi gumb miške, kazalec miške premaknemo na začetek
polja in nato sprostimo levi gumb miške.
Označeno vrednost v polju Length (Dolžina) prepišemo s 30.
Potrdimo vrednosti atributa in dodamo nov atribut.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok+Add (V
redu + Nov).
V polje Attribute Name (Ime atributa) vpišemo DatumRojstva.
Atribut DatumRojstva je podatkovnega tipa Date. V polju Datatype (Podatkovni tip) prikažemo
seznam podatkovnih tipov.
V oknu Attribute (Atribut) na kartici Attribute (Atribut) kliknemo v polje Datatype (Podatkovni
tip).
Prikaže se seznam podatkovnih tipov.
Izberemo podatkovni tip Date (Datum).
V seznamu DataType (Podatkovni tip) v oknu Attribute (Atribut) na kartici Attribute (Atribut)
kliknemo Date (Datum).
Potrdimo vnos atributa DatumRojstva in zaključimo vnos atributov.
V spodnjem delu okna Attribute (Atribut) na kartici Attribute (Atribut) kliknemo gumb Ok (V redu).
Okno lastnosti atributa Attribute se zapre.
V oknu lastnosti entitete so v seznamu prikazane lastnosti atributov.
Potrdimo spremembe v oknu Entity (Entiteta).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 41/160
V spodnjem delu okna Entity (Entiteta) kliknemo gumb OK (V redu).
Okno lastnosti entitete Entity (Entiteta) se zapre.
V modelu sta prikazani entiteti in njeni atributi.
Shranimo spremembe modela.
V orodni vrstici File (Datoteka) kliknemo ikono gumba Save model (Shrani model).
Odpre se okno Shrani kot.
Prikažemo vrednosti seznama Shrani v.
V oknu Shrani kot kliknemo v seznam Shrani v.
Prikaže se seznam map. Izberemo mapo Moji Dokumenti.
V seznamu Shrani v kliknemo mapo Moji dokumenti.
Prikaže se seznam map in dokumentov v mapi Moji dokumenti.
Odpremo podmapo CaseStudio.
V oknu Shrani kot v seznamu map in dokumentov dvokliknemo mapo CaseStudio.
Prikaže se seznam map in dokumentov v mapi Moji dokumenti/CaseStudio.
Izberemo polje Ime datoteke.
V oknu Shrani kot kliknemo (izberemo) v polje Ime datoteke.
V polje Ime dokumenta vpišemo er3 in potrdimo shranjevanje.
V oknu Shrani kot kliknemo gumb Shrani.
Ustvarili smo dokument modela er3.
Zaprimo podokno modela er3.
V desnem zgornjem delu podokna er3.dm2 kliknemo gumb Zapri.
Aktivno okno postane osnovno okno programa Case Studio.
Ustvarjanje relacije
Relacijo ustvarimo tako, da v orodni vrstici ERD Objects (ERD objekti) izberemo Non-identifying
. Kazalec miške se spremeni v REL.
relationship (Nevezana relacija)
Relacijo ustvarimo tako, da premaknemo kazalec miške nad entiteto na strani starš, pridržimo levi
gumb miške in premaknemo kazalec miške na entiteto na strani otrok ter nato sprostimo levi gumb
miške.
Za vsako dodajanje moramo najprej izbrati objekt (relacijo). Objekt relacije lahko izberemo tudi z
uporabo bližnjice – R.
Okno za urejanje relacije odpremo tako, da v ERD dvokliknemo na ime relacije ali črto relacije.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 42/160
Notacija ERD
Slika 43: Notacija ERD
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 43/160
Lastnosti relacije
Slika 44: Lastnosti relacije
Polje
Name (Ime relacije)
Linking Method (Vrsta
povezave)
Relationship Type (Tip
relacije)
ŠC VELENJE
Opis
Ime relacije.
Določimo enega izmed treh načinov povezave:
! povezava s primarnim ključem entitete na strani starša
(priporočljivo),
! povezava z edinstvenim atributom v entiteti na strani starša,
! povezava z nadomestnim ključem v entiteti na strani starša.
Tipi relacij so:
!
Identifying Relationship (Vezana relacija)
Primarni ključ entitete na strani starš je tudi del primarnega ključa
entitete na strani otrok. Entiteta na strani otrok je šibka entiteta in
je prikazana z okroglimi robovi.
!
Nonidentifying Relationship (Relacija)
Primarni ključ entitete na strani starš ni del primarnega ključa
entitete na strani otrok.
!
Relationship M : N (Relacija M : N)
Relacija M:N se predstavi z dvema relacijama 1:N. Ustvari se
vmesna entiteta, ki vsebuje sestavljen primarni ključ iz obeh
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 44/160
Polje
Opis
primarnih ključev entitet, ki jih povezuje.
!
Partiality Parent
(Pojavnost starš)
Partiality Child
(Pojavnost otrok)
Cardinality
(Kardinalnost)
Genetate (Ustvari)
Informative Relationship (Informativna relacija)
Informativna relacija ne povzroči migracije atributa in ne povzroči
ustvarjanja konstrukta referenčne integritete. Informativna relacija
samo informativno predstavlja obstoj relacije.
Mandatory (zahtevana) – za zapis v entiteti otrok mora obstajati vsaj en
odvisni zapis v entiteti starš.
Optional (opcijska) - za zapis v entiteti otrok ni potrebno, da obstaja
odvisni zapis v entiteti starš.
Enako kot za polje Partiality Parent (Pojavnost starš), le v nasprotni
smeri.
Kardinalnost
Potrditveno polje za ustvarjanje relacije v SQL skripti.
Referential integrity (Referenčna integriteta)
Slika 45: Referenčna integriteta
Polje
Parent (Starš)
Child (Otrok)
ŠC VELENJE
Opis
Določimo pravilo v primeru spremembe in brisanja zapisa v entiteti na
strani starš.
! NO ACTION - Tuj ključ se ne spremeni (privzeta).
! CASCADE - Tuj ključ odvisnih zapisov se samodejno spremeni
glede na spremembo primarnega ključa.
! SET DEFAULT - Tuj ključ odvisnih zapisov se spremeni na
privzeto vrednost.
! SET NULL - Tuj ključ odvisnih zapisov dobi vrednost NULL.
Določimo pravilo v primeru spremembe in brisanja zapisa v entiteti na
strani otrok.
! NONE – Ni pravila.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 45/160
Polje
Opis
!
Constraint Name (Ime
konstrukta)
RESTRICT – V primeru spremembe zapisa v entiteti na strani
otrok ( akcija vstavljanja ali spreminjanja zapisa) se v primeru, če
ne obstaja odvisni zapis v entiteti na strani starš, izpiše napaka.
Ime konstrukta oz. način poimenovanja konstrukta.
Brisanje relacije
Večkrat pri oblikovanju ERD napačno povežemo entitete in moramo izbrisati obstoječo relacijo in
ustvariti novo relacijo.
Relacijo izbišemo tako, da v ERD izberemo relacijo in nato
pritisnemo brisalko (tipka Delete) ali kliknemo hitri gumb Cut
(Izreži)
Izbriši).
ali uporabimo ukaz Edit | Delete (Urejenje |
Odpre se pogovorno okno za potrditev brisanja. V pogovornem
oknu:
! potrdimo brisanje - kliknemo gumb Yes (Da),
! prekličemo brisanje – kliknemo gumb No (Ne).
Slika 46: Brisanje relacije
Razporejanje elementov ERD
Dobra razporeditev elementov oz. gradnikov ERD naredi diagram veliko preglednejši in razumljivejši.
Pri razporeditvi težimo k temu, da imamo v diagramu čim manj križnih povezav relacij.
Elemente ERD premikamo z uporabo operacije povleci in spusti. Za relacije lahko v nastavitvah
določimo ravne povezave ali lomljene povezave. Če so povezave lomljene, lahko dodajamo prelomne
točke, ki nam omogočajo prilagoditev uporabniške razporeditve.
Poravnave elementov ERD
Entitete v ERD poravnamo tako, da najprej izberemo entitete, ki jim želimo poravnati in nato
uporabimo hitri gumb orodne vrstice Align (Poravnava).
Entitete lahko izberemo na enega izmed naslednjih načinov:
! Pridržimo tipko Shift in nato kliknemo posamezne entitete, ki jih želimo izbrati.
! Z okvirom miške označimo področje entitet, ki jih želimo označiti.
! Vse entitete označimo z ukazom Edit | Select All
(Urejenje | Izberi vse) ali z bližnjico Ctrl + A
(pridržimo tipko CTRL in nato pritisnemo tipko A).
Slika 47: Izbor entitet
Align (Poravnava)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 46/160
Slika 48: Orodna vrstica Align
1
2
poravnava na spodnji rob
poravnava na levi rob
3 poravnava na desni rob
4 poravnava na zgornji rob
Ustvarjanje in spreminjanje indeksov
Pravilno določeni indeksi izboljšajo učinkovitost oz. zmanjšajo čas, potreben za izvršitev poizvedb.
Indekse določimo v oknu lastnosti entitete. Okno lastnosti entitete odpremo z dvoklikom na entiteto.
V oknu lastnosti entitete prikažemo seznam indeksov s klikom na kartico Indexes (Indeksi).
Slika 49: Seznam indeksov
Gumb
Add (Ustvari)
Edit (Uredi)
Delete (Izbriši)
ŠC VELENJE
Opis
Odpre okno lastnosti indeksa za nov indeks.
Urejanje indeksa – odpre okno lastnosti izbranega indeksa.
Brisanje indeksa.
Spreminjanje vrstnega reda atributov oz. polj indeksa.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 47/160
Vsebina obrazca v oknu lastnosti indeksa
Slika 50: Lastnosti indeksa
Polje
Unique (Edinstven)
Descend (Padajoče)
Case Sensitive
(Razlikovanje velikih in
malih črk)
Clustered
Levi seznam atributov
Desni seznam
Gumb
OK (V redu)
Cancel (Prekliči)
Help (Pomoč)
Opis
Izbrano potrditveno polje določa, da se vrednost atributa ne more
podvajati.
Padajoča urejenost indeksa.
Trenutno se še ne uporablja.
Urejenost osnovne tabele po polju oz. atributu indeksa v zbirki podatkov.
Seznam atributov entitete, ki niso uporabljeni v indeksu.
Seznam atributov oz. indeksnih polj.
Opis
Potrditev lastnosti indeksa.
Preklic sprememb v oknu lastnosti indeksa.
Prikaz pomoči.
Uporaba pravil
Pravila določajo pravilne vrednosti atributov. Npr. atribut Spol lahko vsebuje eno izmed vrednosti 'M',
'm', 'Ž' in 'ž'. Pravilo lahko definiramo posameznemu atributu ali pa v podatkovnem slovarju določimo
uporabniški podatkovni tip, ki ga nato uporabimo za določitev podatkovnega tipa različnih atributov.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 48/160
Uporabniški podatkovni tip določimo v podatkovnem
slovarju.
Slovar odpremo z ukazom Dictionary | User Types
(Slovar | Uporabniški tipi) ali v orodni vrstici File
(Datoteta) kliknemo ikono gumba Dictionary (Slovar)
.
Slika 51: Prikaz uporabniških podatkovnih
tipov
Dictionary (Slovar)
Slika 52: Podatkovni seznam
Gumb
Add (Ustvari)
Edit (Uredi)
Delete (Izbriši)
Load (Naloži)
Save (Shrani)
ŠC VELENJE
Opis
Ustvarjanje novega uporabniškega podatkovnega tipa.
Urejanje lastnosti izbranega uporabniškega podatkovnega tipa.
Brisanje izbranega uporabniškega podatkovnega tipa.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 49/160
Vsebina obrazca v oknu lastnosti uporabniškega podatkovnega tipa.
Slika 53: Element slovarja
Polje
Name (Ime)
Physical Name (Fizično
ime)
Datatype (Podatkovni
tip)
Width (Širina)
Check (Pravilo)
Default (Privzeto)
Gumb
OK (V redu)
OK+Add (V redu +
Nov)
Cancel (Prekliči)
Help (Pomoč)
ŠC VELENJE
Opis
Ime uporabniškega podatkovnega tipa.
Ime predmeta domene v zbirki podatkov.
Podatkovni tip, iz katerega določimo uporabniški podatkovni tip.
Število mest oz. znakov.
Veljavnostno pravilo.
Privzeta vrednost.
Opis
Shrani.
Shrani in ustvari nov uporabniški podatkovni tip.
Prekliči spremembe.
Prikaži pomoč.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 50/160
Ustvarjanje poročil
Pogosta naloga v službi informatike je izdelava
dokumentacije strukture zbirke podatkov. Če
uporabljamo za oblikovanje ERD CASE orodje,
potem lahko to nalogo hitro opravimo z izdelavo
ustreznega poročila.
Slika 54: Izgled poročila
Program CASE Studio nam omogoča izdelavo HTML in RTF poročil.
HTML poročilo ustvarimo z ukazom File | HTML Report … (Datoteka | HTML poročilo).
RTF poročilo ustvarimo z ukazom File | RTF Report … (Datoteka | RTF poročilo).
Poročilo hitreje ustvarimo s hitrima gumboma v orodni vrstici Reports (Poročila).
1
2
ustvari HTML poročilo
ustvari RTF poročilo
V HTML poročilih lahko izberemo različne oblike poročila.
Slika 55: Seznam atributov entitete
Logično in fizično poročilo ERD
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 51/160
Slika 56: Ustvarjanje logičnega poročila
Gumb
Generate (Ustvari)
View (Pregled)
Exit (Izhod)
Slika 57: Ustvarjanje fizičnega poročila
Opis
Ustvari poročilo.
Pregled poročila.
Izhod.
Ustvarjanje skripte (DDL)
CASE orodja omogočajo na osnovi izdelanega ERD ustvarjanje SQL skripte za ustvarjanje zbirke
podatkov na izbranem sistemu za upravljanje zbirk podatkov. Veliko orodij podpira tudi zamenjavo
izbranega sistema za upravljanje zbirk podatkov.
Preden ustvarimo SQL skripto, preverimo ERD.
Preverjanje izvršimo z ukazom Model | Model Verification (Model | Preverjanje modela) ali
uporabimo hitri gumb Model Verification (Model | Preverjanje modela)
(Datoteka).
ŠC VELENJE
INFORMATIKA
v orodni vrstici File
PODATKOVNE BAZE (1.letnik)
Stran 52/160
Slika 58: Lastnosti verifikacije modela
Slika 59: Obvestilo verifikacije
Ustvarjanje SQL skripte
Okno za ustvarjanje SQL skripte odpremo s klikom na hitri gumb Generate script (Ustvari skripto)
v orodni vrstici File (Datoteka).
Slika 60: Ustvarjanje SQL skripte - izbor predmetov
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 53/160
Slika 61: Ustvarjanje SQL skripte - način ustvarjanja
Gumb
Generate (Ustvari)
View (Pregled)
Exit (Izhod)
Stop (Ustavi)
Help (Pomoč)
Default (Privzemi)
ŠC VELENJE
Opis
Ustvari SQL skripto.
Pregled SQL skripte.
Izhod.
Ustavi ustvarjanje skripte.
Določi privzete nastavitve za ustvarjanje SQL skripte.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 54/160
5
RELACIJSKI PODATKOVNI MODEL
Relacijski podatkovni model temelji na predikatni logiki in teoriji množic. Vsi podatki so predstavljeni
kot matematične relacije, ki si jih lahko predstavljamo s tabelami. Relacijski podatkovni model se v
praksi najpogosteje uporablja.
Formalna (teoretična osnova):
! teorija o relacijah (teorija množic) in
! predikatni račun prvega reda.
5.1
TERMINOLOGIJA IN OSNOVNA STRUKTURA
R1
A1
relacija
atributi
A2
A3
A4
12
5
16
3
17
2
19
4
22
5
AN
relacijska shema
vrstica
kardinalnost
stolpec
primarni ključ
R2
X1
tuj ključ
X2
X3
A1
XN
12
16
12
stopnja relacije
Slika 62: Terminologija
RELACIJA
Je dvodimenzionalna tabela s stolpci in vrsticami (relacija - matematični pojem; tabela - fizični
pojem).
ATRIBUT
Predstavlja ime stolpca relacije.
DOMENA
Je množica dopustnih vrednosti za enega ali več atributov.
N-TERICA (ANGL. TUPLE)
Je vrstica relacije, ki predstavlja posamezen zapis oz. podaja podatke za
(entiteto) zaključenega organiziranega sveta.
ŠC VELENJE
INFORMATIKA
posamezen
PODATKOVNE BAZE (1.letnik)
objekt
Stran 55/160
STOPNJA RELACIJE
Predstavljena je s številom atributov relacije (unarna, binarna, trinarna ..., n-arna /n-ary/ relacija).
KARDINALNOST RELACIJE
Predstavljena je s številom vrstic, ki jih relacija vsebuje.
RELACIJSKA SHEMA
Ime relacije, ki mu sledi množica atributov R(A1, A2 ..., AN ) oz. ime relacije, ki mu sledi množica
parov, sestavljenih iz atributov in domen.
A1, A2 ..., AN naj bodo atributi z domenami D1, D2, ..., DN. Potem je množica {A1:D1, A2:D2 ...,
AN:DN} relacijska shema relacije R.
KLJUČ
Atribut ali množica atributov, ki unikatno določajo n-terico znotraj relacije.
KANDIDACIJSKI KLJUČ
Ključ, katerega nobena prava podmnožica ni nadključ relacije.
SESTAVLJEN KLJUČ
Ključ, ki ga sestavlja več kot en atribut.
ALTERNATIVNI KLJUČ
Kandidacijski ključ, ki ni bil izbran za primarni ključ.
TUJI ZUNANJI KLJUČ
Atribut ali skupina atributov znotraj relacije, ki je primarni ključ druge relacije (izhodiščne relacije).
RELACIJSKA ZBIRKA PODATKOV
Zbirka normaliziranih relacij.
MATEMATIČNA PREDSTAVITEV RELACIJE
Za dano množico N domen D1, D2 ..., DN je kartezični produkt definiran kot:
D1 x D2 x D3 x D4 ... x DN = {(d1, d2, d3 ... dN) | d1 ∈ D1, d2 ∈ D2 ..., dN ∈ DN }
Katerakoli množica n-teric iz tega kartezičnega produkta predstavlja relacijo nad množico N domen.
Relacija je podmnožica kartezijskega produkta liste domen, ki sestavljajo relacijo R. Na listi domen se
posamezna domena lahko pojavi tudi večkrat.
Relacija r relacijske sheme R(A1, A2 , A3 ...AN), ki jo označimo r(A) je množica urejenih n-teric: r=(
t1, t2 , t3 ...tm). Vsaka n-terica je urejen seznam N vrednosti t=< v1, v2 , v3 ...vN>, kjer je vsaka
vrednost vi, 1<= i <= N, element domene D(Ai) ali ima vrednost NULL.
RELACIJSKA INTEGRITETA – CELOVITOST
ENTITETNA CELOVITOST
V relaciji primarni ključ ne more imeti vrednosti null.
REFERENČNA CELOVITOST
Če v relaciji obstaja tuji (zunanji) ključ, mora biti njegova vrednost identična vrednosti v
njegovi izhodiščni relaciji ali pa ima vrednost null. NULL - vrednost atributa, ki je trenutno
neznana (ni določena).
OMEJITVE ZAKLJUČENEGA ORGANIZIRANEGA SISTEMA
Omejitve, ki jih definirajo uporabniki ali administratorji zbirke podatkov.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 56/160
LASTNOSTI RELACIJ:
! imena relacij so unikatna;
! vrednosti atributov so enostavne;
! imena atributov so unikatna znotraj relacije;
! vrednosti posameznega atributa imajo isto domeno;
! vrstni red atributov ni pomemben;
! vse vrstice se med seboj razlikujejo;
! v tabeli ni ponavljajočih se vrstic;
! vrstni red vrstic v relaciji je nepomemben.
Nekatere izmed trditev izhajajo iz lastnosti matematične relacije.
Relacija je množica; vrstni red elementov v množici ni pomemben (n-terice, atributi, dokler ni
postavljena struktura relacije).
V množici ni ponavljajočih se elementov (n-terica).
V relaciji so vrednosti za posamezno pozicijo določene z množico oz. domeno, v tabeli pa
pričakujemo vrednosti posameznega stolpca iz pripadajoče domene.
Preverjanje razumevanja
1. Kako si v relacijskem podatkovnem modelu predstavljamo relacijo?
a) s pravokotnikom
b) s tabelo
c) s črto
d) z rombom
2. Ali lahko ima več atributov iste relacije enako domeno (zalogo vrednosti)?
a) da
b) ne
3. Kateri element tabele predstavlja relacijska shema relacije?
a) vrstica s podatki
b) stolpec s podatki
c) posamezen naslov stolpca
d) naslovna vrstica
4. Katera je pravilna matematična predstavitev relacije v relacijskem podatkovnem modelu?
a) Relacija je kartezijski produkt atributov relacije.
b) Relacija je podmnožica kartezijskega produkta liste domen.
c) Relacija je selekcija kartezijskega produkta liste atributov.
5. Poiščite lastnost, ki je neustrezna (nepravilna) v seznamu lastnosti relacij relacijskega
podatkovnega modela.
a) Imena relacij so unikatna.
b) Imena atributov so unikatna znotraj relacije.
c) Vrednosti posameznega atributa imajo isto domeno.
d) Primarni ključ relacije lahko ima vrednosti null.
e) Vrstni red atributov ni pomemben.
5.2
PRETVORBA IZ E-R MODELA V RELACIJSKI PODATKOVNI MODEL
Pretvorba E-R modela v relacijski model je v CASE orodjih avtomatizirana. Načrtovalec podatkovne
zbirke mora v posameznih primerih še vedno »samostojno« pretvoriti E-R model v relacijski
podatkovni model. Naslednja enota nam bo predstavila način pretvorbe, ko moramo to delo opraviti
samostojno.
Pretvorba E-R modela v relacijski podatkovni model poteka v več korakih:
1. KORAK
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 57/160
Vsako entiteto E iz E-R modela prevedemo v relacijo R:
E(A1, A2 , A3 ...AN) => R(A1, A2 , A3 ...AN)
2. KORAK
Za vsako relacijo kardinalnosti 1 : 1 določimo pripadajoči relaciji (tabeli) S in T, ki
pripadata entitetama, ki ju relacija povezuje. Eni izmed relacij (tabel) dodamo tuji
ključ (primarni ključ druge relacije). Relaciji s tujim ključem dodamo tudi morebitne
atribute relacije.
=>
S(S1, S2 ..., SN)
E1(E11, E12 ..., E1N)
E2(E21, E22 ..., E2M)
=>
T(T1, T2 ..., TM)
Re(A1, A2 , A3 ...AN) =>
S(S1, S2 ...,SN, T1, A1, A2 , A3 ...AN)
ali
T(T1, T2 ..., TM, S1, A1, A2 , A3 ...AN)
3. KORAK
Za vsako relacijo kardinalnosti 1 : N določimo pripadajoči relaciji (tabeli) S in T, pri
čemer prevedemo v relacijo S entiteto na strani kardinalnosti 1, v relacijo T pa entiteto
na strani N. V relacijo T dodamo primarni ključ relacije S in morebitne atribute
relacije, ki povezuje entiteti E1 in E2.
=>
S(S1, S2 ..., SK)
E1(E11, E12 ..., E1K)
Eo(Eo1, Eoo ..., EoM)
=>
T(T1, T2 ..., TM)
Re(A1, A2 , A3 ...AN) =>
T(T1, T2 ..., TM, S1, A1, A2 , A3 ...AN)
4. KORAK
Za vsako relacijo kardinalnosti M : N določimo pripadajoči relaciji (tabeli) S in T, za
relacijo pa uvedemo novo relacijo (tabelo), v katero prenesemo kot tuja ključa
primarna ključa relacij S in T in dodamo morebitne atribute relacije, ki povezuje
entiteti EL in EI.
S(S1, S2 ..., SK)
EL(ELL, EL2 ..., ELK) =>
EI(EI1, EII ..., EIM)
=>
T(T1, T2 ..., TM)
Re(A1, A2 , A3 ...AN) =>
R(S1, T1, A1, A2 , A3 ...AN)
Primer pretvorbe ERD v relacijski podatkovni model
Slika 63: ERD za preprosto evidenco avtomobilov
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 58/160
1. KORAK
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE)
3. KORAK
V relacijo na strani N (AVTOMOBILI) dodamo primarni ključ relacije na strani 1 (DAVCNASTEVILKA). V relaciji AVTOMOBILI je atribut DAVCNA-STEVILKA tuj ključ (angl. Foreign
Key).
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2, DAVCNA-STEVILKA: C10)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE)
Preverjanje razumevanja
1. Izberite najustreznejši opis prvega koraka pretvorbe E-R modela v relacijski podatkovni model.
a) Več entitet v E-R modelu združimo v eno relacijo.
b) Vsako entiteto v E-R modelu prevedemo v samostojno relacijo.
c) Eno entiteto v E-R modelu razbijemo v več relacij.
2. Kako pretvorimo relacijo M : N v E-R modelu v relacijski podatkovni model?
a) Obe entiteti v E-R modelu pretvorimo v eno relacijo. Za relacijo v E-R modelu določimo novo
relacijo, vsebuje tuj ključ.
b) Obe entiteti v E-R modelu pretvorimo v samostojni relaciji. Za relacijo v E-R modelu
določimo novo vmesno relacijo, ki vsebuje dva tuja ključa, katera lahko skupaj predstavljata
sestavljeni ključ vmesne relacije.
c) Obe entiteti v E-R modelu pretvorimo v samostojni relaciji. Za relacijo v E-R modelu
določimo nov atribut v relaciji na strani N.
d) Obe entiteti v E-R modelu pretvorimo v samostojni relaciji. Za relacijo v E-R modelu
določimo novo vmesno relacijo, ki ne vsebuje tujih ključev.
3. Ali lahko pretvorba relacije v E-R modelu povzroči dodajanje več atributov v relacijo relacijskega
podatkovnega modela?
a) da
b) ne
6
NORMALIZACIJA
Pretvorba relacij vsaj v tretjo normalno obliko je predpogoj za ustrezno strukturo zbirke podatkov. Z
normalizacijo odpravimo redundantnosti podatkov pred implementacijo zbirke podatkov na ciljnem
sistemu za upravljanje zbirk podatkov.
6.1
POMEN NORMALIZACIJE
Normalizacija je tehnika, ki omogoča oblikovanje množice relacij z želenimi lastnostmi, ki izhajajo iz
podatkovnih zahtev zaključenega organiziranega sistema.
Normalizacija predstavlja transformacijo podatkov obravnavanega problema v relacije tako, da se
odpravi redundanca (angl. redundancy) in zagotovi podatkovna celovitost.
To je proces, ki zagotavlja, da relacije (tabele) ne bodo vsebovale redundantnih ali dvoumnih
podatkov, ki ne bodo predmet nepravilnosti pri vnosu, brisanju in popravljanju le-teh.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 59/160
Redundantnost podatkov obstaja, če se posamezen podatek nahaja na dveh mestih v isti zbirki
podatkov ali če je v zbirki podatkov shranjen podatek, ki ga lahko izračunamo (pridobimo) iz drugih
podatkov v isti zbirki podatkov.
Normalizacijo obravnavamo kot proceduro, ki poteka od spodaj navzgor in dopolnjuje E-R model.
Pogosto je normalizacija predstavljena tudi kot serija testov za potrditev oz. zavrnitev normalnih oblik.
Normalne oblike so pravila o združevanju atributov v relacije ob upoštevanju logičnih odvisnosti
(funkcionalne, večvrednostne, združitvene in ključno-domenske odvisnosti).
6.2
FUNKCIONALNA ODVISNOST
Opisuje odnose med atributi v relaciji. Če sta A in B atributa relacije R, je B funkcionalno odvisen od
A, A → B (A funkcionalno določa B), če za vsako vrednost A-ja v R obstaja natanko ena vrednost Bja.
Običajno funkcionalno odvisnost definiramo med množicami atributov znotraj relacije R.
6.3
FORMALNA PREDSTAVITEV FUNKCIONALNE ODVISNOSTI
Za R (A1, A2 , A3 ...AN) obstajata X in Y kot podmnožica R (X, Y ⊂ R).
Funkcionalna odvisnost X → Y za dano relacijo obstaja, če za vsak par n-teric t1 in t2 velja:
če je t1[X]= t2[X] ⇒ t1[Y]= t2[Y].
POPOLNA FUNKCIONALNA ODVISNOST
Atribut v relaciji je popolno funkcionalno odvisen, če je odvisen od celotnega ključa in ne le od dela
ključa.
Y je funkcionalno popolnoma odvisen od X, če po odstranitvi kateregakoli atributa A iz X popolna
funkcionalna odvisnost preneha obstajati.
X → Y; A ∈ X; (X-{A}) / → Y popolna funkcionalna odvisnost
delna funkcionalna odvisnost
X → Y; A ∈ X; (X-{A}) → Y
Determinanta funkcionalne odvisnosti predstavlja atribut ali skupino atributov z leve strani
funkcionalne odvisnosti.
DELNA FUNKCIONALNA ODVISNOST
Y je funkcionalno delno (parcialno) odvisen od X, če za pravo podmnožico X1 (X1 ⊂ X) velja, da
funkcionalno določa Y.
X1 → Y
X1 ⊂ X, X1 → Y
Preverjanje razumevanja
1. Kateri opis je najbolj ustrezen za pojem redundanca podatkov?
a) Redundanca predstavlja odvisnost med podatki v zbirki podatkov.
b) Redundanca predstavlja odvečnost oz. podvajanje podatkov v zbirki podatkov.
c) Redundanca predstavlja sestavljene atribute.
2. Izberite pravilni zaključek izjave. Izjava: Funkcionalna oblika predstavlja odnose med …
a) domenami vrednosti in atributi.
b) atributi dveh relacij.
c) atributi relacije.
3. A in B sta atributa relacije R. Atribut B je funkcionalno odvisen od atributa A, če:
a) za vsako vrednost A-ja v relaciji R obstaja natanko ena vrednost B-ja.
b) za vsako vrednost B-ja v relaciji R obstaja natanko ena vrednost A-ja.
c) za vsako vrednost A-ja v relaciji R obstaja vsaj ena vrednost B-ja.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 60/160
4. Izberite funkcionalno odvisnost, ki ustreza opisu v nadaljevanju. Opis: Neključni atribut je
funkcionalno odvisen od dela sestavljenega ključa.
a) popolna funkcionalna odvisnost
b) delna funkcionalna odvisnost
c) vsaka funkcionalna odvisnost
6.4
NORMALNE OBLIKE
Z normalizacijo odpravimo redundantnosti podatkov pred implementacijo zbirke podatkov na ciljnem
sistemu za upravljanje zbirk podatkov. Pravila za pretvorbo so zagotovilo za uspešno pretvorbo v
zahtevano normalizirano obliko.
Normalizacija je proces dekompozicije relacij.
Normalne oblike so pravila o grupiranju atributov v relacije ob upoštevanju logičnih odvisnosti
(funkcionalnega, večpomenskega, projekcijsko združitvenega in ključnega tipa).
VHOD
NENORMALIZIRANE
RELACIJE
IZHOD
normalizacija
NORMALIZIRANE
RELACIJE
Slika 64: Proces normalizacije
Cilj: Odprava nepravilnosti pri vnosu, brisanju in popravljanju podatkov.
Zagotovitev, da se posamezen podatek le enkrat vnese v zbirko podatkov in v primeru
spremembe podatka, da se le - ta spremeni le na enem mestu v zbirki podatkov.
Slika 65: Hierarhija normalnih oblik
Če relacija izpolnjuje pogoje N-te normalne oblike (NO), izpolnjuje tudi pogoje normalnih oblik od 1
do N.
FORMALNA DEFINICIJA NORMALNIH OBLIK
PRVA NORMALNA OBLIKA
Relacija R(A1, A2 , A3 ...AN) je v prvi normalni obliki, če in samo če so vrednosti v domenah
osnovne za vsak atribut A, v relaciji R(A1, A2 , A3 ...AN).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 61/160
DRUGA NORMALNA OBLIKA
Relacija R(A1, A2 , A3, ...AN) je v drugi normalni obliki, če in samo če je v prvi normalni obliki in je
vsak neključni atribut popolno funkcionalno odvisen od primarnega ključa relacije R(A1, A2 , A3
...AN).
TRETJA NORMALNA OBLIKA
Relacija R(A1, A2 , A3 ...AN) je v tretji normalni obliki, če in samo če je v drugi normalni obliki in
nobeden od njenih neključnih atributov ni tranzitivno odvisen od ključa relacije.
BOYCE-CODDOVA NORMALNA OBLIKA
Relacija R(A1, A2 , A3 ...AN) je v Boyce-Coddovi normalni obliki, če in samo če je v tretji normalni
obliki in je vsaka determinanta ključ.
Determinanta je atribut ali množica atributov, ki funkcionalno popolnoma določa nekatere atribute
(popolna funkcionalna odvisnost).
ČETRTA NORMALNA OBLIKA
Relacija R(A1, A2 , A3, ...AN) je v četrti normalni obliki, če in samo če je v BC normalni obliki in ne
vsebuje večvrednostnih odvisnosti.
Večvrednostna odvisnost v relaciji R(A1, A2 , A3) obstaja, če obstaja za vsak atribut A1 množica
atributov A2 in A3. Množici A2 in A3 sta medsebojno neodvisni.
PETA NORMALNA OBLIKA
Relacija R(A1, A2 , A3 ...AN) je v peti normalni obliki, če in samo če je v četrti normalni obliki in ne
vsebuje projekcijsko združitvene odvisnosti, ki ni posledica kandidacijskega ključa.
ŠESTA NORMALNA OBLIKA
Relacija R(A1, A2 , A3 ...AN) je v šesti normalni obliki, če in samo če je v peti normalni obliki in ne
obstaja ključna odvisnost.
6.4.1
UPORABNA DEFINICIJA NORMALNIH OBLIK
PRVA NORMALNA OBLIKA
Pri normalizaciji v prvo normalno obliko poiščemo in izločimo ponavljajoče se skupine atributov.
Izločimo jih v novo relacijo. Primarni ključ tako oblikovane relacije je sestavljen iz primarnega ključa
nenormalizirane relacije in ključa, ki pripada ponavljajoči se skupini atributov. Kot primarni ključ
torej izberemo atribut, ki izpolnjuje uporabnikove potrebe in zahteve.
Ponavljajoča skupina atributov je zbirka logično povezanih atributov, ki se večkrat pojavijo v
okviru dane relacije.
DRUGA NORMALNA OBLIKA
V novo relacijo prenesemo atribute, ki so le delno funkcionalno odvisni od primarnega ključa ali pa so
odvisni le od dela sestavljenega primarnega ključa in enega ali več drugih ključnih atributov.
TRETJA NORMALNA OBLIKA
Iz obstoječe relacije prenesemo v novo relacijo tiste atribute, ki so odvisni od neključnega atributa.
ČETRTA NORMALNA OBLIKA
Relacija izpolnjuje pogoje 4NO, če:
1. izpolnjuje pogoje 3NO in atributi niso odvisni le od ključa, temveč tudi od njegove vrednosti
ali
2. če prenesemo atribut iz ene relacije v drugo tako, da je le-ta popolnoma funkcionalno odvisen od
ključa druge relacije.
PETA NORMALNAOBLIKA
Relacija je v peti normalni obliki, če smo v relacijo prenesli večkratno pojavnost iste relacije.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 62/160
ŠESTA NORMALNA OBLIKA
/
OBLIKOVANJE RELACIJE, KI IZPOLNJUJE 3NO:
• definiranje atributov,
• združevanje logično povezanih atributov v relacije,
• določanje kandidacijskih ključev,
• izbira primarnih ključev,
• ugotovitev in izločitev ponavljajočih se skupin podatkov,
• združitev relacij z identičnimi ključi,
• ugotavljanje funkcionalnih odvisnosti,
• dekompozicija relacije - v dekompoziranih relacijah so vsi neključni atributi odvisni od
celotnega ključa relacije združitev relacij z identičnimi ključi,
• odkrivanje tranzitivnih odvisnosti:
- preverjanje odvisnosti med neključnimi atributi,
- preverjanje odvisnosti med posameznimi deli ključa in neključnimi atributi,
• dekompozicija relacije - zahteva izločitev vseh tranzitivnih odvisnosti,
• združitev relacij z identičnimi primarnimi ključi (nevarnost ponovne uvedbe tranzitivnih
odvisnosti).
Primer:
Relacija avtomobili vsebuje osnovne podatke o avtomobilih in njihovih lastnikih.
Postopoma normalizirajmo relacijo v 3NO.
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2, DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA:
DATE, NASLOV: C120, POSTNA-STEVILKA: C10, KRAJ: C120)
Ključ relacije AVTOMOBILI je atribut REGISTRACIJSKA-STEVILKA. Če obravnavamo podatke z
vidika lastništva avtomobilov, potem hitro ugotovimo, da ima lahko posamezen lastnik več
avtomobilov. V relaciji avtomobili imamo za lastnika, ki ima več avtomobilov, vedno vnesene
atribute o lastniku, ki imajo enake vrednosti. Ustvarimo novo relacijo LASTNIKI z atributi
DAVCNA-STEVILKA, IME, PRIIMEK, DATUMROJSTVA, NASLOV, POSTNA-STEVILKA,
KRAJ. Ključ relacije LASTNIKI je atribut DAVCNA-STEVILKA.
1NO
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2, DAVCNA-STEVILKA: C10)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE,
NASLOV: C120, POSTNA-STEVILKA: C10, KRAJ: C120)
ali
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, DAVCNA-STEVILKA: C10, ZNAMKA:
C120, BARVA: C20, CENA: DECIMAL12,2)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE,
NASLOV: C120, POSTNA-STEVILKA: C10, KRAJ: C120)
2NO
V drugem primeru ima relacija AVTOMOBILI sestavljen ključ. Atribut REGISTRACIJSKASTEVILKA, ki je del ključa, funkcionalno določa atribute ZNAMKA, BARVA, CENA.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 63/160
Ustvarimo novo relacijo, ki vsebuje atributa REGISTRACIJSKA-STEVILKA in DAVCNASTEVILKA.
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2)
AVTOMOBILI- LASTNIKI(REGISTRACIJSKA-STEVILKA: C15, DAVCNA-STEVILKA: C10)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE,
NASLOV: C120, POSTNA-STEVILKA: C10, KRAJ: C120)
3NO
V relaciji LASTNIKI neključni atribut POSTNA-STEVILKA funkcionalno določa atribut KRAJ (če
je znana vrednost poštne številke, potem za to vrednost poštne številke obstaja natančno ena vrednost
kraja). Tranzitivnost odpravimo z uvedbo nove relacije POSTNE-STEVILKE. Ključ novo nastale
relacije je atribut POSTNA-STEVILKA. V relaciji lastniki obdržimo atribut POSTNA-STEVILKA, ki
je tuj ključ.
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, BARVA: C20, CENA:
DECIMAL12,2)
AVTOMOBILI- LASTNIKI(REGISTRACIJSKA-STEVILKA: C15, DAVCNA-STEVILKA: C10)
LASTNIKI(DAVCNA-STEVILKA: C10, IME: C30, PRIIMEK: C30, DATUMROJSTVA: DATE,
NASLOV: C120, POSTNA-STEVILKA: C10, KRAJ: C120)
POSTNE-STEVILKE (POSTNA-STEVILKA: C10, KRAJ: C120)
Če bi v relaciji AVTOMOBILI imeli tudi atribut KODA-BARVE, potem bi odpravili tranzitivnost z
novo relacijo BARVE. V relaciji AVTOMOBILI je v tem primeru atribut KODA-BARVE tuj ključ.
BARVE(KODA-BARVE: C20, BARVA: C20)
AVTOMOBILI (REGISTRACIJSKA-STEVILKA: C15, ZNAMKA: C120, KODA-BARVE: C20,
CENA: DECIMAL12,2)
Preverjanje razumevanja
1. Izberite najbolj ustrezni opis normalizacije.
a) Normalizacija je postopek poimenovanja atributov.
b) Normalizacija je proces kompozicije relacij, ki zagotavlja redundantnost podatkov.
c) Normalizacija je postopek odkrivanja relacij, ki omogoča shranjevanje podatkov v zbirki
podatkov.
d) Normalizacija je proces dekompozicije relacij, ki odpravi redundantnost podatkov.
2. Določite pravilno zaporedje normalnih oblik glede na postopek pretvorbe.
Zap. št.
ŠC VELENJE
NO
šesta normalna oblika
boyce-coddova normalna oblika
prva normalna oblika
četrta normalna oblika
tretja normalna oblika
peta normalna oblika
druga normalna oblika
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 64/160
3. Pravilno povežite pravila za prve tri normalne oblike.
Relacija R(A1, A2 , A3 ...AN) je v
prvi normalni obliki, če in samo če
Relacija R(A1, A2 , A3 ...AN) je v
drugi normalni obliki, če in samo če
je v prvi normalni obliki in
nobeden od njenih
atributov ni tranzitivno
ključa relacije.
so vrednosti v domenah
vsak atribut A, v relaciji
A3 ...AN).
neključnih
odvisen od
Relacija R(A1, A2 , A3 ...AN) je v
tretji normalni obliki, če in samo če
je v drugi normalni obliki in
je vsak neključen atribut popolno
funkcionalno odvisen od primarnega
ključa relacije R(A1, A2 , A3 ...AN).
osnovne za
R(A1, A2 ,
4. Pri pretvorbi v katero normalno obliko uporabimo naslednjo uporabno definicijo normalne oblike?
Definicija: Iz obstoječe relacije prenesemo v novo relacijo tiste atribute, ki so odvisni od
neključnega atributa.
a) prvo normalno obliko
b) drugo normalno obliko
c) tretjo normalno obliko
5. Kateri atribut v relaciji OSEBE (EMSO: A13, PRIIMEK: A30, IME: A20, KRAJ: A120,
POSTNA_STEVILKA: A8) postopek normalizacije prenese v novo relacijo?
a) PRIIMEK
b) KRAJ
c) POSTNA_STEVILKA
d) IME
7
SISTEM ZA UPRAVLJANJE ZBIRK PODATKOV (SUZP)
S sistemi za upravljanje zbirk podatkov vsakdanji uporabniki programskih aplikacij nimajo
neposrednega stika. Za razvijalce programskih aplikacij pa je poznavanje SUZP potrebno pri
vsakdanjem delu.
Sistem za upravljanje zbirk podatkov je programski produkt, ki podpira zanesljivo hranjenje podatkov,
implementira strukturo povezav in omejitev ter omogoča poizvedovanje. V bistvu sistem za
upravljanje zbirk podatkov zagotavlja potrebno organizacijsko strukturo za uspešno hranjenje in
dostop do velike količine podatkov.
Je programski sistem, ki uporabniku omogoča definiranje, oblikovanje in vzdrževanje zbirke
podatkov, hkrati pa omogoča nadzor nad dostopom do zbirke podatkov.
Sistem za upravljanje zbirk podatkov omogoča:
! definiranje (ustvarjanje) zbirke podatkov - jezik za definiranje podatkov (angl. data definition
language - DDL),
! vnašanje, popravljanje, brisanje in vračanje podatkov - jezik za ravnanje s podatki (angl. data
manipulation language - DML),
! poizvedovanje z uporabo poizvedovalnega jezika (angl. query language),
! nadzor nad dostopom do zbirke podatkov:
o nadzor dostopa do zbirke podatkov,
o integriteta zbirke podatkov,
o vzpostavitev nadzornega sistema,
o uporabniško dostopen opis podatkov,
! pregled podatkov.
FUNKCIJE SISTEMA ZA UPRAVLJANJE ZBIRK PODATKOV
Sistem za upravljanje zbirk podatkov naj bi zagotavljal naslednje funkcije z različnih področij:
Shranjevanje, vračanje, spreminjanje (popravljanje) podatkov
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 65/160
Sistem za upravljanje zbirke podatkov mora uporabniku omogočiti možnosti za shranjevanje,
dostop in spreminjanje podatkov in organizacije zbirke podatkov.
Uporabniško dostopen katalog
Sistem za upravljanje zbirk podatkov mora zagotoviti uporabniku dostopen katalog
(podatkovni slovar, repozitorij), v katerem so shranjeni opisi o shranjenih podatkih metapodatki.
V podatkovnem slovarju shranjujemo:
! imena, podatkovne tipe in velikost podatkov,
! imena relacij (povezav),
! celovitostne omejitve nad podatki,
! imena avtoriziranih uporabnikov, ki imajo dostop do podatkov,
! zunanji, konceptualni in notranji model ter prehod v logični podatkovni model,
! uporabna statistika (frekvenca transakcij, število omejitev).
Še nekaj prednosti podatkovnega slovarja:
! zbiranje informacij o podatkovnem slovarju za podatkovni slovar zagotavlja nadzor
nad podatki,
! definiramo lahko pomen podatkov,
! komunikacija je enostavna,
! redundanco je lažje odkriti,
! beležijo se spremembe nad zbirko podatkov,
! možni sta zaščita in varnost.
Podpora transakcijam
Sistem za upravljanje zbirke podatkov mora zagotoviti mehanizem za zagotavljanje beleženja
posameznih transakcij.
Soglasen nadzor
Sistem za upravljanje zbirk podatkov mora zagotoviti popravljanje zbirk podatkov.
Sistem ponovne vzpostavitve
Sistem za upravljanje zbirk podatkov mora zagotoviti ponovno vzpostavitev zbirk podatkov
po poškodbi.
Sistem avtorizacije
Sistem za upravljanje zbirk podatkov mora zagotoviti sistem, ki samo avtoriziranim
uporabnikom omogoča dostop do zbirk podatkov.
Podpora za komuniciranje
Sistem za upravljanje zbirk podatkov mora biti pripravljen na integracijo s komunikacijsko
programsko opremo.
Podpora podatkovni neodvisnosti
Sistem za upravljanje zbirk podatkov mora zagotavljati podporo neodvisnosti programov od
aktualne strukture zbirk podatkov.
Podporni servisi
Sistem za upravljanje zbirk podatkov zagotavlja množico podpornih servisov. Podporni servisi
pomagajo administratorju zbirk podatkov pri administriranju le-te:
! orodja za uvoz in izvoz (angl. export in import) podatkov,
! nadzor nad uporabo zbirk podatkov in operacijami nad njo,
! programi za statistično analizo,
! pripomočki za reorganizacijo indeksov,
! fizična odstranitev brisanih podatkov in relacij.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 66/160
KOMPONENTE OKOLJA SISTEMA ZA UPRAVLJANJE ZBIRK PODATKOV
PROGRAMSKA
OPREMA
STROJNA
OPREMA
stroj
PODATKI
PROCEDURE
most
LJUDJE
človek
Slika 66: Komponente okolja sistema za upravljanje zbirke podatkov
Zaradi kompleksnosti in različnosti ni možna splošna posplošitev vseh komponent sistema za
upravljanje zbirk podatkov in njihove strukture.
programerji
uporabniki
administrator ZP
APLIKACIJSKI
PROGRAMERJI
POIZVEDBE
SHEMA ZP
DML
PROCESOR
PROCESIRANJE
POIZVEDB
DDL
PREVAJALNIK
PROGRAMSKA
OBJEK. KODA
UPRAVLJALEC
ZP
UPRAVLJALEC
PODATKOVNEGA
SLOVARJA
METODE
DOSTOPA
UPRAVLJALEC
DATOTEK
SISTEMSKI
VMESNI
POMNILNIK
ZBIRKA
PODATKOV in
PODATKOVNI
SLOVAR
SUZP
Slika 67: Komponente sistema za upravljanje zbirk podatkov
Procesiranje poizvedb
Najpomembnejša komponenta, ki prevede poizvedbe v zaporedje ukazov namenjenih upravljavcu ZP.
Upravljalec zbirke podatkov
Upravljalec zbirk podatkov deluje kot vmesnik med uporabniškimi aplikacijskimi programi in
poizvedbami. Potrjuje poizvedbe in preverja zunanje in konceptualne sheme v smislu določitve
konceptualnih zapisov, ki so potrebni za zadovoljitev zahtev. Potem izvede klic za upravljalca datotek
za izvedbo zahteve.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 67/160
programerji
uporabniki
administrator ZP
APLIKACIJSKI
PROGRAMERJI
POIZVEDOVANJE
SHEMA ZP
SUZP
AVTORIZACIJSKI
NADZOR
PREVERJANJE
CELOVITOSTI
UPRAVLJAVEC
PODATKOV
METODE
DOSTOPA
SISTEMSKI
VMESNI
POMNILNIK
PROCESIRANJE
UKAZOV
OPTIMIZACIJA
POVPRAŠEVANJ
UPRAVLJAVEC
TRANSAKCIJ
RAZPOREJEVALNIK
UPRAVLJALEC
VMESNEGA
PROSTORA
UPRAVLJALEC
PONOVNE
VZPOSTAVITVE
UPRAVLJALEC
DATOTEK
ZBIRKA
PODATKOV in
PODATKOVNI
SLOVAR
Slika 68: Upravljalec ZP
GLAVNE KOMPONENTE UPRAVLJALCA ZBIRKE PODATKOV
AVTORIZACIJSKI NADZOR
Preverja uporabnike, ali so avtorizirani za izpeljavo zahtevanih operacij.
PROCESOR UKAZOV
Potem ko je preverjen (avtoriziran) uporabnikov dostop, prevzame nadzor procesor ukazov.
PREVERJANJE CELOVITOSTI
Za vsako operacijo, ki izvede spremembo v zbirki podatkov, se preveri, če operacija izpolnjuje vse
celovitostne omejitve.
OPTIMIZACIJA POVPRAŠEVANJ
Določa optimalni plan (strategijo) izvrševanja poizvedb.
UPRAVLJALEC TRANSAKCIJ
Zagotavlja procesiranje operacij, podanih v transakcijah.
RAZPOREJEVALNIK
Ta modul je odgovoren za zagotavljanje izvajanja operacij brez medsebojnih konfliktov.
UPRAVLJALEC PONOVNE VZPOSTAVITVE
Zagotavlja, da ostane zbirka podatkov v konsistentnem stanju v času izpada. Odgovoren je za izvedbo
operacij zaključi (angl. commit) in prekini (angl. abort, rollback).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 68/160
UPRAVLJALEC VMESNEGA POMNILNIKA
Zadolžen je za prenos podatkov iz glavnega v sekundarni pomnilnik (disk, trak).
UPRAVLJALEC DATOTEK
Upravlja s shranjenimi datotekami in upravlja razdeljevanje pomnilniškega prostora na disku. Postavi
in vzdržuje seznam struktur in indeksov, definiranih v interni shemi. Ne upravlja direktno fizičnega
vhoda in izhoda podatkov. To zahtevo posreduje ustrezni metodi dostopa, ki prebere podatke iz ali v
ustrezen sistemski pomnilnik.
PROCESOR DML (jezik za ravnanje s podatki)
Prevede zahteve iz aplikacijskega programa v standardne klice gostiteljskega jezika.
PREVAJALNIK DDL (jezik za definiranje podatkov)
Pretvori DDL izjave v množice tabel, ki vsebujejo metapodatke. Te tabele hranimo v podatkovnem
slovarju, medtem ko so nadzorne informacije shranjene v glavi zapisa datotek s podatki.
UPRAVLJALEC PODATKOVNEGA SLOVARJA
Upravlja dostop do podatkovnega slovarja in ga vzdržuje. Do njega dostopa večina komponent SUZP.
PODATKOVNI SLOVAR
Katalog, podatkovni slovar, repozitorij je srce (osnovna komponenta) vsakega splošnega SUZP. Je
»mini« zbirka podatkov (shranjeni so metapodatki), katere osnovna funkcija je opis organizacije
zbirke podatkov, ki jo upravlja SUZP.
Podatkovni slovar je lahko:
!
!
pasivni: Pasivni podatkovni slovar - slovar, ki ga uporabljajo le uporabniki in administratorji.
Velja, da takšen sistem praviloma ni neodvisen.
aktivni: Aktivni podatkovni slovar - je sistem, ki je vedno konsistenten s strukturo oz.
organizacijo zbirke podatkov in ga SUZP vzdržuje samodejno (avtomatsko).
KOMPONENTE IDEALNEGA SUZP:
•
•
•
•
•
•
•
•
•
•
•
učinkovito orodje za konceptualno modeliranje;
podatkovni slovar;
orodje za oblikovanje vhodno/izhodnih poročil, neodvisno od fizične izvedbe;
učinkovita podpora logičnemu načrtovanju;
orodje za preslikavo iz logičnega v fizični model;
komponente za zagotavljanje tajnosti;
komponente za zagotavljanje in preverjanje celovitosti;
komponente za učinkovito ponovno vzpostavitev zbirke podatkov (arhiviranje in obnavljanje);
učinkovit poizvedovalni jezik;
generator za oblikovanje uporabniških programov;
generator za oblikovanje poročil …
Preverjanje razumevanja
1. Katera funkcija ne sodi med funkcije sistema za upravljanje zbirk podatkov?
a) shranjevanje, vračanje, spreminjanje (popravljanje) podatkov
b) podpora transakcijam
c) evidenca dogodkov
d) sistem avtorizacije
e) podporni servisi oz. orodja
2. Kdo izvaja funkcijo fizičnega dostopa do podatkov v zbirki podatkov na pomnilnem mediju?
a) sistem za upravljanje zbirk podatkov
b) operacijski sistem
3. Kdaj se preveri avtorizacija uporabnika v procesu izvajanja poizvedb?
a) pred začetkom izvajanja poizvedbe
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 69/160
b) po izvršitvi poizvedbe
4. Katere podatke vsebuje podatkovni slovar oz. katalog v zbirki podatkov?
a) podatke o dogodkih v poslovnem sistemu
b) metapodatke (podatke o organizaciji oz. strukturi zbirke podatkov)
7.1
FIREBIRD
Namestitev programa
Učenje SQL jezika je najučinkovitejše, če se ga učimo na konkretnih primerih.
Če nimamo dostopa do sistema za upravljanje zbirk podatkov, potem si namestimo svoj podatkovni
strežnik. Če nimamo kupljenega strežnika, potem izberemo brezplačen sistem za upravljanje zbirk
podatkov (Postgree, Firebird, MySQL).
Za spoznavanje zbirk podatkov si namestimo Firebird.
Slika 69: Logo Firebird
Brezplačna verzija programa je na voljo na spletnem naslovu http://www.firebirdsql.org.
Namestitev Firebirdovega strežnika je enostavna in ne zahteva posebnega znanja. V namestitvenem
čarovniku potrjujemo korake in po zaključku namestitve že lahko začnemo uporabljati sistem za
upravljanje zbirk podatkov.
V raziskovalcu odpremo mapo, v kateri je
shranjen namestitveni program. Trenutna verzija
namestitvenega programa je Firebird1.5.3.4870-0-Win32.exe. Z dvoklikom odpremo
okno čarovnika, ki nas vodi skozi postopek
namestitve. V prvem koraku izberemo jezik
namestitve.
Slika 70: Izbor jezika
Slika 71: Namestitev Firebirda
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 70/160
Nadaljevanje postopka namestitve
V oknu Namestitev ... kliknemo gumb Naprej >.
Pred nadaljevanjem namestitve je priporočljivo zapreti vse ostale programe.
Nadaljujemo z namestitvijo.Odpre se okno Namestitev ...
Prikažejo se licenčni pogoji programa.
Sprejmemo licenčne pogoje.
V oknu Namestitev ... kliknemo gumb Da, sprejemam vse pogoje licenčne pogodbe.
Nadaljujemo z namestitvijo.
V namestitvenem oknu kliknemo gumb Naprej >.
V namestitvenem oknu se prikažejo navodila za namestitev Firebirda.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se obrazec za izbor ciljnega mesta namestitve. Sprejmemo privzeto mesto namestitve.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se izbor namestitvenih komponent.
Če na diskovnem pogonu nimamo dovolj prostora, potem počistimo potrditveno polje Orodja za razvoj in
administracijo.
Sprejmemo privzete nastavitve.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se izbor mape v meniju Start.
Sprejmemo privzete nastavitve.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se izbor dodatnih opravil.
Sprejmemo privzete nastavitve.
Prikažejo se namestitvene nastavitve.
Začnemo postopek dejanske namestitve.
V namestitvenem oknu kliknemo gumb Namesti.
Med namestitvijo se izpisujejo informacije o poteku namestitve.
Prikažejo se informacije.
Preberemo informacije in nadaljujemo namestitev.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se informacija o zaključku namestitve.
Če smo v vrsti namestitve izbrali servis, potem je v obrazcu izbrano potrditveno polje za zagon servisa.
Sprejmemo zagon servisa in zaključimo namestitev.
V namestitvenem oknu kliknemo gumb Končaj.
Ustavitev in zagon Firebirdovega servisa
Strežnik za upravljanje zbirk podatkov je programska aplikacija, ki se izvaja v ozadju na strežniku.
Administrator zbirk podatkov mora v določenih primerih ustaviti delovanje strežnika za upravljanje
zbirk podatkov . Po opravljenih aktivnostih pa ga mora ponovno zagnati.
Program za ustavitev iz zagon Firebirdovega servisa je v nadzorni plošči.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 71/160
Slika 73: Ustavitev servisa
Slika 72: Firebirdov upravljalec
Ustavitev servisa
Odpremo program Firebird Server Maneger.
V zgornjem desnem delu okna Firebird Server Control kliknemo gumb Stop (Ustavi).
V levem spodnjem delu okna Firebird Server Control kliknemo gumb OK (V redu).
Zagon servisa
Odpremo program Firebird Server Maneger.
V zgornjem desnem delu okna Firebird Server Control kliknemo gumb Start (Začni).
V levem spodnjem delu okna Firebird Server Control kliknemo gumb OK (V redu).
7.2
DATABASE WORKBENCH
Namestitev programa Database Workbench
Sistem za upravljanje zbirk podatkov Firebird nima posebnega grafičnega vmesnika. Uporabimo
lahko program ISQL, ki v konzolnem oknu omogoča posamezna opravila.
Za spoznavanje zbirk podatkov je dobro, če si namestimo dodaten grafični program za upravljanje in
delo z zbirkami podatkov.
Program Database Workbench je zmogljiv program, ki
omogoča delo z zbirkami podatkov na strežnikih Oracle, MS
SQL Server, Firebird, Interbase, NexusDB. Program je
namenjen administratorjem zbirk podatkov za lažje delo in
upravljanje zbirk podatkov.
Dodatne informacije najdete na spletnem naslovu http://www.upscene.com.
Namestitev programa Database Workbench je enostavna in ne zahteva posebnega znanja. V
namestitvenem čarovniku potrjujemo korake in izberemo komponete, katere sisteme za upravljanje
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 72/160
zbirk podatkov bomo uporabljali. Po zaključku namestitve moramo pred uporabo še registrirati
strežnik zbirke podatkov.
V raziskovalcu odpremo mapo, v kateri je shranjen namestitveni program. Trenutna verzija
namestitvenega programa je DBWorkbenchRegistered287.exe. Z dvoklikom odpremo okno
čarovnika, ki nas vodi skozi postopek namestitve.
Pri izboru komponent
izberemo strežnike oz.
sisteme za upravljanje
zbirk podatkov, ki jih
uporabljamo pri svojem
delu (do njih lahko
dostopamo preko
protokola TCP/IP; možna
uporaba kateregakoli
strežnika v internetu, če
imamo pravico dostopa).
Slika 74: Izbor komponent
Postopek namestitve
V raziskovalcu odpremo mapo, v kateri je shranjen namestitveni program. Trenutna verzija
namestitvenega programa je DBWorkbenchRegistered287.
Odpremo namestitveni program.
V seznamu dokumentov dvokliknemo DBWorkbenchRegistered287
ali izberemo datoteko
DBWorkbenchRegistered287 .exe in pritisnemo vnašalko (Enter).
Odpre se okno Setup ...
Pred nadaljevanjem namestitve je priporočljivo zapreti vse ostale programe.
Nadaljujemo z namestitvijo.
V oknu namestitve kliknemo gumb Next > (Naprej).
Prikažejo se licenčni pogoji programa.
Sprejmemo licenčne pogoje.
V oknu Setup ... kliknemo izbirni gumb I accept the agreement (Da, sprejemam vse pogoje licenčne
pogodbe).
Nadaljujemo nastavitev.
V oknu Setup ... kliknemo gumb Next > (Naprej).
Prikaže se obrazec za izbor ciljnega mesta namestitve. Sprejmemo privzeto mesto namestitve.
V namestitvenem oknu kliknemo gumb Next > (Naprej).
Prikaže se obrazec za izbor komponent.
Počistimo potrditveno polje NexusDB Related Files.
V namestitvenem oknu v seznamu komponent počistimo potrditveno polje NexusDB Related Files.
Počistimo potrditveno polje Oracle Related Files.
V namestitvenem oknu v seznamu komponent počistimo potrditveno polje Oracle Related Files.
Premaknemo se v naslednji korak namestitve.
V namestitvenem oknu kliknemo gumb Naprej >.
Prikaže se izbor mape v meniju Start.
Sprejmemo privzeto nastavitev.
V namestitvenem oknu kliknemo gumb Next > (Naprej).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 73/160
Prikaže se izbor dodatnih aktivnosti, in sicer ustvarjanje ikone na namizju in v vrstici hitri zagon.
Sprejmemo privzete nastavitve.
V namestitvenem oknu kliknemo gumb Next > (Naprej).
Prikaže se namestitvene nastavitve.
Začnemo postopek dejanske namestitve.
V namestitvenem oknu kliknemo gumb Install (Namesti).
Med namestitvijo se izpisujejo informacije o poteku namestitve.
Prikaže se informacija o zaključku namestitve.
Programa po namestitvi ne odpremo, zato počistimo potrditveno polje Start Database Workbench
(Odpri Database Workbench).
V namestitvenem oknu počistimo potrditveno polje Start Database Workbench (Odpri Database
Workbench).
Zaključimo namestitev.
V namestitvenem oknu kliknemo gumb Finish (Končaj).
Registracija Firebirdovega strežnika v DBW
Pred uporabo programa Database Workbench moramo registrirati vsaj en sistem za upravljanje zbirk
podatkov. Po registraciji lahko ustvarimo nove zbirke ali registriramo obstoječe zbirke.
Ob prvem zagonu programa se nam odpre okno za registracijo sistema za upravljanje zbirk podatkov.
Če že imamo registriran kakšen strežnik in želimo registrirati dodatnega, kliknemo hitri gumb
v orodni vrstici podokna
Register Server (Registriraj strežnik)
Enterprise Manager (Upravljanje strežnikov) ali desno kliknemo
vozlišče Server (Strežnik) in v priročnem meniju izberemo ukaz
Register Server (Registriraj strežnik).
Odpre se okno čarovnika za registracijo strežnika.
V čarovniku izberemo Firebirdov strežnik in v obrazcu registracijskih lastnosti strežnika določimo
vrednost polj.
Host
Alias
Protocol
Username
Password
Architecture
SYSDBA Password
Security Database
ŠC VELENJE
Ime sistema ali IP naslov sistema na katerem se izvaja (teče) Firebird. Če
strežnik ne deluje na privzetem portu, potem za poševnico vpišemo še številko
porta npr. localhost/3055.
Oznaka strežnika v programu DBW.
Omrežni protokol.
Privzeto uporabniško ime.
Geslo privzetega uporabnika.
Arhitektura Firebird-ovega strežnika.
Geslo sistemskega administratorja – uporabnika SYSDBA. Privzeta začetna
vrednost je masterkey.
Cela pot do varnostne datoteke (SECURITY.FDB) na strežniku. Za arhitekturo
SuperServer vrednost ni zahtevana.
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 74/160
Slika 75: Registracija strežnika
Slika 76: Lastnosti registracije
Ustvarjanje nove prazne zbirke podatkov
Zbirka podatkov je datoteka oz. dokument, ki ga ustvarimo na strežniku in je namenjen za
shranjevanje podatkov. Ustvarimo jo z ukazom Create database ali uporabimo grafični vmesnik, ki
nam olajša delo. Pred uporabo ukaza moramo vzpostaviti povezavo s strežnikom z veljavnim
uporabniškim imenom in geslom.
Če imamo v DBW registriran Firebirdov strežnik, potem se ob zagonu programa vzpostavi povezava
s Firebirdovim strežnikom. Če strežnik zaradi kakršnihkoli razlogov ni na voljo, potem se ob
odpiranju programa DBW izpiše sporočilo, da povezave s strežnikom ni možno vzpostaviti.
Nov dokument zbirke podatkov ustvarimo z ukazom Create New Database ... (Ustvari novo zbirko
podatkov …) v menijski vrstici File (Datoteka) ali desno kliknemo vozlišče Databases (Zbirke
podatkov) v področju Firebirdovega strežnika in v priročnem meniju izberemo omenjeni ukaz.
Slika 77: Ukaz za ustvarjanje nove zbirke
Odpre se okno čarovnika za ustvarjanje nove zbirke podatkov.
V prvem koraku čarovnika se prikaže pozdravna stran.
V drugem koraku določimo podatke prijave in informacije osnovne datoteke zbirke podatkov.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 75/160
Slika 78: Lastnosti nove zbirke
Server (Strežnik)
Protocol (Protokol)
Strežnik, na katerem bo ustvarjena zbirka podatkov.
Protokol za vzpostavitev povezave s strežnikom in zbirko
podatkov.
Username (Uporabnik)
Uporabniško ime, ki se uporabi pri ustvarjanju zbirke podatkov.
Uporabnik postane lastnik ustvarjene zbirke in DBW uporablja
tega uporabnika kot privzetega pri vzpostavljanju povezave z
zbirko podatkov.
Password (Geslo)
Geslo uporabnika.
Alias (Oznaka)
Oznaka zbirke podatkov v DBW.
Primary database file (Osnovna Pot in ime osnovne datoteke na strežniku.
datoteka zbirke podatkov)
Page size (Velikost strain)
Velikost strani v zlogih.
Primary file length (Velikost Največja velikost osnovne datoteke zbirke podatkov.
osnovne datoteke)
Unlimited length (Neomejena Neomejena dolžina je možna pri operacijskih sistemih, ki
dolžina)
podpirajo 64 bitne I/O operacije.
V naslednjem koraku določimo imena in velikost dodatnih datotek zbirke podatkov.
V zadnjem koraku določimo privzeti nabor znakov in verzijo SQL-a.
Ustvarjanje organizacije zbirke podatkov s SQL skripto
V večini primerov ustvarimo strukturo oz. organizacijo zbirke podatkov z izvršitvijo SQL skripte.
Prednost ustvarjanja s skripto so hiter prehod iz načrtovanja v implementacijo, hitrejše večkratno
ustvarjanje na različnih strežnikih …
V DBW vzpostavimo povezavo z zbirko podatkov na strežniku. V podoknu Enterprise Manager
(Upravljanje strežnikov) s klikom na gumb + (Razširi) pred vozliščem Databases (Zbirke podatkov)
prikažemo seznam registriranih zbirk na Firebirdovem strežniku.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 76/160
Slika 79: Podokno za upravljanje strežnikov
V seznamu zbirk podatkov dvokliknemo oznako zbirke podatkov Avtomobili. Odpre se podokno
zbirke podatkov Avtomobili in vzpostavi se povezava z zbirko podatkov avtomobili.fdb.
Slika 80: Delovno okno vzpostavljene povezave z zbirko podatkov
Z ukazom Editors | Script Editor … (Urejevalniki | Urejevalnik SQL skript …) odpremo urejevalnik
SQL skript. Okno lahko odpremo tudi s klikom na hitri gumb Script Editor (Urejevalnik SQL skript)
v orodni vrstici Editors (Urejevalniki) ali bližnjico Ctrl+F2. V urejevalniku s klikom na hitri
gumb Open (Odpri) v orodni vrstici podokna urejevalnika SQL skript odpremo pogovorno okno za
izbor datoteke. Izberemo ustrezno datoteko. V urejevalniku se prikaže vsebina SQL kode.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 77/160
Slika 81: Urejevalnik SQL skript
Kodo izvršimo s klikom na hitri gumb Run (Izvedi)
ali uporabimo bližnjico F9.
Po izvršitvi potrdimo transakcijo s klikom na hitri gumb Commit (Potrdi)
Ctrl+ALT+C.
ali uporabimo bližnjico
Vstavljanje podatkov s SQL skripto
V večini primerov ustvarimo strukturo oz. organizacijo zbirke podatkov z izvršitvijo SQL skripte.
Vrednosti podatkov v zbirko vstavimo z izvršitvijo SQL skripte, ki vsebuje insert stavke.
V DBW vzpostavimo povezavo z zbirko podatkov na strežniku. V podoknu Enterprise Manager
(Upravljanje strežnikov) s klikom na gumb + (Razširi) pred vozliščem Databases (Zbirke podatkov)
prikažemo seznam registriranih zbirk na Firebirdovem strežniku.
Slika 82: Vzpostavitev povezave
V seznamu zbirk podatkov dvokliknemo oznako zbirke podatkov Avtomobili. Odpre se podokno
zbirke podatkov Avtomobili in vzpostavi se povezava z zbirko podatkov avtomobili.fdb.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 78/160
Slika 83: Delovno okno vzpostavljene povezave z zbirko podatkov
Z ukazom Editors | Script Editor … (Urejevalniki | Urejevalnik SQL skript …) odpremo urejevalnik
SQL skript. Okno lahko odpremo tudi s klikom na hitri gumb Script Editor (Urejevalnik SQL skript)
v orodni vrstici Editors (Urejevalniki) ali bližnjico Ctrl+F2. V urejevalniku s klikom na hitri
gumb Open (Odpri) v orodni vrstici podokna urejevalnika SQL skript odpremo pogovorno okno za
izbor datoteke. Izberemo ustrezno datoteko. V urejevalniku se prikaže vsebina SQL kode.
Slika 84: Urejevalnik SQL skript
Kodo izvršimo s klikom na hitri gumb Run (Izvedi)
ali uporabimo bližnjico F9.
ŠC VELENJE
PODATKOVNE BAZE (1.letnik)
INFORMATIKA
Stran 79/160
Po izvršitvi potrdimo transakcijo s klikom na hitri gumb Commit (Potrdi)
Ctrl+ALT+C.
8
ali uporabimo bližnjico
POIZVEDOVALNI JEZIKI
Poizvedovalni jeziki se uporabljajo pri delu z zbirkami podatkov. Standardni poizvedovalni jezik –
SQL je standard na področju podatkovnih zbirk. Poznavanje SQL-a je predpogoj za razvoj resnejših
programskih aplikacij.
Komercialni produkti:
• poizvedovanja s primer elementi (angl. Query By Examples) QBE,
• strukturirani poizvedovalni jezik (angl. Structured Query Language) SQL.
8.1
POIZVEDOVANJA S PRIMER ELEMENTI (QBE)
Lastnosti:
• dvodimenzionalna sintaksa,
• enostaven za učenje in uporabo,
• vprašanja so ustvarjena s pomočjo postavljanja primer elementov,
• poleg poizvedb običajno zmore tudi vnašanje, popravljanje in brisanje zapisov.
Osnovna struktura:
• podobe tabel, ki predstavljajo strukturo tabel v zbirki podatkov,
• primer elemente vnašamo v eno ali več vrstic podobe tabele,
• primer elementi so lahko konstante, izrazi ...
Z uporabo grafičnega vmesnika in postavljanja primer elementov določimo poizvedbo.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 80/160
Obrazec za ustvarjanje poizvedbe - QBE
Slika 85: Obrazec za ustvarjanje poizvedbe - QBE
8.2
SQL (STRUCTURED QUERY LANGUAGE)
OSNOVA
N-terični relacijski račun, relacijska algebra.
STANDARDI:
- 1986 - ANSI SQL (technical Committee X3H2 - Database);
- 1992 - SQL2 standard;
- 1999 – SQL3 standard.
Cilji standarda:
- specifikacija sintakse in semantike, SQL/DDL in SOL/DML,
- definicija podatkovne strukture in osnovnih operacij za oblikovanje, dostop, vzdrževanje, nadzor
in zaščito zbirk podatkov,
- zagotovitev prenosljivosti definicij zbirk podatkov in operacijskih modulov med ustreznimi SUZP,
- specifikacija standardov za vključitev v produkt,
- zagotovitev začetnega standarda za probleme integritete, upravljanja transakcij, uporabniških
funkcij in združitvenih operacij v okviru SQL.
Lastnosti:
- enodimenzionalna sintaksa,
- enostaven za učenje.
Kaj zmore?
- DDL (Data Definition Language): Vsebuje stavke (ukaze) za ustvarjanje zbirke podatkov,
ustvarjanje indeksov, omejitev in definiranje pogledov (CREATE), brisanje relacij (DROP),
spreminjanje relacijske sheme (ALTER) in dodeljevanje pravic dostopa (GRANT/REVOKE).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 81/160
-
DML (Data Manipulation Language): Vključuje poizvedovalni stavek (SELECT) in stavke za
vnašanje (INSERT), brisanje (DELETE) in popravljanje (UPDATE) podatkov v zbirki
podatkov.
Omogoča izvajanje veljavnostnih (celovitostnih) pravil in nadzor nad transakcijami.
SQL je nepostopkovni programski jezik, ki se uporablja za upravljanje in rokovanje s podatki v
zbirkah podatkov. SQL je bil razvit v IBM-ovem laboratoriju v San Joseju v Kaliforniji. Razvit je bil
v poznih 1970-ih (1974). Kratica SQL predstavlja Structured Query Language (strukturirani
poizvedovalni jezik) in jo izgovarjamo »sequel«. Razvit je bil za IBM-ovo podatkovno bazo DB2
(kratica RDBMS oz. angl. Relational Database Management System).
SQL je danes »de facto« standardiziran programski jezik za zajemanje in rokovanje s podatki v
relacijskih zbirkah podatkov. Programerjem in upravitelju zbirke podatkov omogoča:
- spreminjanje strukture (organizacije) podatkov,
- spreminjanje sistemskih varnostnih nastavitev,
- dodajanje in spreminjanje uporabniških pravic nad predmeti v zbirki podatkov,
- zajemanje podatkov s pomočjo poizvedb,
- obdelavo podatkov v zbirki podatkov.
SQL sestavlja več ukazov (stavkov), ki jih razvrščamo v naslednje skupine:
- DML (Data Manipulation Language) skupina stavkov za ravnanje (manipulacijo) s podatki,
- DDL (Data Definition Language) skupina stavkov za definiranje (ustvarjanje in spreminjanje)
strukture (organizacije) zbirke podatkov,
- DCL (Data Control Language) skupina stavkov za nadzor in dodeljevanje pravic uporabnikom za
izvajanje operacij ali pravic rokovanja s posameznimi podatki v zbirki podatkov,
- TCL (Transaction Control Language) upravljanje transakcij.
Preverjanje razumevanja
1. Katera je angleška kratica za poizvedovanja s primer elementi?
a) SQL
b) QBE
c) DBMS
2. Katera našteta lastnost ni značilnost poizvedovanj s primer elementi?
a) Enostavnost uporabe.
b) Poizvedbe ustvarimo s pomočjo postavljanja primer elementov.
c) Poizvedbe ustvarimo v konzolnem oknu.
d) Poleg poizvedb lahko ustvarimo tudi stavke za vnašanje, popravljanje in brisanje zapisov.
3. Pravilno povežite slovenske izraze in angleške kratice za skupine stavkov SQL-a.
DDL
upravljanje transakcij
DML
nadzor in dodeljevanje pravic
DCL
ravnanje (manipulacija) s podatki
TCL
definiranje (ustvarjanje in spreminjanje) strukture
(organizacije) zbirke podatkov
Poizvedovalni jeziki se uporabljajo pri delu z zbirkami podatkov. Standardni poizvedovalni jezik –
SQL je standard na področju podatkovnih zbirk. Poznavanje SQL-a je predpogoj za razvoj resnejših
programskih aplikacij.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 82/160
Osnove SQL jezika bomo spoznali na preprosti zbirki podatkov, ki vsebuje dve tabeli, in sicer
AVTOMOBILI in LASTNIKI. Avtomobil ima enega ali nič lastnikov. Posamezen lastnik ima nič ali
več avtomobilov.
ERD za zapisane zglede oz. primere
Slika 86: ERD lastnikov avtomobilov
Tabela LASTNIKI:
DAVCNASTEVILKA IME
12059685
12349645
45634567
JOŽE
MATEJ
JAN
PRIIMEK
DATUMROJSTVA
KOREN
BAN
KOS
12.5.1968
7.7.1980
12.5.1968
Tabela AVTOMOBILI:
REGISTRACIJSKASTEVILKA ZNAMKA
CE-11-02F
CE-22-75A
CE-23-54I
LJ-56-55Z
LJ-56-88H
MB-02-85L
Renault
Volkswagen
Audi
Ford
Ford
Volkswagen
BARVA
CENA
DAVCNASTEVILKA
rdeča
bela
črna
bela
siva
siva
€ 13.000,00
€ 12.000,00
€ 22.000,00
€ 9.000,00
€ 15.500,00
€ 15.500,00
12349645
45634567
12349645
12059685
12059685
Uporabljena notacija v sintaksi:
! [ Da | Ne] – opcijski element (oglati oklepaji);
! | - logični ali
! {} – predpisana uporaba elementa
! … - ponavljanje zadnjega elementa
! <element> - podrobnejši opis sintakse elementa
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 83/160
8.3
DML
V skupini DML so stavki: SELECT, INSERT, DELETE in UPDATE.
8.3.1
SELECT STAVEK
SELECT stavek se uporablja za poizvedovanje podatkov. Rezultat poizvedbe ima strukturo tabele
(relacije) in vsebuje stolpce (podatkovne elemente), zapise (vrstice), ki so rezultat poizvedbe, vendar
ne obstaja kot fizična tabela (relacija) v zbirki podatkov.
Sintaksa:
SELECT
[DISTINCT | ALL]
{* | <polje_izraz> [, <polje_izraz> …]}
FROM <tabela_referenca> [, <tabela_referenca> …]
[WHERE <filter_pogoj>]
[GROUP BY polje [COLLATE oznaka_razvrscanja]
[, polje [COLLATE oznaka_razvrscanja] …]
[HAVING <zdruzitveni pogoj>]
[UNION <select_izraz> [ALL]]
[ORDER BY <polje_urejenost>];
<polje_izraz> =
{
polje | <konstanta> | <izraz> | <funkcija>
| udf ([<polje_izraz> [, <polje_izraz> …]])
| NULL | USER
}
[COLLATE oznaka_razvrscanja] [AS vzdevek]
Komentar omogoča zapis opomb v poizvedbo. Komentar zapišemo na naslednja načina:
! vse kar je desno od dveh znakov – (vezaj) predstavlja vrstični komentar;
! /* to je primer komentarja
čez več vrstic */
Poizvedbe posameznih ali vseh polj iz ene tabele
SELECT REGISTRACIJSKASTEVILKA, ZNAMKA, BARVA
-- ime tabele
FROM AVTOMOBILI;
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CE-22-75A
LJ-56-88H
CE-23-54I
MB-02-85L
CE-11-02F
LJ-56-55Z
Bela
Siva
Črna
Siva
Rdeča
Bela
Volkswagen
Ford
Audi
Volkswagen
Renault
Ford
-- seznam polj
SELECT AVTOMOBILI.*
FROM AVTOMOBILI;
/*
* - izpis vseh polj iz tabele avtomobili
SELECT *
FROM AVTOMOBILI;
/*
* - izpis vseh polj iz vseh tabel v from delu
ŠC VELENJE
INFORMATIKA
*/
*/
PODATKOVNE BAZE (1.letnik)
Stran 84/160
Seznam polj v rezultatu je v enakem vrstnem redu, kot je v strukturi tabele.
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-11-02F
CE-22-75A
CE-23-54I
LJ-56-55Z
LJ-56-88H
MB-02-85L
rdeča
bela
črna
bela
siva
siva
€ 13.000,00
€ 12.000,00
€ 22.000,00
€ 9.000,00
€ 15.500,00
€ 15.500,00
12349645
45634567
Renault
Volkswagen
Audi
Ford
Ford
Volkswagen
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI;
-- ime tabele
12349645
12059685
12059685
-- seznam polj
REGISTRACIJSKASTEVILKA
CE-22-75A
LJ-56-88H
CE-23-54I
MB-02-85L
CE-11-02F
LJ-56-55Z
-- seznam polj
SELECT BARVA, ZNAMKA
-- ime tabele
FROM AVTOMOBILI;
BARVA
ZNAMKA
rdeča
bela
črna
bela
siva
siva
Renault
Volkswagen
Audi
Ford
Ford
Volkswagen
OBLIKA SELECT STAVKA:
! število presledkov je poljubno;
! število prostih vrstic je poljubno;
! poizvedba se zaključi s podpičjem;
! razlikovanje velikih in malih črk je pomembno le pri besedilnih konstantah (med enojnimi
narekovaji).
Naslednji stavek je pravilen (ni pa priporočljive oblike).
SELECT
baRVA
FROM
AVTOMobili
;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 85/160
Preverjanje razumevanja
1. Izberite element notacije, ki v sintaksi SQL-a predstavlja opcijo.
a) |
b) [ ]
c) {}
2. Izberite stavke s pravilnimi zapisi komentarja v SELECT stavku.
a) SELECT * seznam polj –
FROM AVTOMOBILI; /* ime tabele */
b) SELECT *
-- seznam polj
FROM AVTOMOBILI; /* ime tabele */
c) SELECT *
-- seznam polj -FROM AVTOMOBILI;
-- ime tabele */
d) SELECT *
-- seznam polj -FROM AVTOMOBILI;
-- ime tabele */
3. Izberite vse nepravilne trditve za uporabo * v seznamu polj v SQL stavku.
a) Znak * v seznamu polj select stavka določa izpis vseh polj iz prve tabele v from delu select
stavka.
b) Znak * v seznamu polj select stavka določa izpis vseh polj iz vseh predmetov v from delu
select stavka.
c) Znak * v seznamu polj select stavka določa izpis naključnih polj iz vseh tabel v from delu
select stavka.
d) Znak * v seznamu polj select stavka določa začetek komentarja v vrstici.
4. Določite pravilno zaporedje zapisanih delov SELECT stavka.
;
FROM
REGISTRACIJSKASTEVILKA -- ime polja
SELECT
AVTOMOBILI -- ime tabele
5. Izberite vrstico SELECT stavka, v kateri je prva napaka.
SELECT
BARVA,
, ZNAMKA
FROM /* ; */
AVTOMOBILI;
6. Izberite trditev, ki najbolj pravilno opisuje razliko med naslednjima poizvedbama:
SELECT ZNAMKA, BARVA FROM AVTOMOBILI;
SELECT BARVA, ZNAMKA FROM AVTOMOBILI;
a) Druga poizvedba ima v rezultatu več stolpcev kot prva.
b) Rezultat obeh poizvedb ima enako število vrstic in stolpcev.
c) Rezultat obeh poizvedb ima enako število vrstic in stolpcev, le vrstni red stolpcev je obrnjen.
d) Rezultat obeh poizvedb ima enako število vrstic in stolpcev, le vrstni red vrstic je obrnjen.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 86/160
Filter oz. pogoj poizvedbe
Če v poizvedbi uporabimo pogoj oz. filter, potem se za vsak zapis preveri, če izpolnjuje pogoj ali ne.
Če izpolnjuje pogoj, potem je zapis v rezultatu poizvedbe; v nasprotnem ga ni. Filter oz. pogoj
določimo v WHERE delu SELECT stavka.
Sintaksa:
SELECT
[DISTINCT | ALL]
{* | <polje_izraz> [, <polje_izraz> …]}
FROM <tabela_referenca> [, <tabela_referenca> …]
[WHERE <filter_pogoj>]
…
<filter_pogoj> =
<polje_izraz> <operator> {<polje_izraz> | (<select_ena_vrednost>)}
| <polje_izraz> [NOT] BETWEEN <polje_izraz> AND <polje_izraz>
| <polje_izraz> [NOT] LIKE <polje_izraz> [ESCAPE <polje_izraz>]
| <polje_izraz> [NOT] IN (<polje_izraz>
[, <polje_izraz> …] | <select_ena_vrednosti>)
| <polje_izraz> IS [NOT] NULL
| <polje_izraz> {>= | <=}
| <polje_izraz> [NOT] {= | < | >}
| {ALL | SOME | ANY} (<select_ena_vrednosti >)
| EXISTS (<select_izraz>)
| SINGULAR (<select_izraz>)
| <polje_izraz> [NOT] CONTAINING <polje_izraz>
| <polje_izraz> [NOT] STARTING [WITH] <polje_izraz>
| (<filter_pogoj>)
| NOT <filter_pogoj>
| <filter_pogoj> OR <filter_pogoj>
| <filter_pogoj> AND <filter_pogoj>
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
Podatkovni tip
konstante
besedilo
celo število
decimalno število
datum
čas
datum in čas
ni vrednosti
Konstanta (primer)
'bela' (besedilna konstanta je besedilo med enojnima narekovajema)
520 ali '520'
50.25 ali '50.25'
'15.02.2004' ali '15/02/2006' (uporabimo ločilo, ki je določeno v
področnih nastavitvah sistema)
'20:25:30'
'15.02.2004 20:25:30'
NULL
Izpis vseh avtomobilov bele barve.
SELECT *
FROM AVTOMOBILI
WHERE BARVA = 'bela';
-- vsa polja
-- ime tabele
-- besedilne konstante so občutljive na velike in male črke
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-22-75A
LJ-56-55Z
bela
bela
€ 12.000,00
€ 9.000,00
45634567
12349645
ŠC VELENJE
Volkswagen
Ford
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 87/160
Besedilne konstante razlikujejo velike in male črke. Besedilna konstanta 'bela' ni enaka konstanti
'BELA' ali 'Bela'.
SELECT *
-- vsa polja
FROM AVTOMOBILI
-- ime tabele
WHERE BARVA = 'BELA'; -- pogoj, ki nima ujemanja v zbirki podatkov
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
Primerjalni operatorji
Operator
=
<
>
<=
>=
!<
!>
<>
!=
Pomen
enako
manjši
večji
manjši ali enako
večji ali enako
ni manjši
ni večji
različen
različen
Primeri:
Filter oz. pogoj
BARVA = 'siva'
BARVA != 'siva'
BARVA <> 'siva'
CENA > 12000
CENA >= 12000
CENA < 12000
CENA <= 12000
Pomen
Barva mora biti siva.
Barva ni siva (je različna od sive).
Barva ni siva (je različna od sive).
Cena je večja od 12000.
Cena je večja ali enaka 12000.
Cena je manjša od 12000.
Cena je manjša ali enaka 12000.
Uporaba polj podatkovnega tipa datum in čas v filtru oz. pogoju.
Nad polji, ki so podatkovnega tipa datum ali datum in čas ali čas, lahko uporabimo vse primerjalne
operatorje.
Posamezni sistemi za upravljanje zbirk podatkov obravnavajo polja podatkovnega tipa datum različno.
Datum lahko zapišemo v različnih oblikah, npr. '7 jul 1980' ali '7/7/1980' … V konstanti podatkovnega
tipa datum moramo vedno določiti dan in mesec.
Izpis vseh lastnikov avtomobilov, ki so rojeni pred 1. 1. 1980.
SELECT *
FROM LASTNIKI
WHERE DATUMROJSTVA < '1.1.1980';
-- vsa polja
-- ime tabele
-- datum rojstva je manjši od 1. 1. 1980
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12059685
45634567
KOREN
KOS
12.5.1968
12.5.1968
JOŽE
JAN
Izpis vseh lastnikov avtomobilov, ki so rojeni dne 7. 7. 1980.
SELECT *
ŠC VELENJE
-- vsa polja
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 88/160
FROM LASTNIKI
WHERE DATUMROJSTVA = '7/7/1980';
-- ime tabele
-- datum rojstva je enak 7. 7. 1980
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12349645
BAN
7.7.1980
MATEJ
Preverjanje razumevanja
1. Izberite pravilni zapis besedilne konstante.
a) »siva«
b) siva
c) 'siva'
d) "siva"
2. Izberite poizvedbe z napačno zapisanimi pogoji.
a) SELECT * FROM AVTOMOBILI
WHERE cena > '8000';
b) SELECT * FROM AVTOMOBILI
WHERE cena > "8000";
c) SELECT * FROM AVTOMOBILI
WHERE cena > 8000;
d) SELECT * FROM AVTOMOBILI
WHERE cena => 8000;
3. Izberite vse pravilno zapisane pogoje za pogoj: Cena je različna od 12000.
a) cena <> '12000'
b) cena <> "12000"
c) cena !=! 12000
d) 12000 != cena
4. Izberite pravilno zapisano konstanto zapisa datuma in časa za 10. februar 2003 ob 8.30 uri.
a) '10_02_2003 8:30'
b) '10.02 8:30'
c) '8:30 10.02.2003'
d) '10.02.2003 8:30'
5. Določite pravilno zaporedje zapisanih delov SELECT stavka.
;
FROM
WHERE CENA = 10000
SELECT *
AVTOMOBILI -- ime tabele
BETWEEN
V SQL-u lahko v pogojih oz. filtrih uporabimo operatorje, ki niso značilni za druge programske
jezike. Uporaba in povezovanje operatorjev omogoča pripravo zahtevanih pogojev oz. filtrov v
poizvedbah.
Between uporabljamo za ugotavljanje, če je vrednost v določenem intervalu od spodnje do zgornje
meje. Uporabimo ga lahko nad besedili, števili, datumi …
Sintaksa:
polje_izraz [NOT] BETWEEN spodnja_vrednost AND zgornja_vrednost
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 89/160
izpolnjen mora biti pogoj: spodnja_vrednost <= zgornja_vrednost
Primeri:
!
!
!
10 BETWEEN 1 AND 5 => ni res (false)
DATUMROJSTVA BETWEEN '1/1/1980' AND '31/12/1980'
CENA BETWEEN 10000 AND 15000
Izpis vseh lastnikov avtomobilov, ki so rojeni od leta 1980 do leta 1990.
-- vsa polja
SELECT *
FROM LASTNIKI
-- ime tabele
WHERE DATUMROJSTVA BETWEEN '1.1.1980' AND '31.12.1990'; -- rojeni v obdobju
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12349645
BAN
7.7.1980
MATEJ
Izpis vseh avtomobilov, ki imajo ceno od € 10.000 do € 15.000.
SELECT *
-- vsa polja
FROM AVTOMOBILI
-- ime tabele
WHERE CENA BETWEEN 10000 AND 15000; -- pogoj za ceno
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-11-02F
CE-22-75A
rdeča
bela
€ 13.000,00
€ 12.000,00
12349645
45634567
Renault
Volkswagen
NULL
Sintaksa:
<polje_izraz> IS [NOT] NULL
Konstanta NULL določa, da polje nima vnesene vrednosti. Konstante NULL ne smemo uporabiti s
primerjalnimi operatorji (< …). Operatorja IS NULL in IS NOT NULL uporabimo za ugotavljanje,
če ima polje določeno vrednost oz. nima vrednosti.
Izpis avtomobilov brez lastnika.
-- vsa polja
SELECT *
-- ime tabele
FROM AVTOMOBILI
WHERE DAVCNASTEVILKA IS NULL; -- polje DAVCNASTEVILKA nima vrednosti
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-23-54I
črna
€ 22.000,00
<null>
Audi
Izpis registracijskih številk avtomobilov, ki imajo lastnika.
-- polje REGISTRACIJSKASTEVILKA
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
-- ime tabele
WHERE DAVCNASTEVILKA IS NOT NULL; -- polje DAVCNASTEVILKA ima vrednosti
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 90/160
REGISTRACIJSKASTEVILKA
CE-22-75A
LJ-56-88H
MB-02-85L
CE-11-02F
LJ-56-55Z
LIKE
Sintaksa:
polje_izraz [NOT] LIKE [nadomestni_znak] vrednost_primerjave [nadomestni_znak]
[ESCAPE escape_znak]
LIKE uporabljamo v filtru oz. pogoju za iskanje po posameznih delih besedilnega polja oz. izraza
(nenatančno ujemanje). Primerjava je občutljiva na velikost črk (razlikuje velike in male črke). V
besedilni konstanti lahko uporabimo dva nadomestna znaka:
! '%' (odstotek) - poljubno število znakov (0 ali več);
! '_' (podčrtaj) - en znak.
Primeri:
Filter oz. pogoj
BARVA LIKE 's%'
BARVA LIKE '_iva'
BARVA LIKE '_iv_'
BARVA LIKE '%a'
BARVA LIKE '%'
BARVA LIKE 'siva~_%' ESCAPE '~'
Pomen
Prvi znak je 's'; v nadaljevanju je lahko poljubno
zaporedje znakov.
Prvi znak je poljuben znak, nato pa sledijo znaki 'iva'.
Prvi in četrti znak sta poljubna, drugi in tretji pa sta 'iv'.
Zadnji znak je 'a'.
Poljubno besedilo.
Na začetku je zaporedje znakov 'siva_', v nadaljevanju
je lahko karkoli.
Če besedilna konstanta ne vsebuje nobenega nadomestnega znaka, potem je bolje, če namesto LIKE
uporabimo operator = (enako).
Izpis znamke in registracijske številke avtomobilov, ki imajo prvi znak v barvi znak 's'.
SELECT ZNAMKA, REGISTRACIJSKASTEVILKA -- vrne polja ZNAMKA, REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
-- ime tabele
WHERE BARVA LIKE 's%';
-- prvi znak barve je 's'
ZNAMKA
REGISTRACIJSKASTEVILKA
Ford
Volkswagen
LJ-56-88H
MB-02-85L
Izpis znamke in registracijske številke avtomobilov, ki imajo predzadnji znak v barvi znak 'č'.
SELECT ZNAMKA, REGISTRACIJSKASTEVILKA -- vrne polja ZNAMKA, REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
-- ime tabele
-- predzadnji znak barve je 'č'
WHERE BARVA LIKE '%č_';
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 91/160
OPERATOR IN
V primeru, da imamo združevanje več pogojev nad istim poljem z uporabo logičnega ALI (OR),
potem raje uporabimo operator IN.
Sintaksa:
<polje_izraz> [NOT] IN
(<polje_izraz> [, <polje_izraz> …] | <select_ena_vrednosti>)
Operator IN uporabimo za preverjanje, če je vrednost polja ali izraza v seznamu vrednosti.
Izpis avtomobilov, ki so bele, črne ali sive barve.
SELECT *
FROM AVTOMOBILI
WHERE -- določitev pogoja z logičnim ALI
(BARVA = 'črna' OR BARVA = 'siva' OR BARVA = 'bela');
SELECT *
FROM AVTOMOBILI
WHERE -- določitev pogoja z operatorjem IN
BARVA IN ('črna', 'siva','bela'); -- ? vrednost polja enaka elementu v seznamu
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-22-75A
CE-23-54I
LJ-56-55Z
LJ-56-88H
MB-02-85L
bela
črna
bela
siva
siva
€ 12.000,00
€ 22.000,00
€ 9.000,00
€ 15.500,00
€ 15.500,00
45634567
Volkswagen
Audi
Ford
Ford
Volkswagen
12349645
12059685
12059685
Izpis cene in znamke vozila, ki imajo ceno enako € 15.500 ali € 22.000. Naraščajoča razvrstitev po ceni
in nato po znamki avtomobila.
SELECT CENA, ZNAMKA
FROM AVTOMOBILI
WHERE CENA IN (15500, 22000) -- ? vrednost polja enaka elementu v seznamu
ORDER BY CENA, ZNAMKA COLLATE PXW_SLOV; -- naraščajoče razvrščanje po več poljih
CENA
ZNAMKA
€ 15.500,00
€ 15.500,00
€ 22.000,00
Ford
Volkswagen
Audi
Preverjanje razumevanja
1. Izberite pravilni zapis sintakse za določitev pogoja z operatorjem BETWEEN.
a) [NOT] polje_izraz BETWEEN spodnja_vrednost AND zgornja_vrednost
b) polje_izraz [NOT] BETWEEN spodnja_vrednost AND zgornja_vrednost
c) [NOT] polje_izraz BETWEEN zgornja_vrednost IN spodnja_vrednost
d) polje_izraz [NOT] BETWEEN zgornja_vrednost AND spodnja_vrednost
2. Izberite vse poizvedbe z napačno zapisanimi pogoji.
a) SELECT * FROM AVTOMOBILI
WHERE CENA BETWEEN 8000 AND 5000;
b) SELECT * FROM AVTOMOBILI
WHERE ZNAMKA BETWEEN 6000 AND 10000;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 92/160
c) SELECT * FROM AVTOMOBILI
WHERE CENA BETWEEN 8000 AND 15000;
d) SELECT * FROM AVTOMOBILI
WHERE ZNAMKA BETWEEN 'b' AND 'c';
3. Izberite pravilno zapisan pogoj. Pogoj: Vrednost v polju CENA je med 10000 in 12000.
a) CENA BETWEEN 10001 AND 12000
b) CENA NOT BETWEEN 10000 AND 12000
c) CENA BETWEEN 10000 AND 12000
d) CENA NOT BETWEEN '10000' AND '12000'
4. Izberite pravilno zapisano poizvedbo. Poizvedba izpiše polje PRIIMEK iz tabele LASTNIKI, če
se vrednost v polju PRIIMEK konča na znak 'a' (samo mala črka).
a) SELECT PRIIMEK FROM LASTNIKI
WHERE PRIIMEK LIKE "%a";
b) SELECT PRIIMEK FROM LASTNIKI
WHERE PRIIMEK LIKE '_A';
c) SELECT PRIIMEK WHERE PRIIMEK LIKE '%a'
FROM LASTNIKI;
d) SELECT PRIIMEK FROM LASTNIKI
WHERE PRIIMEK LIKE '%a';
5. Izberite pravilno zapisan pogoj. Pogoj: Vrednost v polju DATUMROJSTVA je v letu 1980.
a) DATUMROJSTVA BETWEEN '1.1.1980' AND '1.1.1981'
b) DATUMROJSTVA BETWEEN '1.1.1980' AND '31.12.1980'
c) DATUMROJSTVA BETWEEN '1.1.1980' IN '31.12.1980'
d) DATUMROJSTVA BETWEEN '1.1' AND '31.12.1980'
6. Izberite pravilno zapisan pogoj. Pogoj: Vrednost v polju PRIIMEK se začne in konča na znak 'o'.
a) PRIIMEK LIKE 'o_o'
b) PRIIMEK LIKE 'o%o%'
c) PRIIMEK LIKE 'o%o'
d) PRIIMEK LIKE '_o%o'
7. Izberite
pravilno
zapisano
poizvedbo.
Poizvedba
vrne
vrednosti
polja
REGISTRACIJSKASTEVILKA iz tabele AVTOMOBILI, če je vrednost v polju CENA 10000 ali
20000.
a) FROM AVTOMOBILI SELECT REGISTRACIJSKASTEVILKA
WHERE CENA IN (20000, 10000);
b) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA LIKE (20000, 10000);
c) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA = (20000, 10000);
d) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA IN (20000, 10000);
8. Izberite pravilni zapis sintakse za določitev pogoja z operatorjem IN.
a) [NOT] <polje_izraz> IN
[<polje_izraz> [, <polje_izraz> …] | <select_ena_vrednosti>]
b) <polje_izraz> [NOT] IN
[<polje_izraz> [, <polje_izraz> …] | <select_ena_vrednosti>]
c) <polje_izraz> [NOT] IN
(<polje_izraz> [, <polje_izraz> …] | <select_ena_vrednosti>)
d) <polje_izraz> [NOT] IN
(<polje_izraz> [, <polje_izraz> …] )
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 93/160
LOGIČNI OPERATORJI
Združevanje pogojev se pogosto uporablja v določitvi pogoja oz. filtra. Logični operatorji omogočajo
združevanje preprostih pogojev v bolj kompleksen pogoj.
Kompleksnejši filter oz. pogoj sestavimo z uporabo logičnih operatorjev. Logični operatorji so:
! AND – logični IN (vsi predikati res);
! OR – logični ALI (vsaj en predikat res);
! NOT – negacija.
Če uporabimo kombinacijo logičnih operatorjev, potem problem vrstnega reda ovrednotenja
razrešimo z uporabo okroglih oklepajev.
Sintaksa:
! NOT <filter_pogoj>
! <filter_pogoj> OR <filter_pogoj>
! <filter_pogoj> AND <filter_pogoj>
Vrstni red oz. prioriteta ovrednotenja:
1. AND,
2. OR,
3. NOT.
Najvišjo prioriteto ima logični in (AND), najnižjo pa negacija (NOT).
Izpis registracijskih številk avtomobilov, ki imajo v registracijski številki vsaj en znak 'E'.
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE REGISTRACIJSKASTEVILKA LIKE '%E%';
REGISTRACIJSKASTEVILKA
CE-22-75A
CE-23-54I
CE-11-02F
Izpis registracijskih številk avtomobilov, ki so črne barve.
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE BARVA = 'črna';
REGISTRACIJSKASTEVILKA
CE-22-75A
CE-23-54I
CE-11-02F
Združitev obeh pogojev z logičnim IN.
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
REGISTRACIJSKASTEVILKA LIKE '%E%'
AND
BARVA = 'črna';
REGISTRACIJSKASTEVILKA
CE-23-54I
Logični AND lahko uporabimo večkrat (poljubnokrat).
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 94/160
Izpis registracijskih številk avtomobilov, ki imajo v registracijski številki vsaj en znak 'E' in so hkrati
črne barve in nimajo lastnika (polje DAVCNASTEVILKA nima vrednosti).
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
REGISTRACIJSKASTEVILKA LIKE '%E%'
AND
BARVA = 'črna'
AND
DAVCNASTEVILKA IS NULL;
REGISTRACIJSKASTEVILKA
CE-23-54I
Združevanje pogojev z logičnim ALI izpolnjuje pogoj (je res), če je res vsaj eden izmed pogojev.
Izpis avtomobilov, ki so črne ali sive barve.
SELECT *
FROM AVTOMOBILI
WHERE
BARVA = 'črna' OR BARVA = 'siva'; -- pogoj za barvo (logični ali)
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
CE-23-54I
LJ-56-88H
MB-02-85L
črna
siva
siva
€ 22.000,00
€ 15.500,00
€ 15.500,00
12059685
12059685
Audi
Ford
Volkswagen
Negacijo (NOT) pogoja lahko uporabimo na dva načina, npr.:
! BARVA != 'črna' ali
! NOT BARVA = 'črna'.
Izpis cene in znamke avtomobilov, ki niso črne barve.
SELECT CENA, ZNAMKA
FROM AVTOMOBILI
WHERE
NOT BARVA = 'črna' ; -- barva vozila ni črna
CENA
ZNAMKA
€
€
€
€
€
Volkswagen
Ford
Volkswagen
Renault
Ford
12.000,00
15.500,00
15.500,00
13.000,00
9.000,00
Uporaba oklepajev
Če smo negotovi glede vrstnega reda ovrednotenja izraza, potem uporabimo oklepaje.
Izpis sivih in črnih avtomobilov brez lastnika.
SELECT *
FROM AVTOMOBILI
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 95/160
WHERE
(BARVA = 'črna' OR BARVA = 'siva') -- barva vozila črna ali siva
AND DAVCNASTEVILKA IS NULL;
-- vozilo je brez lastnika
REGISTRACIJSKASTEVILKA ZNAMKA
BARVA
CENA
CE-23-54I
črna
€ 22.000,00
Audi
DAVCNASTEVILKA
Preverjanje razumevanja
1. Kateri izmed naštetih operatorjev ni logični operator?
a) AND
b) OR
c) LIKE
d) BETWEEN
2. Izberite vse poizvedbe s pravilno zapisanimi pogoji.
a) SELECT * FROM AVTOMOBILI
WHERE CENA BETWEEN 8000 AND 5000 AND ZNAMKA = 'Audi';
b) SELECT * FROM AVTOMOBILI
WHERE CENA AND ZNAMKA = 'Audi';
c) SELECT * FROM AVTOMOBILI
WHERE CENA BETWEEN 8000 AND 5000 OR ZNAMKA = 'Audi';
d) SELECT * FROM AVTOMOBILI
WHERE CENA BETWEEN 8000 OR 5000 AND ZNAMKA = 'Audi';
3. Izberite pravilno zapisan pogoj. Pogoj: Vrednost v polju BARVA je 'bela' ali 'rdeča'.
a) BARVA = 'bela' AND BARVA = 'rdeča'
b) BARVA = 'bela' OR 'rdeča'
c) BARVA = 'bela' OR BARVA = 'rdeča'
d) BARVA = 'bela' OR NOT BARVA = 'rdeča'
4. Izberite pravilno zapisano poizvedbo. Poizvedba izpiše polje IME iz tabele LASTNIKI, če se
vrednost v polju PRIIMEK konča na znak 'a' ali znak 'e' (samo male črka).
a) SELECT IME FROM LASTNIKI
WHERE PRIIMEK LIKE '%a' OR '%e' ;
b) SELECT IME FROM LASTNIKI
WHERE PRIIMEK LIKE '%a' OR PRIIMEK LIKE '%e' ;
c) SELECT IME FROM LASTNIKI
WHERE PRIIMEK LIKE 'a%' OR PRIIMEK LIKE '%e' ;
d) SELECT PRIIMEK FROM LASTNIKI
WHERE PRIIMEK LIKE '%a' OR PRIIMEK LIKE '%e' ;
5. Izberite pravilno zapisan pogoj. Pogoj: Vrednost v polju DATUMROJSTVA je v letu 1980.
a) DATUMROJSTVA >= '1.1.1980' AND DATUMROJSTVA <= '31.12.1980'
b) DATUMROJSTVA > '1.1.1980' AND DATUMROJSTVA >= '31.12.1980'
c) DATUMROJSTVA >= '1.1.1980' OR DATUMROJSTVA <= '31.12.1980'
d) DATUMROJSTVA > '1.1.1980' AND DATUMROJSTVA < '31.12.1980'
6. Izberite pravilno zapisan pogoj. Pogoj: vrednost v polju PRIIMEK je 'KOVAČ' ali 'KOREN'.
a) PRIIMEK = 'KOVAČ' AND PRIIMEK = 'KOREN'
b) PRIIMEK = 'KOVAČ' OR PRIIMEK = 'KOREN'
c) PRIIMEK = KOVAČ OR PRIIMEK = KOREN
d) PRIIMEK = 'KOVAČ' NOT PRIIMEK = 'KOREN'
7. Izberite pravilno zapisano poizvedbo. Poizvedba izpiše polje REGISTRACIJSKASTEVILKA iz
tabele AVTOMOBILI, če je vrednost v polju CENA 10000 ali 11000.
a) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA = 11000 AND CENA =10000 ;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 96/160
b) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA = 11000 OR 11000;
c) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA = 10000, CENA = 11000;
d) SELECT REGISTRACIJSKASTEVILKA FROM AVTOMOBILI
WHERE CENA = 11000 OR 10000 = CENA;
8. Določite pravilni vrstni red prioritete logičnih operatorjev od najnižje do najvišje prioritete.
- najnižja OR
AND
- najvišja NOT
DISTINCT ALI ALL
Rezultat poizvedbe lahko vsebuje tudi popolnoma enake zapise. Če želimo rezultat brez podvajanja
enakih zapisov, uporabimo za SELECT rezerviranko DISTINCT. Če ne uporabimo DISTINCT in ne
ALL, potem se privzeto uporabi ALL.
Izpis vseh barv avtomobilov.
-- polje barva
SELECT BARVA
FROM AVTOMOBILI;
SELECT ALL BARVA
FROM AVTOMOBILI;
BARVA
rdeča
bela
črna
bela
siva
siva
V rezultatu poizvedbe zasledimo ponavljanje enakih barv (siva in bela).
Če želimo ugotoviti, katere barve so avtomobili, potem uporabimo rezerviranko DISTINCT.
SELECT DISTINCT BARVA
FROM AVTOMOBILI;
-- polje barva
BARVA
rdeča
bela
črna
siva
Razvrščanje rezultata poizvedbe
Rezultat poizvedbe lahko razvrstimo po enem ali več poljih. V primeru razvrščanja po več poljih se
podatki najprej razvrstijo po prvem polju v seznamu <polje_urejenost> in v primeru enake vrednosti v
prvem polju razvrščanja, nato po drugem polju itd. Za določitev razvrščanja uporabimo ORDER BY.
Rezultat lahko razvrstimo naraščajoče (ASC[ENDING]) ali podajoče (DESC[ENDING]) po
izbranem naboru znakov (privzeta vrednost je naraščajoče).
Sintaksa:
[ORDER BY <polje_urejenost>];
<polje_urejenost> = {polje | int} [COLLATE oznaka_razvrscanja]
[ASC[ENDING] | DESC[ENDING]]
[, <polje_urejenost> …]
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 97/160
Izpis znamk avtomobilov z naraščajočim razvrščanjem po znamki avtomobila.
SELECT ZNAMKA -- polje znamka
FROM AVTOMOBILI
ORDER BY ZNAMKA COLLATE PXW_SLOV ASC; -- naraščajoče razvrščanje
ZNAMKA
Audi
Ford
Ford
Renault
Volkswagen
Volkswagen
Izpis priimkov in imen lastnikov s padajočim razvrščanjem po priimkih in nato imenih.
SELECT PRIIMEK, IME -- polja rezultata
FROM LASTNIKI
-- ime tabele
ORDER BY
PRIIMEK COLLATE PXW_SLOV DESC, -- padajoče po priimkih
IME COLLATE PXW_SLOV DESC; -- padajoče po imenih
PRIIMEK IME
KOS
KOREN
BAN
JAN
JOŽE
MATEJ
Preverjanje razumevanja
1. Katero rezerviranko uporabimo v SELECT stavku, da v rezultatu izločimo podvajanje enakih
zapisov?
a) ALL
b) IN
c) DISTINCT
d) ANY
2. Med zapisanimi poizvedbami izberite poizvedbi, ki vrneta enak rezultat.
a) SELECT DISTINCT PRIIMEK FROM LASTNIKI;
b) SELECT ALL PRIIMEK FROM LASTNIKI;
c) SELECT PRIIMEK FROM LASTNIKI;
d) SELECT IME FROM LASTNIKI;
3. Izberite poizvedbo, ki ustreza opisu poizvedbe v nadaljevanju. Poizvedba vrne različne vrednosti
polja ZNAMKA iz tabele AVTOMOBILI. Podatki v polju ZNAMKA so razvrščeni padajoče po
naboru znakov PXW_SLOV.
a) SELECT ALL ZNAMKA FROM AVTOMOBILI
ORDER BY ZNAMKA COLLATE PXW_SLOV;
b) SELECT DISTINCT ZNAMKA FROM AVTOMOBILI
ORDER BY ZNAMKA DESC;
c) SELECT DISTINCT ZNAMKA FROM AVTOMOBILI
ORDER BY ZNAMKA DESCENDING COLLATE PXW_SLOV;
d) SELECT ZNAMKA FROM AVTOMOBILI
ORDER BY ZNAMKA COLLATE PXW_SLOV;
4. Ali je možno razvrstiti rezultat poizvedbe po več poljih?
a) Da
b) Ne
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 98/160
5. Poizvedba:
SELECT DISTINCT IME, PRIIMEK FROM LASTNIKI
ORDER BY
PRIIMEK ASC COLLATE PXW_SLOV,
IME ASC COLLATE PXW_SLOV;
Po katerem polju so najprej razvrščeni podatki rezultata zgornje poizvedbe?
a) IME
b) PRIIMEK
c) DATUMROJSTVA
6. Izberite pravilno zapisano poizvedbo. Poizvedba vrne vrednosti polj ZNAMKA in CENA iz
tabele AVTOMOBILI, če je vrednost v polju CENA večja od 10000. Rezultat poizvedbe ima
naraščajočo urejenost po polju CENA.
a) SELECT ZNAMKA, CENA FROM AVTOMOBILI
WHERE CENA >= 10000;
b) SELECT ZNAMKA, CENA FROM AVTOMOBILI
WHERE CENA >= 10000 ORDER BY CENA;
c) SELECT ZNAMKA, CENA FROM AVTOMOBILI
WHERE CENA <= 10000 ORDER BY CENA;
d) SELECT ZNAMKA, CENA FROM LASTNIKI
WHERE CENA >= 10000 ORDER BY CENA;
ZDRUŽITVENE FUNKCIJE
Shranjevanje podatkov v zbirko podatkov omogoča pregled vseh poslovnih aktivnosti v poslovnem
sistemu. Obdelava podatkov pa je osnova za sprejemanje odločitev na vseh nivojih zaposlenih
delavcev.
Združitvene funkcije nam omogočajo zapis poizvedb, ki vrnejo statistične podatke. Združitvene
funkcije so: COUNT, MIN, MAX, SUM, AVG.
Sintaksa:
<funkcija> =
COUNT (* | [ALL] <polje_izraz> | DISTINCT <polje_izraz>)
| SUM ([ALL] <polje_izraz> | DISTINCT <polje_izraz>)
| AVG ([ALL] <polje_izraz> | DISTINCT <polje_izraz>)
| MAX ([ALL] <polje_izraz> | DISTINCT <polje_izraz>)
| MIN ([ALL] <polje_izraz> | DISTINCT <polje_izraz>)
COUNT
Za poizvedbo vrne število zapisov (vrstic) ali število vrednosti v polju.
ALL vrne število za vse zapise ne glede na ponavljanje enakih vrstic. Če ne uporabimo DISTINCT,
potem je privzet ALL. DISTINCT ne upošteva enakih zapisov (ponavljajočih se vrednosti oz.
duplikatov n-teric).
Sintaksa:
<funkcija> =
COUNT (* | [ALL] <polje_izraz> | DISTINCT <polje_izraz>)
Izpis števila avtomobilov, ki imajo lastnika.
SELECT COUNT(DAVCNASTEVILKA) –- preštevanje lastnikov
FROM AVTOMOBILI;
COUNT
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 99/160
5
Izpis števila avtomobilov.
SELECT COUNT(*) –- preštevanje zapisov
FROM AVTOMOBILI;
COUNT
6
Izpis števila različnih znamk avtomobilov.
SELECT COUNT(DISTINCT ZNAMKA) –- preštevanje različnih znamk avtomobilov
FROM AVTOMOBILI;
COUNT
4
SUM
Vrne vsoto vrednosti (polja, literala, izračunljive vrednosti) za vse vrstice ali skupine vrstic.
Uporabimo ga lahko samo nad številčnimi podatkovnimi tipi.
Če ni nobenega zapisa, potem je rezultat vrednost NULL.
Izpis vsote cen avtomobilov.
SELECT SUM(CENA) -- vsota cen
FROM AVTOMOBILI;
SUM
€ 87.000,00
AVG (AVERAGE)
Vrne povprečno vrednost številčnega polja. Povprečje lahko izračunamo za vse zapise tabele ali po
posameznih skupinah, če uporabimo tudi GROUP BY.
Izpis cen avtomobilov.
SELECT CENA -- polje cena
FROM AVTOMOBILI;
CENA
€ 12.000,00
€ 15.500,00
€ 22.000,00
€ 15.500,00
€ 13.000,00
€ 9.000,00
Izpis povprečne cene avtomobilov.
SELECT AVG(CENA) -- povprečna cena
FROM AVTOMOBILI;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 100/160
AVG
€ 14.500,00
MAX
Vrne največjo vrednost (polja, literala, izračunljive vrednosti) za vse zapise ali skupine zapisov.
Uporabimo ga lahko nad vsemi podatkovnimi tipi razen BLOB.
Vrednost 0 v polju se upošteva; vrednost NULL v polju se ne upošteva. Če ni nobenega zapisa, potem
je rezultat vrednost NULL. Vrednosti konstant so lahko uporabljene v funkciji MAX samo kot del
izračuna, ki vključuje tudi ime polja.
Izpis največje cene avtomobila.
SELECT MAX(CENA) -- največja cena
FROM AVTOMOBILI;
MAX
€ 22.000,00
MIN
Vrne najmanjšo vrednost (polja, literala, izračunljive vrednosti) za vse zapise ali skupine zapisov.
Uporabimo ga lahko nad vsemi podatkovnimi tipi razen BLOB.
Vrednost 0 v polju se upošteva; vrednost NULL v polju se ne upošteva. Če ni nobenega zapisa, potem
je rezultat vrednost NULL.
Izpis najmanjše cene avtomobila.
SELECT MIN(CENA) -- najmanjša cena
FROM AVTOMOBILI;
MIN
€ 9.000,00
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 101/160
Združevanje po vrednostih polj - GROUP BY
Sintaksa:
[GROUP BY polje [COLLATE oznaka_razvrscanja]
[, polje [COLLATE oznaka_razvrscanja] …]
GROUP BY uporabimo za izračun statističnih podatkov po posameznih vrednostih polj. Če
uporabimo GROUP BY, potem npr. funkcija SUM izvrši seštevanje po posameznih vrednostih polj,
ki so v GROUP BY delu. Polja iz SELECT dela, ki niso uporabljena v združitvenih funkcijah,
morajo biti v seznamu polj GROUP BY dela.
Polja, ki jih uporabimo v GROUP BY, so običajno tudi v SELECT delu, saj v nasprotnem ne vemo,
katera vrednost rezultata pripada posamezni vrednosti polj v GROUP BY delu.
Izpis največje cene avtomobilov po posameznih znamkah.
SELECT ZNAMKA, MAX(CENA) –- znamka in največja cena te znamke
FROM AVTOMOBILI
GROUP BY ZNAMKA; –- združevanje po znamkah
ZNAMKA
MAX
Audi
Ford
Renault
Volkswagen
€ 22.000,00
€ 15.500,00
€ 13.000,00
€ 15.500,00
Izpis števila avtomobilov po posameznih barvah.
SELECT BARVA, COUNT(BARVA) –- barva in število avtomobilov posamezne barve
FROM AVTOMOBILI
GROUP BY BARVA; –- združevanje po barvah
BARVA COUNT
bela
rdeča
siva
črna
2
1
2
1
HAVING
Združitvenih funkcij ni dovoljeno zapisati v WHERE del SELECT stavka.
Pogoj oz. filter za rezultat združitvene funkcije določimo v HAVING delu.
Izpis znamke in števila avtomobilov posamezne znamke, če obstajata vsaj dva avtomobila posamezne
znamke.
–- znamka in število avtomobilov posamezne znamke
SELECT ZNAMKA, COUNT(ZNAMKA)
FROM AVTOMOBILI
–- združevanje po znamkah
GROUP BY ZNAMKA
HAVING COUNT(ZNAMKA) > 1; –- pogoj za število avtomobilov posamezne znamke
ZNAMKA
COUNT
Ford
Volkswagen
2
2
Preverjanje razumevanja
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 102/160
1. V seznamu izberite funkcijo, ki ne spada v skupino združitvenih (statističnih) funkcij.
a) MIN
b) COUNT
c) MAX
d) AVG
e) UPPER
f) SUM
2. V tabeli pravilno povežite namen uporabe združitvenih funkcij.
COUNT
Iskanje najmanjše vrednosti v polju ali izrazu.
MIN
Izračun vsote v polju oz. izrazu.
MAX
Štetje števila vrednosti v polju oz . števila zapisov.
SUM
Izračun povprečne vrednosti v polju oz. izrazu.
AVG
Iskanje največje vrednosti v polju ali izrazu.
3. V katerem naštetem delu select stavka ne smemo uporabiti združitvene funkcije?
a) Za rezerviranko SELECT v seznamu polj oz. izrazov, ki jih vrne poizvedba.
b) Za rezerviranko WHERE v pogoju oz. filtru poizvedbe.
c) Za rezerviranko HAVING v pogoju združitvene funkcije.
4. Katero združitveno funkcijo uporabimo, da nam poizvedba vrne, koliko je vrstic oz. zapisov v
rezultatu poizvedbe?
a) MIN
b) COUNT
c) MAX
d) AVG
e) SUM
5. Izberite pravilno zapisano poizvedbo.
Poizvedba vrne število avtomobilov v tabeli
AVTOMOBILI, ki imajo vrednost v polju ZNAMKA enako 'Volkswagen'.
a) SELECT MAX(ZNAMKA) FROM AVTOMOBILI
WHERE ZNAMKA = 'Volkswagen';
b) SELECT SUM(*) FROM AVTOMOBILI
WHERE ZNAMKA != 'Volkswagen';
c) SELECT COUNT(ZNAMKA) FROM AVTOMOBILI
WHERE ZNAMKA = 'VOLKSWAGEN';
d) SELECT COUNT(*) FROM AVTOMOBILI
WHERE ZNAMKA = 'Volkswagen';
6. Izberite najustreznejši opis poizvedbe. Poizvedba:
SELECT MAX(CENA), MIN(CENA)
FROM AVTOMOBILI
WHERE BARVA = 'siva' OR BARVA = 'črna';
a) Poizvedba vrne največjo ceno avtomobilov, ki so sive ali črne barve.
b) Poizvedba vrne največjo in najmanjšo ceno avtomobilov, ki so sive ali črne barve. Največja
cena se v rezultatu nahaja v prvem stolpcu, najmanjša cena pa v drugem stolpcu.
c) Poizvedba vrne največjo in najmanjšo ceno avtomobilov, ki so sive ali črne barve. Največja
cena se v rezultatu nahaja v prvem stolpcu, najmanjša cena pa v drugem stolpcu.
d) Poizvedba vrne največjo in najmanjšo ceno avtomobilov, ki so sive barve. Največja cena se v
rezultatu nahaja v prvem stolpcu, najmanjša cena pa v drugem stolpcu.
7. Kateri del select stavka uporabimo za določitev izračuna vrednosti združitvene funkcije po
posameznih vrednostih polja?
a) Za rezerviranko GROUP BY v določitvi skupin.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 103/160
b) Za rezerviranko WHERE v pogoju oz. filtru poizvedbe.
c) Za rezerviranko HAVING v pogoju združitvene funkcije.
8. Določite pravilni vrstni red naštetih delov select stavka.
HAVING
WHERE
GROUP BY
9. Izberite pravilno zapisano poizvedbo. Poizvedba vrne število avtomobilov po posameznih
znamkah v tabeli AVTOMOBILI in sicer le za tiste vrednosti v polju ZNAMKA, za katere
obstajata vsaj dva avtomobila te znamke.
a) SELECT COUNT(*) FROM AVTOMOBILI
GROUP BY ZNAMKA
HAVING COUNT(*) >=2;
b) SELECT ZNAMKA, COUNT(*) FROM AVTOMOBILI
HAVING SUM(*) >=2 GROUP BY ZNAMKA;
c) SELECT ZNAMKA, COUNT(*) FROM AVTOMOBILI
GROUP BY ZNAMKA
HAVING COUNT(*) >=2;
d) SELECT ZNAMKA, COUNT(*) FROM AVTOMOBILI
WHERE COUNT(*) >=2
GROUP BY ZNAMKA;
Združevanje (povezovanje) tabel - JOIN
Podatki so v zbirki shranjeni v različnih tabelah. Pri iskanju informacij v zbirki podatkov moramo v
poizvedbah pravilno združiti tabele, da dobimo pravilni rezultat. Sama definicija zbirke podatkov
določa, da je zbirka podatkov zbirka povezanih podatkov …
V poizvedbah pogosto uporabljamo več kot eno tabelo iz zbirke podatkov.
Starejši način za združevanje tabel je, da v seznam tabel v FROM del zapišemo vse tabele in nato v
filtru oz. pogoju določimo ujemanje povezovalnih polj v posameznih tabelah.
Če v FROM del v seznam tabel zapišemo dve tabeli in ne uporabimo WHERE dela, potem dobimo v
rezultatu vse možne stike vseh zapisov prve tabele z vsemi zapisi druge tabele (kartezijski produkt).
Primer združevanja tabel brez ujemanja vrednosti povezovalnih polj nad tabelama avtomobili in
lastniki.
SELECT * –- vsa polja iz obeh tabel
FROM AVTOMOBILI, LASTNIKI; –- vsi možni stiki zapisov obeh tabel
REGISTRACIJSKA
STEVILKA
ZNAMKA
BARVA
CENA
DAVCNA
STEVILKA
DAVCNA
STEVILKA_1
IME
PRIIMEK
DATUMROJSTVA
CE-22-75A
Volkswagen
bela
12000
45634567
12059685
JOŽE
KOREN
12.5.1968
CE-22-75A
Volkswagen
bela
12000
45634567
12349645
MATEJ
BAN
7.7.1980
CE-22-75A
Volkswagen
bela
12000
45634567
45634567
JAN
KOS
12.5.1968
LJ-56-88H
Ford
siva
15500
12059685
12059685
JOŽE
KOREN
12.5.1968
LJ-56-88H
Ford
siva
15500
12059685
12349645
MATEJ
BAN
7.7.1980
LJ-56-88H
Ford
siva
15500
12059685
45634567
JAN
KOS
12.5.1968
CE-23-54I
Audi
črna
22000
12059685
JOŽE
KOREN
12.5.1968
CE-23-54I
Audi
črna
22000
12349645
MATEJ
BAN
7.7.1980
CE-23-54I
Audi
črna
22000
45634567
JAN
KOS
12.5.1968
MB-02-85L
Volkswagen
siva
15500
12059685
12059685
JOŽE
KOREN
12.5.1968
MB-02-85L
Volkswagen
siva
15500
12059685
12349645
MATEJ
BAN
7.7.1980
MB-02-85L
Volkswagen
siva
15500
12059685
45634567
JAN
KOS
12.5.1968
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 104/160
REGISTRACIJSKA
STEVILKA
ZNAMKA
BARVA
CENA
DAVCNA
STEVILKA
DAVCNA
STEVILKA_1
IME
PRIIMEK
CE-11-02F
Renault
rdeča
13000
12349645
12059685
JOŽE
KOREN
12.5.1968
CE-11-02F
Renault
rdeča
13000
12349645
12349645
MATEJ
BAN
7.7.1980
CE-11-02F
Renault
rdeča
13000
12349645
45634567
JAN
KOS
12.5.1968
LJ-56-55Z
Ford
bela
9000
12349645
12059685
JOŽE
KOREN
12.5.1968
LJ-56-55Z
Ford
bela
9000
12349645
12349645
MATEJ
BAN
7.7.1980
LJ-56-55Z
Ford
bela
9000
12349645
45634567
JAN
KOS
12.5.1968
DATUMROJSTVA
V rezultatu so na začetku vsi možni stiki prvega zapisa v tabeli avtomobili z vsemi zapisi v tabeli
lastniki; nato vsi možni stiki drugega zapisa v tabeli avtomobili z vsemi zapisi v tabeli lastniki itd.
Takšne poizvedbe so logično nesmiselne in časovno potratne.
Poizvedbi dodamo filter oz. pogoj ujemanja povezovalnih polj v obeh tabelah. V našem primeru sta
povezovalna polja DAVCNASTEVILKA v obeh tabelah.
–- vsa polja iz obeh tabel
SELECT *
FROM AVTOMOBILI, LASTNIKI –- vsi možni stiki zapisov obeh tabel
WHERE –- ujemanje povezovalnih polj
AVTOMOBILI.DAVCNASTEVILKA = LASTNIKI.DAVCNASTEVILKA;
REGISTRACIJSKA
STEVILKA
ZNAMKA
BARVA
CENA
DAVCNA
STEVILKA
DAVCNA
STEVILKA_1
IME
PRIIMEK
DATUMROJSTVA
CE-22-75A
Volkswagen
bela
12000
45634567
45634567
JAN
KOS
12.5.1968
LJ-56-88H
Ford
siva
15500
12059685
12059685
JOŽE
KOREN
12.5.1968
MB-02-85L
Volkswagen
siva
15500
12059685
12059685
JOŽE
KOREN
12.5.1968
CE-11-02F
Renault
rdeča
13000
12349645
12349645
MATEJ
BAN
7.7.1980
LJ-56-55Z
Ford
bela
9000
12349645
12349645
MATEJ
BAN
7.7.1980
V rezultatu se dvakrat pojavi enaka vrednost v dveh poljih (povezovalna polja) in je smiselno, da
izločimo iz rezultata povezovalno polje iz druge tabele. Poleg tega opazimo, da v rezultatu ni
avtomobilov, ki nimajo določenega lastnika (vrednosti polja DAVCNASTEVILKA v tabeli
avtomobili).
Spremenimo polja v rezultatu poizvedbe.
SELECT AVTOMOBILI.*, IME, PRIIMEK /* vsa polja iz tabele avtomobili in posamezna polja iz tabele
lastniki */
FROM AVTOMOBILI, LASTNIKI /* vsi možni stiki zapisov obeh tabel */
WHERE /* ujemanje povezovalnih polj */
AVTOMOBILI.DAVCNASTEVILKA = LASTNIKI.DAVCNASTEVILKA;
REGISTRACIJSKASTEVILKA
ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
IME
PRIIMEK
CE-22-75A
Volkswagen
bela
€ 12.000,00
45634567
JAN
KOS
LJ-56-88H
Ford
siva
€ 15.500,00
12059685
JOŽE
KOREN
MB-02-85L
Volkswagen
siva
€ 15.500,00
12059685
JOŽE
KOREN
CE-11-02F
Renault
rdeča
€ 13.000,00
12349645
MATEJ
BAN
LJ-56-55Z
Ford
bela
€
12349645
MATEJ
BAN
9.000,00
Še vedno nismo rešili problema, če povezovalno polje nima vrednosti.
Problem rešimo z uporabo zunanje združitve tabel (bomo spoznali v nadaljevanju).
JOIN (ZDRUŽITEV)
Poznamo dve vrsti združitve:
! INNER (notranja združitev) - združitev dveh tabel z ujemanjem vrednosti povezovalnih polj;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 105/160
!
OUTER (zunanja združitev) - združitev dveh tabel z ujemanjem vrednost povezovalnih polj
in ohranjanjem vrstic, ki nimajo vrednosti.
Sintaksa:
<zdruzitev_tabel> =
<tabela_referenca> <vrsta_zdruzitve> JOIN <tabela_referenca>
ON <filter_pogoj>
[ <vrsta_zdruzitve> JOIN <tabela_referenca> ON <filter_pogoj> …]
<vrsta_zdruzitve> = [INNER] | {LEFT | RIGHT | FULL } [OUTER]}
Notranjo in zunanjo združitev zapišemo v FROM del SELECT stavka.
Notranjo združitev pogosto uporabimo v primerih, ko je povezovalno polje, ki je tuj ključ, zahtevano
vnosno polje (mora imeti vrednost).
Izpis vseh podatkov o avtomobilih ter priimka in imena lastnika vozila za avtomobile, ki imajo
lastnika.
SELECT AVTOMOBILI.*, IME, PRIIMEK /* vsa polja iz tabele avtomobili in posamezna polja iz tabele
lastniki */
FROM /* notranja združitev z ujemanjem povezovalnih polj */
AVTOMOBILI INNER JOIN LASTNIKI ON
AVTOMOBILI.DAVCNASTEVILKA = LASTNIKI.DAVCNASTEVILKA;
REGISTRACIJSKASTEVILKA
ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
IME
PRIIMEK
CE-22-75A
Volkswagen
bela
€ 12.000,00
45634567
JAN
KOS
LJ-56-88H
Ford
siva
€ 15.500,00
12059685
JOŽE
KOREN
MB-02-85L
Volkswagen
siva
€ 15.500,00
12059685
JOŽE
KOREN
CE-11-02F
Renault
rdeča
€ 13.000,00
12349645
MATEJ
BAN
LJ-56-55Z
Ford
bela
€
12349645
MATEJ
BAN
9.000,00
Če želimo podatke poizvedbe za vsa vozila, moramo namesto notranje združitve uporabiti zunanjo
združitev.
Izpis vseh podatkov o avtomobilih ter priimka in imena lastnika vozila za vse avtomobile.
SELECT AVTOMOBILI.*, IME, PRIIMEK /* vsa polja iz tabele avtomobili in posamezna polja iz tabele
lastniki */
FROM /* zunanja združitev z ujemanjem povezovalnih polj */
AVTOMOBILI LEFT OUTER JOIN LASTNIKI ON
AVTOMOBILI.DAVCNASTEVILKA = LASTNIKI.DAVCNASTEVILKA;
REGISTRACIJSKASTEVILKA
ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
IME
PRIIMEK
CE-22-75A
Volkswagen
bela
€ 12.000,00
45634567
JAN
KOS
LJ-56-88H
Ford
siva
€ 15.500,00
12059685
JOŽE
KOREN
CE-23-54I
Audi
črna
€ 22.000,00
MB-02-85L
Volkswagen
siva
€ 15.500,00
12059685
JOŽE
KOREN
CE-11-02F
Renault
rdeča
€ 13.000,00
12349645
MATEJ
BAN
LJ-56-55Z
Ford
bela
€
12349645
MATEJ
BAN
9.000,00
V rezultatu poizvedbe so tudi zapisi iz tabele avtomobili, ki nimajo lastnika. Če želimo v rezultatu
zapise, ki nimajo vrednosti v povezovalnem polju (NULL), potem moramo uporabiti zunanjo
združitev.
Pri zunanji združitvi je več variant glede na to, katere zapise želimo v rezultatu.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 106/160
Kdaj uporabimo katero varianto zunanje združitve?
Če želimo v rezultatu poizvedbe vse zapise iz tabele levo od rezerviranke JOIN (z ali brez ujemanja v
desni tabeli), potem uporabimo LEFT OUTER JOIN. Če ni ujemanja v povezovalnih poljih, potem
vsa polja desne tabele, ki so vključena v rezultat poizvedbe, nimajo vrednosti (NULL).
Če želimo v rezultatu poizvedbe vse zapise iz tabele desno od rezerviranke JOIN (z ali brez ujemanja
v levi tabeli), potem uporabimo RIGHT OUTER JOIN. Če ni ujemanja v povezovalnih poljih, potem
vsa polja leve tabele, ki so vključena v rezultat poizvedbe, nimajo vrednosti (NULL).
FULL OUTER JOIN povzroči, da so vsi zapisi v obeh tabelah vključeni v rezultat (z ali brez
ujemanja v drugi tabeli).
Izpis imena in priimka lastnikov avtomobilov z registracijskimi številkami in znamkami njihovih
avtomobilov.
SELECT IME, PRIIMEK, REGISTRACIJSKASTEVILKA, ZNAMKA
FROM /* zunanja združitev z ujemanjem povezovalnih polj */
AVTOMOBILI RIGHT OUTER JOIN LASTNIKI ON
AVTOMOBILI.DAVCNASTEVILKA = LASTNIKI.DAVCNASTEVILKA;
IME
PRIIMEK REGISTRACIJSKASTEVILKA ZNAMKA
JOŽE
JOŽE
MATEJ
MATEJ
JAN
KOREN
KOREN
BAN
BAN
KOS
LJ-56-88H
MB-02-85L
CE-11-02F
LJ-56-55Z
CE-22-75A
Ford
Volkswagen
Renault
Ford
Volkswagen
VZDEVKI TABEL IN PREIMENOVANJE POLJ
Imena polj so večkrat kratice oz. so takšna, da jim želimo spremeniti ime. Pogosto imamo enako
imenovana polja v različnih tabelah.
Primer napačne poizvedbe:
SELECT DAVCNASTEVILKA /* napaka, ker je v obeh tabelah polje davčna številka - */
FROM AVTOMOBILI, LASTNIKI;
Poizvedba je napačna, ker ni določeno, iz katere tabele naj bo v rezultatu polje davčna številka.
V teh primerih uporabimo notacijo TABELA.POLJE.
SQL nam omogoča uporabo vzdevkov tabel v poizvedbi. V primeru daljših poizvedb namesto imen
tabel pogosto uporabimo vzdevke, saj ne želimo večkrat vpisovati daljših imen tabel. Vzdevek tabele
določimo tako, da v FROM delu za imenom tabele naredimo presledek in vpišemo vzdevek oz. novo
ime tabele: FROM tabela1 vzdevek1, tabela2 vzdevek2 …
SELECT IME, PRIIMEK, L.DAVCNASTEVILKA, ZNAMKA
FROM /* uporaba vzdevkov */
AVTOMOBILI A RIGHT OUTER JOIN LASTNIKI L ON
/* A – vzdevek za tabelo avtomobili … */
A.DAVCNASTEVILKA = L.DAVCNASTEVILKA; /* L – vzdevek za tabelo lastniki … */
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 107/160
Polja rezultata poizvedbe lahko tudi preimenujemo. Najpogosteje to uporabimo pri združitvenih
funkcijah.
Polje oz. izraz preimenujemo tako, da v SELECT delu za izrazom oz. imenom polja uporabimo AS in
vpišemo novo ime.
SELECT COUNT(*) AS STEVILO_AVTOMOBILOV –- preimenovanje
FROM AVTOMOBILI;
ZDRUŽITEV TABELE SAME S SEBOJ
V seznamu tabel v FROM delu lahko večkrat zapišemo isto tabelo. Predstavljamo si, kot da imamo
več kopij iste tabele.
Ustvarimo poizvedbo, ki nam vrne rezultat na naslednje vprašanje: Kdo so lastniki vozil, ki imajo
avtomobil enake barve kot JAN KOS?
Kakšne barve je avtomobil od lastnika JANA KOSA?
SELECT BARVA /* polje barva */
FROM /* notranja združitev */
AVTOMOBILI A INNER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA
WHERE PRIIMEK = 'KOS' AND IME = 'JAN' /*pogoj za priimek in ime */;
BARVA
bela
Izpis lastnikov belih avtomobilov brez JANA KOSA.
SELECT IME, PRIIMEK /* ime in priimek lastnika */
FROM /* notranja združitev */
AVTOMOBILI A INNER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA
WHERE
BARVA = 'bela' /* bela barva avtomobila */
AND
/* logični in */
A.DAVCNASTEVILKA IS NOT NULL /* avtomobil ima lastnika */
AND
/* logični in */
PRIIMEK || IME != 'KOSJAN'; /* || - operator za združevanje besedilnih polj; lastnik je
različen od JANA KOSA */
IME
MATEJ
PRIIMEK
BAN
Združimo obe poizvedbi.
SELECT L.IME, L.PRIIMEK /* ime in priimek lastnika iz kopije tabele LASTNIK z vzdevkom L */
FROM
AVTOMOBILI A INNER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA,
AVTOMOBILI A1 INNER JOIN LASTNIKI L1
ON A1.DAVCNASTEVILKA = L1.DAVCNASTEVILKA
WHERE
A.BARVA = A1.BARVA
AND
A.DAVCNASTEVILKA IS NOT NULL
AND
L.PRIIMEK || L.IME != 'KOSJAN'
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 108/160
AND
IME
MATEJ
L1.PRIIMEK = 'KOS' AND L1.IME = 'JAN';
PRIIMEK
BAN
Preverjanje razumevanja
1. Izberite najustreznejši opis poizvedbe. Poizvedba:
SELECT *
FROM AVTOMOBILI, LASTNIKI;
a) Poizvedba v rezultatu vrne vsa polja iz tabele AVTOMOBILI v enakem zaporedju, kot je
struktura tabel v zbirki podatkov. V rezultatu so vsi možni stiki vseh zapisov iz obeh tabel.
b) Poizvedba v rezultatu vrne vsa polja iz tabele LASTNIKI v enakem zaporedju, kot je struktura
tabel v zbirki podatkov. V rezultatu so vsi možni stiki vseh zapisov iz obeh tabel.
c) Poizvedba v rezultatu vrne vsa polja iz tabel AVTOMOBILI in LASTNIKI v enakem
zaporedju, kot je struktura tabel v zbirki podatkov. V rezultatu so vsi možni stiki vseh zapisov
iz obeh tabel.
d) Poizvedba v rezultatu vrne vsa polja iz tabel AVTOMOBILI in LASTNIKI v enakem
zaporedju, kot je struktura tabel v zbirki podatkov. V rezultatu so stiki vseh zapisov v istih
vrsticah v obeh tabelah.
2. V tabeli AVTOMOBILI je šest zapisov in v tabeli LASTNIKI so trije. Koliko je zapisov v
rezultatu naslednje poizvedbe?
SELECT ZNAMKA, PRIIMEK
FROM AVTOMOBILI, LASTNIKI;
a) 9
b) 6
c) 3
d) 18
3. Kateri našteti element ne predstavlja vrste združitve?
a) INNER JOIN
b) LEFT INNER JOIN
c) LEFT OUTER JOIN
d) FULL JOIN
4. Izberite pravilno zapisano poizvedbo. Poizvedba vrne vsa polja vseh zapisov iz tabele
AVTOMOBILI in polje PRIIMEK iz tabele LASTNIKI, če obstaja ujemanje v povezovalnem
polju DAVCNASTEVILKA v obeh tabelah.
a) SELECT AVTOMOBILI.*, LASTNIKI.PRIIMEK
FROM AVTOMOBILI A INNER JOIN LASTNIKI L ON A.DAVCNASTEVILKA =
L.DAVCNASTEVILKA;
b) SELECT *
FROM AVTOMOBILI A LEFT OUTER JOIN LASTNIKI L ON A.DAVCNASTEVILKA =
L.DAVCNASTEVILKA;
c) SELECT AVTOMOBILI.*, PRIIMEK
FROM AVTOMOBILI A FULL OUTER JOIN LASTNIKI L ON A.DAVCNASTEVILKA
= L.DAVCNASTEVILKA;
d) SELECT AVTOMOBILI.*, LASTNIKI.PRIIMEK
FROM AVTOMOBILI A LEFT OUTER JOIN LASTNIKI L ON A.DAVCNASTEVILKA =
L.DAVCNASTEVILKA;
5. Izberite najustreznejši opis za predstavitev združitve tabele same s seboj.
a) Združitev tabele same s seboj si predstavljamo kot združitev dveh kopij iste tabele. Kopije
tabele poimenujemo z različnima vzdevkoma v FROM delu select stavka.
b) Združitev tabele same s seboj si predstavljamo kot združitev zapisov znotraj iste tabele. V
FROM delu select stavka uporabimo tabelo le enkrat.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 109/160
c) Združitev tabele same s seboj si predstavljamo kot združitev iste tabele v dveh različnih
zbirkah podatkov.
6. V tabeli LASTNIKI so štiri polja. V tabeli so trije zapisi. Koliko je polj (stolpcev) v rezultatu
naslednje poizvedbe?
SELECT *
FROM LASTNIKI L1, LASTNIKI L2;
a) 7
b) 12
c) 8
d) 4
7. V tabeli LASTNIKI so štiri polja. V tabeli so trije zapisi. Koliko je polj (stolpcev) v rezultatu
naslednje poizvedbe:
SELECT L1.*, L2.PRIIMEK AS PRIIMEK2
FROM LASTNIKI L1, LASTNIKI L2;
a) 4
b) 5
c) 3
d) 8
8.3.2
POGLEDI (VIEWS)
Pogledi nam v SQL omogočajo združevanje več poizvedb. Drugi vidik uporabe pogledov je
zagotovitev varnostnih pravil. Določenih varnostnih pravil ne moremo izvesti brez pogledov.
Pogledi so poizvedbe, ki so shranjene v zbirki podatkov in nam omogočajo, da lahko do njih
dostopamo preko imena.
Pogled si predstavljamo kot dinamično tabelo, ki vsebuje rezultat poizvedbe glede na trenutne podatke
v zbirki podatkov.
Sintaksa:
CREATE VIEW ime_pogleda [(polje [, polje …])]
AS <select_stavek> [WITH CHECK OPTION];
<select_stavek> ne sme vsebovati ORDER BY dela.
Z WITH CHECK OPTION omejimo vnos in spreminjanje podatkov pogleda glede na filter oz.
pogoj v WHERE delu.
Ustvarimo pogled, ki nam vrne število avtomobilov in število lastnikov avtomobilov. Imamo možnost,
da zapišemo dve ločeni poizvedbi.
SELECT COUNT(*) AS STEVILO_AVTOMOBILOV
FROM AVTOMOBILI;
STEVILO_AVTOMOBILOV
6
SELECT COUNT(*) AS STEVILO_LASTNIKOV
FROM LASTNIKI;
STEVILO_LASTNIKOV
3
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 110/160
Kaj, če želimo rezultat v eni poizvedbi …
Ena možnost je, da zapišemo obe poizvedbi v ločena pogleda, ki ju nato uporabimo v novi poizvedbi.
CREATE VIEW ST_AVTOMOBILOV(STEVILO_AVTOMOBILOV) AS
SELECT COUNT(*) AS STEVILO_AVTOMOBILOV
FROM AVTOMOBILI;
CREATE VIEW ST_LASTNIKOV(STEVILO_LASTNIKOV) AS
SELECT COUNT(*) AS STEVILO_LASTNIKOV
FROM LASTNIKI;
SELECT *
FROM ST_AVTOMOBILOV; –ime pogleda
STEVILO_AVTOMOBILOV
6
SELECT *
FROM ST_LASTNIKOV; –ime pogleda
STEVILO_LASTNIKOV
3
SELECT * /* vsa polja obeh pogledov */
FROM ST_AVTOMOBILOV, ST_LASTNIKOV; – dva pogleda
STEVILO_AVTOMOBILOV
6
STEVILO_LASTNIKOV
3
Preverjanje razumevanja
1. Določite pravilno zaporedje sintakse pogleda.
ime_pogleda
AS <select_stavek>
[WITH CHECK OPTION]
CREATE VIEW
[(polje [, polje …])]
;
2. Kaj so pogledi (VIEW) v zbirkah podatkov?
a) Predmeti zbirke podatkov, v katere se shranjujejo podatki.
b) Predmeti zbirke podatkov, ki si jih predstavljamo kot dinamične tabele (rezultat definirane
poizvedbe).
c) Predmeti omejitvenih pravil, ki zagotavljajo veljavno stanje zbirke podatkov.
d) Način izvršitve aktivnosti v zbirki podatkov.
3. Ali lahko select stavek definiranega pogleda vsebuje vse elemente oz. dele select stavka?
a) Da
b) Ne
4. Izberite pravilen stavek za ustvarjanje pogleda MLADILASTNIKI. Pogled vsebuje polja IME,
PRIIMEK in DAVCNASTEVILKA iz tabele LASTNIKI. Pogled vsebuje tiste zapise, ki imajo
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 111/160
vrednost v polju DATUMROJSTVA večjo od 1. januar 1980. Pogled se v zbirki ne uporablja za
vstavljanje, spreminjanje ali brisanje zapisov v tabeli LASTNIKI.
a) CREATE VIEW MLADILASTNIKI AS
SELECT *
FROM LASTNIKI WHERE DATUMROJSTVA > '1.1.1980';
b) CREATE VIEW MLADILASTNIKI(IME1, PRIIMEK1, DS) AS
SELECT IME, PRIIMEK, DAVCNASTEVILKA
FROM LASTNIKI WHERE DATUMROJSTVA > '1.1.1980';
c) CREATE VIEW MLADILASTNIKI AS
SELECT IME, PRIIMEK, DAVCNASTEVILKA
FROM LASTNIKI WHERE DATUMROJSTVA > '1.1.1980';
d) CREATE VIEW MLADILASTNIKI (IME, PRIIMEK, DAVCNASTEVILKA) AS
SELECT IME, DAVCNASTEVILKA, PRIIMEK
FROM LASTNIKI WHERE DATUMROJSTVA > '1.1.1980'
WITH CHECK OPTION;
5. Ali je naslednji stavek za ustvarjanje pogleda pravilen?
CREATE VIEW IMENALASTNIKOV AS
SELECT PRIIMEK || ' ' || IME
FROM LASTNIKI;
a) Da
b) Ne
6. V zbirki podatkov je ustvarjen pogled.
CREATE VIEW IMENALASTNIKOV(PRIIMEKIME) AS
SELECT PRIIMEK || ' ' || IME
FROM LASTNIKI;
Izberite pravilno poizvedbo, ki v rezultatu vrne vse zapise pogleda IMENALASTNIKOV.
a) SELECT PRIIMEK
FROM LASTNIKI;
b) SELECT PRIIMEK
FROM IMENALASTNIKOV;
c) SELECT PRIIMEKIME
FROM IMENALASTNIKOV;
d) SELECT IME
FROM IMENALASTNIKOV;
7. Katere operacije omejimo, če ustvarimo pogled z WITH CHECK OPTION?
a) vstavljanje in brisanje
b) vstavljanje, spreminjanje in brisanje
c) poizvedovanje in brisanje
d) vstavljanje in spreminjanje
8.3.3
UGNEZDENE POIZVEDBE
Ugnezdene poizvedbe imajo v SELECT stavku drug SELECT stavek. Ugnezden SELECT stavek
zapišemo v WHERE delu osnovnega SELECT stavka. Ugnezden SELECT stavek lahko vrne le eno
polje ali izraz.
Ugnezden SELECT stavek se uporablja kot zamenjava za poglede ali združitve tabele same s seboj.
Za nekatere programerje so ugnezdene poizvedbe razumljivejše kot druge možnosti. Slaba lastnost
ugnezdenih poizvedb je počasnejša izvršitev v primerjavi z drugimi možnostmi.
Izpis lastnikov avtomobilov, ki so rojeni istega dne kot JAN KOS.
SELECT DATUMROJSTVA
FROM LASTNIKI
WHERE
PRIIMEK = 'KOS' AND IME = 'JAN';
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 112/160
DATUMROJSTVA
12.5.1968
SELECT IME,PRIIMEK
FROM LASTNIKI
WHERE
DATUMROJSTVA = '12.5.1968'
AND
NOT (PRIIMEK = 'KOS' AND IME = 'JAN') ;
IME
JOŽE
PRIIMEK
KOREN
Namesto dveh stavkov lahko uporabimo ugnezdeno poizvedbo.
SELECT
IME,PRIIMEK
FROM
LASTNIKI
WHERE
DATUMROJSTVA =
(
SELECT DATUMROJSTVA
FROM
LASTNIKI
WHERE
PRIIMEK = 'KOS' AND IME = 'JAN'
)
AND
NOT (PRIIMEK = 'KOS' AND IME = 'JAN');
Če ugnezdena poizvedba vrne več kot en zapis (vrstico), potem potrebujemo dodatne operatorje, kot
so ANY, SOME, ALL, IN.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 113/160
8.3.4
ANY | SOME | ALL (UGNEZDENA POIZVEDBA)
Sintaksa:
polje_izraz <primerjalni_operator> ANY | SOME | ALL (ugnezdena poizvedba)
Operatorji omogočajo primerjavo vrednosti polja ali izraza z vrednostjo v več zapisih (vrsticah)
ugnezdene poizvedbe.
Operator ANY se ovrednoti TRUE, če primerjava velja vsaj za en zapis ugnezdene poizvedbe.
Operator SOME deluje enako kot ANY.
Operator ALL se ovrednoti TRUE, če primerjava velja za vse zapise ugnezdene poizvedbe.
Izpis registracijskih številk avtomobilov, ki so iste barve, kot je katerikoli avtomobil od MATEJA
BANA.
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
BARVA = ANY
(
SELECT BARVA
FROM
AVTOMOBILI A INNER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA
WHERE
IME = 'MATEJ'
AND
PRIIMEK = 'BAN'
);
REGISTRACIJSKASTEVILKA
CE-22-75A
CE-11-02F
LJ-56-55Z
Izpis lastnikov avtomobilov, ki so mlajši od vseh lastnikov avtomobilov, ki imajo rdeč avtomobil.
SELECT *
FROM LASTNIKI
WHERE
DATUMROJSTVA < ALL
(
SELECT DATUMROJSTVA
FROM
AVTOMOBILI A INNER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA
WHERE
BARVA = 'rdeča'
);
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12059685
45634567
KOREN
KOS
12.5.1968
12.5.1968
JOŽE
JAN
Sintaksa:
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 114/160
EXISTS (ugnezdena poizvedba)
Operator EXISTS uporabimo za ugotavljanje, če v ugnezdeni poizvedbi obstaja vsaj en zapis v
rezultatu.
Izpis barv, če obstajata vsaj dva avtomobila te barve.
SELECT DISTINCT BARVA
FROM AVTOMOBILI A1
WHERE
EXISTS
(
SELECT BARVA
FROM
AVTOMOBILI A2
WHERE
A1.BARVA = A2.BARVA
AND
A1.REGISTRACIJSKASTEVILKA <> A2.REGISTRACIJSKASTEVILKA
);
BARVA
bela
siva
8.3.5
UNION (UNIJA)
Večkrat želimo združiti rezultata dveh poizvedb, ki vsebujeta enake vrste podatkov.
UNION omogoča združevanje različnih SELECT stavkov. Unija samodejno odstrani podvajanje
enakih zapisov v rezultatu.
Izpis registracijskih številk avtomobilov znamke Volkswagen.
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
ZNAMKA = 'Volkswagen';
REGISTRACIJSKASTEVILKA
CE-22-75A
MB-02-85L
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
ZNAMKA = ' Audi';
REGISTRACIJSKASTEVILKA
CE-23-54I
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
ZNAMKA = 'Volkswagen'
UNION /* unija*/
SELECT REGISTRACIJSKASTEVILKA
FROM AVTOMOBILI
WHERE
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 115/160
ZNAMKA = 'Audi';
REGISTRACIJSKASTEVILKA
CE-22-75A
CE-23-54I
MB-02-85L
Spoznali smo SELECT STAVEK. V nadaljevanju bomo spoznali stavke, ki omogočajo dodajanje,
brisanje in spreminjanje podatkov.
Preverjanje razumevanja
1. Koliko polj in koliko zapisov lahko vrne ugnezdena poizvedba, če jo uporabimo s primerjalnim
operatorjem =?
Npr. poizvedba:
SELECT IME, PRIIMEK FROM LASTNIKI WHERE DATUMROJSTVA = (SELECT … );
a) poljubno število zapisov in poljubno število polj
b) poljubno število zapisov in dva polja
c) poljubno število zapisov in eno polje
d) en zapis in eno polje
2. Kateri našteti operator ne omogoča primerjave vrednosti polja ali izraza z vrednostjo v več zapisih
ugnezdene poizvedbe?
a) ANY
b) LIKE
c) ALL
d) SOME
3. Kateri našteti operator se ovrednoti z vrednostjo TRUE (je res), če primerjava velja vsaj za en
zapis ugnezdene poizvedbe?
a) EXISTS
b) ANY
c) ALL
d) SOME
4. Kateri našteti operator se ovrednoti z vrednostjo TRUE (je res), če primerjava velja za vse zapise
ugnezdene poizvedbe?
a) EXISTS
b) ANY
c) ALL
d) SOME
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 116/160
8.3.6
INSERT STAVEK
Podatki so v zbirki podatkov shranjeni v več tabelah. INSERT stavek uporabljamo za vstavljanje oz.
dodajanje podatkov v zbirko podatkov.
INSERT stavek uporabljamo s predmeti tabel in pogledov (pogled mora izpolnjevati določene
pogoje).
Sintaksa:
INSERT INTO <predmet_v_zbirki> [(polje [, polje …])]
{VALUES (<izraz> [, <izraz> …]) | <select_izraz>};
<predmet_v_zbirki> = tabela | pogled
<izraz> = {:spremenljivka | <konstanta> | <izraz>
| <funkcija> | udf ([<izraz> [, <izraz> …]])
| NULL | USER | RDB$DB_KEY | ? }
V Firebirdu lahko uporabimo naslednje funkcije:
<funkcija> = CAST (<izraz> AS <podatkovni_tip>)
| UPPER (<izraz>)
| GEN_ID (ime_generatorja, <izraz>)
INTO < predmet_v_zbirki > - ime tabele ali pogleda, v katerega vstavljamo nov zapis oz. vrstico.
polje - ime obstoječega polja oz. stolpca v tabeli
VALUES (<izraz> [, <izraz> …]) - seznam vrednosti, ki jih vstavljamo; zaporedje polj se mora
ujemati z zaporedjem polj v INTO delu.
<select_izraz> - poizvedba (SELECT stavek), ki vrne seznam vrednosti, ki jih vstavimo v tabelo.
Tabela LASTNIKI (pred dodajanjem novega zapisa):
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12059685
12349645
45634567
JOŽE
MATEJ
JAN
KOREN
BAN
KOS
12.5.1968
7.7.1980
12.5.1968
INSERT INTO LASTNIKI(DAVCNASTEVILKA, IME, PRIIMEK, DATUMROJSTVA)
VALUES ('23456987', 'JANEZ', 'NOVAK', '16.8.1990');
Tabela LASTNIKI (po dodajanju novega zapisa):
DAVCNASTEVILKA IME
PRIIMEK
DATUMROJSTVA
12059685
12349645
JOŽE
MATEJ
KOREN
BAN
12.5.1968
7.7.1980
23456987
JANEZ
NOVAK
16.8.1990
45634567
JAN
KOS
12.5.1968
V INSERT stavku lahko izpustimo seznam polj. V takšnem primeru moramo v seznamu vrednosti
upoštevati zaporedje polj, kot je zaporedje polj v strukturi tabele.
INSERT INTO LASTNIKI
VALUES ('48796575', 'EVA', 'KOREN', '10.5.1986');
V seznamu polj in vrednosti lahko izpustimo polja, ki nimajo v strukturi zahtevanega vnosa (nimajo
lastnosti NOT NULL). Vrednosti posameznih polj morajo biti ustrezna (ustreznega podatkovnega tipa;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 117/160
ustrezati morajo postavljenim pravilom, referenčni integriteti …). Vrednost primarnega ključa mora
biti edinstvena.
INSERT INTO LASTNIKI(DAVCNASTEVILKA, IME, PRIIMEK)
VALUES ('89547651', 'TIM', 'KOLEDNIK');
Če je primarni ključ tabele števec oz. identiteta, potem moramo upoštevati pravila, ki veljajo za izbrani
sistem za upravljanje zbirk podatkov.
V Firebirdovih zbirkah podatkov ustvarimo generator in ga uporabimo za določitev nenaravnih
primarnih ključev.
USTVARJANJE GENERATORJA - CREATE GENERATOR stavek
CREATE GENERATOR stavek v zbirki podatkov ustvari generator in postavi njegovo začetno
vrednost na 0.
Generatorje uporabljamo za zaporedno številčenje polj, katerih vrednost se zaporedno povečuje z
uporabo funkcije GEN_ID(ime_generatorja, korak_povecevanja).
Pogosto jih uporabljamo za številčenje polja, ki je PRIMARY KEY, npr. številke računov.
Zbirka podatkov lahko vsebuje poljubno število generatorjev. Generatorje lahko uporabimo kjerkoli v
katerikoli transakciji.
Za določitev začetne vrednosti ali spremembo trenutne vrednosti generatorja uporabimo stavek SET
GENERATOR.
Sintaksa:
CREATE GENERATOR ime_generatorja;
SET GENERATOR ime_generatorja TO <celostevilcna_vrednost>;
Ustvarimo generator, ki ga bomo uporabili za določitev primarnega ključa v tabeli poštne številke.
CREATE GENERATOR GEN_ID_POSTNESTEVILKE;
SET GENERATOR GEN_ID_POSTNESTEVILKE TO 1000;
Ustvarimo tabelo POSTNESTEVILKE (ustvarjanje tabel v zbirki podatkov bomo spoznali v
nadaljevanju).
Ime tabele
POSTNESTEVILKE
Ime polja
ID_POSTNESTEVILKE
POSTNASTEVILKA
KRAJ
Podatkovni tip
Zahtevano
(Not null)
Unique
Ključ
Integer
Varchar (8)
Varchar (80)
Da
Ne
Ne
Ne
Ne
Ne
PK
CREATE TABLE POSTNESTEVILKE
(
ID_POSTNESTEVILKE Integer NOT NULL,
POSTNASTEVILKA Varchar(8),
KRAJ Varchar(80),
Constraint pk_POSTNESTEVILKE Primary Key
(ID_POSTNESTEVILKE)
);
V tabelo POSTNESTEVILKE vstavimo nov zapis z vrednostmi polj:
poštna številka - »3320«, kraj – »VELENJE«. Vrednost primarnega ključa določimo z generatorjem
»GEN_ID_POSTNESTEVILKE«.
INSERT INTO POSTNESTEVILKE (ID_POSTNESTEVILKE, POSTNASTEVILKA, KRAJ)
VALUES (GEN_ID(GEN_ID_POSTNESTEVILKE,1), '3320', 'VELENJE');
ID_POSTNESTEVILKE POSTNASTEVILKA
ŠC VELENJE
INFORMATIKA
KRAJ
PODATKOVNE BAZE (1.letnik)
Stran 118/160
…
1001
…
3320
VELENJE
Primarni ključ dodanega zapisa ima vrednost 1001 (trenutna vrednost generatorja + 1). Nova trenutna
vrednost generatorja po vstavljanju je 1001.
Vstavljanje podatkov z uporabo pogleda
Vstavljanje podatkov preko pogleda je možno:
! če pogled vsebuje podatke le iz ene tabele in
! vsa zahtevana polja tabele (NOT NULL) so vključena v pogled.
Ustvarimo pogled, ki vsebuje id poštne številke in poštno številko zapisov šifranta poštnih številk, ki
imajo poštno številko večjo od »5000«. Omogočena naj bo možnost vstavljanja novih zapisov, ki
izpolnjujejo pogoj pogleda.
CREATE VIEW VPOSTE_NAD_5000 (ID_POSTNESTEVILKE, POSTNASTEVILKA)
AS SELECT ID_POSTNESTEVILKE , POSTNASTEVILKA
FROM POSTNESTEVILKE
WHERE POSTNASTEVILKA >= '5000'
WITH CHECK OPTION;
Z uporabo pogleda VPOSTE_NAD_5000 vstavimo nov zapis z vrednostjo poštne številke »7000«.
INSERT INTO VPOSTE_NAD_5000 (ID_POSTNESTEVILKE, POSTNASTEVILKA)
VALUES (GEN_ID(GEN_ID_POSTNESTEVILKE,1), '7000');
Izpis vseh polj in vseh zapisov pogleda VPOSTE_NAD_5000.
SELECT * FROM VPOSTE_NAD_500;
ID_POSTNESTEVILKE POSTNASTEVILKA
…
1002
…
7000
Z uporabo pogleda VPOSTE_NAD_5000 vstavimo nov zapis z vrednostjo poštne številke »4000«.
INSERT INTO VPOSTE_NAD_5000 (ID_POSTNESTEVILKE, POSTNASTEVILKA)
VALUES (GEN_ID(GEN_ID_POSTNESTEVILKE,1), '4000');
Izvršitev stavka je neuspešna, ker vrednost polja poštna številka ne izpolnjuje pogoja pogleda
VPOSTE_NAD_5000 (POSTNASTEVILKA >= '5000').
Preverjanje razumevanja
1. Izberite vse predmete zbirke podatkov v katere vstavljamo podatke z insert stavkom.
a) domene
b) tabele
c) pogledi
d) strežniške procedure
e) indeksi
f) prožilci
2. Določite pravilno zaporedje sintakse insert stavka.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 119/160
<predmet_v_zbirki>
INSERT INTO
{VALUES (<izraz>
<select_izraz>};
[(polje [, polje …])]
[,
<izraz>
…])
|
3. Ali lahko v insert stavku izpustimo seznam polj za imenom tabele ali pogleda?
a) Da
b) Ne
4. Ali lahko z insert stavkom v tabelo vstavimo več kot en zapis?
a) Da
b) Ne
5. Katera polja lahko izpustimo v seznamu polj, če za tabelo ne obstajajo prožilci?
a) V seznamu polj in vrednosti lahko izpustimo polja, ki zahtevajo edinstven vnos v polje
(lastnosti UNIQUE).
b) V seznamu polj in vrednosti lahko izpustimo polja, za katera ne vemo vrednosti.
c) V seznamu polj in vrednosti lahko izpustimo polja, ki so tuji ključi v tabeli.
d) V seznamu polj in vrednosti lahko izpustimo polja, ki nimajo v strukturi zahtevanega vnosa
(nimajo lastnosti NOT NULL).
6. Kateri stavek v zbirki podatkov ustvari nov generator?
a) CREATE GENERATOR ime_generatorja;
b) SET GENERATOR ime_generatorja TO <celostevilcna_vrednost>;
7. Tabela POSTNESTEVILKE vsebuje polja ID_POSTNESTEVILKE INTEGER NOT NULL,
POSTNASTEVILKA VARCHAR(8), KRAJ VARCHAR(80).
Kateri insert stavek je pravilen za vstavljanje novega zapisa v tabelo POSTNESTEVILKE?
a) INSERT INTO POSTNESTEVILKE (ID_POSTNESTEVILKE, POSTNASTEVILKA,
KRAJ) VALUES ( '2000','MARIBOR');
b) INSERT INTO POSTNESTEVILKE (ID_POSTNESTEVILKE, POSTNASTEVILKA)
VALUES (5000, '2000','MARIBOR');
c) INSERT INTO POSTNESTEVILKE (ID_POSTNESTEVILKE, POSTNASTEVILKA,
KRAJ) VALUES (5000, '2000','MARIBOR');
d) INSERT INTO POSTNESTEVILKE (ID_POSTNESTEVILKE, POSTNASTEVILKA,
KRAJ) VALUES ('ID', '2000','MARIBOR');
8. Med tabela LASTNIKI in AVTOMOBILI obstaja povezava in sicer ima tabela AVTOMOBILI
polje DAVCNASTEVILKA, ki je tuj ključ v tabeli. Kateri opis je ustrezen za vstavljanje novega
zapisa v tabelo AVTOMOBILI, če določimo tudi lastnika avtomobila.
a) Če želimo vstaviti nov zapis v tabelo AVTOMOBILI z določenim lastnikom, potem polju
DAVCNASTEVILKA v tabeli AVTOMOBILI določimo vrednost NULL.
b) Če želimo vstaviti nov zapis v tabelo AVTOMOBILI z določenim lastnikom, potem moramo
polju DAVCNASTEVILKA določiti eno izmed vrednosti, ki obstaja v povezovalnem polju
DAVCNASTEVILKA v tabeli LASTNIKI.
c) Če želimo vstaviti nov zapis v tabelo AVTOMOBILI z določenim lastnikom, potem moramo
polju DAVCNASTEVILKA določiti eno izmed vrednosti, ki obstaja v povezovalnem polju
DAVCNASTEVILKA v tabeli LASTNIKI.
d) Če želimo vstaviti nov zapis v tabelo AVTOMOBILI z določenim lastnikom, potem moramo
polju DAVCNASTEVILKA določiti eno izmed vrednosti, ki obstaja v povezovalnem polju
DAVCNASTEVILKA v tabeli LASTNIKI.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 120/160
8.3.7
DELETE STAVEK
Brisanje podatkov ni tako pogosta operacija kot vstavljanje podatkov ali poizvedovanje. Brisanje je
aktivnost, pri kateri moramo biti pozorni, da po pomoti oz. napaki ne izbrišemo »preveč« podatkov.
DELETE stavek izbriše zapise (vrstice) iz tabele ali pogleda v zbirki podatkov, ki ustrezajo filtru oz.
pogoju.
Sintaksa:
DELETE
FROM <predmet_v_zbirki>
[WHERE <filter_pogoj>];
<predmet_v_zbirki> = tabela | pogled
Pozor: Brez WHERE dela se izbrišejo vsi podatki (zapisi) iz tabele.
V zbirki podatkov iz tabele lastniki izbrišimo lastnika z davčno številko »89547651«.
DELETE FROM LASTNIKI
WHERE DAVCNASTEVILKA = '89547651';
Operacija brisanja je neuspešna, če obstajajo odvisni zapisi v drugih tabelah (omejitev FOREIGN
KEY; pravilo za brisanje (on delete) ima vrednost prepoved (No action).
Iz tabele lastniki poskusimo izbrisati zapis, ki ima odvisne zapise, in sicer lastnika z davčno številko
12349645.
DELETE FROM LASTNIKI
WHERE DAVCNASTEVILKA = '12349645';
Izvršitev stavka za brisanje povzroči izjemo z obvestilom o napaki (ERROR MESSAGE: violation of
FOREIGN KEY constraint "FK_AVTOMOBILI_LASTNIKI" on table "AVTOMOBILI"). Operacija
brisanja je neuspešna.
Pred brisanjem zapisa moramo izbrisati vse odvisne zapise v tabeli avtomobili. Pred brisanjem lastnika
moramo počistiti vsa njegova lastništva avtomobilov.
Preverjanje razumevanja
1. Kateri stavek uporabimo za brisanje vseh zapisov iz tabele v zbirki podatkov?
a) SELECT
b) INSERT
c) DELETE
d) DROP TABLE
2. Izberite najustreznejši opis delete stavka.
a) DELETE stavek izbriše vse zapise (vrstice) iz tabele ali pogleda v zbirki podatkov.
b) DELETE stavek izbriše zapise (vrstice) iz tabele ali pogleda v zbirki podatkov, ki ustrezajo
filtru oz. pogoju.
c) DELETE stavek izbriše zapise (vrstice) iz tabele ali pogleda v zbirki podatkov, ki ne ustrezajo
filtru oz. pogoju.
d) DELETE stavek izbriše polje (stolpec) iz tabele ali pogleda v zbirki podatkov.
3. Določite pravilno zaporedje sintakse delete stavka.
FROM
DELETE
[WHERE <filter_pogoj>];
<predmet_v_zbirki>
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 121/160
4. Kaj se zgodi po izvršitvi naslednjega stavka?
DELETE FROM POSTNESTEVILKE;
a) Strežnik javi sintaktično napako.
b) Če ne obstajajo odvisni podatki v ostalih tabelah zbirke podatkov, se izbrišejo vsi zapisi iz
tabele POSTNESTEVILKE.
c) V vsakem primeru se izbrišejo vsi zapisi iz tabele POSTNESTEVILKE.
d) Če ne obstajajo odvisni podatki v ostalih tabelah zbirke podatkov, se izbriše prvi zapis v tabeli
POSTNESTEVILKE.
5. Kakšno je pravilno zaporedje delete stavka za brisanje vseh zapisov iz tabele AVTOMOBILI, ki
imajo vrednost v polju BARVA 'bela' ali 'siva'.
BARVA = 'bela'
FROM AVTOMOBILI
DELETE
WHERE
OR BARVA = 'siva';
6. Izberite pravilni stavek. Stavek izbriše tiste zapise iz tabele LASTNIKI, ki niso lastniki nobenega
vozila. Povezovalno polje je polje DAVCNASTEVILKA, ki je v obeh tabelah (AVTOMOBILI in
LASTNIKI).
a) DELETE FROM LASTNIKI
WHERE DAVCNASTEVILKA NOT IN AVTOMOBILI;
b) DELETE FROM LASTNIKI
WHERE DAVCNASTEVILKA = (SELECT DAVCNASTEVILKA FROM AVTOMOBILI);
c) DELETE FROM LASTNIKI
WHERE DAVCNASTEVILKA NOT IN (SELECT DISTINCT DAVCNASTEVILKA
FROM AVTOMOBILI);
8.3.8
UPDATE STAVEK
UPDATE stavek uporabljamo za spreminjanje vrednosti podatkov v tabeli ali pogledu.
Sintaksa:
UPDATE <predmet_v_zbirki>
SET polje = <polje_izraz>
[, polje = <polje_izraz> …]
[WHERE <filter_pogoj>
<predmet_v_zbirki> = tabela | pogled
<polje_izraz> = {
polje [<tabela_dim>]
| :spremenljivka
| <konstanta>
| <izraz>
| <funkcija>
| udf ([<polje_izraz> [, <polje_izraz> …]])
| NULL
| USER
| ?}
V Firebird-u lahko uporabimo naslednje funkcije:
<funkcija> = CAST (<polje_izraz> AS <podatkovni_tip>)
| UPPER (<polje_izraz>)
| GEN_ID (ime_generatorja, <polje_izraz>)
<predmet_v_zbirki> - ime predmeta tabele ali pogleda, v katerem spreminjamo podatke.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 122/160
SET polje = <polje_izraz> - polje katerega vrednost spreminjamo in nova vrednost polja po
spreminjanju.
WHERE <filter_pogoj> - spremembe se izvršijo na tistih zapisih (vrsticah), ki izpolnjujejo filter oz.
pogoj.
Brez uporabe WHERE dela se spremenijo vsi zapisi (vrstice) v tabeli.
Avtomobilu z registracijsko številko »MB-02-85L« spremenimo barvo v rdečo.
UPDATE AVTOMOBILI /* ime tabele */
SET
BARVA = 'rdeča' /* nova vrednost polja barva - rdeča */
WHERE REGISTRACIJSKASTEVILKA = 'MB-02-85L'; /* filter oz. pogoj */
Lastniku z davčno številko 45634567 počistimo vrednost datuma rojstva.
/* ime tabele */
UPDATE LASTNIKI
SET
DATUMROJSTVA = NULL
/* počistimo vrednost polja datum rojstva */
WHERE DAVCNASTEVILKA = ' 45634567'; /* filter oz. pogoj */
V tabeli poštne številke spremenimo naziv kraja v »Velenje XY« in poštno številko v »3321« vsem
zapisom, ki imajo na začetku polja kraj vrednost »VELENJE«.
/* ime tabele */
UPDATE POSTNESTEVILKE
SET
KRAJ = 'Velenje XY',
/* nove vrednosti polj */
POSTNASTEVILKA = '3321'
WHERE KRAJ LIKE 'VELENJE%'; /* filter oz. pogoj */
ID_POSTNESTEVILKE POSTNASTEVILKA
…
KRAJ
1001
Velenje XY
3321
…
SPREMINJANJE PODATKOV V ZBIRKI PODATKOV S POGLEDI
Spremembe podatkov s pogledi so možne, če pogled izpolnjuje določene pogoje:
! primarni ključ vseh tabel, ki so vključene v pogled, mora biti v pogledu;
! polja pogleda so podmnožica polj iz ene same tabele ali drugega pogleda z možnostjo
spreminjanja,
! vsa ostala polja osnovne tabele, iz katere so podatki v pogledu, dovoljujejo NULL vrednost.
Ustvarimo pogled, ki vsebuje registracijsko številko, znamko avtomobila in davčno številko, priimek
ter ime lastnika avtomobila.
CREATE VIEW AVTOMOBILI_LASTNIKI /* ime poglede */
AS /* seznam polj pogleda */
SELECT REGISTRACIJSKASTEVILKA,ZNAMKA,A.DAVCNASTEVILKA, PRIIMEK,IME
FROM /* leva zunanja združitev */
AVTOMOBILI A LEFT OUTER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA;
Izpis podatkov pogleda AVTOMOBILI_LASTNIKI, razvrščenih naraščajoče po priimku in imenu.
SELECT * /* vsa polja */
FROM AVTOMOBILI_LASTNIKI /* ime pogleda */
ORDER BY /* razvrščanje po priimkih in imenih */
PRIIMEK COLLATE PXW_SLOV,
IME COLLATE PXW_SLOV;
REGISTRACIJSKASTEVILKA ZNAMKA
DAVCNASTEVILKA PRIIMEK
IME
LJ-56-55Z
12349645
MATEJ
ŠC VELENJE
Ford
INFORMATIKA
BAN
PODATKOVNE BAZE (1.letnik)
Stran 123/160
REGISTRACIJSKASTEVILKA ZNAMKA
DAVCNASTEVILKA PRIIMEK
IME
CE-11-02F
LJ-56-88H
MB-02-85L
CE-22-75A
CE-23-54I
12349645
12059685
12059685
45634567
MATEJ
JOŽE
JOŽE
JAN
Renault
Ford
Volkswagen
Volkswagen
Audi
BAN
KOREN
KOREN
KOS
Preverjanje razumevanja
1. Izberite pravilni opis UPDATE stavka.
a) UPDATE stavek uporabljamo za preimenovanje tabel v zbirki podatkov.
b) UPDATE stavek uporabljamo za spreminjanje vrednosti podatkov v tabeli ali pogledu.
c) UPDATE stavek uporabljamo za spreminjanje trenutne vrednosti generatorja.
d) UPDATE stavek uporabljamo za spreminjanje strukture tabele.
2. Določite pravilno zaporedje sintakse UPDATE stavka.
SET
[WHERE <filter_pogoj>
UPDATE
<predmet_v_zbirki>
polje = <polje_izraz> [, polje =
<polje_izraz> …]
3. Izberite opis, ki je najustreznejši za naslednji stavek.
UPDATE AVTOMOBILI
SET BARVA = NULL;
a) Stavek iz tabele AVTOMOBILI izbriše polje BARVA.
b) Stavek počisti vse vrednosti v polju BARVA v tabeli AVTOMOBILI.
c) Stavek počisti vrednost polja BARVA v prvem zapisu v tabeli AVTOMOBILI.
8.4
DDL (DATA DEFINITION LANGUAGE)
DDL skupina stavkov je namenjena izdelavi in spreminjanju organizacije oz. strukture tabel v zbirki
podatkov.
V to skupino sodijo stavki:
CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, DROP INDEX,
CREATE DOMAIN, ALTER DOMAIN, DROP DOMAIN itd.
Za ustvarjanje, spreminjanje in brisanje tabel v zbirki podatkov uporabljamo stavke
CREATE TABLE, ALTER TABLE in DROP TABLE.
8.4.1
CREATE TABLE STAVEK
Preden lahko začnemo vnašati oz. shranjevati podatke v zbirko podatkov, moramo na osnovi strukture
zbirke podatkov ustvariti predmete v zbirki podatkov. Če nimamo ustreznega orodja, ki nam ER
diagram pretvori v programsko skripto (DDL), potem moramo poznati SQL stavke s katerimi
ustvarimo zbirko podatkov.
CREATE TABLE stavek se uporablja za ustvarjanje tabel v zbirki podatkov. Običajno najprej
ustvarimo vse tabele in jih nato povežemo preko povezovalnih polj z ALTER TABLE stavkom.
Vsakemu polju v tabeli moramo določiti podatkovni tip. Podatkovni tip polja določa, kakšne vrste
podatkov je vsebina polja, npr. celo število (SMALLINT, INTEGER), realno število (FLOAT,
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 124/160
DOUBLE PRECISION), besedilo (CHAR, VARCHAR, NCHAR, NVARCHAR), datum (DATE,
TIME, TIMSTAMP), binarni podatki (BLOB).
Sintaksa:
CREATE TABLE
ime_tabele
(<def_polja> [, <def_polja> | <omejitev_tabele> …]);
<def_polja> = ime_polja {
<podatkovni_tip> | COMPUTED [BY] (<izraz>) | ime_domene
}
[DEFAULT {literal | NULL | USER}]
[NOT NULL]
[<omejitev_polja>]
<podatkovni_tip> =
{
SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION} [<tabela_dim>]
| { DATE | TIME | TIMESTAMP} [<tabela_dim>] | {DECIMAL | NUMERIC}
[(število_mest[, število_decimalnih_mest]) ] [<tabela_dim>]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR}
[(int)] [<tabela_dim>] [CHARACTER SET nabor_znakov]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [(int)] [<tabela_dim>]
| BLOB [SUB_TYPE {int | ime_podtipa}] [SEGMENT SIZE int]
[CHARACTER SET nabor_znakov]
| BLOB [(dolzina_segmenta [, ime_podtipa])]
<omejitev_polja> =
[CONSTRAINT ime_omejitve]
{ UNIQUE
| PRIMARY KEY
| REFERENCES ime_tabele [(ime_polja [, ime_polja …])]
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK (<filter_pogoj>)}
PRIMARY KEY je polje ali skupina polj, ki enolično določa (identificira) vsak zapis v tabeli.
Polje primarnega ključa mora biti zahtevano vnosno polje - NOT NULL. Tabela lahko ima le en
primarni ključ.
Polja, ki so lahko primarni ključ:
- države: oznaka države,
- osebe: EMŠO (enotna matična številka občana), davčna številka, elektronski naslov,
- izdelki: EAN koda, šifra izdelka ali ID izdelka,
- člani knjižnice ali videoteke: članska številka,
- računi: številka računa,
- poslovni partnerji: šifra poslovnega partnerja, davčna številka poslovnega partnerja,
- knjiga: črtna koda knjige ...
UNIQUE je omejitev, ki določa, da morajo biti vse vrednosti v polju edinstvene (ne obstaja več
zapisov z enako vrednostjo v polju). UNIQUE polja so vedno zahtevana vnosna polja - NOT NULL.
UNIQUE polje lahko uporabimo pri povezovanju tabel.
UNIQUE ali PRIMARY KEY lastnosti polja v tabeli sklica morajo biti določena pred določitvijo
referenčne integritete.
V zbirki podatkov ustvarimo tabeli avtomobili in lastniki.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 125/160
Ime tabele
AVTOMOBILI
LASTNIKI
Ime polja
Podatkovni tip
Zahtevano
(Not null)
Unique
Ključ
REGISTRACIJSKASEVILKA
DAVCNASTEVILKA
ZNAMKA
BARVA
CENA
DAVCNASTEVILKA
IME
PRIIMEK
DATUMROJSTVA
Varchar (15)
Varchar (10)
Varchar (120)
Varchar (20)
Decimal (12,2)
Varchar (10)
Varchar (30)
Varchar (30)
Date
Da
Ne
Ne
Ne
Ne
Da
Da
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ne
PK
FK
PK
Primarni ključ tabele določimo v omejitvi tabele ali omejitvi polja. Vse omejitve smiselno
poimenujemo. Uporabimo sistemski pristop, npr. omejitve primarnega ključa poimenujemo
pk_IMETABELE.
Določitev primarnega ključa tabele v omejitvi polja (v lastnostih polja).
CREATE TABLE LASTNIKI (
DAVCNASTEVILKA VARCHAR(10) NOT NULL
CONSTRAINT pk_LASTNIKI PRIMARY KEY,
IME VARCHAR(30) NOT NULL,
PRIIMEK VARCHAR(30),
DATUMROJSTVA DATE
);
Sintaksa pravil (omejitev) tabele:
<omejitev_tabele> =
[CONSTRAINT ime_omejitve]
{{PRIMARY KEY | UNIQUE} (ime_polja [, ime_polja …])
| FOREIGN KEY (ime_polja [, ime_polja …]) REFERENCES ime_tabele
(ime_polja [, ime_polja …])
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK (<filter_pogoj>)}
Primarni ključ tabele avtomobili določimo v omejitvi tabele (za definicjo polj tabele).
CREATE TABLE AVTOMOBILI (
REGISTRACIJSKASTEVILKA VARCHAR(15) NOT NULL,
DAVCNASTEVILKA VARCHAR(10) NOT NULL,
ZNAMKA VARCHAR(120),
BARVA VARCHAR(20),
CENA DECIMAL(12,2),
CONSTRAINT pk_AVTOMOBILI PRIMARY KEY (REGISTRACIJSKASTEVILKA)
);
Uporabnik, ki ustvari tabelo, je lastnik tabele in ima nad tabelo vse pravice z možnostjo dodajanja
pravic ostalim uporabnikom.
Ustvarjanje relacij
REFERENCES ima ON DELETE in ON UPDATE del, ki določata pravilo (akcijo) ob spremembi
ali brisanju v tabeli na strani starša.
Možne vrednosti ON UPDATE in ON DELETE so:
Tuj ključ se ne spremeni (privzeta).
NO ACTION
Tuj ključ se spremeni glede na spremembo povezovalnega polja v tabeli na
CASCADE
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 126/160
SET DEFAULT
SET NULL
strani starš.
Tuj ključ se spremeni na privzeto vrednost polja.
Tuj ključ dobi vrednost NULL.
FOREIGN KEY referenco na tabelo, katere lastnik je nekdo drug, lahko določimo le v primeru, če
nam je lastnik ali administrator dodelil privilegij (REFERENCES) nad to tabelo.
Vsak uporabnik, ki spreminja vrednost tujega ključa, mora imeti REFERENCES ali SELECT
privilegij nad tabelo starša.
Relacijo med tabelama lahko ustvarimo v CREATE TABLE stavku. To je možno le v primeru, če
tabela na strani starša (v našem primeru je to tabela lastniki) obstaja oz. je že ustvarjena.
Ustvarjanje tabele avtomobili z določitvijo relacije v omejitvi tabele.
CREATE TABLE AVTOMOBILI (
REGISTRACIJSKASTEVILKA VARCHAR(15) NOT NULL,
DAVCNASTEVILKA VARCHAR(10) NOT NULL,
ZNAMKA VARCHAR(120),
BARVA VARCHAR(20),
CENA DECIMAL(12,2),
CONSTRAINT pk_AVTOMOBILI PRIMARY KEY (REGISTRACIJSKASTEVILKA),
CONSTRAINT fk_AVTOMOBILI_LASTNIKI FOREIGN KEY(DAVCNASTEVILKA)
REFERENCES LASTNIKI(DAVCNASTEVILKA)
ON DELETE NO ACTION
ON UPDATE CASCADE
);
Ustvarjanje tabele avtomobili z določitvijo relacije v omejitvi polja (tuj ključ).
CREATE TABLE AVTOMOBILI (
REGISTRACIJSKASTEVILKA VARCHAR(15) NOT NULL,
DAVCNASTEVILKA VARCHAR(10) NOT NULL
CONSTRAINT fk_ AVTOMOBILI_LASTNIKI REFERENCES
LASTNIKI(DAVCNASTEVILKA)
ON DELETE NO ACTION
ON UPDATE CASCADE,
ZNAMKA VARCHAR(120),
BARVA VARCHAR(20),
CENA DECIMAL(12,2),
CONSTRAINT pk_AVTOMOBILI PRIMARY KEY (REGISTRACIJSKASTEVILKA)
);
VELJAVNOSTNA PRAVILA
CHECK del določa pravilo, ki mora veljati ob dodajanju ali spreminjanju zapisov v tabeli.
Pravila za tabelo avtomobili
Polje
Pravilo
Cena
Cena >= 0
Barva
Ena izmed vrednosti: črna, bela, siva, modra, rdeča,
rumena, zelena, rjava, oranžna
Ustvarjanje tabele avtomobili z določitvijo pravil tabele.
CREATE TABLE AVTOMOBILI (
REGISTRACIJSKASTEVILKA VARCHAR(15) NOT NULL,
DAVCNASTEVILKA VARCHAR(10) NOT NULL,
ZNAMKA VARCHAR(120),
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 127/160
BARVA VARCHAR(20),
CENA DECIMAL(12,2),
CONSTRAINT pk_AVTOMOBILI PRIMARY KEY (REGISTRACIJSKASTEVILKA),
CONSTRAINT ck_AVTOMOBILI_BARVA CHECK (BARVA IN ('črna', 'bela',
'siva', 'modra', 'rdeča', 'rumena', 'zelena', 'rjava', 'oranžna')),
CONSTRAINT ck_AVTOMOBILI_CENA CHECK (CENA >=0)
);
Ustvarjanje tabele avtomobili z določitvijo pravil polja.
CREATE TABLE AVTOMOBILI (
REGISTRACIJSKASTEVILKA VARCHAR(15) NOT NULL,
DAVCNASTEVILKA VARCHAR(10) NOT NULL,
ZNAMKA VARCHAR(120),
BARVA VARCHAR(20) CONSTRAINT ck_AVTOMOBILI_BARVA
CHECK (BARVA IN ('črna', 'bela', 'siva', 'modra', 'rdeča', 'rumena', 'zelena',
'rjava', 'oranžna')),
CENA DECIMAL(12,2) CONSTRAINT ck_AVTOMOBILI_CENA CHECK (CENA >=0),
CONSTRAINT pk_AVTOMOBILI PRIMARY KEY (REGISTRACIJSKASTEVILKA)
);
Preverjanje razumevanja
1. Kateri stavek ne uporabljamo za ustvarjanje, spreminjanje in brisanje tabel v zbirki podatkov?
a) CREATE TABLE
b) ALTER TABLE
c) UPDATE
d) DROP TABLE
2. Koliko tabel lahko ustvarimo z enim CREATE TABLE stavkom?
a) eno ali več
b) samo eno
c) vsaj dve
3. Najmanj koliko tabel mora biti v zbirki podatkov, če želimo povezati tabeli preko povezovalnih
polj v različnih tabelah?
a) ena
b) dve
c) ducat
d) tri
4. Določite pravilno zaporedje sintakse CREATE TABLE stavka.
ime_tabele
[(<def_polja> [, <def_polja> | <omejitev_tabele>
…]);
CREATE TABLE
5. V kateri našteti podatkovni tip ne moremo shraniti besedila?
a) CHAR
b) VARCHAR
c) DECIMAL
d) NCHAR
6. Izberite polja, ki so lahko primarni ključ tabele OBCANI?
a) PRIIMEK
b) IME
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 128/160
c) DAVCNASTEVILKA
d) DATUMROJSTVA
e) EMSO
7. Katero polje ne sodi v tabelo OBCANI?
a) PRIIMEK
b) IME
c) DAVCNASTEVILKA
d) DATUMROJSTVA
e) EMSO
f) SPOL
g) STAROST
h) NASLOV
8. Ali lahko ustvarimo tabelo v zbirki podatkov , ki nima določenega primarnega ključa?
a) da
b) ne
9. Izberite pravilni stavek za ustvarjanje tabele TEST s poljem POLJE1, ki je podatkovnega tipa
INTEGER in je primarni ključ.
a) CREATE TABLE TEST
(POLJE1 INTEGER CONSTRAINT PK_TEST PRIMARY KEY);
b) CREATE TABLE TEST
(POLJE1 INTEGER NOT NULL CONSTRAINT PK_TEST PRIMARY KEY);
c) CREATE TABLE TEST
(POLJE1 INTEGER NOT NULL CONSTRAINT PRIMARY KEY);
10. Katero vrsto pravila uporabimo pri ustvarjanju tabele, če lahko polje vsebuje celo število iz
intervala od 5 do 10?
a) FOREIGN KEY
b) CHECK
c) UNIQUE
d) PRIMARY KEY
11. Izberite pravilni stavek za ustvarjanje tabele TEST s poljem POLJE2, ki je podatkovnega tipa
INTEGER in ima pravilo, da je lahko vrednost polja le 'da' ali 'ne'.
a) CREATE TABLE TEST
(POLJE2 INTEGER
CONSTRAINT CK_TEST_POLJE2 CHECK (POLJE2 ='da' OR 'ne'));
b) CREATE TABLE TEST
(POLJE2 INTEGER
CONSTRAINT CK_TEST_POLJE2 CHECK (VALUE IN ('da','ne')));
c) CREATE TABLE TEST
(POLJE2 INTEGER
CONSTRAINT CK_TEST_POLJE2 CHECK (POLJE2 IN ('da','ne')));
12. V katerih stavkih najpogosteje ustvarimo relacije (povezave) med tabelami, če v skripti
pripravljamo stavke za ustvarjanje cele nove strukture zbirke podatkov?
a) v CREATE TABLE stavkih
b) v ALTER TABLE stavkih
c) v DROP TABLE stavkih
8.4.2
ALTER TABLE STAVEK
Zelo pogosto moramo spremeniti organizacijo (strukturo) zbirke podatkov potem, ko ta že obstaja. Če
zbirka podatkov že vsebuje podatke, potem moramo biti še bolj previdni oz. natančni pri reorganizaciji
zbirke podatkov.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 129/160
ALTER TABLE stavek omogoča spreminjanje organizacije oz. strukture v zbirki podatkov.
Sintaksa:
ALTER TABLE ime_tabele <operacija> [, <operacija> …];
<operacija> =
{
|
|
|
|
ADD <def_polja> /* dodajanje stolpca */
ADD <omejitev_tabele> /* dodajanje omejitev tabele */
/* spreminjanje stolpca */
ALTER [COLUMN] ime_polja <alter_polje_stavek>
DROP polje /* odstranitev stolpca */
/* odstranitev omejitve */
DROP CONSTRAINT ime_omejitve
}
<alter_polje_stavek> = {
|
|
TO novo_ime_polja
TYPE nov_podatkovni_tip_polja
POSITION nov_polozaj_polja
}
Če odstranimo polje tabele, potem izgubimo vse podatke tega polja.
Z enim stavkom ALTER TABLE stavkom lahko izvršimo več dodajanj (ADD) in več odstranjevanj
(DROP).
ALTER TABLE stavek se ne izvede uspešno, če podatki tabele kršijo omejitev primarnega ključa
(PRIMARY KEY) ali omejitev edinstvenega polja (UNIQUE), ki ga želimo dodati tabeli.
Brisanje polja iz tabele je neuspešno tudi v naslednjih primerih:
- če je polje del UNIQUE, PRIMARY ali FOREIGN KEY pravila (omejitve),
- če je polje uporabljeno v katerem CHECK pravilu (omejitvi),
- če je polje uporabljeno v izrazu izračunljivega polja,
- če je referenca na to polje v drugem predmetu, npr. pogledu (VIEW).
Poimenovanje omejitev polj je opcijsko. Če ne dodelimo imena, potem se določi sistemsko ime (
Firebird določi ime oblike INTXXX, kjer XXX predstavlja celo število). Vsekakor pa je lažje
spremeniti in odstraniti omejitev, če je le-ta smiselno poimenovana.
Dodajanje novega polja opomba v tabelo poštne številke.
Ime tabele
POSTNESTEVILKE
Ime polja
Podatkovni tip
Zahtevano
(Not null)
Unique
OPOMBA
Varchar (300)
Ne
Ne
Ključ
ALTER TABLE POSTNESTEVILKE /* ime tabele */
ADD OPOMBA Varchar (300); /* definicija polja */
Če ne določimo položaja polja, potem se polje doda na zadnje mesto v seznam polj tabele.
Premik polja opomba na drugo mesto v seznamu polj.
ALTER TABLE POSTNESTEVILKE /* ime tabele */
ALTER OPOMBA POSITION 2; /* drugo mesto */
Izvršitev obeh operacij v enem stavku.
ALTER TABLE POSTNESTEVILKE /* ime tabele */
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 130/160
ADD OPOMBA Varchar (300), /* definicija polja */
ALTER OPOMBA POSITION 2; /* drugo mesto */
Preimenovanje polja opomba v opomba1.
ALTER TABLE POSTNESTEVILKE /* ime tabele */
ADD OPOMBA TO OPOMBA1; /* preimenovanje polja */
Brisanje polja opomba1 iz tabele poštne številke.
ALTER TABLE POSTNESTEVILKE /* ime tabele */
DROP OPOMBA1; /* brisanje polja */
Vse operacije spreminjanja so bile uspešne, ker polje opomba ni bilo uporabljeno v drugih predmetih
zbirke podatkov.
Oglejmo si nekaj zahtevnejših primerov reorganizacije.
Spremenimo podatkovni tip polja priimek v tabeli lastniki v VARCHAR(20) (besedilo – do 20 znakov).
ALTER TABLE LASTNIKI /* ime tabele */
ALTER PRIIMEK TYPE VARCHAR(20); /* sprememba podatkovnega tipa */
Izvršitev stavka je neuspešna (Firebird), ker obstaja možnost izgube podatkov v tem polju in ker je
polje priimek uporabljeno v pogledu AVTOMOBILI_LASTNIKI.
Če kljub temu želimo spremeniti dolžino polja, potem uporabimo naslednje operacije:
dodamo novo polje, prepišemo podatke iz starega v novo polje, izbrišemo pogled
AVTOMOBILI_LASTNIKI, izbrišemo staro polje, preimenujemo novo polje in ga premaknemo na
ustrezen položaj, ponovno ustvarimo pogled AVTOMOBILI_LASTNIKI.
Zavedati se moramo, da se zaporedje uspešno izvrši le, če imajo vse vrednosti v polju priimek do 20
znakov.
Če ima katerikoli zapis v polju priimek več kot 20 znakov, potem moramo napisati uporabniško
funkcijo (User Defined Function - UDF) , ki nam vrne prvih N znakov, npr. LEFT(N). To funkcijo
nato uporabimo pri prepisu podatkov iz enega v drugo polje.
ALTER TABLE LASTNIKI /* ime tabele */
ADD PRIIMEK1 VARCHAR(20); /* dodajanje polja */
UPDATE LASTNIKI /* ime tabele */
SET PRIIMEK1=PRIIMEK; /* prepis podatkov */
DROP VIEW AVTOMOBILI_LASTNIKI; /* brisanje pogleda */
ALTER TABLE LASTNIKI /* ime tabele */
DROP PRIIMEK; /* brisanje starega polja */
ALTER TABLE LASTNIKI /* ime tabele */
ALTER PRIIMEK1 TO PRIIMEK; /* preimenovanje novega polja */
ALTER TABLE LASTNIKI /* ime tabele */
ALTER PRIIMEK POSITION 3; /* premik polja */
CREATE VIEW AVTOMOBILI_LASTNIKI /* ustvarjanje pogleda */
(
REGISTRACIJSKASTEVILKA, ZNAMKA, DAVCNASTEVILKA, PRIIMEK, IME
) AS SELECT REGISTRACIJSKASTEVILKA,ZNAMKA,A.DAVCNASTEVILKA, PRIIMEK,IME
FROM AVTOMOBILI A LEFT OUTER JOIN LASTNIKI L
ON A.DAVCNASTEVILKA = L.DAVCNASTEVILKA;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 131/160
Spremenimo podatkovni tip polja, ki je primarni ključ in je hkrati uporabljen v relaciji med dvema
tabelama. Po spremembi podatkovnega tipa mora biti enaka organizacija kot pred spremembo
(referenčna integriteta, primarni ključ …).
Spremenimo podatkovni tip polja davčna številka v tabeli lastniki iz VARCHAR(10) v CHAR(10).
ALTER TABLE LASTNIKI /* ime tabele */
ALTER DAVCNASTEVILKA TYPE CHAR(10); /* sprememba podatkovnega tipa */
Izvršitev stavka je neuspešna (Firebird), ker obstajajo odvisni podatki v organizaciji zbirke podatkov.
Predmeti v zbirki podatkov, ki uporabljajo polje davčna številka, so: primarni ključ tabele lastniki,
relacija med tabelama lastniki in avtomobili.
Najprej izbrišemo vse odvisne predmete v zbirki podatkov.
ALTER TABLE AVTOMOBILI /* ime tabele */
DROP CONSTRAINT FK_AVTOMOBILI_LASTNIKI; /* odstranimo relacijo */
ALTER TABLE LASTNIKI /* ime tabele */
DROP CONSTRAINT PK_LASTNIKI; /* odstranimo primarni ključ */
Spremenimo podatkovni tip polja davčna številka.
ALTER TABLE LASTNIKI /* ime tabele */
ALTER DAVCNASTEVILKA TYPE CHAR(10); /* sprememba podatkovnega tipa */
ALTER TABLE AVTOMOBILI /* ime tabele */
ALTER DAVCNASTEVILKA TYPE CHAR(10); /* sprememba podatkovnega tipa */
Določimo primarni ključ tabele lastniki.
ALTER TABLE LASTNIKI /* ime tabele */
/* dodamo omejitev primarnega ključa */
ADD CONSTRAINT PK_LASTNIKI PRIMARY KEY(DAVCNASTEVILKA);
Ustvarimo relacijo med tabelama avtomobili in lastniki.
ALTER TABLE AVTOMOBILI /* ime tabele */
/* dodamo omejitev relacije */
ADD CONSTRAINT FK_AVTOMOBILI_LASTNIKI
FOREIGN KEY (DAVCNASTEVILKA) REFERENCES LASTNIKI (DAVCNASTEVILKA)
ON DELETE NO ACTION
ON UPDATE CASCADE;
Zaporedje izvajanja operacij je pomembno. Sprememba podatkovnega tipa primarnega ključa iz
besedila v celo število ali obratno zahteva še več operacij. Če imamo v zbirki podatkov ustvarjene
strežniške procedure in prožilce v katerih je uporabljeno polje, ki mu spreminjamo podatkovni tip,
potem moramo izbrisati vse te strežniške procedure, spremeniti podatkovni tip polja, spremeniti
strežniške procedure in jih ponovno ustvariti v zbirki podatkov.
Spreminjanje organizacije oz. strukture zbirke podatkov je zahtevno opravilo, saj moramo poleg
razumevanja stavkov za spreminjanje strukture biti pozorni tudi na to, da ne izgubimo podatke.
Spreminjanje strukture običajno izvedemo na kopiji zbirke podatkov in po uspešnih spremembah
prepišemo originalno zbirko podatkov. Ker zahtevajo spremembe strukture zbirke podatkov tudi
spremembe v programskih aplikacijah, ki predstavljajo obrazce (vmesnike) za delo z zbirko podatkov
je pomembno, da v načrtovanju pravilno določimo strukturo oz. organizacijo zbirke podatkov.
Preverjanje razumevanja
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 132/160
1. Kateri stavek uporabljamo za spreminjanje strukture oz. organizacije obstoječe zbirke podatkov?
a) CREATE TABLE
b) ALTER TABLE
c) UPDATE
d) DROP TABLE
2. Določite pravilno zaporedje sintakse ALTER TABLE stavka.
ime_tabele
<operacija> [, <operacija> …]
ALTER TABLE
3. Izberite operacijo, ki se uporablja za spreminjanje podatkovnega tipa polja (stolpca) tabele.
a) ADD
b) ALTER [COLUMN]
c) DROP
d) DROP CONSTRAINT
4. Izberite pravilni stavek za dodajanje polja POLJE_NOVO (INTEGER, NOT NULL) v obstoječo
tabelo TEST.
a) ALTER TABLE TEST
DROP POLJE_NOVO INTEGER NOT NULL;
b) ALTER TABLE TEST
ADD POLJE_NOVO COLUMN INTEGER NOT NULL;
c) ALTER TABLE TEST
ADD POLJE_NOVO INTEGER NOT NULL;
d) ALTER TABLE TEST
(ADD POLJE_NOVO INTEGER NOT NULL);
5. Izberite pravilni stavek, ki polje POLJE_NOVO v tabeli TEST premakne na prvo mesto v
seznamu polj.
a) ALTER TABLE TEST
ALTER POLJE_NOVO TO 1;
b) ALTER TABLE TEST
ALTER POLJE_NOVO POSITION 1;
c) ALTER TABLE TEST
ALTER POLJE_NOVO TYPE 1;
d) ALTER TABLE TEST
ALTER POLJE_NOVO POSITION FIRST;
6. Izberite operacijo, ki se uporablja za brisanje pravila polja tabele.
a) ADD
b) ALTER [COLUMN]
c) DROP
d) DROP CONSTRAINT
7. Izberite pravilni stavek, ki polju POLJE_NOVO ustvari pravilo, da je vrednost polja med 10 in 20.
a) ALTER TABLE TEST
ADD CONSTRAINT ck_TEST_POLJE_NOVO CHECK (POLJE_NOVO BETWEEN
10 AND 20);
b) CHANGE TABLE TEST
ADD CONSTRAINT ck_TEST_POLJE_NOVO CHECK (POLJE_NOVO > 10 AND <
20);
c) ALTER TABLE TEST
ADD CONSTRAINT ck_TEST_POLJE_NOVO CHECK (POLJE > 10 AND POLJE <
20);
d) ALTER TABLE TEST
ADD ck_TEST_POLJE_NOVO CHECK (POLJE_NOVO BETWEEN 10 AND 20);
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 133/160
8. Polje POLJE_NOVO v tabeli TEST je uporabljeno v strežniški proceduri TEST_I. Izvršimo
naslednji stavek:
ALTER TABLE TEST DROP POLJE_NOVO;
Ali se stavek izvrši brez napake?
a) da
b) ne
9. Polju POLJE_NOVO v tabeli TEST želimo spremeniti podatkovni tip iz celega števila
(INTEGER) v besedilo spremenljive dolžine. Kakšna mora biti dolžina polja, da je sprememba
podatkovnega tipa uspešna (v FIREBIRD-u) z naslednjim stavkom.
Stavek: ALTER TABLE TEST ALTER POLJE_NOVO TYPE ?;
a) 6 znakov (VARCHAR(6))
b) 8 znakov (VARCHAR(8))
c) 11 znakov (VARCHAR(11))
10. Določite pravilno zaporedje stavka ALTER TABLE, ki med tabelama LASTNIKI in
AVTOMOBILI ustvari novo relacijo. Povezovalna polja v obeh tabelah sta
DAVCNASTEVILKA.
FOREIGN KEY (DAVCNASTEVILKA)
ON DELETE NO ACTION ON UPDATE
CASCADE;
ADD CONSTRAINT
FK_AVTOMOBILI_LASTNIKI
ALTER TABLE AVTOMOBILI
REFERENCES LASTNIKI
(DAVCNASTEVILKA)
8.4.3
DROP TABLE STAVEK
DROP TABLE stavek izbriše tabelo iz zbirke podatkov.
Sintaksa:
DROP TABLE ime_tabele;
DROP TABLE stavek povzroči izgubo vseh podatkov tabele, njenih meta podatkov in indeksov, ki so
ustvarjeni za to tabelo v zbirki podatkov. Izbriše tudi vse prožilce, ki vsebujejo referenco na to tabelo.
Če obstaja referenca (sklic) na tabelo v SQL izrazu, omejitvi referenčne integritete, strežniški
proceduri, potem tabele ne moremo izbrisati, dokler ne izbrišemo vseh omenjenih odvisnosti.
Brisanje tabele poštne številke.
DROP TABLE POSTNESTEVILKE; /* ime tabele */
Preverjanje razumevanja
1. Kateri stavek uporabljamo za brisanje tabele iz zbirke podatkov?
a) CREATE TABLE
b) ALTER TABLE
c) UPDATE
d) DROP TABLE
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 134/160
2. Izberite najustreznejši opis, kdaj se naslednji stavek ne izvrši uspešno.
Stavek: DROP TABLE TEST;
a) Če obstaja referenca (sklic) na tabelo TEST v SQL izrazu, referenčni integriteti, strežniški
proceduri, potem se pri izvršitvi stavka izpiše sporočilo o neuspešni izvršitvi stavka.
b) Če obstaja referenca (sklic) na tabelo LASTNIKI v SQL izrazu, referenčni integriteti,
strežniški proceduri, potem se pri izvršitvi stavka izpiše sporočilo o neuspešni izvršitvi stavka.
c) Če obstajajo podatki v tabeli TEST ali obstaja indeks za polje v tabeli TEST, potem se pri
izvršitvi stavka izpiše sporočilo o neuspešni izvršitvi stavka.
8.4.4
INDEKSI
Pravilna uporaba indeksov izboljša zmogljivosti zbirke podatkov. Pravilna izbira indeksov je
pomembna predvsem takrat, če je v zbirki podatkov veliko podatkov.
Indeksi se uporabljajo za hitrejše iskanje podatkov v zbirki podatkov. Za primarni ključ in tuj ključ se
samodejno ustvari indeks. Dodatne indekse ustvarimo za polja, ki jih najpogosteje uporabljamo pri
iskanju zapisov.
Za posamezno tabelo ne ustvarimo preveč indeksov, saj tako upočasnimo delovanje zbirke podatkov.
Sestavljene indekse uporabljamo le v redkih primerih.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 135/160
8.4.5
CREATE INDEX STAVEK
CREATE INDEX stavek ustvari indeks za eno ali več polj v tabeli.
Sintaksa:
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
INDEX ime_indeksa ON ime_tabele (polje [, polje …]);
UNIQUE
ASC[ENDING]
DESC[ENDING]
edinstven - ni podvajanja enakih vrednosti v polju indeksa
naraščajoča razvrščenost
padajoča razvrščenost
Ustvarjanje indeksa za polje kraj v tabeli poštne številke.
CREATE INDEX NDX_POSTNESTEVILKE_KRAJ ON POSTNESTEVILKE (KRAJ);
Ustvarjanje indeksa za polje priimek v tabeli lastniki.
CREATE INDEX NDX_LASTNIKI_PRIIMEK ON LASTNIKI (PRIIMEK);
8.4.6
ALTER INDEX STAVEK
ALTER INDEX stavek omogoča spreminjanje aktivnosti indeksa.
Sintaksa:
ALTER INDEX ime_indeksa {ACTIVE | INACTIVE};
ACTIVE
INACTIVE
-
aktiven indeks
neaktiven indeks
Določitev neaktivnega indeksa za polje kraj v tabeli poštne številke.
ALTER INDEX NDX_POSTNESTEVILKE_KRAJ INACTIVE;
8.4.7
DROP INDEX STAVEK
DROP INDEX stavek izbriše indeks iz zbirke podatkov.
Sintaksa:
DROP INDEX ime_indeksa;
Brisanje indeksa za polje kraj v tabeli poštne številke.
DROP INDEX NDX_POSTNESTEVILKE_KRAJ;
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 136/160
Preverjanje razumevanja
1. Določite pravilno zaporedje sintakse CREATE INDEX stavka.
ON ime_tabele
[UNIQUE]
(polje [, polje …]);
[ASC[ENDING] | DESC[ENDING]]
CREATE
INDEX ime_indeksa
2. Za katero polje v tabeli se samodejno ustvari indeks?
a) Polje, ki ima določeno pravilo omejitve vnosa (CHECK).
b) Polje, ki je primarni ključ tabele.
c) Polje, ki ima pravilo edinstvenega vnosa (UNIQUE).
3. Za katera polja tabele običajno ustvarimo indekse?
a) Polja, ki imajo pravilo zahtevanega vnosa.
b) Polja, ki jih uporabniki najpogosteje spreminjajo.
c) Polja, ki jih uporabniki najpogosteje uporabljajo pri iskanju podatkov v tej tabeli.
4. Ali je smiselno za vsa polja tabele ustvariti indeks?
a) da
b) ne
8.4.8
CREATE DOMAIN STAVEK
Uporaba domen v zbirki podatkov nam poenostavi delo v primerih, če uporabljamo iste podatkovne
tipe in pravila v različnih poljih v tabelah zbirke podatkov.
Pravila so lahko enaka za več polj v zbirki podatkov. Npr. polje spol ima lahko več tabel v zbirki
podatkov (kontaktne osebe, zaposleni …). Polje spol lahko ima le vrednosti »M« in »Ž«. V takšnih
primerih določimo novo zalogo vrednosti (uporabniški podatkovni tip), ki jo uporabimo pri
ustvarjanju tabel.
CREATE DOMAIN stavek ustvari novo domeno oz. zalogo vrednosti (nov podatkovni tip).
Sintaksa:
CREATE DOMAIN ime_domene [AS] <podatkovni_tip>
[DEFAULT {literal | NULL | USER}]
[NOT NULL]
[CHECK (<domena_filter_pogoj>)]
[COLLATE collation];
<domena_filter_pogoj> = {
VALUE <operator> <polje_izraz>
| VALUE [NOT] BETWEEN <polje_izraz> AND value
| VALUE [NOT] LIKE <polje_izraz> [ESCAPE <polje_izraz>]
| VALUE [NOT] IN (<polje_izraz> [,<polje_izraz> …])
| VALUE IS [NOT] NULL
| VALUE [NOT] CONTAINING <polje_izraz>
| VALUE [NOT] STARTING [WITH] <polje_izraz>
| (<domena_filter_pogoj>)
| NOT <domena_filter_pogoj>
| <domena_filter_pogoj> OR <domena_filter_pogoj>
| <domena_filter_pogoj> AND <domena_filter_pogoj>
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 137/160
}
<operator> = {= | < | > | <= | >= | !< | !> | <> | !=}
Pri deklaraciji tabel moramo zapisati (uporabiti) najbolj zunanje oglate oklepaje, npr. deklaracija
dvodimenzionalne tabele 5x5 za nize spremenljive dolžine največ šestih znakov (VARCHAR(6)[5,5] ).
Dvopičje (:) uporabimo za določitev indeksov, ki se ne začnejo z vrednostjo 1.
Tabela celih števil z indeksi od 10 do 20 (INTEGER[10:20]).
Določitev domene oz. zaloge vrednosti s pravilom, da mora biti število večje ali enako 1000 in
manjše od 10000.
CREATE DOMAIN TSTEVILO4STEVKE
AS INTEGER CHECK (VALUE >= 1000 AND VALUE < 10000);
Določitev domene oz. zaloge vrednosti za osnovno barvo.
CREATE DOMAIN TOSNOVNABARVA
AS VARCHAR(20) CHECK (
VALUE IN ('črna', 'bela', 'siva', 'modra', 'rdeča', 'rumena', 'zelena', 'rjava', 'oranžna')
);
Določitev domene oz. zaloge vrednosti za spol.
CREATE DOMAIN TSPOL
AS CHAR(1) CHECK (VALUE IN ('M', 'Ž', 'm', 'ž'));
Uporaba domene pri spreminjanju podatkovnega tipa polja. Polju BARVA v tabeli AVTOMOBILI
spremenimo podatkovni tip polja v domeno TOSNOVNABARVA. Tabeli lastniki dodajmo polje spol
podatkovnega tipa domene TSPOL.
ALTER TABLE AVTOMOBILI /* ime tabele */
ALTER BARVA TYPE TOSNOVNABARVA; /* sprememba podatkovnega tipa */
ALTER TABLE LASTNIKI /* ime tabele */
ADD SPOL TSPOL; /* dodajanje polja podatkovnega tipa tspol */
8.4.9
ALTER DOMAIN STAVEK
ALTER DOMAIN stavek omogoča spreminjanje zaloge vrednosti oz. lastnega podatkovnega tipa.
Sintaksa:
ALTER DOMAIN ime_domene {
SET DEFAULT {literal | NULL | USER} /* določitev privzete vrednosti */
| DROP DEFAULT /* odstranitev privzete vrednosti */
/* domena lahko ima le eno check pravilo */
| ADD CHECK (<domena_filter_pogoj>)
| DROP CONSTRAINT /* odstranitev omejitve domene */
| novo_ime_domene
/* sprememba imena domene */
| TYPE podatkovni_tip }; /* sprememba podatkovnega tipa domene */
Za spreminjanje domene moramo biti prijavljeni kot lastnik domene (CREATOR),
uporabnik ali uporabnik z root dovoljenji.
SYSDBA
Spreminjanje podatkovnega tipa domene TSPOL iz VARCHAR(1) v VARCHAR(10).
ALTER DOMAIN TSPOL TYPE VARCHAR(10);
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 138/160
Ustvarjanje nove domene za barve podatkovnega tipa besedilo (največ 20 znakov).
CREATE DOMAIN TOSNOVNABARVA1 AS VARCHAR(20);
Dodajanje pravila domeni TOSNOVNABARVA1, in sicer dovoljenje vrednosti barv so 'črna', 'bela',
'siva', 'modra', 'rdeča', 'rumena', 'zelena', 'rjava', 'oranžna'.
ALTER DOMAIN TOSNOVNABARVA1
ADD CHECK (VALUE IN ('črna', 'bela', 'siva', 'modra', 'rdeča', 'rumena', 'zelena', 'rjava', 'oranžna') );
Brisanje pravila (check) domene TOSNOVNABARVA1.
ALTER DOMAIN TOSNOVNABARVA1
DROP CONSTRAINT;
8.4.10 DROP DOMAIN STAVEK
DROP DOMAIN stavek izbriše domeno iz zbirke podatkov.
Sintaksa:
DROP DOMAIN ime_domene;
Brisanje je neuspešno, če je domena uporabljena v kateremkoli polju zbirke podatkov.
Brisanje domene TOSNOVNABARVA1.
DROP DOMAIN TOSNOVNABARVA1;
Preverjanje razumevanja
1. Kateri stavek uporabljamo za ustvarjanje nove zaloge vrednosti v zbirki podatkov?
a) CREATE TABLE
b) CREATE DOMAIN
c) CREATE INDEX
2. Določite pravilno zaporedje sintakse CREATE DOMAIN stavka.
[COLLATE <nabor_znakov_razvrščanja>];
[DEFAULT {literal | NULL | USER}]
[NOT NULL]
CREATE
DOMAIN
ime_domene
<podatkovni_tip>
CHECK (<domena_filter_pogoj>)]
[AS]
3. Izberite pravilni stavek, ki ustvari novo domeno t_DANE, ki zahteva vnos ene izmed vrednosti
'DA' ali 'NE'.
a) CREATE DOMAIN t_DANE AS INTEGER NOT NULL
CHECK (VALUE NOT IN ('DA', 'NE'));
b) CREATE DOMAIN t_DANE AS CHAR(2) NOT NULL
CHECK (VALUE IN ('DA', 'NE'));
c) CREATE DOMAIN t_DANE AS CHAR(2) NOT NULL
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 139/160
CHECK (DANE IN ('DA', 'NE'));
4. Katere operacije ne moremo narediti z ALTER DOMAIN stavkom?
a) določiti privzeto vrednost domene
b) počistiti privzeto vrednost domene
c) dodati pravilo (CHECK) domene
d) počistiti pravilo domene
e) ustvariti primarni ključ
f) preimenovati domeno
g) spremeniti podatkovni tip domene
9
RELACIJSKA ALGEBRA
Razumevanje operacij relacijske algebre omogoča boljšo optimizacijo poizvedb SQL-a.
Relacijska algebra je:
! formalni opis delovanja relacijske zbirke podatkov,
! matematično ozadje za izvajanje SQL operacij.
Ni potrebno, da so operacije relacijske algebre enake SQL operacijam, pa čeprav imajo enako ime.
9.1
OPERACIJE RELACIJSKE ALGEBRE
osnovne
! unija
izvedene
! presek
!
razlika
!
θ-stik
!
kartezijski produkt
!
naravni stik
!
projekcija
!
količnik
!
selekcija
Kompatibilnost dveh relacij
Relaciji p(A1, A2, A3, A4, A5) in r(B1, B2, B3, B4, B5) izpolnjujeta pogoj kompatibilnosti, če imata enako število
atributov (sta enake stopnje) in velja, da je domena oz. zaloga vrednosti atributov na istih mestih v relaciji enaka
(velja domena(Ai) = domena(Bi)).
9.1.1
UNIJA
Predpogoj za unijo je kompatibilnost relacij.
Zapis: u = p ∪ r
Velja: p ∪ r = r ∪ p
Rezultat unije je relacija, ki vsebuje vse n-terice, ki so v relaciji p ali r ali v obeh.
p ∪ r = {t | t ∈ p ali t ∈ r}
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 140/160
Primer:
p: A B
a1 b1
a2 b2
a4 b4
9.1.2
p ∪ r: A
a1
a2
a3
a4
r: A B
a2 b2
a3 b3
B
b1
b2
b3
b4
pUr
U
p
r
RAZLIKA
Predpogoj za razliko je kompatibilnost relacij.
Zapis: l = p – r
Velja: p − r ≠ r − p
Rezultat operacije p - r je relacija, ki vsebuje vse n-terice, ki se nahajajo v relaciji p in se ne
nahajajo v relaciji r.
p – r = {t | t ∈ p in t ∉ r}
Primer:
p: K I
k1 i1
k2 i2
k4 i4
r:
K
k2
k3
I
i2
i3
p-r: K
k1
k4
I
i1
i4
p-r
p
9.1.3
r
KARTEZIJSKI PRODUKT
Relacijski shemi operandov sta lahko različni.
Zapis: p x r
Rezultat kartezijskega produkta je relacija, ki vsebuje vse možne stike n-teric obeh relacij.
p x r = {tu | t ∈ p in u ∈ r}
Primer:
p: Z U
k1 i1
k2 i2
r:
U1
k2
k3
V
v2
v3
p x r:
Z
k1
k1
k2
k2
U
i1
i1
i2
i2
U1
k2
k3
k2
k3
V
v2
v3
v2
v3
pxr
x
p
r
Preverjanje razumevanja
1. Katera operacija ni osnovna operacija relacijske algebre?
a) unija
b) razlika
c) presek
d) kartezijski produkt
e) projekcija
f) selekcija
2. Izberite najustreznejši opis pojma »kompatibilnost relacij«.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 141/160
a) Relaciji p(A1, A2, A3, A4, A5) in r(B1, B2, B3, B4, B5) izpolnjujeta pogoj kompatibilnosti,
če imata vsaj pet atributov in velja, da je domena oz. zaloga vrednosti atributov na istih
mestih v relaciji enaka (velja domena(Ai) = domena(Bi)).
b) Relaciji p(A1, A2, A3, A4, A5) in r(B1, B2, B3, B4, B5) izpolnjujeta pogoj kompatibilnosti,
če imata enako število atributov in velja, da je domena oz. zaloga vrednosti atributov na istih
mestih v relaciji enaka (velja domena(Ai) = domena(Bi)).
c) Relaciji p(A1, A2, A3, A4, A5) in r(B1, B2, B3, B4, B5) izpolnjujeta pogoj kompatibilnosti,
če imata enako število atributov.
3. Izberite pravilno dopolnitev stavka.
Stavek: Rezultat unije je relacija,
a) ki vsebuje vse n-terice, ki so v relaciji p in v relaciji r.
b) ki vsebuje vse n-terice, ki so v relaciji p ali r in niso hkrati v obeh.
c) ki vsebuje vse n-terice, ki so v relaciji p ali r ali v obeh.
4. Izberite vse operacije, ki imajo predpogoj kompatibilnost relacij.
a) unija
b) razlika
c) kartezijski produkt
5. Izberite pravilno dopolnitev stavka.
Stavek: Rezultat operacije p - r je relacija,
a) ki vsebuje vse n-terice, ki se nahajajo v relaciji r in se ne nahajajo v relaciji p.
b) ki vsebuje vse n-terice, ki se nahajajo v relaciji p in se hkrati nahajajo v relaciji r.
c) ki vsebuje vse n-terice, ki se nahajajo v relaciji p in se ne nahajajo v relaciji r.
6. Katera operacija vrne rezultat v spodnji tabeli?
a)
b)
c)
d)
p: A B
r: A B Rezultat: A B
a1 b1
a2 b2
a3 b3
a2 b2
a3 b3
a4 b4
razlika: p – r
kartezijski produkt: p x r
razlika: r – p
unija: p ∪ r
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 142/160
9.1.4
PROJEKCIJA
Operacij projekcija in selekcija ne poznamo iz teorije množic, sta pa pomembni pri izvrševanju
poizvedb.
Predpogoj za projekcijo je, da je lista atributov X podmnožica relacije r (X ⊆ r).
Projekcijo relacije r s shemo Sh(r) = R po listi atributov X zapišemo π X (r).
Shema projekcije je enaka listi atributov X: Sh(π X (r)) = X.
Projekcija je sestavljena iz n-teric, ki jih sestavljajo le atribute z liste X (stolpci). Zaporedje
atributov v shemi je enako zaporedju v listi X.
Primer:
r: K
k1
k1
k2
k2
9.1.5
π I,U1 (r)
U1 V
I
u2
u1
u2
u2
i2
i3
i2
i3
v2
v3
v2
v3
I
U1
i2
i3
i3
u2
u1
u2
π I,U1 (r)
r
SELEKCIJA
Selekcijo relacije r s shemo Sh(r)=R po pogoju P (formuli) zapišemo: σ P (r).
Selekcija je relacija, ki vsebuje tiste n-terice iz dane relacije r, ki izpolnjujejo pogoj P.
σ P(r) = {t | t ∈ r in
P(t)}
V pogoju P lahko nastopajo:
! spremenljivke, ki predstavljajo atribute iz n-terice,
!
konstante: 123, “Tineček”, ”Velenje” …,
!
primerjalni operatorji: =, ≠, >, ≥, <, ≤,
!
logični operatorji: ∧ - AND (IN), ∨ - OR (ALI), ¬ - NOT (NE).
Npr.: P ≡ K = ”k1” ∧ I = ”i2”
r: K
k1
k1
k2
k2
U1
u2
u1
u2
u2
V
v2
v3
v2
v3
I
i2
i3
i2
i3
σ P(r)
K U1 V I
k1 u2 v2 i2
σ P(r)
r
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 143/160
Preverjanje razumevanja
1. V katero skupino operacij relacijske algebre sodita projekcija in selekcija?
a) osnovne operacije
b) izvedene operacije
2. Katera operacija relacijske algebre predstavlja izbiro atributov relacije?
a) unija
b) selekcija
c) projekcija
d) kartezijski produkt
3. Katera operacija relacijske algebre predstavlja izbiro n-teric (vrstic) relacije, ki izpolnjujejo
predpisan pogoj?
a) unija
b) selekcija
c) projekcija
d) kartezijski produkt
4. Kaj predstavlja naslednji izraz relacijske algebre π I,U1 (r)?
a) Projekcijo relacije r po vseh atributih razen atributov I,U1.
b) Projekcijo relacije r po listi atributov I,U1.
c) Selekcijo relacije r po ujemanju vrednosti atributov I,U1.
5. Kaj predstavlja naslednji izraz relacijske algebre σ P(r)?
a) Projekcijo relacije r po listi atributov P.
b) Selekcijo relacije r s formulo oz. pogojem P.
c) Selekcijo relacije P s formulo oz. pogojem r.
9.1.6
PRESEK
Predpogoj za presek je kompatibilnost relacij.
Zapis: l = p ∩ r
Velja: p ∩ r = r ∩ p
Presek lahko izrazimo s pomočjo razlike: p ∩ r ≡ p - (p - r).
Rezultat preseka p ∩ r je relacija, ki vsebuje vse n-terice, ki so v relaciji p in v relaciji r (hkrati v
obeh relacijah).
Primer:
p: K
k1
k2
k4
ŠC VELENJE
I
i1
i2
i4
r: K I
k2 i2
k3 i3
INFORMATIKA
p ∩ r: K I
k2 i2
PODATKOVNE BAZE (1.letnik)
Stran 144/160
9.1.7
NARAVNI STIK
Naravni stik relacij, ki lahko pripadata različnima shemama (Sh(p) = P, Sh(r)=R), v katerih pa
nastopajo enako imenovani atributi S = P ∪ R, izrazimo s pomočjo kartezijskega produkta, selekcije in
projekcije: p
r≡
π X (σ P (p x r) ).
Pri tem je množica atributov X ≡ P ∪ R, pogoj F pa je konjunkcija primerjav na enakost komponent nteric, ki pripadajo enako imenovanim atributom iz shem P in R. Shema naravnega stika je enaka uniji
atributov prve in druge sheme. Sh (p
r) = P ∪ R.
V rezultatu naravnega stika se nahajajo vsi možni stiki n-teric, pri katerih so komponente, ki pripadajo
enako imenovanim atributom iz obeh shem, enake, pri tem pa se podvojene n-terice izločijo.
Primer:
p:
9.1.8
S T
s1 2
s2 2
s3 10
s3 16
r: T
5
10
10
2
G
g2
g3
g3
g1
p
r: S T G
s3 10 g3
s1 2 g1
s2 2 g1
p |x| r
Ai
p
=
Bi
r
θ − STIK
θ−stik relacij z različnima shemama (Sh(p) = P, Sh(r) = R), izrazimo s pomočjo kartezijskega produkta
in selekcije: p
i θ j r ≡ σ F (p x r), kjer je F ≡ i θ j.
Shema θ-stika je enaka stiku list atributov prve in druge sheme: Sh(p
i θ j r) = P.R.
Rezultat θ−stika p
i θ j r relacij p(A1,A2,A3 ...,AN) in r(B1,B2,A3 ...,BM) je relacija z N + M atributi, ki
izpolnjuje pogoj stika i θ j.
I in j sta atributa, θ pa eden izmed relacijskih operatorjev (<, >, = ...).
Stik je smiseln le v primeru kompatibilnosti domen atributov, katerih vrednosti se primerjajo.
Primer:
p: K
k1
k2
k4
ŠC VELENJE
I
2
6
10
r: F
5
8
INFORMATIKA
G
g2
g3
p
I>F
r: K
k2
k4
k4
I
6
10
10
F
5
5
8
G
g2
g2
g3
PODATKOVNE BAZE (1.letnik)
p
r
Stran 145/160
Preverjanje razumevanja
1. V katero skupino operacij relacijske algebre sodita naravni in θ-stik?
a) osnovne operacije
b) izvedene operacije
2. S katero osnovno operacijo lahko izrazimo presek?
a) unijo
b) selekcijo
c) razliko
3. Katera operacija relacijske algebre predstavlja izbiro n-teric (vrstic) relacije, ki izpolnjujejo
predpisan pogoj?
a) unija
b) selekcija
c) projekcija
d) kartezijski produkt
r?
4. Kaj predstavlja naslednji izraz relacijske algebre p
a) kartezijski produkt
b) selekcijo
c) naravni stik
5. Kateri stik v pogoju združitve uporablja ujemanje enako imenovanih atributov?
a) θ -stik
b) naravni stik
9.1.9
KOLIČNIK
Količnik relacij p in r s shemama (Sh(p) = P, Sh(r)=R), za kateri velja, da je R prava podmnožica od P,
izrazimo s pomočjo kartezijskega produkta, razlike in projekcije:
p ÷ r ≡ π X p - π X (((π X p) x r) - p), kjer je množica atributov X ≡ P - R.
Shema količnika je enaka razliki atributov prve in druge sheme: Sh (p ÷ r) = P - R.
Rezultat količnika je relacija z n-terico t, za katero velja, da za vsako n-terico tr v r obstaja n-terica tp
v p, ki izpolnjuje pogoja: tp[r] = tr[r] in tp[p-r] = tr[p-r].
Količnik najpogosteje uporabimo, ko imamo zahteve tipa "all" (npr. iščemo delavce, ki so zaposleni na
vseh projektih).
Primer:
p: S
s1
s2
s3
s1
s2
T
r: S
2
s1
2
s2
10
16
20 P - R = T
p÷r: T
2
p÷ r
÷
p
r
9.1.10 PRIORITETA OPERACIJ
Če ni z oklepaji drugače določeno, je prioriteta naslednja:
(1.) najvišjo prioriteto imata selekcija in projekcija,
(2.) slede kartezični produkt, θ-stik, naravni stik in količnik,
(3.) nato presek,
(4.) najnižjo prioriteto pa imata unija in razlika.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 146/160
Vaja:
Izračunajmo količnik s pomočjo osnovnih operacij za podani relaciji p in r.
P: W
x
x
x
y
xx
Y
c
y
d
c
y
r: Y
c
d
? p ÷ r:
p÷r≡
πX
p - π X (((π X p) x r) - p)
p÷r≡
πW
p - π W (((π W p) x r) - p)
p: W Y
x
x
x
y
xx
r: Y
c
y
d
c
y
c
d
πW (((π[W]p)x r)-p):
πW p:
W
y
xx
X=P-R=W
(πW p)x r: W
x
x
y
y
xx
xx
W
x
y
xx
πW p:
(πW p)x r – p: W
y
xx
xx
Y
c
d
c
d
c
d
W
p ÷ r: W
x
y
xx
x
Y
d
c
d
Preverjanje razumevanja
1. S katerimi osnovnimi operacijami lahko izrazimo količnik?
a) kartezijski produkt, selekcija in projekcija
b) kartezijski produkt, razlika in projekcija
c) selekcija, razlika in projekcija
2. Določite pravilno zaporedje prioritete od najvišje do najnižje.
presek
unija in razlika
selekcija in projekcija
kartezični produkt, θ-stik, naravni stik in
količnik
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 147/160
9.1.11 ZDRUŽITVENE FUNKCIJE
Združitvene funkcije v relacijski algebri zapišemo:
G1, G2, …, Gn g F1(A1), F2(A2), …, Fn(An) (r)
kjer je:
! r - relacija ali izrez relacijske algebra,
! G1, G2, …, Gn – seznam atributov, ki določajo skupine združevanja (lahko je prazen),
! Fi – i-ta združitvena funkcija (count, sum, avg. min, max),
! Ai - ime atributa.
Primer:
p:
K
k2
k2
k4
I
2
6
10
g sum(I) (p):
K
sum-I
18
g sum(I) as vsota (p):
K
k2
K4
vsota
8
10
Vaja:
p:
po:
Poste
POSTA
1000
2000
3000
3320
2380
o:
MESTO
Ljubljana
Maribor
Celje
Velenje
Slovenj Gradec
Poklici
SPOKLICA
100
110
200
POKLIC
trgovec
komercialist
hišnik
Osebe
DAVST
11111111
22222222
IME
Boris
Tine
PRIIMEK
Kopitar
Verbuč
NASLOV
Podjavorska 12
Vrhgore 23
POSTA
2000
2000
SPOKLICA
100
DATROJSTVA
12.3.1972
23.4.1972
Izrazi relacijske algebre, ki vrnejo odgovor na vprašanje.
Kakšen poklic ima Boris Kopitar?
D1 = π SPOKLICA (σ PRIIMEK = 'Kopitar' ∧ IME = 'Boris' (o) )
D2 = po
D1
D3 = π POKLIC (D2)
D3: POKLIC
trgovec
Izpis seznama ime, priimek in mesto (za osebe).
Odg:
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 148/160
D1 = π PRIIMEK, IME, POSTA (o)
D1
D2 = p
D2 = π IME, PRIIMEK, MESTO (D2)
D2: IME
Boris
Tine
PRIIMEK
Kopitar
Verbuč
MESTO
Maribor
Maribor
10 TRANSAKCIJE
Transakcija je zaporedje izvajanja akcij (vstavljanje, spreminjanje, brisanje, poizvedovanje), ki
zagotovi prehod zbirke podatkov iz enega veljavnega stanja v drugo veljavno stanje.
Sistem za upravljanje zbirke podatkov zagotavlja vsem uporabnikom zbirke podatkov sočasen dostop
do podatkov.
Problem pri sočasnem dostopu več uporabnikov do zbirke podatkov je ta, da lahko dva uporabnika
istočasno spreminjata iste podatke v zbirki podatkov. Če takšna vrsta dostopa ne bi bila posebno
nadzorovana, bi lahko prišlo do neustreznih stanj zbirke podatkov. Za nadzor dostopov do zbirke
podatkov je potreben koncept ograjevanja (angl. encaptulation) dostopov do podatkov. Princip
ograjevanja dostopov do podatkov se imenuje transakcija.
Lastnosti transakcij (ACID):
! atomarnost (angl. atomicity) – izvršijo se vse ali nobena aktivnost transakcije,
! konsistentnost - ohranjanje ustreznih stanj zbirke podatkov (angl. consistency),
! izolacija oz. osamitev (angl. isolation),
! potrjene transakcije se morajo ohraniti (angl. durability).
Po izvedenih akcijah transakcije se transakcija lahko zaključi s:
- potrditvijo transakcije (angl. commit) ali
- razveljavitvijo transakcije (angl. rollback).
Potrditev pomeni, da se vse spremembe transakcije potrdijo oz. uveljavijo v zbirki podatkov.
Razveljavitev pomeni preklic vseh akcij transakcije in vzpostavitev stanja pred začetkom izvajanja
transakcije.
Načrt izvajanja transakcije je časovni razpored izvajanja akcij transakcije. V načrtu transakcije
uporabljamo:
! READ (a)
aktivnost branja podatka a iz zbirke podatkov,
! WRITE (x, a)
aktivnost zapisovanja vrednosti x v a,
časovna oznaka dogodka oz. aktivnosti.
! ti
Časovne enote so nepomembne. Pomembno je zaporedje dogodkov (kaj se zgodi prej).
Ustvarimo načrt razporeda izvajanja transakcije A, ki izvede naslednje akcije:
! poizvedba cene določenega avtomobila (rezultat je 10000),
! povečanje cene za 1000 in
! shranjevanje nove cene.
Čas
t1
t2
t3
Transakcija A
tCENA:= READ(X)
tCENA := tCENA +1000
WRITE(tCENA, X)
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 149/160
Predpostavimo, da se sočasno izvaja transakcija B. Transakcija B vse cene avtomobilov poveča za 15
%.
Kakšna je cena avtomobila iz transakcije A po zaključku obeh transakcij?
Čas
t1
t2
t3
t4
t5
t6
Transakcija A
Vrednost
tCENA
tCENA:= READ(X)
tCENA := tCENA +1000
WRITE(tCENA, X)
10000
11000
11000
Transakcija B
tZNESEK:=READ(X)
Vrednost
BALANCE
10000
tZNESEK:= tZNESEK *1.15
WRITE(tZNESEK,X)
11500
11500
X je 11500.
Primer izgube spremembe:
Čas
t1
t2
t3
t4
Transakcija A
X = READ(R)
Transakcija B
Y = READ(R)
WRITE(X,R)
WRITE(Y,R)
Sprememba transakcije A ni upoštevana, ker jo prepiše transakcija B. V času t4 transakcija B ne
upošteva spremembe transakcije A (t3) in shrani vrednost, dobljeno v času t2.
Primer nepotrjene odvisnosti
Čas
t1
t2
t3
Transakcija A
Transakcija B
WRITE(X,R)
Y = READ(R)
PREKLIC
Transakciji A je dovoljeno branje ali spreminjanje elementa R, ki je bil spremenjen v nepotrjeni
transakciji B.
Primer protislovja
Čas
X
Y
Z
t1
t2
t3
t4
t5
t6
t7
t8
40
40
40
40
40
50
50
50
50
50
50
50
50
50
50
50
30
30
30
20
20
20
20
20
Transakcija A
Akcija
VSOTA:=READ(X)
VSOTA+=READ(Y)
Transakcija B
VSOTA
40
90
POM1 = READ(Z)
WRITE(POM1-10,Z)
POM2 = READ(X)
WRITE(POM2+10,X)
COMMIT
VSOTA+=READ(Z)
110
VSOTA bi morala biti 120.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 150/160
Zaporedna neodvisnost transakcij (angl. serializability)
Transakcij T1 in T2 sta zaporedno neodvisni, če izvajanje transakcij vrne enak rezultat ne glede na
zaporedje izvajanja, npr. T1, T2 ali T2, T1.
Preverjanje razumevanja
1. Izberite najustreznejši opis transakcije?
a) Transakcija je zaporedje izvajanja poizvedb, ki zagotovi podatke iz zbirke podatkov.
b) Transakcija je zaporedje izvajanja akcij (vstavljanje, spreminjanje, brisanje, poizvedovanje),
ki zagotovi izvršitev strežniške procedure.
c) Transakcija je zaporedje izvajanja akcij (vstavljanje, spreminjanje, brisanje, poizvedovanje),
ki zagotovi prehod zbirke podatkov iz enega veljavnega stanja v drugo veljavno stanje.
d) Transakcija je zaporedje izvajanja akcij (vstavljanje, spreminjanje, brisanje, poizvedovanje),
ki omogoča razveljavljanje izvršenih akcij.
2. Kateri ukaz potrdi zaključitev transakcije?
a) commit
b) rollback
3. Kdaj sta transakciji zaporedno neodvisni?
a) Transakcij T1 in T2 sta zaporedno neodvisni, če se transakcija T1 potrdi pred transakcijo T2.
b) Transakcij T1 in T2 sta zaporedno neodvisni, če izvajanje transakcij vrne enak rezultat ne
glede na zaporedje izvajanja, npr. T1, T2 ali T2, T1.
c) Transakcij T1 in T2 sta zaporedno neodvisni, če izvajanje transakcij ne vrne enak rezultat ne
glede na zaporedje izvajanja, npr. T1, T2 ali T2, T1.
11 ORGANIZACIJA DATOTEK
Le posamezni sistemi za upravljanje zbirk podatkov omogočajo administratorju zbirke podatkov
prilagoditev oz. izbiro nastavitev datotečne organizacije. Razumevanje datotečnih organizacij je
pomembno za izboljšanje zmogljivosti.
Osnovni koncepti (datoteka, zapis, blok, stran)
Operacije nad zapisi
V praksi se velikokrat pojavi zahteva po spreminjanju podatkov. Spreminjanje podatkov imenujemo
ažuriranje, ki obsega:
! dodajanje novih zapisov,
! spreminjanje in brisanje obstoječih zapisov.
Ažuriranje logične datoteke (LD) se dejansko izvede kot ažuriranje fizične datoteke (FD).
Operacije se razlikujejo glede na datotečno organizacijo. Razlike nastopajo predvsem pri iskanju
zapisov zaradi njihove različne urejenosti v datotekah.
Bloki, polja, zapisi v poljih
Zapise nespremenljive dolžine zapisujemo v fizične bloke tako, da posamezen blok razdelimo na
enako velika polja. Dolžina polj je prilagojena dolžini zapisov. Blok razdelimo na polja.
Vrste organizacij:
! kopica, ali neurejeni zapisi,
! urejeni zapisi,
! zapisi s pomočjo sekljalnih funkcij.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 151/160
11.1 KOPICA - NEUREJENA (ZAPOREDNA) DATOTEKA
Neurejena datoteka je najenostavnejši tip organizacije. Nov zapis se doda oz. vstavi v zadnji blok.
Datoteka ni razvrščena oz. urejena po poljih. Dostop do zapisov datoteke je zaporedni.
Pogosto se pojavlja potreba po reorganizaciji datoteke.
Neurejena datoteka je najboljša organizacija za masovno polnjenje podatkov v tabele.
Algoritem zaporednega iskanja:
beri prvi blok
ponavljaj
beri prvi zapis v bloku
ponavljaj
če je ključ zapisa < ključ iskani
potem
preberi naslednji zapis
sicer
če je ključ zapisa = ključ iskani
potem
zapis je najden
sicer
ni iskanega zapisa
konec iskanja
dokler konec iskanja ali konec bloka
če konec bloka ni konec datoteke
potem
beri naslednji blok
sicer
ni iskanega zapisa
konec iskanja
dokler konec iskanja
11.2 UREJENE DATOTEKE
V urejeni datoteki so zapisi urejeni glede na eno ali več vrednosti polj.
Značilnosti:
! težavnejše vstavljanje in brisanje zapisov,
! pri vstavljanju se najprej poišče mesto vstavljanja,
! pri brisanju je potrebna reorganizacija,
! hitrejše iskanje.
11.3 DATOTEKE S POMOČJO
NAKLJUČNE DATOTEKE)
"
"
ŠC VELENJE
SEKLJALNIH
FUNKCIJ
(DIREKTNE,
sekljalne funkcije določajo točko vstopa
- ostanek po deljenju
- aritmetične funkcije
razreševanje konfliktov
- odprto naslavljanje
- nespremenjen prenos
- spremenjen prenos
- večkratno sekljanje
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 152/160
Preverjanje razumevanja
1. Izberite pravilen zaključek stavka.
Ažuriranje logične datoteke se izvede kot ažuriranje fizične datoteke. Operacije ažuriranja v
fizični datoteki so odvisne od ________________________.
a) strukture zbirke podatkov
b) datotečne organizacije
c) velikosti zbirke podatkov
2. Kateri algoritem se uporablja za iskanje v zaporedni datoteki?
a) binarno iskanje
b) zaporedno iskanje
c) direktno iskanje
3. Koliko blokov moramo v povprečju prebrati pri iskanju v zaporedni datoteki?
a) tretino blokov fizične datoteke
b) petino blokov fizične datoteke
c) polovico blokov fizične datoteke
d) vedno moramo prebrati celo fizično datoteko
4. Kaj je osnovna prednost oz. pridobitev urejene datoteke?
a) težavnejše vstavljanje
b) težavnejše brisanje
c) redka reorganizacija
d) hitrejše iskanje
11.4 INDEKSNE DATOTEKE
B+ indeksna organizacija se najpogosteje uporablja v sistemih za upravljanje zbirk podatkov in jo
mora poznati vsak načrtovalec zbirk podatkov.
Indeksna datoteka s pomočjo sistema kazalcev omogoča hiter dostop do podatkov v osnovni datoteki
(indeks indeksira osnovno datoteko). Indeks je datoteka, ki omogoča hiter dostop do zapisov v osnovni
datoteki. Indeks je možno vedno znova ustvariti na osnovi podatkov v osnovni datoteki in je s tega
vidika redundanten (odvečen) podatek.
Zapis v indeksni datoteki vsebuje vrednost polja, ki je indeksirano in kazalec na mesto v osnovni
datoteki, kjer se nahaja zapis, ki vsebuje to vrednost polja.
vrednost iskanega polja
kazalec
Indeksna datoteka je po velikosti običajno veliko manjša od osnovne datoteke.
Indeks je lahko:
! zaporedna datoteka – iskalna polja so razvrščena po iskanem polju ali
! razpršena datoteka – vrednosti iskalnih polj so neformalno razporejene po območju indeksa z
uporabo sekljalne funkcije.
Primarni indeks: indeksiranje osnovne datoteke je izvedeno po njenem osnovnem ključu. Indeks, ki
je zaporedno urejen v osnovni datoteki po polju primarnega ključa, imenujemo clustered indeks.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 153/160
Slika 87: Primarni indeks
Sekundarni indeks: indeksiranje osnovne datoteke je izvedeno po podatkovnem elementu, ki nastopa
v zapisu datoteke, vendar ni ključ.
Indeks je zaporedna datoteka (urejenost po polju indeksa).
Slika 88: Sekundarni indeks
Gosti indeks: na vsako polje osnovne datoteke, ki vsebuje zapis, kaže kazalec iz indeksa (primarni
indeks je primer gostega indeksa). Pri tem se vrednosti podatkovnih elementov, ki tvorijo ključ
indeksnega zapisa, ujemajo z enako imenovanimi podatkovnimi elementi osnovne datoteke.
Kazalec kaže na polje, kjer se nahaja pripadajoči osnovni zapis. Ker je indeks zaporedna datoteka,
lahko iskanje poteka po kateremkoli algoritmu za iskanje v zaporedni datoteki. Pri dodajanju moramo
dodati ustrezen zapis tudi v indeks. Ažuriranje indeksa je potrebno tudi pri brisanju.
Redki indeks: kazalci iz indeksa kažejo na skupine polj z zapisi iz osnovne datoteke.
Slika 89: Redki indeks
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 154/160
Večnivojski indeks: indeksirana je osnovna datoteka, indeksiran je indeks na osnovno datoteko,
indeksiran je indeks na indeks itd.
Slika 90: Večnivojski indeks
V primeru dodajanja in brisanja podatkov se spremenijo indeksi na vseh nivojih.
B+
B+ je drevesna organizacija z naslednjimi lastnostmi:
! dolžina vseh poti od vozlišča korena do vozlišč listov je enaka;
! vsako vmesno vozlišče ima najmanj n/2 in največ n naslednikov;
! listi imajo najmanj (n-1)/2 in največ n-1 vrednosti;
! izjeme oz. posebnosti so:
o če koren ni list, potem ima najmanj 2 naslednika,
o če je koren list, potem ima med 0 in n-1 vrednosti.
Tipična zgradba vozlišča
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 155/160
P1
K1
P2
K2
…
Pn-1
Kn-1
Pn
Ki - i-ta iskana vrednost (angl. search key)
Pi - i-ti kazalec (angl. pointer)
Iskane vrednosti v vozlišču so urejene po velikosti.
K1 < K2 < K3 < … < Kn-1 < Kn
Lastnosti vozlišča lista:
! i=1, 2, 3, …, n-1; kazalec Pi kaže na:
o zapis v datoteki, ki vsebuje iskano vrednost Ki ali na
o prvi zapis v datoteki, ki vsebuje iskano vrednost (ponavljanje enakih iskanih
vrednosti);
! če sta Li in Lj vozlišča lista in je i < j, potem so vse iskane vrednosti v vozlišču Li manjše od
iskanih vrednosti v vozlišču Lj;
! kazalec Pn kaže na naslednje vozlišče lista glede na urejenost.
Vozlišče lista (B+):
+
Slika 91: Vozlišče B lista
Lastnosti vmesnega vozlišča z m kazalci:
! vse vrednosti v poddrevesu, na katerega kaže kazalec P1, so manjše od vrednosti K1;
! 2 <= i <= n – 1; vse vrednosti poddrevesa, na katerega kaže kazalec Pi, so večje ali enake
vrednosti Ki-1 in manjše od vrednosti Km-1.
Primer (n=5):
+
Slika 92: B drevo
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 156/160
60
30
55
55
70
60
65
70
90
vstavljanje: 30
60
30
15
30
55
55
70
60
65
70
90
vstavljanje: 15
+
Slika 93: Vstavljanje v B drevo
Uporaba:
"
"
"
"
"
"
uporaba za izboljšanje (pospešitev) dostopa:
- primarni indeks,
- sekundarni indeks,
- indeks gruče;
indeksno-sekvenčne datoteke:
- primarno področje shranjevanja,
- ločeni indeksi,
- področje za rast podatkov;
poti pristopa:
- ISAM,
- VSAM;
sekundarni indeksi;
večnivojski indeksi:
- zmanjševanje iskalnega prostora;
B+ drevesa:
- primer večnivojskih indeksov.
SUZP uporabljajo različne datotečne organizacije. Uporabnik običajno nima možnosti za določen
SUZP izbora datotečne organizacije. B+ datotečna organizacija se najpogosteje uporablja za indekse v
sistemih za upravljanje zbirk podatkov.
Ustvarjanje indeksov:
" sistemi za upravljanje zbirk podatkov samodejno ustvarijo indeks za primarni ključ in edinstvena
(angl . UNIQUE) polja;
" dodatne indekse ustvarimo za polja, po katerih bodo uporabniki pogosto iskali podatke.
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 157/160
Preverjanje razumevanja
1. Pravilno dopolnite naslednji stavek.
Indeksne datoteke se uporabljajo za _________________________.
a) arhiviranje zbirke podatkov
b) hiter dostop do podatkov
c) spreminjane strukture zbirke podatkov
2. Za katero vrsto indeksa velja naslednja trditev?
Indeksiranje osnovne datoteke je izvedeno po podatkovnem elementu, ki nastopa v zapisu datoteke,
vendar ni ključ.
a) primarni indeks
b) sekundarni indeks
c) redki indeks
d) večnivojski indeks
3. Za kaj se uporablja B+ datotečna organizacija v sistemih za upravljanje zbirk podatkov?
a) domene
b) indekse
c) prožilce
d) strežniške procedure
4. Katera lastnost ne velja za B+ datotečno organizacijo?
a) dolžina vseh poti od vozlišča korena do vozlišč listov je enaka;
b) vsako vmesno vozlišče ima največ n/2 naslednikov;
c) listi imajo najmanj (n-1)/2 in največ n-1 vrednosti;
12 ADMINISTRIRANJE ZBIRKE PODATKOV
Za administracijo zbirke podatkov so zahtevane sposobnosti z različnih področij, predvsem pa
poznavanje sistemov za upravljanje zbirk podatkov, SQL-a in operacijskih sistemov.
Za pregled in nadzor nad aktivnostmi, povezanimi z življenjskim krogom zbirke podatkov in
pripadajočimi podatki zaključenega organiziranega sistema, sta odgovorna administrator podatkov
in administrator zbirke podatkov.
12.1 ADMINISTRATOR PODATKOV
Upravljanje podatkovnih virov, vključno z načrtovanjem zbirke podatkov, razvoj in vzdrževanje
standardov, skrb za politiko in procedure ter konceptualno in logično oblikovanje zbirke podatkov
so zadolžitve administratorja podatkov.
Naloge oz. funkcije administratorja podatkov:
" izbor ustreznih orodij,
" sodelovanje pri strategiji IS s poudarkom na študiji izvedljivosti in načrtovanju zbirke podatkov,
" določitev podatkovnih zahtev,
" določitev standarda podatkov in pripadajočih oblik oz. formatov,
" določitev obsega podatkov skupaj z naraščanjem le-teh,
" določitev vzorcev uporab in frekvence uporabe podatkov,
" začetno konceptualno in logično oblikovanje,
" sodelovanje z administratorjem zbirke podatkov in sodelavci za zagotovitev upoštevanja vseh
zahtev v zbirki podatkov,
" izobraževanje uporabnikov glede podatkovnih standardov in zakonskih odgovornosti,
" sodelovanje z oblikovalci zbirke podatkov,
" komunikacije z uporabniki za evidentiranje novih zahtev,
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 158/160
"
"
upravljanje podatkovnega slovarja,
priprava dokumentacije.
12.2 ADMINISTRATOR ZBIRKE PODATKOV
Upravljanje fizične izvedbe sistema zbirke podatkov, vključno z fizičnim oblikovanjem zbirke
podatkov, implementacijo, postavitvijo sistema varovanja in nadzora integritete, spremljanje
učinkovitosti sistema ter reorganizacije le-tega.
Naloge oz. funkcije administratorja podatkovne baze:
" primerjava zmogljivosti SUZP in priporočilo za izbor,
" izvedba fizične zbirke podatkov,
" implementacija fizičnega modela ZP,
" začetno polnjenje zbirke podatkov,
" definiranje omejitvenih (celovitostnih) pravil,
" postavitev sistema varovanja,
" sodelovanje z razvijalci aplikacij,
" testiranje zbirke podatkov,
" ugotavljanje primernosti ZP,
" zagotavljanje rezervnih kopij,
" zagotavljanje mehanizmov ponovne vzpostavitve,
" dokumentiranje,
" izobraževanje uporabnikov,
" prevzem aplikacije pred uporabo,
" spremljanje učinkovitosti sistema,
" spremljanje novosti na področju programske in strojne opreme,
" prehod na nove verzije.
Zaželene sposobnosti:
• poznavanje in razumevanje poslovnih procesov,
• sposobnost koordinacije in planiranja,
• analitične sposobnosti,
• sposobnosti pogajanja,
• sposobnost sprejemanja odločitev,
• pisno in ustno komuniciranje,
• sposobnost vodenja sodelavcev,
• sposobnost prenašanja pritiska in stresa,
• poznavanje podatkovnih obdelav,
• znanja strukturnih metodologij:
- diagrami toka podatkov,
- strukturni diagrami,
- oblikovanje programskih produktov,
• oblikovanje zbirke podatkov,
• modeliranje zbirke podatko,
• upravljanje podatkovnega slovarja.
Preverjanje razumevanja
1. Sistematizacija katerega delovnega mesta zahteva več znanja in sposobnosti?
a) administrator podatkov
b) administrator zbirke podatkov
2. Kdo običajno skrbi za funkcijo zagotavljanja rezervnih kopij in preverjanje postopka ponovne
vzpostavitve v večjem poslovnem sistemu?
a) komercialist
b) administrator podatkov
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 159/160
c) administrator zbirke podatkov
d) pravnik
ŠC VELENJE
INFORMATIKA
PODATKOVNE BAZE (1.letnik)
Stran 160/160