Osnovni pojmi Informacijski sistemi 1 Informacija in entropija Informacija je merilo presenečenja Če zvemo za dogodek med N enako verjetnimi dogodki, je informacija I, ki smo jo dobili enaka: I = log 2 N Če zvemo za dogodek, ki se je zgodil z verjetnostjo P, je informacija I, ki smo jo dobili enaka: I = − log 2 P Entropija je povprečna informacija N H = −∑ Pn log 2 Pn n =1 Entropija je največja, če velja: Pn = Informacijski sistemi 1 N ⇔ H = log 2 N 2 Podatki Podatek je strukturiran zapis informacije Za zapis podatkov uporabljamo simbole (črke, številke, ...) V računalnikih so simboli zapisani binarno (100101011), v bitih (binarnih simbolih) Za zapis enega bita informacije potrebujemo vsaj en binarni simbol (bit), običajno pa potrebujemo več Redundanca označuje odvečne bite za zapis informacije število informacijskih bitov H R = 1− = 1− število binarnih simbolov H max Z izločanjem redundance lahko podatke stiskamo (zip, arj, rar, ..) Redundanco lahko uporabljamo za zašito podatkov (npr. podvajanje informacije, pariteta, ...) Informacijski sistemi 3 Znanje Znanje je sposobnost Razumevanje tolmačenje pomena informacij Povezovanje razumevanja, povezovanja in uporabe pridobljenih informacij odkrivanje povezav (relacij) med informacijami enega ali več virov Uporaba sprejemanje odločitev ustvarjanje novega znanja (novih informacij in povezav) Informacijski sistemi 4 Informacijski sistem (ožje) Informacijski sistem je skup strojne in programske opreme, ki omogoča učinkovit način za zbiranje, shranjevanje, obdelavo, urejanje, upravljanje, iskanje in prikaz podatkov. Podatki so sestavni del informacijskega sistema. Informacijski sistemi 5 Informacijski sistem (širše) Informacijski sistem je vsaka kombinacija informacijske (informacijsko komunikacijske) tehnologije, podatkov in človeške aktivnosti, ki to tehnologijo uporablja za podporo delovanja, upravljanja in odločanja. Informacijski sistemi 6 Informacijska tehnologija Informacijska tehnologija (IT) je termin, ki pokriva vse oblike tehnologij, ki se uporabljajo za zbiranje, vnos, shranjevanje, prenos, obdelavo in tolmačenje podatkov. Informacijski sistemi 7 Informacijska komunikacijska tehnologija Informacijsko komunikacijska tehnologija (ICT) je krovni pojem, ki združuje informacijsko tehnologijo in komunikacijsko tehnologijo komunikacijske naprave, komunikacijska omrežja Ožja definicija IS IS = konkretna uporaba (izvedba) ICT + podatki Širša definicija IS IS = konkretna uporaba ICT + podatki + uporabniki Informacijski sistemi 8 Ekspertni sistem Eksperti sistem je sistem, ki vsebuje neko vrsto umetne inteligence (AI) podpora odločanju diagnostika nova spoznanja Ekspertni sistem je zgrajen nad informacijskim sistemom Informacijski sistem deluje na nivoju podatkov Ekspertni sistem deluje na nivoju znanja Informacijski sistemi 9 Infrastruktura informacijskih sistemov Informacijski sistemi 10 Informacijsko komunikacijska infrastruktura Informacijsko komunikacijsaka infrastruktura (ICI) je konkretna uporaba informacijsko komunikacijske tehnologije (ICT) Infrastrukturo informacijskih sistemov sestavlja informacijska (podatkovna), komunikacijska in varnostno nadzorna oprema K infrastrukturi štejemo tako strojno kot programsko opremo. Informacijski sistemi 11 Primer infrastrukture IS Informacijski sistemi 12 Strojna oprema Periferne naprave Delovne postaje Strežniki in osrednji računalniki Shrambe podatkov Naprave za varnostne kopije in njihovo shranjevanje Podporni sistemi, naprave in oprema Komunikacijska strojna oprema Informacijski sistemi 13 Periferne naprave Periferne naprave skrbijo za: Priključene so lahko na: vnos, prikaz in shranjevanje podatkov. delovne postaje, osrednje računalnike ali neposredno v omrežje. Primeri perifernih naprva: tiskalniki, skenerji, mikrofoni, digitalni fotoaparati in kamere… Informacijski sistemi 14 Delovne postaje - Terminali Naloga terminala je omogočiti vnos in prikaz podatkov. Več terminalov je lahko hkrati povezanih na osrednji računalnik (sistem): imajo svojo procesorsko enoto (smart/fat terminal) ali, procesiranje opravi osrednji računalnik (thin terminal), V glavnem se danes za terminale uporabljajo osebni računalniki in mobilni terminali. Uporabljajo se tekstovni in grafični terminali: sistemska konzola (tekstovni), X-windows, Remote desktop (grafični) Emulator omogoča uporabo osebnega računalnika ali delovne postaje v funkciji terminala. Informacijski sistemi 15 Delovne postaje Osebni računalnik računalnik za splošno uporabo, namenjeni neposredni osebni uporabi brez posredovanja skrbnika sistema, namizni računalniki, prenosniki, dlančniki, pametni telefoni, … “Delovna postaja” visoko zmogljiv računalnik namenjen za tehnične in znanstvene aplikacije, nekdaj je imela delovna postaja vsaj za eno velikostno stopnjo boljše lastnosti kot PC, danes so te razlike majhne in zmogljivejši PC-ji se prodajajo kot delovne postaje. Informacijski sistemi 16 Primer konfiguracije osebnega računalnika 1. 2. 3. 4. 5. 6. 7. 8. 9. Informacijski sistemi Skener Procesor RAM Razširitvene kartice Napajalnik Optična enota Notranji trdi disk Matična plošča Zvočniki 10. Monitor 11. Operacijski sistem 12. Programska oprema 13. Tipkovnica 14. Miška 15. Zunanji trdi disk 16. Tiskalnik 17 Strežniki Termin strežnik se lahko nanaša na: program ali aplikacijo, ki deluje po načelu odjemalec/strežnik program ali aplikacijo skupaj s strojno opremo, ki služi kot gostitelj (host) enemu ali več takim programom, računalnik ali več (povezanih) računalnikov, ki na nek način povezujejo drugo opremo in naprave. V splošnem je strežnik vsak proces, ki omogoča dostop do svojih virov enemu ali več odjemalcem. Primer: souporaba datotek (file sharing) sama naprava, na kateri so zgolj shranjene datoteke, še ni strežnik, skupaj s procesom, ki te datoteke deli z odjemalci (navadno del operacijskega sistema), pa postane strežnik. Informacijski sistemi 18 Namenski strežniki Strežniki navadno opravljajo točno določeno funkcijo. Splošno znani so naslednji namenski strežniki: spletni strežnik, datotečni strežnik, domenski strežnik, podatkovni strežnik, aplikacijski strežnik, … Zgornje funkcije strežnika se nanašajo na njegovo strojno in/ali programsko opremo. Posamezen fizični strežnik (strojna oprema) lahko opravlja eno ali več strežniških funkcij. Posamezno strežniško funkcijo lahko hkrati zagotavlja eden ali več fizičnih strežnikov. Informacijski sistemi 19 Kaj potrebujemo za strežnik? Za strežnik lahko uporabimo praktično vsak osebni računalnik. Namenski strežniki so navadno: bolj zmogljivi računalniki, načrtovani posebej za ta namen, vsebujejo redundantne sisteme. Osnovne zahteve za namenske strežnike so: dovolj virov za njihov namen (RAM, procesor, disk…), podpora velikemu številu hkratnih odjemalcev, visoka razpoložljivost (v pogonu 24/7), visoka zanesljivost (podvojene komponente), nadgradljivost in razširljivost, upravljanje in nadzor na daljavo. Informacijski sistemi 20 V čem so strežniki boljši? Zaradi podanih osnovnih zahtev, namenski strežniki potrebujejo: en ali več zmogljivih (večjedrnih) procesorjev, veliko količino delovnega pomnilnika, hitro, zanesljivo in robustno shranjevanje podatkov, redundantno napajanje, več zmogljivih mrežnih vmesnikov, neprekinjeno napajanje, zaščito pred izgubo podatkov v medpomnilniku diskov, možnost upravljanja, tudi ko operacijski sistem ne deluje, primerno delovno okolje …… Informacijski sistemi 21 Strojna oprema strežnikov (1) Matična plošča osebnega računalnika Informacijski sistemi 22 Strojna oprema strežnikov (2) Matična plošča zmogljivejšega strežnika Informacijski sistemi 23 Strojna oprema strežnikov (3) Samostoječ strežnik zelo zmogljiv “osebni računalnik” Samostojen vgradni strežnik po zmogljivostih podoben samostoječim strežnikom namenjen za vgradnjo v strežniške omare Informacijski sistemi 24 Strojna oprema strežnikov (4) Strežniške rezine strežnik optimiziran za modularno vgradnjo, porabi zelo malo prostora v strežniški omari, porabi malo energije, ohišje rezinam zagotavlja: energijo, hlajenje, povezave, nadzor… podatki se navadno hranijo izven rezine, uporaba: gostovanje, virtualizacija, računalništvo v oblaku Informacijski sistemi 25 Primerjava Strežniške rezine Samostojni vgradni strežniki Skupna infrastruktura za hlajenje, napajanje, omrežje in shranjevanje podatkov. Kabli do vsake rezine niso potrebni. Vsak strežnik ima svoje hlajenje, napajanje in kable. Porabimo do pol manj prostora kot pri samostojnih vgradnih strežnikih. Potrebno veliko prostora v strežniški omari ali podatkovnem centru. Vgradnja ne potrebuje posebnega orodja ali izkušenj. Težavnejša namestitev, ki potrebuje določene izkušnje Strežniške rezine zamenljive med delovanjem (Hotin tehniško osebje. Swap). Zaradi neobstoječih standardov lahko v isto ohišje vgradimo le rezine istega proizvajalca. Velika svoboda izbire strežnikov. V isto strežniško omaro lahko vgradimo strežnike različnih proizvajalcev. Zaradi velikega števila rezin in skupnega hlajenja lahko nastanejo težave s pregrevanjem. Vsak strežnik hlajen samostojno. Možno dodatno hlajenje celotne strežniške omare. Informacijski sistemi 26 Shrambe podatkov Informacijski sistemi 27 Shrambe podatkov in pomnilnik Termin shramba podatkov (Data Storage) se lahko nanaša na vsako stvar v/na kateri so zapisani podatki. Na področju računalništva, informatike in telekomunikacij predstavlja shrambo podatkov naprava ali del naprave (elektronika, programska oprema, nosilec podatkov), ki lahko hrani podatke za nek določen čas. Pomnilnik je posebna vrsta shrambe, ki omogoča hiter in neposreden dostop procesorja do podatkov. Običajno je to pomnilnik z naključnim dostopom (RAM – Random Access Memory). Informacijski sistemi 28 Načini shranjevanja podatkov Začasno shranjevanje (volatile storage) Trajnejše shranjevanje (non volatile storage) Podatki se izgubijo, ko ugasnemo računalnik. To so na primer podatki, ki so shranjeni v delovnem polnilniku računalnika (RAM –Random Access Memory) To je lahko centralni pomnilnik (main memory) ali pa medpolnilnik (cache) procesorja ali diska. Najhitrejši dostop. Podatki preživijo izklop računalnika. Podatki na disku, pomnilniški kartici, optičnem disku, EPROMu, Flashu, ... Lahko pride do izgube ob okvari. Nekoliko počasnejši dostop. Trajno shranjevanje (stable storage) Podatki naj bi se nikoli ne izgubili – izredno majhna verjetnost izgube. Podatki na več neodvisnih, geografsko ločenih trajnejših medijih. Informacijski sistemi 29 Nosilci podatkov V sodobnih IS se uporabljajo predvsem Električni nosilci (dinamični, statični pomnilnik). Magnetni nosilci Podatki so zapisani na feromagnetnem mediju s polarizacijo magnetnih delcev magnetni disk,magnetni trak Optični nosilci Podatki so shranjeni s pomočjo polprevodniških vezij dinamični in statični DRAM (Dynamic RAM) SRAM (Staic RAM), ROM, EPROM, Flash Podatki so zapisani optično (zapis in branje s pomočjo laserja) Samo branje : CD-ROM, DVD-ROM, Blue-Ray Enkraten zapis (WORM): CD-R, DVD-R, CD+R, DVD+R Večkraten zapis CD-RW, DWD-RW, CD+RW, DVD+RW,optična kartica Papir V modernih IS samo še za arhiv Informacijski sistemi 30 Hierarhija shramb podatkov (1) V računalniških sistemih so podatkovne shrambe urejene hierarhično v odnosu na procesor, na: primarne, sekundarne, terciarne in nepovezane (off-line). Praviloma velja, da niže kot je shramba v hierarhiji: manjša je njena propustnost, večja je njena zakasnitev, manjša je cena/bit shranjenih podatkov. Informacijski sistemi 31 Hierarhija shramb podatkov (2) gostota zapisa trajnost zapisa predpolnilnik primarna (pomnilnik) glavni pomnilnik flash sekundarna povezana (on-line) magnetni disk optični disk nepovezana (off-line) magnetni trak terciarna shramba hitrost dostopa cena/bit Informacijski sistemi 32 Primarne shrambe podatkov V računalniških sistemih imenujemo primarno shrambo podatkov: To je edina shramba podatkov, do katere ima procesor neposreden dostop. začasna shramba ali (glavni/notranji) pomnilnik Vmes je medpomnilnik, ki pohitri določene vrste operacij. Medpomnilnik je mnogo hitrejši od pomnilnika. Procesor do pomnilnika dostopa preko podatkovnega in naslovnega vodila. Določena vrsta pomnilnika so tudi registri znotraj procesorja. Podatki so v pomnilniku shranjeni samo začasno. Tipična predstavnika primarnega pomnilnika sta statični pomnilnik (SRAM) in dinamični pomnilnik (DRAM). Informacijski sistemi 33 SRAM in DRAM Statični pomnilnik (SRAM) shranjuje vsak bit podatkov v bistabilnem vezju (vezje z dvemi stabilnimi stanji), ki se imenuje tudi flip-flop. Informacija v SRAMU ne potrebuje osveževanja, zato je ta načeloma hitrejši od dinamičnega pomnilnika. Uporablja se predvsem za medpolnilnike. SRAM je začasen pomnilnik, podatki se ob izklopu zgubijo. Dinamični pomnilnik (DRAM) Dinamični pomnilnik shranjuje vsak bit podatkov kot naboj kondenzatorja. Dinamični pomnilnik je potrebno stalno osveževati. Ker je za osveževanje potreben določen čas, je načeloma počasnejši od DRAMa. Gostota podatkov je večja, zato je cena/bit nižja kot pri SRAMU Tudi DRAM je začasen pomnilnik. Zašita s pariteto ali kontrolno vsoto (checksum) Informacijski sistemi 34 Sekundarne shrambe podatkov Sekundarno shrambo imenujemo tudi: Sekundarna shramba podatkov je za procesor dosegljiva preko vhodno/izhodnih vmesnikov. trajnejša shramba, zunanji pomnilnik ali pomožni pomnilnik. Podatke bere in zapisuje s pomočjo določenega dela primarne shrambe (medpomnilnik za branje in pisanje). Sekundarna shramba je mnogo počasnejša od primarne. Podatki v sekundarnem pomnilniku se pri izklopu ohranijo. Tipični primeri sekundarnega pomnilnika so: trdi disk. flash disk, optični disk, disketa SSD kartica,... Informacijski sistemi 35 Gostota zapisa podatkov Gostota zapisa podatkov se meri v bit/mm2 saj večina današnjih nosilcev shranjuje podatke “površinsko”. Pri magnetnem traku se gostota zapisa meri v bit/mm. Nosilec Način zapisa Papir A4 Tisk 0,5 bit/mm2 Trdi disk 1956 Magnetni 3,1 bit/mm2 Disketa 3,5” Magnetni 1,9 ·103 bit/mm2 CD Optični 1,4 · 106 bit/mm2 Blue-ray Optični 1,9 · 107 bit/mm2 Trdi disk Magnetni 8,3 · 108 bit/mm2 LTO 5 (magnetni trak) Magnetni 1,5 · 104 bit/mm Informacijski sistemi Gostota 36 Trdi disk (1) HDD – Hard Disk Drive sled os magnetna glava sektor cilinder plošča roka magnetna glava smer rotacije 1 1 0 1 polarizacija feromagnetnih delcev Informacijski sistemi 37 Trdi disk (2) lastnost kapaciteta volumen cena dostopovni čas hitrost 1956 2010 faktor izboljšanja 3,5 MB 3,5 TB 1,0 · 106 2,4 · 103 cm3 5,6 · 10-2 cm3 4,3 · 104 1,5 · 104 $/MB 1,0 · 10-4 $/MB 1,5 · 108 1.000 ms 8 ms 125 ? 1,2 Gbit/s ? Rotacija do 250 obratov/s Pospešek glave do 550 g (5 ms do 100 km/h) Uporaba kod za odpravo napak (redundanca, RS in LDPC kode) Sektorji z napakami se preslikajo v druge sektorje Informacijski sistemi 38 Trdi disk (3) Kapaciteta diska: C = nc ⋅ ng ⋅ ns ⋅ nb nc ... število cilindrov ng ... število glav ns ... število sektorjev nb ... število zlogov/sektor (običajno 512 ali 4096) Število C/H/S (cilindri/glave/sektorji), ki jih krmilnik diska javi procesorju ne ustreza nujno dejanskemu stanju. Diski imajo vgrajen trajnejši medpomnilnik, ki močno pospeši hitrost zapisa. Običajno je to RAM z baterijo ali Flash. Hitrost je mogoče povečati tudi s tako imenovanim log diskom: Podatke piše na disk zaporedoma Kasneje jih prepiše na dejansko lokacijo Informacijski sistemi 39 SSD (Flash) SSD (Solid State Drive) – disk brez premičnih delov Ni občutljiv na tresenje in udarce, zato ima velik MTBF (Mean Time Between Failures) Informacija je shranjena v polprevodniških elementih (1 tranzistor) Od 2010 se uporablja NAND Flash (prej NOR) Informacijo lahko pišemo in beremo po zlogih (byte) Informacija se lahko briše samo v bloku. Informacijski sistemi 40 Primerjava Lastnost SSD HDD trenutno več sekund nizka višja zaradi potrebe po točnem pozicioniranju Dostopovni čas 0,1 ms 5 – 10 ms fragmentacija ne moti moti tih odvisno od izvedbe, nikoli čisto tih Mehanska odpornost neobčutljiv občutljiv Število vpisov/izbrisov Omejeno Neomejeno Cena 0,9 €/GB 0,04 €/GB Kapaciteta do 2 TB do 3 TB veliko manjša od hitrosti branja malo manjša od hitrosti branja Čas zagona Zakasnitev pri branju Glasnost Hitrost vpisa Informacijski sistemi 41 Magnetni trak Informacija je zapisana podobno kot na disku LTO (Linear Tape Open) LTO 5: Kapaciteta 1,5 TB Čas previjanja 50 s Število sledi 1280 Hkraten vpis 16 sledi Trajnost za arhiv: 15 do 30 let Trajnost za varnostno kopijo: 4 leta 1/teden, 17 let 1/mesec 5000 vstavitev 200 možnih število vpisov/branj Informacijski sistemi 42 Datotečni sistem Datotečni sistem omogoča organizacijo podatkov na disku. Datotečni sistem potrebuje zase nekaj prostora na disku. Podatki so na disku organizirani v obliki datotek v različnih mapah (direktorijih). Zgradba map je drevesna. Datotečni sistemi: FAT (File Allocation Table - DOS) FAT 32 (32 bitni FAT - Windows 95) NTFS (Windows 2000, Windows NT, Windows 7) UFS (Unix File System) ali FFS (Fast File System) Datotečni sistem se vzpostavi na disku s formatiranjem. Datoteke na disku lahko postanejo fragmentirane, kar močno upočasni dostop do datotek. Informacijski sistemi 43 Terciarne shrambe podatkov Navadno vključujejo naprave z izmenljivimi nosilci, ki jih vstavljamo ali odstranjujemo s pomočjo avtomatizirane robotske roke. Terciarna shramba je mnogo počasnejša od sekundarne. Ko želimo pridobiti podatke iz shrambe: podatke poiščemo v katalogu, z robotsko roko vstavimo nosilec, podatke preberemo in prenesemo v sekundarno ali v primarno shrambo, nosilec vrnemo na njegovo mesto. Informacijski sistemi 44 Primer tercialne shrambe Informacijski sistemi 45 Nepovezane shrambe Nepovezane shrambe so nosilci ali naprave, ki niso pod nadzorom procesorja. Nepovezane shrambe uporabljamo predvsem za: prenos podatkov (fizični transport), shranjevanje na varni lokaciji (katastrofe), varnostne kopije (napadi, izbrisi) Primeri nepovezanih shramb so: Nosilec zapišemo na sekundarni ali terciarni ravni in ga odstranimo iz enote ali odklopimo enoto. Za ponovno uporabo ga moramo vstaviti ali priključiti ročno, za razliko od terciarne shrambe, kjer se to opravi avtomatsko. CD in DVD, magnetni trakovi in kasete, USB diski in ključki. Nepovezane shrambe podatkov so cenejše od terciarnih. Informacijski sistemi 46 Primerjava Cena Kapaciteta Hitrost Primarna shramba Informacijski sistemi Sekundarna shramba Terciarna shramba Nepovezana shramba 47 Dostop do shramb podatkov Procesor do sekundarnih, terciarnih in nepovezanih shramb podatkov dostopa preko nekega vhodno/izhodnega vmesnika. Najbolj razširjeni vmesniki so: PATA (Parallel Advanced Technology Attachment) ali tudi IDE (Integrated Drive Electronics) do 5 Mbit/s EIDE (Enhanced IDE) do 133 Mbit/s SATA (Serial ATA) do 6 Gbit/s SCSI (Small Computer System Interface) do 640 Mbit/s SAS (Serial Attached SCSI) do 2,4 Gbit/s FC (Fibre Channel) in FCP (Fibre Channel Protocol) do 5,1 Gbit/s NFS (Network File System) Informacijski sistemi 48 Lokacija in način povezanosti Glede na lokacijo in način povezanosti ločimo tri konfiguracije podatkovnih shramb: neposredno povezane podatkovne shrambe DAS – Direct-Attached Storage omrežje podatkovnih shramb SAN – Storage Area Network podatkovne shrambe priključene v omrežje NAS – Network-Attached Storage Podobnosti med DAS, SAN in NAS: razširljivost, robustnost in zanesljivost (redundanca), priključitev več uporabnikov hkrati, DAS mora imeti več V/I vmesnikov. Informacijski sistemi 49 DAS DAS je podatkovna shramba, ki je neposredno priključena na sistem, ki jo uporablja. Dostop do podatkov poteka preko V/I vmesnika. Lahko je samostojna enota ali vgrajen v sistem (npr. strežnik). Ne more ga hkrati uporabljati več strežnikov. Informacijski sistemi 50 SAN SAN je skupek naprav za shranjevanje podatkov, ki preko lastne omrežne infrastrukture omogoča dostop do podatkov več sistemom (strežnikom) hkrati. Omrežje SAN ni del krajevnega omrežja! Prenos podatkov poteka preko FC. Sistem do podatkov na SAN dostopa neposredno z naslavljanjem njemu dodeljenega dela podatkovne shrambe: uporablja enake postopke kot pri DAS, kapacitete SAN so porazdeljene med priključene sisteme na njemu dodeljen del lahko dostopa le dotičen sistem. Informacijski sistemi 51 SAN Glavne prednosti SAN: združitev in centralizacija podatkovnih shramb, prihranek, optimizacija, prilagodljivost… lažja administracija potreb po shranjevanju podatkov, nadgradljivost in razširljivost. Informacijski sistemi 52 NAS NAS je v omrežje priključen samostojen sistem, ki vsebuje shrambo podatkov, ki je dostopna na nivoju datotek. V bistvu je to strežnik, ki omogoča souporabo datotek. Ima svoj datotečni sistem. Dostop do datotek je mogoč preko protokolov za souporabo datotek preko omrežja (npr. NSF). NAS lahko opišemo tudi kot omrežen aparat (appliance) za souporabo datotek. Informacijski sistemi 53 NAS vs. SAN SAN je bolj primeren za aplikacije s pogostimi operacijami branja in zapisovanja. Uporabniku je videti je kot lokalni disk brez datotečnega sistema. NAS je bolj primeren za aplikacije, ki delajo s celimi datotekami. Tu je jasno, da gre za oddaljen datotečni sistem. http://en.wikipedia.org/wiki/File:SANvsNAS.svg Informacijski sistemi 54 Kako delujejo DAS, SAN in NAS http://en.wikipedia.org/wiki/File:Compingles.GIF Informacijski sistemi 55 Zanesljivosti podatkovnih shramb V IS so podatki (zelo) dragoceni, zato morajo biti podatkovne shrambe zanesljive. Zanesljivost je pomembna predvsem pri povezanih sekundarnih shrambah, ki so stalno v uporabi. Ob okvari naprave za shranjevanje podatkov, se podatki ne smejo izgubiti. velika večina sekundarnih shramb podatkov so trdi diski. Zanesljivost dosežemo s podvajanjem naprav (redundanco). Prevladujoča je tehnika kombiniranja neodvisnih trdih diskov v diskovna polja. Informacijski sistemi 56 RAID RAID (Redundant Array of Independent Disks) je termin, ki označuje skupino (polje) neodvisnih diskov, ki so med seboj povezani na način, ki zagotavlja določeno stopnjo zanesljivosti hranjenja podatkov. Poznamo mnogo RAID konfiguracij (stopenj), ki: zagotavljajo različne stopnje zanesljivosti, vsebujejo različno število diskov, prinesejo različno učinkovitost izrabe kapacitete diskov, različno ugodno vplivajo na hitrost zapisovanja in branja. Informacijski sistemi 57 Konfiguracije RAID Tabela z najbolj razširjenimi konfiguracijami RAID. Stopnja Opis Min. št. diskov Učinkovitost Odpornost na odpoved Pohitritev pisanja Pohitritev branja nX 0 Porazdelitev podatkov med diske (striping) 2 1 / nX 1 Zrcaljenje 2 1/n n-1 nX 5 Porazdelitev podatkov med diske s pariteto 3 1 – 1/n 1 (n-1)X različno 6 Porazdelitev podatkov med diske s podvojeno pariteto 4 1 – 2/n 2 0+1 Zrcaljenje RAID 0 diskov 4 1/n 1 do n nX nX 1+0 Porazdelitev podatkov med več RAID 1 diskov 4 1/n 1 do n nX 5+1 Zrcaljenje RAID 5 diskov 6 (1 – 1/n)/2 1 do n (n-1)X Informacijski sistemi različno 58 RAID 0 Porazdelitev podatkov med diske (striping) v blokih stalne velikosti, na primer 64 kB. Ni pravi RAID, ker ne zagotavlja večje zanesljivosti. Zanesljivost je celo manjša – pri dveh diskih dvakrat manjša, pri n diskih n-krat manjša. Ker hkrati zapisuje ali bere z več diskov hkrati, se ti dve operaciji pohitrita za faktor števila diskov v konfiguraciji. To je glavna prednost RAID 0. Informacijski sistemi 59 RAID 1 Zrcaljenje – vsi podatki se zapišejo na vse diske hkrati. Število diskov je lahko 2 ali več. Zelo zanesljiv – odpovejo lahko vsi diski razen enega. Ni pohitritve branja in pisanja. Informacijski sistemi 60 RAID 5 Porazdelitev podatkov med diske (striping) v blokih stalne velikosti z dodano pariteto porazdeljeno po vseh diskih. Ob odpovedi kateregakoli diska se manjkajoči podatki v vsakem bloku izračunajo iz preostalih podatkov in paritete. V času obnavljanja podatkov je delovanje polja RAID 5 upočasnjeno. Informacijski sistemi 61 RAID 6 Porazdelitev podatkov med diske (striping) v blokih stalne velikosti z dodano dvojno pariteto porazdeljeno po vseh diskih. Še večja odpornost na odpoved diskov kot pri RAID 5. Informacijski sistemi 62 RAID 0+1 Porazdelitev podatkov med diske (striping) v blokih stalne velikosti RAID 0 znotraj zrcaljene RAID 1 konfiguracije. Zahteva sodo število diskov. Informacijski sistemi 63 RAID 1+0 Porazdelitev podatkov med zrcaljene diske. Zahteva sodo število diskov. Informacijski sistemi 64 64 RAID 5+1 Zrcaljena RAID 5 konfiguracija. Informacijski sistemi 65 Varnostne kopije in arhivi Varnostne kopije (backup) in arhivi so nepovezane podatkovne shrambe. Varnostne kopije so namenjene obnovitvi podatkov v primeru njihovega izbrisa, izgube, odpovedi podatkovnih naprav: obnovitev po katastrofi (disaster recovery), okvare ali nehoten izbris posameznih datotek. Varnostnih kopij je lahko več, ponavadi jih hranimo na različnih (varnih) lokacijah. Arhiv je zbirka zgodovinskih podatkov, ki so bili izbrani za dolgoročno ali stalno hranjenje: po izbiri lastnika, zaradi zakonskih zahtev. Informacijski sistemi 66 Baze podatkov Baza podatkov je programska oprema, ki omogoča shranjevanje, povezovanje, urejanje, dostop in iskanje podatkov. Končnim uporabnikom je struktura baze skrita preprosto delo z bazo, grafični uporabniški vmesnik, dostop do podatkov preko namenskih aplikacij, dostop do podatkov preko spleta. Informacijski sistemi 67 Struktura baz podatkov Baze podatkov imajo več nivojev abstrakcije. Fizični nivo (najnižji nivo abstrakcije) Logični nivo (srednji nivo abstrakcije) Opisuje kako so podatki shranjeni v shrambi (disku, ...). Končnim uporabnikom je skrit, zanje transparenten. Z njim se ukvarjajo razvijalci baze podatkov. Opisuje kateri podatki so shranjeni v bazi (zbirka podatkov).. Opisuje povezave (relacije) med podatki. Logični nivo uporabljajo načrtovalci IS in administratorji. Podatkovni model se načrtuje na logičnem nivoju. Administratorji morajo delno poznati fizični nivo – učinkovitost. Predstavitveni nivo (najvišji nivo abstrakcije) Prikaz izbranih podatkov v določeni obliki. Namenjen je končnim uporabnikom. Informacijski sistemi 68 Delo z bazo podatkov Jezik za definicijo podatkov ang. DDL – Data Definition Language DDL je programski jezik. Omogoča definicijo podatkovnega modela: določitev strukture podatkov določitev tipov posameznih podatkov določitev povezav med podatki Jezik za upravljanje s podatki ang. DML – Data Manipulation Language DML je tudi programski jezik (včasih ni ločnice med DML in DDL). Omogoča upravljanje s podatki: vnos novih podatkov spreminjanje podatkov iskanje podatkov brisanje podatkov Informacijski sistemi 69 Grafični uporabniški vmesnik (1) ang. GUI – Graphical User Interface Omogoča preprost način definicije podatkov (DDL). Informacijski sistemi 70 Grafični vmesnik (2) Omogoča preprost način povezovanja podatkov (DDL). Informacijski sistemi 71 Grafični vmesnik (3) Omogoča preprost način dela s podatki (DML) poizvedbe urejanje (dodajanje, spreminjanje, brisanje) Informacijski sistemi 72 Podatkovni modeli Podatkovni model definira Obstajajo različne vrste podatkovnih modelov vse podatke v zbirki podatkov, njihovo strukturo, njihove atribute, njihove podatkovne tipe in povezave med njimi. relacijski (relacije so del podatkov) entitetni (nastopajo entitete in relacije med njimi) objektni (nastopajo objekti in relacije med njimi) drevesni (relacije med podatki imaj drevesno strukturo) Različne baze podatkov podpirajo različne podatkovne modele. Večina baz, ki se danes uporabljajo, sloni na relacijskem podatkovnem modelu. Informacijski sistemi 73 Relacijski podatkovni model Podatki so zapisani v tabelah (stolpci, vrstice). Stolpci predstavljajo atribute. Atributi so določeni z enoznačnimi imeni. Vrstice v tabeli predstavljajo zapise. Vsak zapis vsebuje vse atribute. Eden od atributov je običajno identifikator zapisa (ID). Identifikator enoumno označuje posamezen zapis. Povezave med podatki so del podatkov. Relacijski podatkovni model je najbolj razširjen (Oracle, Microsoft SQL, MySQL, Access, DB2, ...). Informacijski sistemi 74 Entitetni model Entitetni model sloni na zbirki entitet (stvari). Nabor entitet je nabor entitet z istimi lastnostmi (atributi). Atributi so lahko sestavljeni iz več atributov. Entitete so povezane z relacijami. Relacije so lahko različne (npr. uči, posluša, pripada, ...). Relacije so ločene od entitet. Relacije imajo lahko svoje atribute. Entitetni model se uporablja predvsem pri načrtovanju t.j., določanju strukture podatkov. Običajno se na koncu pretvori v relacijski podatkovni model. Mi bomo načrtovali neposredno v relacijskem modelu. Informacijski sistemi 75 Grafična predstavitev entitetnega modela Vir: Korth, Sudarshan: Database System Concept. Informacijski sistemi 76 Objektno orientiran model Objektno orientiran model izvira iz objektnih jezikov Java, C++, C# in drugi. Je nadgradnja entitetnega modela. Objekti (prej entitete) vsebujejo poleg podatkov (atributov) tudi metode (funkcije) za delo s temi podatki. Objekti pripadajo razredom. Objekt je instanca razreda. Med razredi in njihovimi podrazredi je dedovanje. Z uvedbo relacij med objekti dobimo objektno-relacijski model. Objektni model podpirajo nekatere manj uporabljane baze, kot npr. GemStone, Gbase, Vbase, VOSS. Informacijski sistemi 77 Drevesna struktura V drevesni strukturi so relacije starš-otrok. Vsaka entiteta starš (deblo ali veja drevesa) lahko vsebuje več entitet otrok (veje ali listi drevesa). Relacije zato niso del podatkov ampak pripadajo strukturi. Drevesna struktura ima določene omejitve: otrok ne more pripadati večim staršem hkrati. Drevesna struktura se uporablja predvsem v datotečnih sistemih (direktoriji/mape, datoteke). Za predstavitev drevesne strukture je primeren razširljiv označevalni jezik (XML – eXstensible Markup Language). Informacijski sistemi 78 Relacijske baze podatkov Relacijska baza podatkov sestoji iz zbirke tabel. V tabelah so zapisani podatki in relacije med njimi. Relacijski model opisuje podatke na logičnem nivoju, fizični nivo je uporabniku skrit. Opis podatkovnega modela je podan s shemo. V shemi so določene tabele, atributi tabel, povezave med tabelami in ključi. Zbirka podatkov v bazi predstavlja instanco podatkovnega modela. Tabelaričen zapis podatkov predstavlja določene omejitve. Zaradi svoje preprostosti je najpogosteje uporabljan. Informacijski sistemi 79 Tabele Vsak tabela v zbirki mora imeti enoznačno določeno ime. Vrstice tabele predstavljajo zapise. Vsak zapis (n-terček) je sestavljen iz več atributov (stolpci tabele). Vsak atribut mora imeti enoznačno določeno ime. Vsak atribut vsebuje podatek natančno določenega tipa (npr. tekst, celo število, decimalno število, datum, ...). Vrednosti atributov so lahko dodatno omejene. Lahko imajo omejen obseg vrednosti (npr. števila med 1 in 10). Podane so lahko v nekem šifrantu (zunanja omejitev). Množico vseh možnih vrednosti atributa imenujemo domena atributa. Informacijski sistemi 80 Primer Tabele Tabela Student ID Ime Priimek Naslov ElektronskiNaslov 1 Igor Medved Pod kostanji 10, Podgrad [email protected] 2 Jasna Zajc Pod lipo 7, Podgrad [email protected] Tabela ima ime Student Prva vrstica z imeni atributov ni del podatkov – pripada shemi. Vsak zapis ima pet atributov, zato ima tabela 5 stolpcev V prikazani zabeli sta dva zapisa (dve vrstici). Z ID je označen enoumni identifikator zapisa, lahko zaporedna številka, vpisna številka, EMŠO, DŠ, ... Na določen atribut v tabeli se sklicujemo z [Ime tabele].[Ime atributa] npr. Student.Priimek ali [student].[Priimek] Informacijski sistemi 81 Omejitve tabelaričnega zapisa Vsi zapisi v tabeli imajo identično strukturo (iste atribute). Struktura ni (ne more biti) odvisna od podatkov (podatki o osebi bi bili npr. lahko odvisni od njenega spola) Atributi so lahko le osnovnih podatkovnih tipov (številka, tekst, datum, ...) in ne morejo imeti kompleksne strukture. Atribut Naslov zato ne more imeti pod-atributov: Ulica, HisnaStevilka, Kraj, PostnaStevilka, Drzava Namesto pod-atributov lahko uporabimo ustrezne atribute vendar izgubimo podatek, da je to vse skupaj naslov (prepuščeno predstavitvenemu nivoju ali aplikaciji). Imena atributov morajo biti enoznačna in ne morejo tvoriti polja (array) atributov. Informacijski sistemi 82 Ključi V relacijski bazi se posamezni zapisi med seboj ločijo zgolj po vrednostih atributov. Če sta dva zapisa popolnoma enaka, ju na logičnem nivoju ne moremo več ločiti (dostopati do posameznega zapisa) Priporočljivo je, da ima vsaka tabela atribut, ki enoznačno določa vsak zapis – identifikator zapisa. Identifikator služi kot primarni ključ (primary key). Identifikator običajno imenujemo ID ali pa dodamo ID kod prepono (npr. IDStudenta). Kot ID lahko služi avtomatsko generirana zaporedna številka, lahko pa tudi EMŠO, DŠ, vpisna številka, ... Kot primarni ključ lahko služi tudi kombinacija več atributov, vendar se ista kombinacija vrednosti ne sme nikoli ponoviti. Informacijski sistemi 83 Pomembno Za primarni ključ ni priporočljivo uporabiti atributa z nekim pomenom (govoreč ključ). Vrednost, ki odraža pomen, je namreč potrebno včasih spremeniti. Tu so izjema atributi, za katere vemo, da se na bodo nikoli spremenili, kot je to na primer davčna številka. Kot bomo videli v nadaljevanju, nastopajo ključi v povezavah med tabelami, zato se njihove vrednosti ne smejo spreminjati. Informacijski sistemi 84 Imenovanje tabel in atributov Imenovanje je načeloma lahko poljubno, dokler je v skladu s sintakso. Za upravljanje in vzdrževanje baze podatkov pa je izredno pomembno konsistentno poimenovanje. Za poimenovanje je zato potrebno določiti konvencije. Kakšne so konvencije je bolj stvar osebnega okusa, nujno pa je, da se jih striktno držimo. Osnovni namen konvencij je da laže upravljamo in vzdržujemo podatke v zbirki, da laže delamo poizvedbe, da laže pišemo aplikacije povezane na bazo. Informacijski sistemi 85 Konvencije poimenovanja Splošno Poimenovanje tabel Imena naj ne vsebujejo šumnikov in posebnih znakov (presledki,..). Konsistentno naj se uporabljajo velike in male črke. Ime naj jasno odraža vsebino tabele. Jasen mora biti kontekst v katerega sodi tabela. Ime mora biti preprosto uganiti, če ga ne poznamo. Poimenovanje atributov Ime naj jasno odraža pomen atributa. Primarni ključ (identifikator) mora biti jasno razviden. Ime atributa mora biti preprosto uganiti. Atributi z različnim pomenom (četudi v različnih tabelah) naj imajo različna imena. Atributi z istim pomenom v različnih tabelah naj imajo enako ime. Informacijski sistemi 86 Primer konvencij Pri predmetu IS se bomo držali naslednjih konvencij: Imena tabel in atributov izbiramo tako, da izražajo njihov pomen v slovenskem jeziku (npr. Naslov). V imenih uporabljamo samo črke in številke brez šumnikov (č,ž in š nadomestimo z c, z in s, npr. Student). Imena začenjamo z veliko začetnico. Kadar nastopa v imenu več besed, pišemo vse besede skupaj (brez presledka) in vsako besedo začnemo z veliko začetnico (npr. DekliskoIme). Za imena tabel uporabljamo edninsko obliko (Student in ne Studenti). Primarni ključ v vsaki tabeli imenujemo ID. Kadar pripadajo tabele v bazi različnim sklopom, označimo sklop s predpono pred imenom tabele. Predpone pišemo z malimi črkami. (npr. grsOprema). Predpone posameznih sklopov moramo vnaprej definirati (npr. grs za gospodarsko računovodski sektor). Imenom tabel, ki pripadajo več sklopom hkrati, ne dodajamo predpone. Poleg teh konvencij je potrebno določiti še celo vrsto drugih: imenovanje procedur, pogledov, zunanjih indeksov, spremenljivk, funkcij, .... Informacijski sistemi 87 Povezave med podatki (relacije) Podatki različnih tabel so lahko med seboj povezani. Povezave (relacije) določimo, ko načrtujemo podatkovni model. V relacijski bazi so relacije shranjene v tabelah. Povezave se tvorijo s povezovalnimi atributi tabel in zunanjimi ključi (external keys). Informacijski sistemi 88 Primer preproste povezave dveh tabel (1) Tabela: Ucitelj Tabela: Predmet Atributi: ID, Priimek, Ime Atributi: ID, Ime Če vsak predmet uči samo en učitelj, lahko za povezavo dodamo atribut IDUcitelja v tabelo Predmet. Atribut IDUcitelja se nanaša na tabelo Ucitelj. Atribut Predmet.IDUcitelja mora biti nujno enak atributu Ucitelj.ID v enem zapisu v tabeli Ucitelj. Atribut Predmet.IDUcitelja zato predstavlja zunanji ključ tabele Predmet. V tabeli Predmet ima lahko več zapisov enako vrednost atributa IDUcitelja – en učitelj lahko uči več predmetov. Informacijski sistemi 89 Primer preproste povezave dveh tabel (2) V tabeli Ucitelj ne moreta imeti dva zapisa iste vrednosti ID, saj je ID primarni ključ tabele. Predmet.IDUcitelja in Ucitelj.ID predstavlja povezavo eden na več (ang. one to many). Če obstaja v tabeli Predmet zapis z IDUcitelja, ki ga ni v tabeli Ucitelj, je kršena referenčna integriteta (reference integrity). Baza lahko sama skrbi, da ne pride do kršenja integritete. Grafična predstavitev opisane povezave: Informacijski sistemi 90 Povezovalna tabela Na fakulteti lahko določene predmete uči več učiteljev. Prej opisana povezava tega ne omogoča. Možna rešitev je da dodamo v tabelo Predmet atribute: IDUcitelja1, IDUcitelja2, IDUcitelja3, .... Zgornja rešitev ni najboljša. Zakaj? Boljša rešitev je dodajanje povezovalne tabele z atributoma: IDUcitelja, IDPredmeta Kombinacija IDUcitelja, IDPredmeta tvori super ključ. Vsak predmet lahko uči več učiteljev. Vsak učitelj lahko uči več predmetov. Informacijski sistemi 91 Povezave ena-ena in več-več V prejšnjih primerih so bile vse povezave ena-več. Povezava ena-ena Povezava več-več Če med seboj povežemo dva primarna ključa, dobimo povezavo ena-ena. Povezava ena-ena je sicer možna, vendar neučinkovita. Precej učinkoviteje je združiti atribute obeh tabel v eno tabelo. Povezavo več-več dobimo, če med seboj povežemo dva atributa, ki nista ključa. Taka povezava je sicer možna, vendar je redko smiselna. Povezava pri poizvedbah vrne vse kombinacije parov z isto vrednostjo atributa. Najpogosteje se torej uporabljajo povezave ena-več. Informacijski sistemi 92 Šifranti Atributi v tabeli pripadajo določeni domeni. Domena atributa je lahko omejena že v samem atributu. Za omejitev pa lahko uporabimo tudi zunanji šifrant (lookup table). Šifrant vsebuje vse možne vrednosti atributa. V ciljno tabelo lahko vpisujemo neposredno vrednosti omejene s šifrantom (programska rešitev). Lahko pa v ciljno tabelo vpišemo samo ID iz tabele, ki predstavlja šifrant. Informacijski sistemi 93 Primer šifranta neposreden vpis semestra sklicevanje na šifrant V konvencije imenovanja dodajmo: za šifrante uporabimo predpono lt (look-up table). Informacijski sistemi 94 Prednosti sklicevanje na šifrant Poleg same vrednosti atributa (Oznaka) so v takem šifrantu lahko tudi drugi atributi, npr. datum začetka in konca semestra. Lahko se odločimo, da spremenimo oznako semestrov namesto zimski / letni 1. semester / 2.semester. S spremembo atributa Oznaka v tabeli ltSemester preprosto dosežemo, da se ta sprememba odraža v vseh tabelah, ki so vezane na šifrant ltSemeste. V primeru neposrednega vpisa semestra, bi morali to popravljati v vseh zapisih. Enako bi veljalo tudi, če bi atribut Oznaka uporabili za primarni ključ (govoreč ključ, ki ni priporočljiv). Informacijski sistemi 95 Načrtovanje podatkovnega modela (1) Načrovanje podatkovnega modela je le del načrtovanja celotnega IS. Načrtovanje IS obsega še: načrtovanje infrastrukture izbira OS in baze podatkov načrtovanje funkcij in procedur nad podatki načrtovanje varnostne politike načrtovanje načinov dostopa načrtovanje programov (aplikacij) za delo z IS Tu se bomo posvetili načrtovanju relacijskega podatkovnega modela. Osnovni principi so uporabni tudi pri drugih modelih. Informacijski sistemi 96 Načrtovanje podatkovnega modela (1) Pri načrtovanju so najpomembnejše potrebe uporabnikov Podatkovni model je v osrčju IS. Določa namreč: katere podatke sploh imamo v IS in povezave med temi podatki. Ko je IS enkrat v uporabi, je sprememba podatkovnega modela izredno zahtevna: omogočati mora čim lažji dostop do podatkov, ki so potrebni za dejavnost, ki jo IS podpira popraviti je potrebno vse aplikacije, popraviti je potrebno vse prikaze, popraviti je potrebno vse shranjene procedure in funkcije. Načrtovanje podatkovnega modela je zato izrazito kritična faza načrtovanja IS. Že pri načrtovanju moramo predvideti možnost širitev. Informacijski sistemi 97 Načrtovanje podatkovnega modela (2) Pri majhnih sistemih lahko podatkovni model načrtuje načrtovalec, ki dobro razume potrebe uporabnikov. Tak pristop ni mogoč pri večjih IS. V velikem podjetju noben posameznik ne pozna vseh potreb. Načrtovalec mora sodelovati s končnimi uporabniki ugotoviti mora njihove potrebe, njihov način dela in to prevesti v podatkovni model (ustrezne tabele in relacije med njimi). Informacijski sistemi 98 Faze v načrtovanju podatkovnega modela (1) 1. Opredelitev podatkovnih potreb uporabnikov IS 2. sodelovanje z eksperti, sodelovanje s končnimi uporabniki različnih služb, zaključek te faze predstavlja opis (študija) vseh podatkov in vseh potrebnih funkcij IS. Pretvorba zbranih podatkov v konceptualen model identifikacija vseh potrebnih tabel, atributov tabel, primarnih ključev in povezav med tabelami. Informacijski sistemi 99 Faze v načrtovanju podatkovnega modela (2) 3. Opredelitev vseh potrebnih funkcij nad podatki 4. Implementacija modela v konkretni bazi postopki dodajanja, brisanja, popravljanja in pregledovanja, ločitev trajnih in začasnih podatkov, ob zaključku faze ponovno preveriti ustreznost konceptualne sheme. tvorba ustreznih tabel, definicija povezav med njimi in ustvarjanje indeksov za hitrejši dostop do podatkov. Prve tri faze predstavljajo načrtovanje logične strukture, četrta faza pa njeno fizično izvedbo. Fizično izvedbo je kasneje bistveno lažje menjati kot logično strukturo. Informacijski sistemi 100 Normalizacija podatkov Povezave moramo načrtovati tako, da se podatki ne podvajajo. Podvojene podatke imenujemo redundanca. Idealno so podatki v bazi brez redundance: vsak podatek je v bazi zapisan samo enkrat, neredundantnost podatkov in pravi zunanji ključi preprečujejo nekonsistentnost podatkov in zagotavljajo njihovo integriteto (data integrity). Informacijski sistemi 101 Primer redundantnega zapisa podatkov V zgornji tabeli sta oba atributa redundantna. Vsak študent (priimek in ime) se ponovi trikrat. Vsak predmet (ime predmeta) se ponovi dvakrat. Informacijski sistemi 102 Slabosti redundantnega zapisa Zaradi ponavljanja zahteva več prostora. Lahko pride do napake pri nekaterih zapisih (npr. napačen priimek, dva presledka med imenom in priimkom, ..). Vsako spremembo je potrebno izvesti na vseh zapisih, sprememba samo nekaterih povzroči nekonsistentnost (anomalijo). Razen priimka in imena nimamo na voljo ostalih podatkov študenta, razen če bi tudi te podvajali. Več študentov ima lahko isto ime in priimek. Če nekega predmeta ni izbral noben študent, ga nimamo kam zapisati. Brisanje zadnjega študenta, ki posluša predmet izbriše predmet. Informacijski sistemi 103 Neredundanten zapis predmetnika Predmetnik je povezovalna tabela. V tabelah Student in Predmet so podatki zapisani samo enkrat. Na voljo so lahko tudi drugi podatki o predmetu in študentu. Sprememba imena predmeta spremeni ime tega predmeta v celotnem predmetniku. Informacijski sistemi 104 Atomizacija podatkov (1) V splošnem imajo lahko atributi neko strukturo. Primer: Naslov Ulica Hišna številka Kraj Poštna številka Država Tak atribut ni atomiziran. Posamezni deli atributa pripadajo različnim domenam. Kadar domena ne vsebuje pod-domen je atomizirana. Ali je atomizirana ali ne je odvisno tudi od uporabe: če naslov vedno rabimo le v celoti, je to niz znakov in je atomiziran, če želimo dostopati do posameznih delov, potem ni atomiziran, razbiti bi ga morali na več atributov. Informacijski sistemi 105 Atomizacija podatkov (2) Relacijska baza podpira samo atomizirane atribute. Ne moremo neposredno (z imenom) dostopati do posameznih delov atributa (npr. do hišne številke v naslovu). Če je atribut Naslov atomiziran, pa nimamo dostopa do celega naslova. Do posameznih delov lahko dostopamo le programsko, s pregledovanjem niza znakov. Nimamo zagotovila, da je struktura vedno pravilna. Ne moremo urediti po abecednem redu posameznega dela. Posamezne atribute moramo združiti v naslov. Iz samega pod modela se ne vidi, da predstavljajo naslov. Za učinkovitejši dostop se lahko odločimo, da imamo atomizirane atribute in tudi združen (kompleksen) atribut. Informacijski sistemi 106 Izločanje redundantnih atributov (1) Želimo, da je vsak podatek v zbirki zapisan natanko enkrat. Kako ugotoviti, kateri atributi so redundantni? Možen pristop: iskanje vrednosti, ki se ponavljajo (ročno, avtomatsko). Ni najprimernejši pristop za načrtovanje. Pomaga lahko odkrivati pomanjkljivosti podatkovnega modela. Za pravilno načrtovanje relacij je potrebno razumevanje logične strukture in pomena atributov. Brez tega ne ločimo istih vrednosti od enakih vrednosti. Informacijski sistemi 107 Ista vrednost atributa Ista vrednost je vrednost, ki se nanaša na isto lastnost iste entitete. Ista vrednost ne more nikoli postati drugačna. Če postane drugačna, pomeni nekonsistentnost podatkov. Če se spremeni v enem zapisu, bi se morala v vseh. Primer: Igor Medved v tabeli Predmetnik. Če študent spremeni priimek, ga je potrebno spremeniti v vseh zapisih. Iste vrednosti lahko nastopajo v več zapisih ene tabele ali pa tudi v več tabelah. Kadar ima več zapisov v tabeli isto vrednost atributa, predstavlja to redundanco. Informacijski sistemi 108 Enaka vrednost atributa Vrednost je zgolj slučajno enaka v dveh ali več zapisih. Če ni več enaka, ne pomeni nekonsistentnosti. V tabeli Predmetnik ne vemo zagotovo ali gre za enega študenta (ista vrednost) ali pa ima več študentov isto ime in priimek. Pri nekaterih atributih je lahko verjetnost ponavljanja vrednosti zelo velika. To so atributi z majhno domeno, kot npr. Spol, LetoVpisa, ... Primer enake vrednosti v različnih tabelah: Tabela Produkt: ID,Ime,Cena Tabela Prodaja: ID, IDProdukta,Datum, Cena Enaka vrednost atributa v več zapisih ne predstavlja redundance. Informacijski sistemi 109 Načrtovanje relacij Pri načrtovanju relacij moramo razumeti povezave med različnimi entitetami. Na osnovi tega poznavanja, določimo pravila, ki veljajo v organizaciji. Primer pravil (predmetnik): Vsak študent ima natanko eno ime in natanko en priimek. Vsak predmet ima natanko eno ime. Vsak študent lahko posluša več predmetov. Vsak predmet lahko posluša več študentov. Vsak predmet lahko uči več učiteljev. Tabele entitet: študent, predmet, učitelj. Povezovalne tabele: študent-predmet, predmet-učitelj. Informacijski sistemi 110 Normalne forme Normalizacijo podatkov opišemo formalno z normalnimi formami (NF). Obstajajo NF1 do NF6. Stopnja normalizacije se povečuje od NF1 do NF6. Višja NF vključuje vse nižje NF. Celotna zbirka podatkov je v določeni NF, če vse tabele izpolnjujejo pogoje za to NF. Obstajajo algoritmi za testiranje normalizacije. Obstajajo algoritmi za dekompozicijo podatkov v NF. Formalen opis vseh NF presega okvir teh predavanj. NF1 vsebuje minimalne pogoje normalizacije. Informacijski sistemi 111 Normalna forma 1 Pomen zapisov v tabeli ni odvisen od njihovega vrstnega reda. Pomen atributov v tabeli ni odvisen od njihovega vrstnega reda. V tabeli ni nikoli dveh enakih zapisov, kar pomeni, da ima tabela identifikator ali super ključ. Vrednosti atributov so atomizirane. Npr. naslov, ki vsebuje ulico, hišno številko, kraj in državo ni atomiziran). Vsak atribut vsebuje natančno eno vrednost iz pripadajoče domene (tu ni vključena vrednost null). Po nekaterih definicijah pa so dovoljene tudi vrednost null, ki pomeni, da vrednost atributa ni določena ali ni znana. Informacijski sistemi 112 Višje normalne forme Višje normalne forme opredeljujejo relacije med tabelami znotraj ene same tabele. Podatki so popolnoma normalizirani, kadar velja: vsak podatek je zapisan natanko enkrat z dodajanjem oziroma brisanjem ni mogoče priti do nekonsistentnosti oziroma anomalij. Informacijski sistemi 113 Rekurzivne relacije (1) Relacija je rekurzivna, kadar se nek atribut (zunanji ključ) nanaša na nek drug atribut v isti tabeli. To je lahko neposredno ali pa preko drugih tabel. Pri rekurzivnih relacijah se lahko zgodi, da se niz relacij ne zaključi. Informacijski sistemi 114 Skupine študentov (nerekurzivno) Primer rekurzivne relacije: skupine in podskupine Splošne skupine študentov bi lahko tvorili s povezovalno tabelo: V vsaki skupini je lahko več študentov. Vsak študent je lahko v več skupinah. Ni nobene kontrole prekrivanja skupin. Informacijski sistemi 115 Skupine in podskupine (rekurzivno) Želimo, da so podskupine neprekrivajoče. Skupine torej predstavljajo drevo. Informacijski sistemi 116 Rekurzivna tabela Skupina Skupina Predavnaja nima nadskupine (null). Null vrednost v tem primeru zaključi rekurzijo. Lahko pa namesto null damo vrednost 1 – neskončna rekurzija. Informacijski sistemi 117 Redundantne relacije Poleg redundantnih zapisov lahko obstajajo tudi redundantne relacije. Podobno kot redundantni zapisi, lahko privedejo do nekonsistentnosti. Primer redundantne relacije: Informacijski sistemi 118 Denormalizacija podatkov Neredundanten zapis ni nujno najbolj učinkovit. Lahko se odločimo za namerno podvajanje Primer: Naslov Pohitrimo poizvedbe in prikaze. Naslov, Ulica, HisnaStevilka, PostnaStevilka, Kraj, Drzava Atribut Naslov je sestavljen z ostalih atributov, sestavimo ga pri vnosu podatkov, avtomatsko. Primer: Rekurzivne poizvedbe Pri urejanju tabel Skupina in Student se avtomatsko generira tabela StudentSkupina. Tabela StudentSkupina je namenjena izključno hitrejšim poizvedbam . Informacijski sistemi 119 Pomembno Če se odločimo, da v bazo vpisujemo redundantne podatke za izboljšanje učinkovitosti, moramo nujno poskrbeti, da so redundantni podatki konsistentni. Običajno lahko to naredimo tako, da omogočamo urejanje zgolj osnovnega zapisa podatkov. Pri tem poskrbimo, da se vsi redundantni zapisi avtomatsko prilagajajo. Program, ki prilagodi redundantne zapise, se mora prožiti ob vsaki spremembi osnovnih podatkov. Informacijski sistemi 120 Indeksiranje (1) Pri poizvedbah običajno želimo le majhen del podatkov. Želimo npr. le podatke o enem študentu. Neučinkovito bi bilo v ta namen pregledati vse podatke. Idealno bi bilo, če bi lahko do vsakega podatka dostopali neposredno. Realno je potrebno pregledati le manjši del podatkov. S tem problemom se ne srečujemo samo pri bazah, temveč tudi drugod (npr. datotečni sistem). Problem rešujemo z uvedbo indeksov. Indeks igra podobno vlogo kot kazalo v knjigi: Najprej pogledamo v kazalo, na kateri strani je iskani podatek, nato pregledamo to stran. Informacijski sistemi 121 Indeksiranje (2) Hitrost dostopa je odvisna v veliki meri tudi od medija, na katerem so shranjeni podatki. Večinoma so danes podatki shranjeni na diskih. V enem obratu diska lahko preberemo eno sled. Največ časa je potrebno za premik glave, zato je branje zaporednih podatkov hitrejše. Hitrejši so tako imenovani solid-state diski (trenutno dragi). V indeksu je zapisano, kje na disku je shranjen določen podatek. Namesto strani je tu podan sektor in odmik od začetka sektorja. Čas dostopa je enak vsoti časa iskanja ključa in časa potrebnega za branje podatka. Informacijski sistemi 122 Indeksiranje (3) Dostop do RAM-a je nekaj velikostnih razredov hitrejši. Za hiter dostop je zaželeno, da je indeks v RAMU. Pred iskanjem ga moramo prebrati z diska. Na disku mora biti zato zapisan v zaporednih sektorjih. Kompromis: hitrost - prostor Običajno lahko dosežemo večjo hitrost, če namenimo indeksu več prostora na disku in v Ramu. Kompromis: hitrost iskanja – hitrost sprememb Običajno lahko pospešimo hitrost iskanja na račun zahtevnejšega postopka posodabljanja indeksov pri spremembah podatkov. Informacijski sistemi 123 Tipi indeksov Ločimo dva osnovna tipa indeksov Urejeni indeksi: Ključi v tabeli so urejeni po abecednem redu oziroma po velikosti podobno kot je kazalo v knjigi. Tabela odtisov Celotna domena atributa, ki predstavlja ključ je razdeljena v predalčke. Predalček je določen z odtisom (hash-em) ključa. Hash izračunamo s pomočjo tako imenovane zgostitvene funkcije (hash function). Podatki posameznega predalčka so običajno shranjeni v enem sektorju oziroma v eni sledi diska. Informacijski sistemi 124 Urejeni indeksi Indeks je lista po velikosti ali abecednem redu urejenih vrednosti ključa. Lista vsebuje dve vrednosti v vsakem zapisu: vrednost ključa kazalec na fizično lokacijo podatkov Informacijski sistemi 125 Iskanje po urejenem indeksu Uporabimo lahko algoritem z razpolavljanjem (binary search). Iskanje izvedemo v več korakih. V vsakem koraku se postavimo na polovico preostanka tabele. Primerjamo vrednost z iskano vrednostjo. Zavržemo del podatkov, ki ne ustreza. Kompleksnost je O(log N). V našem primeru smo vrednost našli v 3 korakih. Pri 100.000 zapisih bi bilo potrebno največ 20 korakov. Urejeni indeksi omogočajo izredno hitro iskanje zapisov med dvemi vrednostmi. Informacijski sistemi 126 Gosti in redki indeksi Gosti indeksi Obstaja kazalec na vsak zapis v tabeli. Omogoča zelo hiter dostop do podatka. Ni potrebe po urejenosti zapisov v ciljni tabeli. Problem pri zelo velikih tabelah, ker indeks ne gre več v RAM. Dostop preko indeksa na disku je prepočasen. Redki indeksi Obstajajo kazalci na le nekatere zapise v ciljni tabeli. Potrebujemo manj prostora za indekse. Zapisi v ciljni tabeli morajo biti urejeni. Po sami tabeli lahko potem iščemo na enak način kot po urejenem indeksu. Če kaže na vsak sektor en kazalec, nismo bistveno povečali časa. Zahtevnejši postopek dodajanja zapisov. Informacijski sistemi 127 Večnivojski indeksi Podatki na disku so lahko urejeni le po enem ključu. Redek indeks lahko ustvarimo samo za en ključ. Pogosto želimo podatke iskati po različnih atributih npr. Priimek in ne ID. Za priimek bi potrebovali gost ključ. Namesto gostega ključa imamo lahko večnivojski indeks. Pri zelo velikih tabelah je lahko tudi več nivojev. Informacijski sistemi 128 B+ drevo (1) Angleško: B+ tree. B+ drevo je posebna drevesna struktura indeksov. Učinkovit dostop, dodajanje in brisanje ključev. B+ drevo podpira večina baz podatkov (DB2, Microsoft SQL server, Oracle, Sysbase, Informix, MySQL, Postgrade, ...) Uporablja se v datotečnih sistemih (NTFS, NetWare NSS, Silicon Graphics XFS, IBM JFS,...). Je podobno večnivojskemu indeksiranju, z nekaj pomembnimi razlikami. Informacijski sistemi 129 B+ drevo (2) Posamezni segmenti na višjih nivojih so med seboj ločeni. Segmenti so povezani s kazalci. Število ključev v segmentu je omejeno z redom drevesa b. Za število ključev m v vsakem segmentu velja: b 2 ≤ m ≤ b Predalčke razdelimo na dva ali združimo, če pogoj ni izpolnjen. Informacijski sistemi 130 Neposredno naslavljanje Alternativen pristop indeksiranju: Ključ predstavlja naslov podatkov ali naslov kazalca na podatke. Do podatkov pridemo v enem oz. dveh korakih. Za vsak ključ moramo rezervirati svoj predalček. Domena ključa mora biti dovolj majhna 16 bitno število 65.536 možnih vrednosti potrebujemo 65.536 lokacij v pomnilniku za kazalce oziroma 65.536 sektorjev na disku. Če je ključ priimek (15 znakov) potrebujem 1, 32 · 1036 lokacij. Neposredno naslavljanje ni mogoče. Problem rešimo s tabelo odtisov (ang. hash table). Informacijski sistemi 131 Tabela odtisov (1) Celotno domeno ključa preslikamo v manjšo domeno. Preslikavo izvedemo s tako imenovano zgostitveno funkcijo (hash function). Z zgostitveno funkcijo izračunamo odtis (hash) ključa. n = H (k ) Domeno K ključev preslikamo v domeno N odtisov. Ker je K>>N je preslikava injektivna. Več različnih ključev ima lahko isti odtis. Pride do trka (ang. collision). V tabeli odtisov so shranjeni ključi skupaj s kazalci na podatke, ki pripadajo posameznemu ključu. Informacijski sistemi 132 Tabela odtisov (2) Vse ključe, ki imajo isti odtis moramo shraniti v istem predalčku. V predalčku lahko zmanjka prostora za nov ključ. V najslabšem primeru se vsi ključi preslikajo v isti odtis. Veliko predalčkov lahko ostane praznih. Pomembna je izbira zgostitvene funkcije. Informacijski sistemi 133 Zgostitvena funkcija (1) Zahtevane lastnosti zgostitvene funkcije: Enakomerna porazdelitev Psevdonaključnost Celotna domena ključev se enakomerno porazdeli v domeno odtisov. Vsakemu odtisu pripada približno enako število ključev. Je (mora biti) deterministična. Navidez se obnaša kot naključna. Ključe enakomerno porazdeli po predalčkih, tudi če je ključev precej manj, kot je vseh možnih. Računska učinkovitost Samo računanje zgostitvene funkcije ne sme vzeti preveč časa. Informacijski sistemi 134 Zgostitvena funkcija (2) Različne baze uporabljajo različne zgostitvene funkcije. Preprosta zgostitvena funkcija: n = k mod N Če velja N = 2M je to zadnjih M bitov ključa. To pomeni, da vplivajo na odtis samo zadnji biti v ključu. Pri priimku bi to pomenilo, da predstavljajo ključ zadnje črke priimka. Porazdelitev ne bi bila enakomerna. Znake lahko pred tem premešamo. Test dobre zgostitvene funkcije (predvsem za kriptografijo): vsaka sprememba bita ključa spremeni približno pol bitov odtisa. Informacijski sistemi 135 Struktura indeksov z odtisi Uporabljajo se lahko različne strukture. Lahko so zgrajeni tudi večnivojsko. Odtis lahko predstavlja neposreden naslov sektorja na disku ali pa predalček v RAM-u. Namesto statičnih tabel se lahko uporabljajo dinamične tabele. Struktura se lahko razlikuje tudi glede organizacije predalčkov: Struktura znotraj predalčka je lahko poljubna. Omogočati mora iskanje ključa znotraj predalčka. Predalčki so lahko fiksne velikosti – morajo biti dovolj veliki. Lahko pa jih povežemo v povezano listo. Informacijski sistemi 136 Povezana lista Na koncu vsakega zapisa je kazalec na naslednji zapis. Lista je lahko urejena ali neurejena. Z urejeno listo prihranimo nekaj operacij tako pri iskanju kot pri dodajanju ključev. Kadar je domena odtisov majhna v primeri s številom shranjenih ključev, lahko namesto liste uporabimo B+drevo. Večina baz avtomatsko izbere ustrezen način indeksiranja. Informacijski sistemi 137 Prednosti/slabosti tabele odtisov Bistveno hitrejši dostop (+) Če je število ključev fiksno, lahko najdemo zgostitveno funkcijo brez trkov (+). Poleg kazalca potem ni potreno shranjevati ključa. Zahteven izračun zgostitvene funkcije (-) Veliko praznih predalčkov (-) Če je tabela dovolj velika, je v večini predalčkov samo en ključ. Ključ najdemo v enem koraku. Čas je enak času izračuna zgostitvene funkcije Problem lahko delno rešujemo z večkratnim odtisom. Ni primerno za iskanje po delih ključa (-). Ni primerno za iskanje med dvema vrednostima (-). Informacijski sistemi 138 Transakcije (1) Več zaporednih akcij v bazi lahko predstavlja celoto. Tako celoto imenujemo transakcija. Transakcija se sme zgoditi bodisi v celoti ali pa sploh ne. Primer: plačilo z bančno kartico: Obremenimo račun imetnika kartice. Pripišemo znesek na račun trgovine. Nesprejemljivo bi bilo, da se izvede samo del te transakcije. Za pravilno izvedbo transakcij mora skrbeti že baza sama. Če se transakcija iz kakršnega koli razloga prekine na sredini, mora baza vrniti začetno stanje (rollback). Kaj spada v posamezno transakcijo določi načrtovalec IS. Informacijski sistemi 139 Transakcije (2) Transakcija se mora zavrteti nazaj ne glede na vzrok prekinitve. Pri izpadu elektrike se izgubijo podatki v RAMu. Problem lahko predstavljajo akcije drugih uporabnikov. Zahtevane lastnosti obravnave transakcij: Atomičnost. Neuspešna transakcija ne sme pustiti stanja delno izvedene transakcije. Konsistentnost. Podatki, ki so bili konsistentni pred transakcijo, morajo ostati konsistentni tudi po njej. Izoliranost. Konkurenčne akcije v bazi morajo biti izolirane. Na videz izgleda, kot da se izvaja samo ena transakcija. Trajnost. Podatki po zaključeni transakciji morajo biti trajno shranjeni, četudi pride do izpada sistema. Informacijski sistemi 140 Primer transakcije Prenos vrednosti P iz računa A na račun B Zmanjšaj znesek A za P. Shrani nov znesek A na disk. Preberi znesek B z diska. Povečaj znesek B za P. Shrani nov znesek B na disk. Pomen lastnosti na primeru: Atomičnost zagotavlja, da ne ostanemo v stanju, ko ja A zmanjšan, B pa še ni povečan. Denar se ne sme kar izgubiti. Konsistentnost zagotavlja, da je vsota zneskov pred transkacijo enaka vsoti zneskov po transakciji. Konsistentnost mora zagotoviti programer. Izoliranost zagotavlja, da na transakcijo ne vpliva, če nekdo drug hkrati spreminja A ali B. Trajnost zagotavlja, da, ko je bil enkrat uporabnik obveščen o uspešnem nakazilu, se ta podatek ne sme izgubiti. Informacijski sistemi 141 Kaj je potrebno? Podatke o transakciji je potrebno pisati v nek začasen pomnilnik. Zapisani morajo biti na disk, da se ne izgubijo. Po izvršeni transakciji se vpišejo v trajni del baze. Ščititi je potrebno tudi podatke na disku – diskovna polja. Pri upravljanju s transakcijami se moramo dobro zavedati razlike med različnimi načini shranjevanja podatkov: Začasno shranjevanje (RAM) Trajnejše shranjevanje (diski, diskovna polja) Trajno shranjevanje (arhivi) Informacijski sistemi 142 Jezik za poizvedbe SQL SQL : Structured Query Language (strukturiran jezik za poizvedbe) SQL je najbolj razširjen jezik za baze podatkov. Čeprav se imenuje jezik za poizvedbe vsebuje tudi: DDL: Data Definition Language (jezik za definicijo podatkov) DML: Data Manipulation Language (jezik za manipulacijo s podatki) Zagotavljanje integritete podatkov. Nadzor nad transakcijami. Definicijo pogledov (views). Definicijo shranjenih procedur (stored procedures). Avtentikacijo in avtorizacijo. Programske stavke (vejanje, pogoje, zanke, spremenljivke, ...). Informacijski sistemi 143 Osnovna sintaktična pravila SQL (1) SQL poizvedba ali program je zaporedje stavkov (statements). Stavke sestavljajo členi (clauses). Členi so lahko obvezni ali opcijski. Členi imajo obvezne in opcijske dele. Členi se začenjajo s ključno besedo (npr. WHERE). Določene ključne besede predstavljajo začetek stavka (npr. SELECT). Stavki so med seboj ločeni s ključnimi besedami začetka stavka. Ključne besede so rezervirane. SQL ni občutljiv na velike in male črke. Informacijski sistemi 144 Osnovna sintaktična pravila SQL (2) SQL ne loči med enim presledkom, več presledki, novo vrstico in tabulatorjem. SELECT IME from student Where LETOVPISA= 2008 je ekvivalentno SELECT Ime FROM Student WHERE LetoVpisa = 2008 Informacijski sistemi 145 Osnovna sintaktična pravila SQL (3) Imena atributov in tabel Neposredno Ime, Priimek, VpisnaStevilka, Kraj V oglatih oklepajih [Ime], [Priimek], [Vpisna številka], [From] Uporaba nadimkov (alias) VpisnaStevilka AS [Vpisna številka] Student [Študent] Student AS Študent Oznaka celotnega konteksta Studij.Administrator.Student.Ime Studij..Student.Ime Komentarji -- Tako se zapiše komentar. -- Komentar je tekst za znakom komentarja do konca -- vrstice Informacijski sistemi 146 Definicija podatkov SQL DDL omogoča ustvarjanje instance podatkovnega modela Ustvarjanje zbirke podatkov Ustvarjanje tabel v zbirki Določanje tipov atributov v tabelah Ustvarjanje indeksov Ustvarjanje povezav (zunanjih indeksov) Večina baz ima za definicijo podatkov na voljo grafični vmesnik. Večinoma zato ni potrebno poznati sintakse SQL DDL. Informacijski sistemi 147 Podatkovni tipi Standardni podatkovni tipi Dodatni podatkovni tipi na Microsoft SQL strežniku varchar(n) char(n) – ni najbolj priporočljiva uporaba smalint, int numeric(c,d) real, double precission float(n) date, time, timestamp clob(n) - tudi text(n) blob(n) – tudi varbinary(n) bit, tinyint, bigint, datetime, mony, smallmony, image, uniqueidentifier, sql-variant, nchar, nvarchar Vsak tip ima lahko tudi vrednost Null. Informacijski sistemi 148 Osnovni ukazi DDL CREATE DATABASE ALTER DATABASE Ustvarimo novo tabelo. Določimo njene atribute in njihove tipe. Določimo primarni ključ. Določimo indekse in zunanje indekse. ALTER TABLE Spremenimo nastavitve za zbirko. CREATE TABLE Ustvarimo novo zbirko podatkov. Rezerviramo prostor zanjo na disku. Določimo lokacijo log datotek. Spremenimo tabelo. DROP TABLE Brisanje tabele iz zbirke. Informacijski sistemi 149 Grafični vmesnik DDL Večino DDL nalog lahko opravimo z grafičnim vmesnikom. Ustvarjanje baze (MS-SQL server) Informacijski sistemi 150 Grafični vmesnik DDL (2) Ustvarjanje tabele, primarnega ključa in indeksov Informacijski sistemi 151 Osnovne SQL poizvedbe SELECT je osnovni stavek poizvedb. Stavek SELECT se začne s členom SELECT. Poleg člena SELECT v osnovnih poizvedbah najpogosteje nastopajo še členi FROM, WHERE in ORDER BY. Člen SELECT določa, kaj bo prikazano kot rezultat poizvedbe. Člen FROM določa od kod (iz katere tabele) so podatki. Člen WHERE določa dodatne iskalne pogoje (filter). Člen ORDER BY določa vrsti red izhodnih podatkov. Preprost SELECT stavek SELECT * FROM Student vrne vse atribute vseh zapisov v tabeli Student. Informacijski sistemi 152 Člen SELECT Sintaksa člena SELECT Točna sintaksa je opisana v priročniku: SELECT [ALL | DISTINCT] [ TOP n [ PERCENT ] [WITH TIES ] ] < select_list > Opcijski deli so v oglatih oklepajih. Pokončna črta | pomeni “ali”. < > predstavlja listo izhodnih stolpcev ločenih z vejicami. opcija ALL vrne vse zapise, DISTINCT samo različne, opcija TOP n pomeni samo prvih n zapisov, opcija WITH TIES pridruži prvim n zapisom še vse, ki so enaki zadnjemu (le če obstaja člen ORDER BY). Informacijski sistemi 153 Lista izhodnih stolpcev Za izhod lahko določimo: neposredne vrednosti SELECT ’Janez’ AS Ime, 10 AS Ocena izraze SELECT ’Janez’ + ’ ’ + ’Petelin’ AS Študent, (8 + 10)/2 AS Ocena atribute tabele (nujno v povezavi s členom FROM) SELECT Ime, Priimek, Ime + ’ ’ + Priimek AS [Celo ime] FROM Student vse atribute tabele ( * pomeni vse atribute) SELECT * FROM Student funkcije atributov SELECT Upper(Ime + ’ ’ + Priimek) As Študent FROM Student Izhod uredimo s členom ORDER BY. SELECT * FROM Student ORDER BY Priimek, Ime ASC Informacijski sistemi 154 Iskalni pogoji (1) S členom WHERE omejimo (filtriramo) izhodne zapise. Člen WHERE pride za členom FROM in pred členom ORDER BY. Določimo lahko točno določeno vrednost atributa SELECT * FROM Student WHERE Priimek = ’Petelin’ večjo ali manjšo vrednost WHERE LetoVpisa >= 2010 območje med dvema vrednostima WHERE LetoVpisa BETWEEN 2008 AND 2010 več različnih pogojev povezanih z AND ali OR WHERE LetoVpisa >= 2008 AND LetoVpisa <= 2010 Lahko uporabimo negacijo NOT WHERE NOT (LetoVpisa = 2008) WHERE LetoVpisa <> 2008 Iščemo lahko le atribute, ki pripadajo neki množici WHERE Priimek IN (’Petelin’, ’Kranjec’, ’Škof’) Informacijski sistemi 155 Iskalni pogoji (2) Pogoje lahko združujemo z oklepaji. SELECT * FROM Student WHERE ( (LetoVpisa >= 2008 AND LetoVpisa <= 2010) OR (LetoVpisa BETWEEN 2000 AND 2001) ) AND Spol = ’ž’ Iščemo lahko tudi po delih tekstovnega niza. WHERE WHERE WHERE WHERE Ime Ime Ime Ime LIKE LIKE LIKE LIKE ’Ž%’ ’%Ž’ ’%Ž%’ ’?Ž%’ Indeks pohitri iskanje samo v prvem primeru. Pomembno je ločevati med tekstom in številkami: 100 > 20 ’100’ < ’20’ Informacijski sistemi 156 Grafični vmesnik za poizvedbe Informacijski sistemi 157 Poizvedbe po več tabelah Preprosta poizvedba (ne upošteva povezav) SELECT Student.ID,Ime,Priimek,Predmet.ID,ImePredmeta,Ocena FROM Student, Predmet, Izpit Informacijski sistemi 158 Povezava tabel z WHERE SELECT Student.ID,Ime,Priimek,Predmet.ID,ImePredmeta,Ocena FROM Student, Predmet, Izpit WHERE Student.ID = Izpit.IDStudenta AND Predmet.ID = Izpit.IDPredmeta Informacijski sistemi 159 Zagotavljanje integritete Baza mora skrbeti za zagotavljanje integritete. Zato moramo določiti povezave med tabelami, ne samo pri poizvedbi, temveč na nivoju cele zbirke. Za to sicer obstajajo SQL DDL ukazi, vendar to običajno delamo preko grafičnega vmesnika. Informacijski sistemi 160 Povezava več tabel z JOIN Povezava z JOIN je primernejša kot povezava z WHERE. JOIN ima lahko tri oblike [INNER] JOIN – vrednost mora biti prisotna v obeh tabelah. LEFT [OUTER] JOIN – vrednost mora biti nujno samo v levi tabeli. Če je v desni ni vrne atribute desne tabele z Null vrednostjo. RIGHT [OUTER] JOIN – vrednost mora biti nujno samo v desni tabeli. Če je v levi ni vrne atribute leve tabele z Null vrednostjo. Informacijski sistemi 161 Povezava z INNER JOIN SELECT Student.ID,Ime,Priimek,Predmet.ID,ImePredmeta,Ocena FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta INNER JOIN Predmet ON Izpit.IDPredmeta = Predmet.ID WHERE Ocena < 6 ORDER BY Priimek, Ime Informacijski sistemi 162 Poizvedbe JOIN z grafičnim vmesnikom Informacijski sistemi 163 Poizvedba LEFT JOIN Informacijski sistemi 164 Agregacijske funkcije Pri poizvedbah je lahko kot rezultat namesto vseh zapisov samo rezultat določenih funkcij nad vsemi najdenimi zapisi. Te funkcije imenujemo agregacijske ali tudi sumarne funkcije. Agregacijske funkcije v SQL so: COUNT, COUNT_BIG SUM MIN, MAX STDEV, VAR AVG DISTINCT (opcijska ključna beseda) Informacijski sistemi 165 Primer zbirke za poizvedbe Informacijski sistemi 166 Agregacijske funkcije (2) Koliko študentov je v bazi? SELECT COUNT(*) As [Število študentov] FROM Student Koliko študentov ima priimek na A? SELECT COUNT(*) As [Število študentov] FROM Student WHERE Priimek LIKE "A*“ Kolikšna je povprečna pozitivna ocena študentke Janje Korenčan in kakšna je njena varianca? SELECT AVG(Ocena) AS [Povprečna ocena], STDEV(Ocena) AS [Standardna deviacija] FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE Student.Ime='Janja' AND Student.Priimek ='Korenčan' AND Ocena>5 Informacijski sistemi 167 Člen GROUP BY Agregacijske funkcije lahko uporabimo skupaj s členom GROUP BY. Agregacijska funkcija se potem izvede nad vsako skupino zapisov, ki ima enak atribute, ki so našteti v členu GROUP BY. Člen GROUP BY je v stavku za členom WHERE. SELECT Student.ID, Priimek, Student.Ime, AVG(Ocena) AS [Povprečna ocena], STDEV(Ocena) AS [Standardna deviacija] FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE Ocena>5 GROUP BY Student.ID, Student.Priimek, Student.Ime ORDER BY Student.Priimek, Student.Ime Informacijski sistemi 168 Člen Having Člen HAVING je podoben členu WHERE. Člen HAVING se nanaša na rezultat agregatnih funkcij. Člen WHERE je pred GROUP BY. Člen HAVING je Za GROUP BY in pred ORDER BY. SELECT Student.ID, Priimek, Student.Ime, AVG(Ocena) AS [Povprečna ocena], STDEV(Ocena) AS [Standardna deviacija] FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE Ocena>5 GROUP BY Student.ID, Student.Priimek, Student.Ime HAVING AVG(Ocena)>8 ORDER BY Student.Priimek, Student.Ime Informacijski sistemi 169 Člen CASE (funkcija IIF) Kako bi dobili število vseh pozitivnih in negativnih ocen za vsakega učenca? GROUP BY ni neposredno uporaben. 5 je negativna ocena 6,7,8,9 in 10 so pozitivne ocene. S pomočjo CASE (SQL) oziroma funkcije IIF (Access) lahko ločimo pozitivne in negativne ocene. SELECT Student.ID, Priimek, Student.Ime, Case WHEN Ocena > 5 THEN '+' ELSE '-' END AS [Tip ocene], Count(Ocena) AS [Število] FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE Ocena>5 GROUP BY Student.ID, Student.Priimek, Student.Ime, Case WHEN Ocena > 5 THEN '+' ELSE '-' END ORDER BY Student.Priimek, Student.Ime Informacijski sistemi 170 Ugnezdene poizvedbe (1) Rezultat vsake poizvedbe je tabela. Rezultat poizvedbe lahko zato uporabimo v drugi poizvedbi na enak način kot tabelo v členu FROM. To imenujemo ugnezdena poizvedba (subquery). Globina gnezdenja poizvedb je običajno omejena. Primer 1: SELECT [Vpisna številka], Priimek, Ocena FROM ( SELECT Student.ID AS [Vpisna številka], Priimek, Ime, Ocena, Datum, Predmet.ID AS [Šifra predmeta], ImePredmeta FROM Student JOIN Izpit ON Student.ID = Izpit.IDStudenta JOIN Predmet ON dbo.Izpit.IDPredmeta = dbo.Predmet.ID ) AS OceneStudentov WHERE [Vpisna Številka] = 1 Informacijski sistemi 171 Vgnezdene poizvedbe (2) Primer 2 SELECT ID, Priimek, Ime, FROM Student WHERE ID NOT IN (SELECT IDStudenta FROM Izpit) kar je ekvivalntno SELECT ID, Priimek, Ime, FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE IDStudenta is Null Informacijski sistemi 172 Pogledi (Views) Pogledi so shranjene poizvedbe. Poizvedbe je smiselno shranjevati, kadar isto poizvedbo pogosto izvajamo. Pogled se obnaša enako kot tabela. Uporabimo ga kot ugnezdeno poizvedbo. Da bi ločevali tabele od pogledov, je priporočljivo, da imenu pogleda dodamo neko predpono, npr v vOceneIzpitov. Z pogledom lahko dosežemo, da se združene (JOIN) tabele obnašajo kot ena sama tabela. V Accessu se pogledi imenujejo "Queries“. Informacijski sistemi 173 Ustvarjanje pogleda (1) Pogled lahko ustvarimo z SQL CREATE VIEW dbo.vOceneIzpitov AS ukazom. SELECT Student.ID, Priimek, Ime, Ocena, Datum, Predmet.ID AS [Šifra predmeta], ImePredmeta FROM Student JOIN Izpit ON Student.ID = Izpit.IDStudenta JOIN Predmet ON dbo.Izpit.IDPredmeta = dbo.Predmet.ID Lahko ga ustvarimo tudi preko grafičnega vmesnika. Informacijski sistemi 174 Ustvarjanje pogleda (2) Grafični vmesnik je enak kot grafični vmesnik za poizvedbe. Informacijski sistemi 175 Uporaba pogleda Stavek SELECT * FROM vOceneIzpitov WHERE IDStudenta=1 je sedaj ekvivalenten stavku SELECT Student.ID, Priimek, Ime, Ocena, Datum, Predmet.ID AS [Šifra predmeta], ImePredmeta FROM Student JOIN Izpit ON Student.ID = Izpit.IDStudenta JOIN Predmet ON dbo.Izpit.IDPredmeta = dbo.Predmet.ID WHERE IDStudenta = 1 Informacijski sistemi 176 Shranjene procedure Shranjene procedure (SP) omogočajo shranjevanje programov napisanih v SQL. SP omogočajo bistveno večjo funkcionalnost od pogledov. SP sprejmejo vhodne parametre različnih tipov. Čeprav lahko programske ukaze SQL (vejanje, zanke, ..) uporabimo tudi izven SP, pa imajo pravi smisel v SP. Informacijski sistemi 177 Združevanje rezultatov poizvedb Rezultate več poizvedb, ki vrnejo isto število stolpcev enakega tipa, lahko združimo v eno tabelo. Za združevanje uporabimo operaciji UNION in INTERSECT. Prvi vrne unijo obeh rezultatov drugi pa njun presek. Primer: Select Ime, Priimek FROM Student UNION SElect Ime, Priimek FROM Ucitelj Zapisi v rezultatu so urejeni. Podvojitve so izločene, kot če bi uporabili DISTINCT. Če so imena atributov v poizvedbah različna, so v rezultatu imena prve poizvedbe Informacijski sistemi 178 Zahtevnejše poizvedbe (1) Poišči študente primerne za dekanovo nagrado in izpiši vse izpite, ki so jih opravili s pozitivno oceno. Študenti morajo izpolnjevati naslednje pogoje: Opravili so vsaj 3 izpite. Največ pri enem izpitu so dobil negativno oceno. Povprečna ocena vseh opravljenih izpitov je vsaj 8,5. Rešitev z ugnezdenimi poizvedbami oziroma vpogledi: vVsaj3 - izbere študente, ki so opravili vsaj 3 izpite in imajo povprečje vsaj 8,5. vNajvec1- izbere študente z največ eno negativno oceno. Končna poizvedba združi oba vpogleda s tabelami Student, Izpit in Predmet Informacijski sistemi 179 Zahtevnejše poizvedbe (2) vVsaj3 SELECT Izpit.IDStudenta, Avg(Ocena) AS PovprecnaOcena FROM Izpit WHERE Ocena>5 GROUP BY Izpit.IDStudenta HAVING Avg(Ocena)>=8.5 AND Count(Izpit.Ocena)>=3 vNajvec1 SELECT ID FROM Student WHERE ID NOT IN( SELECT Izpit.ID FROM Izpit WHERE Izpit.Ocena<6 GROUP BY Izpit.ID HAVING Count(*)>1 ) Namesto NOT IN bi lahko uporabili tudi EXCEPT Informacijski sistemi 180 Zahtevnejše poizvedbe (3) Končna poizvedba SELECT Student.ID, Student.Ime, Priimek, Predmet.Ime as Predmet, Ocena, Round(PovprecnaOcena,2) AS Povpr FROM ( vVsaj3 INNER JOIN ( Student INNER JOIN vNajvec1 ON Student.ID = vNajvec1.ID ) ON vVsaj3.IDStudenta = Student.ID ) INNER JOIN ( Predmet INNER JOIN Izpit ON Predmet.ID = Izpit.IDPredmeta ) ON Student.ID = Izpit.IDStudenta ORDER BY vVsaj3.PovprecnaOcena Informacijski sistemi 181 SQL-DML SQL – DML (Data Manipulation Language) omogoča dodajanje novih zapisov v tabele, brisanje obstoječih zapisov spreminjanje obstoječih zapisov. Osnovni SQL – DML ukazi SELECT INTO INSERT UPDATE DELETE Informacijski sistemi 182 Stavek INSERT Osnovna sintaksa omogoča dodajanje enega zapisa INSERT INTO Student (Ime,VmesnoIme,Priimek,Spol,DatumRojstva,LetoVpisa) VALUES ('Janez','',Kranjc','M','12-3-1989',2010) V tabelo lahko dodamo naenkrat več zapisov, ki smo jih dobili z neko poizvedbo. INSERT INTO Student (Ime,VmesnoIme,Priimek,Spol,DatumRojstva,LetoVpisa) SELECT Ime,VmesnoIme,Priimek,Spol,Rojen,2010 FROM VpisnePrijave WHERE Vpisan = 1 and LetoPrijave=2010 Informacijski sistemi 183 Stavek SELECT ... INTO Stavek SELECT INTO omogoča shranjevanje rezultatov poizvedbe v novo tabelo SELECT Student.ID, Priimek, Student.Ime, AVG(Ocena) AS [Povprečna ocena], INTO OdlicenStudent FROM Student INNER JOIN Izpit ON Student.ID = Izpit.IDStudenta WHERE Ocena>5 GROUP BY Student.ID, Priimek, Student.Ime HAVING AVG(Ocena)>9 Z njim lahko ustvarimo tudi prazno kopijo tabele SELECT * INTO Student1 FROM Student WHERE 1=2 Informacijski sistemi 184 Stavka UPDATE in DELETE Stavek UPDATE omogoča spremembo enega ali več atributov vseh zapisov, ki ustrezajo iskalnemu pogoju UPDATE Izpit SET Ocena = 8 WHERE ID=3 Spremenimo lahko tudi neko vrednost iz tabele UPDATE Izpit SET Ocena = Ocena+1 WHERE Ocena<10 Stavek DELETE izbriše iz tabele vse zapise, ki ustrezajo pogoju DELETE * FROM Izpit WHERE ID=3 Informacijski sistemi 185 Transakcije Več sprememb podatkov lahko združimo v eno transakcijo. Transakcija se zgodi v celoti ali sploh ne. Transakcijo začnemo z BEGIN TRANSACTION. Transakcijo izvedemo z ukazom COMMIT. Primer: BEGIN TRANSACTION UPDATE Zaloga SET Komadov = Komadov -1 WHERE IDProdukta=5 UPDATE Prodaja SET KOmadov = Komadov +1 WHERE IDProdukta =5 COMMIT Če namesto COMMIT uporabimo ROLLBACK, vrnemo stanje, ki je bilo pred začetkom transakcije. ss1 Transakcije lahko tudi imenujemo BEGIN TRANSACTION T1 ... ROLLBBACK T1 Informacijski sistemi 186 Slide 186 ss1 !! Sara Stancin; 2.6.2011 Shranjene procedure Shranjene procedure (SP) omogočajo shranjevanje programov napisanih v SQL. SP omogočajo bistveno večjo funkcionalnost od pogledov. SP sprejmejo vhodne parametre različnih tipov. Čeprav lahko programske ukaze SQL (vejanje, zanke, …) uporabimo tudi izven SP, pa dobijo pravi smisel v SP. Shranjeno proceduro ustvarimo z ukazom CREATE. Spreminjamo jo z ukazom ALTER. Ukaza CREATE in ALTER sta razen tega, da prvi ustvari novo drugi pa spremeni staro, popolnoma enaka. Shranjeno proceduro izvršimo z ukazom EXECUTE: EXECUTE spOceneStudenta 5 Informacijski sistemi 187 Preprost primer SP CREATE PROCEDURE spOceneStudenta( @IDstudenta int) AS SELECT Student.Ime + ‘ ‘ + Student.Priimek as Študent, Predmet.Ime AS Predmet, Izpit.Ocena FROM Izpit INNER JOIN Student ON Izpit.IDStudenta = Student.ID INNER JOIN Predmet ON Izpit.IDPredmeta = Predmet.ID WHERE Student.ID = @IDStudenta GO Informacijski sistemi 188 Parametri Deklaracija parametrov je v oklepaju za imenom procedure. Imena parametrov se vedno začnejo z znakom @. Parametrom v deklaraciji določimo tip. Pri klicu procedure morajo parametri ustrezati tipu v deklaraciji. Parametri so med seboj ločeni z vejicami CREATE PROCEDURE spOceneStudenta( @Parameter1 int, @Parameter2 varchar(15)) AS .... ..... Informacijski sistemi 189 Lokalne spremenljivke v SP Imena lokalnih spremenljivk v SP se začnejo z znakom @. Lokalne spremenljivke deklariramo na začetku SP s stavkom DECLARE. V deklaraciji določimo tudi tipe spremenljivke. Vrednosti jim priredimo s stavkom SET. Če vrednosti ne priredimo ima spremenljivka vrednost Null. ... AS DECLARE @n int, @Datum datetime SET @n = @Parameter1 + 1 SET @Datum = GETDATE() ... ... Informacijski sistemi 190 Priredba vrednosti iz tabele Lokalni spremenljivki lahko priredimo vrednost atributa iz tabele. Prireditev naredimo v seznamu atributov v stavku SELECT Če stavek SELECT vrne več zapisov, se priredi spremenljivki vrednost atributa prvega zapisa. Če SELECT ne vrne nobenega zapisa, ostane spremenljivki stara vrednost. Primer: DECLARE @IDStudenta int, @CeloIme varchar(100) SELECT TOP 1 @IDStudenta=ID, @CeloIme = Ime + ‘ ‘ + Priimek From Student WHERE .... Informacijski sistemi 191 Stavek IF Stavek IF omogoča pogojno vejanje v programu. Primer IF @PrikaziIme = 0 BEGIN SELECT ID, Student.Ime, Priimek, Predmet.Ime, Ocena FROM Student ...... END ELSE BEGIN SELECT ID, Predmet.Ime, Ocena, FROM Student ...... END Informacijski sistemi 192 Dostop do posameznih zapisov (1) Dostop do posameznih zapisov v rezultatu poizvedbe nam omogoča kazalec na zapis. Kazalec deklariramo s stavkom DECLARE CURSOR. Kazalec je lahko deklariran lokalno ali globalno. Do zapisov v tabeli običajno dostopamo v zanki WHILE. Vrednosti atributov priredimo lokalnim spremenljivkam z ukazom FETCH. V vsakem prehodu skozi zanko povečamo kazalec za ena dokler ne pridemo do konca zapisov. Informacijski sistemi 193 Dostop do posameznih zapisov (2) DECLARE kazalec_Student CURSOR FOR SELECT ID, Priimek, ImeStudenta, Predmet, Ocena FROM vOceneStudenta OPEN kazalec_Student FETCH NEXT FROM kazalec_Student INTO @ID, @Priimek, @Ime, @Ocena WHILE @@FETCH_STATUS = 0 BEGIN IF @Ocena>5 BEGIN ... END ELSE BEGIN ... END FETCH NEXT FROM kazalec_Student INTO @ID, @Priimek, @Ime, @Ocena END CLOSE kazalec_Student DEALLOCATE kazalec_Student Informacijski sistemi 194 Prednosti uporabe SP Procedure so shranjene v bazi in zato je njihova uporaba preprosta in pregledna. Izvedba je ponavadi hitrejša kot neposredna izvedba SQL ukazov. Isto poizvedbo lahko izvajamo z različnimi parametri. Uporabnikom lahko dovolimo zgolj izvajanje SP in ne neposrednih posegov v bazo. Uporaba SP je skorajda obvezna za spremembe podatkov, če že ne za pogled na podatke. V SP lahko poleg spremembe, ki jo zahteva uporabnik, vedno beležimo tudi kdo in kdaj je naredil spremembo, s funkcijama GETDATE() in SUSERNAME(). Informacijski sistemi 195 Uporabniško definirane funkcije Ang. User defined functions Ne podpirajo jih vse baze podatkov (npr MySQL). Funkcija je za razliko od procedure določenega tipa. Ko se funkcija izvede, vrne vrednost tega tipa. Funkcija se izvede kadar želimo dobiti njeno vrednost. Če nastopa v seznamu atributov v stavku SELECT se izvede za vsak zapis posebej. Funkcija ima lahko več vhodnih parametrov. Pri klicu funkcije so lahko parametri spremenljivke, izrazi, druge funkcije ali atributi tabel. Informacijski sistemi 196 Preprost primer funkcije Funkcija fnCeloIme združi Ime, VmesnoIme in Priimek CREATE FUNCTION dbo.fnCeloIme ( @Ime varchar(15), @VmesnoIme varchar(15), @Priimek varchar(15) ) RETURNS varchar(45) AS BEGIN DECLARE @CeloIme varchar(45) SET @CeloIme= ISNULL(@Ime, '') + CASE WHEN ISNULL(@VmesnoIme,'') ='' THEN '' ELSE ' ' + @VmesnoIme END + CASE WHEN ISNULL(@Priimek,'') ='' THEN '' ELSE ' ' + @Priimek END RETURN @CeloIme END Klic funkcije Select dbo.fnCeloIme(ImeStudenta,VmesnoIme,Priimek) as Študent, Predmet, Ocena FROM vOceneStudenta Informacijski sistemi 197 Zahtevnejši primer Izpiši izpite študentov za katere velja (primer od prej): Opravili so vsaj 3 izpite. Največ pri enem izpitu so dobil negativno oceno. Povprečna ocena vseh opravljenih izpitov je vsaj 8,5. Definiramo funkcije fnSteviloIzpitov(@IDStudenta int) fnPovprecnaOcena(@IDStudenta int) fnSteviloNegativnih(@IDStudenta) Izvedemo Select dbo.fnCeloIme(ImeStudenta,VmesnoIme,Priimek)as Študent, Predmet, Ocena, fnPoprecnaOcena(Student.ID) as Povp FROM vOceneStudenta WHERE fnPoprecnaOcena(Student.ID)>8.5 AND fnSteviloNegativnih(Student.ID)<2 AND fnSteviloIzpitov(Student.ID)>2 Informacijski sistemi 198 Prožilci (trigerji) Prožilci sprožijo neko proceduro ob spremembi podatkov. Pomembno pri redundantnih podatkih. Primer skupin,ki smo ga že obravnavali (pri spremembi tvorimo redundanten zapis v tabeli StudentSkupina). Primer naslova, ki smo ga že obravnavali. Ob spremembi Ulice, hišne številke, …, sestavimo redundanten atribut Naslov. Informacijski sistemi 199 Avtentikacija Avtentikacija je določanje identitete uporabnika. Uporabnik se lahko avtenticira na več načinov: z nečem kar ve (uporabniško ime in geslo), z nečem kar ima in/ali (digitalno potrdilo, varnostna naprava) z nečem kar je (prstni odtis, zenica, …). Najbolj zanesljiv način avtentikacije je kombinacija zgoraj navedenih načinov. Avtentikacija se lahko izvaja že v pristopu v omrežje kakor tudi na samem podatkovnem strežniku. Na podatkovnih strežnikih se še vedno najpogosteje uporablja avtentikacija z uporabniškim imenom in geslom. Pomembno je ali se geslo po omrežju prenaša šifrirano ali nešifrirano. Informacijski sistemi 200 Avtorizacija Avtorizacija pomeni dodeljevanje pravic uporabnika do določenih opravil v informacijskem sistemu. Avtorizacija je možna samo za uporabnike, ki so se ustrezno predstavili (avtenticirali). V okviru same baze podatkov je mogoče dodeljevati pravice: Pravice do administracije zbirke podatkov. Dostopa do določene podatkovne zbirke. Pogleda in urejanja podatkov posameznih tabel. Pogleda in urejanja podatkov posameznih atributov tabel. Pravice do uporabe pogledov. Izvajanja shranjenih procedur in funkcij. Baza sama po sebi ne omogoča avtorizacije uporabe posameznih zapisov v tabelah. Informacijski sistemi 201 Avtorizacija dostopa do zapisov Avtorizacijo dostopa do posameznih zapisov je mogoče izvesti s pomočjo shranjenih procedur. Uporabniku se da pravica do izvajanja shranjene procedure. Procedura nato preveri njegove pravice in mu omogoči zgolj akcije, ki so v skladu z njegovimi pravicami. Primer: Vpis ocene izpita Učitelj ima pravico vpisa oziroma popravljanja ocene samo pri predmetih, ki jih uči. Oceno lahko zato spreminja samo preko neke shranjene procedure, npr. spVpisiOceno SP glede na njegovo uporabniško ime SUSERNAME() preveri, ali učitelj uči predmet, za katerega vpisuje oceno. Če ga uči, vpiše oceno v tabele, drugače zavrne vpis. Informacijski sistemi 202 Aplikacije Uporabniki večinoma ne dostopajo do baze neposredno. Za dostop uporabljajo za ta namen razvite aplikacije. Aplikacije so lahko: Integrirane (npr. Access, Paradox, …) Namizne aplikacije uporablja se tehnologija odjemalec/strežnik Spletne aplikacije uporablja se tri-nivojsko arhitekturo odjemalec/spletni strežnik/podatkovni strežnik Integrirane aplikacije se uporabljajo za manjše zbirke podatkov, ki niso vključene v večje informacijske sisteme. Integrirane aplikacije je običajno zelo preprosto izdelati, skorajda brez dodatnega programiranja (primer so preproste Access aplikacije). Informacijski sistemi 203 Preprosti primeri aplikacij Integrirana aplikacija v Accessu: Uporabimo lahko čarovnika za izdelavo obrazcev in poročil. Funkcionalnost lahko dopolnimo z uporabo makrojev. Acces omogoča tudi pisanje programov v jeziku Visual Basic for applications. Poročila, obrazci in programska koda so del baze podatkov in so integrirani v datoteki s privzeto končnico .mdb V accesu se lahko odločimo tudi za delitev podatkov in aplikacije v dve datoteki. Z delitvijo pravzaprav že preidemo na namizne aplikacije (odjemalec/strežnik). Informacijski sistemi 204 Namizne aplikacije Pri namiznih aplikacijah sta odjemalec (aplikacija) in strežnik (baza podatkov) ločena. Aplikacija mora vzpostaviti povezavo s strežnikom. Povezava je lahko neposredna ali pa preko nekega vmesnika. V operacijskem sistemu Windows je za povezavo namenjen ODBC (Open DataBase Connectivity) Različni programski jeziki vsebujejo v svojih knjižnicah komponente za delo z bazami podatkov: ustvarjanje povezave, predaja poizvedb, sprejem rezultatov poizvedb. Primer: aplikacija v Visual basic 6 Informacijski sistemi 205 Spletne aplikacije (1) Spletne aplikacije potekajo v treh nivojih Odjemalec (spletni brskalnik) Spletni strežnik Podatkovni strežnik Na vskem od teh nivojev se izvaja del aplikacije. Spletni brskalnik: Spletni brskalnik skrbi za povezavo s spletnim strežnikom preko nekega naslova URL (Uniform Resource Locator) Spletni brskalnik skrbi za prikaz podatkov (HTML), ki jih dobi s spletnega strežnika. Z uporabo skript brskalnika (java script) je mogoče programsko izboljšati privzeti način delovanja spletnega brskalnika. Atentikacija in tudi šifriranje podatkov sta mogoča že na povezavi odjemalec/spletni strežnik. Informacijski sistemi 206 Spletne aplikacije (2) Spletni strežnik Na spletnem strežniku se ob klicu določene (aktivne) spletne strani izvede nek program. Program je lahko napisan v strežniški skripti (asp, php, java, …) ali pa je to že program napisan v nekem drugem programskem jeziku in preveden v strojno kodo. Program mora najprej vzpostaviti povezavo s podatkovnim strežnikom. Na osnovi zahtev dobljenih iz odjemalca mora predati podatkovnemu strežniku ustrezno (SQL) poizvedbo. Rezultate poizvedbe mora obdelati in jih v HTML obliki predati odjemalcu. Podatkovni strežnik: O njegovem delovanju je bilo že dovolj govora prejšnje ure. Informacijski sistemi 207
© Copyright 2024