Š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
© Copyright 2024