Informacijski sistemi - Laboratorij za informacijske tehnologije

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