Professional Documents
Culture Documents
ewezeq s
Postupak projektovanja
U prvom i drugom delu ove knjige, razmotrili smo principe projektovanja
reladonih i dimenzionalnih baza podataka. Meclutil1l, struktura podataka
sa1110 je jedna od komponenata sistema kOji radi s bazom podataka izuzet
no vazna, naravno, ali ipak samo jedna od komponenata. PocinjuCi od ovog
dela knjige, bavi6emo se nekim od preostalih aspekata projektovanja sistema
kOji rade s bazama podataka.
U OV0111 delu knjige, objasni6emo veCinu aktivnosti koje se odvijc\iu to
kom analize i projektovanja sistema kOji radi s bazom podataka, meau koji
rna su definidja sistemskih parametara i radnih procesa, konceptualni
model baze podataka i sema baze podataka. Projektovanje korisnickog inter
fejsa, buduCi da.ie to slo;~ena tema, razrnobicemo \l cetvrtom delu knjige.
Razmotricemo samo postupak analiziranja i projektovanja sistema kOji
rade s bazama podataka; prakticna realizacija izlazi van opsega ove knjige.
Posto se analiza i projektovanje ne mogu obavljati nezavisno od c1rugih delo
va postupka, poce6emo kratkim opisom zivotnog ciklusa projekta.
147
(slika 9-2).
Zavrsetak
projekta
Analiza
, ~
. Projektovanje
Pcoj,kt"""
OJ
r---'----;,
i
Planiranje i
I
i procena troskova I
//
Pocetna
analiza
t
Projektovanje
strukture
Detaljno projektovanje
~
Slika 9-3 Model inkrementnog razvoja
Obmtite paznju n<1 to cIa spinda na sliei 9-:3 sacIrzi clodatan posao: inte
grisanje. Integrisanje pojedinacnih komponenata podra7.umeva se i 11 spiral
nom modell!, naravno, ali Jlloje iskllstvo pokazuje da je taj posao slozeniji
kada se primenjuje model inkrementnog razvoja. To je takode jedan oel l'a
zloga zbog kojih radije koristim spiralni model za razvoj kornponenata. Ako
detaljno projektovanje komponente odlozite do trenutka kada ona postaje
zaista neophodna, moCi cete da ugradite sve ono novo sto ste saznali tokom
integrisanja prethodnih komponenata ida, uz malo srece, izbegnete proble
me na koje ste mozda naiSli tokom integrisanja prethodnih komponenata.
Problem s modelom inkrementnog razvoja jeste to sto pretpostavlja da se
svaki slozen sistem moze razbiti na jasno razdvojene komponente, a to nije
uvek moguce u svim sistemima. Osim toga, posledica moze biti velika kolici
na "potpornog" koda. Pretpostavimo da ehan za unosenje podataka treba da
poziva COM komponentu koja pretrazuje podatke 0 kupcu i izvrsava
odredenu akciju ako pronade te podatke, ali tn komponenta jos nije napra
vljena. Razvojni tim mora 11 tom slucaju da napravi ,Jaznu" komponentu koja
omoguCava pozivanje buduce komponente bez izazivanja greske. Slozeni si
stemi mogu saddati znatne koliCine takvog "potpornog" koda.
Osim toga, uvek postoji mogucnost da spoljna komponenta ne bude ni
kad napravljena; mazda budzet projekta to nece dozvoliti ili cete naknadno
ustanoviti da to i nije tako dobra ideja. Ako ne vodite racuna 0 toj mogucno
sti, moze yam se desiti da distribuirate komponente cija je jedina svrha da
dmgim komponentama omoguci da rade. To uopste nije elegantno resenje,
a svakako nije l1dto sto biste voleli da objasnjavate programeru zaduzenom
za oddavanje sistema.
BuduCi da se analiza zahteva i projektovanje strukture obavljaju na
pocetku projekta, postoji rizik da oni zastare, sto je, podsetite se, jedan od
glavnih nedostataka modela vodopada. lz tog razloga, vazno je da vise puta
ponovite ta dva koraka - narocito analizu zahteva, posta je tu najveca verovat
noca naknadnih izmena - pre nego sto zapocnete detaljno projektovanje
svake komponente. Cesto je prijatno iznenadenje koliko ~e izmene zahteva
mogu lako realizovati menjanjem komponenata koje tek treba razviti, iIi cak
menjanjem redosleda kojim se komponente razvijaju, bez gubljenja vec ulo
zenog truda.
Ali llprkos rizicima, model inkrementnog razvoja ipak pruza viSe predno
sti. BucluCi da je "velika slika" sistema definisana na samom pocetku projekta,
smanjuje se verovatnoca gubljenja ranije ulozenog truda zbog pogresnih od
luka. BuduCi da se slozeni projekti razbijaju na manje komponente, lakse se
upravlja projektima pojedinacnih komponenata. Osim toga, razbijanjem si
stema na pojedinacne komponente, vrlo je verovatno da cete vec u ranim
~apomena 0
metodologijama i standardima
IJrojektovanja
Nisam veliki pristalica upotrebe fonnalnih spiskova poslova i postupaka ko
rak po korak pri projektovanju racunarskih sistema. Iskllstvo mi govori cIa
oni mogu da budu smetnja dobrom elizajnu jer se lako moze dogoditi cIa se
analiticar viSe posveti popunjavanju nekakvih "kuCica" nego razumevanjll
korisnikovih zahteva.
Mealltim, II velikim sistemima na kOjima radi vise analiticara i vise timov(l
programera, oCigledno je neophodno llspostaviti odrec1ene f(Jl'malne procedu
re radi upravljanja postupkom projektovanja. Postoji vise metodo)ogija za tu
namenu, a veCina ima i automatizovane alatke za podrsku. Necu iZllCitO pre
poruCiti nijednu oel njih. Pwo, zato sto opredeljivanje za jednu iii dmgu moze
preCi II "verski rat"; drugo, kao i pitanje imena promenljivih, samo post(~j(mje
odredene metodologije obicno je vaznije oel izabrane metodo]ogije.
Svesna sam da priprema projcktne dokurnentacije moze biti odbojan
posao, barem dok ga ne uradite prvih nekoliko puta. U poglavlju 14 na6 cete
opsti opis postupka.
Definisanje parametara
sistema
"Sistem se projektuje da bi radio
a ne sva/fta".
Robert Hall, razvojni inzenjer, North American Aviation
Kruzi prica da Bob Hall umalo nije dobio otkaz kada je ovu napomenu upu
tio potpredsedniku kompanije jer je ovaj po hiljaditi put pokusao da prosiri
opseg projekta. (U oblasti projektovanja sistema, kao i u svakoj drugoj, koris
no je znati skim tacno imate posla.) Bilo kako bilo, to ostaje jedna od najisti
nitijih napomena koje sam dosad cula u vezi s postupkom projektovanja
sistema. Ako zelite da projekat bude
morate biti u stanju da opiSete
sta pokusavate da postignete i da povucete prihvatljive graniee oko projekta.
Ako ne mozete reCi s razumnom izvesnoseu "uradiCemo to i to, a to ito nece
?nO uraditi", mogu Yam obeeati da eete zaista upasti u velike nevolje.
Postupak clefinisanja sastoji se ocl tri koraka:
1. Odredivanje eilja, ne samo sistema, vee projekta kao celine.
2. Utvrdivanje 1.1510va za projektovanje sistema; pored proeenjivanja
valjanosti kompromisa koje cete mozda morati da napravite tokom
projektovanja i izrade sistema, uslovi ce s]uziti i za procenjivanje nje
gove uspesnosti iii neuspesnosti.
3. Definisanje opsega sistema - sta cete uraditi, a !ita necete pokusati
da uradite.
155
Osim ako \ise eenite s\"oj S1111SaO za humor od iznosa na svom rac'unn u
band, tokol11 pocetne analize momeete dOl utvrdite stcpen do
se zahtcvCl
neko opste poboljsanje. Poboljsati efikasnost ;:;a koliko? Povceati produktiv
nost or! koliko IW lwliko? Tn postoji druga zamka koju treba izbeci. Sasvim je
u redu trvdnja da eiljevi treba da budu direktno merljivi, a "smanjiti vreme
potrebno za obraclu jedne porudzbine sa deset min uta l1a elva minuta" svaka
ko je bolje od "poboljsati eflkasnost". Mectutim, prva recenica podrazumeva
da vi znate koliko je vremena sada potrebno za obradu porudzbine, a Otkr1
vanje toga moze biti skupa vezba.
Cena istrazivanja cesto moze da premasi cenu greske koju biste naCinili
kada istrazivanja ne bi bilo. U nasem plimeru obrade porudzbina, verovatno
nije neophodno da posaljete tim analitieara sa stopericama da biste preeizno
utvrdili koliko je vremena potrebno za obmdu jedne porudzbine, mada sam
ito videla. Pre nekoliko godina, ucestvovala sam u projektu u kojem je jecIna
vladina sluzba potrosila $50.000 kako bi utvrcIila da Ii je opravdana kupovina
jeclnog primerka komercijalnog softvera za izradu dijagrama Cija je malopro
dajna cena bila $2.500. (Priznajem, na tu Cinjenicu sam ukazala samo jedan
put, a onda sam cutaIa dok nisam stigla do svoje banke. Ako me vladina
sluzba placa da radim nesto glupo, mora da je u pitanju specijalan oblik pov
racaja poreza.)
Resenje za prevodenje takvih uopstenih zahteva u upotrebljive projekt
ne uslove, nalazi se U osecaju za meru i u konceptu "dovoljno dobro". Ako
sudbina kompanije ili neCija karijera zavisi od kvaliteta novog raeunarskog si
stema, morate bib vrlo, vrlo sigurni u ono !ito radite. Ukoliko pravite manji
sistem kOji nece puno uticati na poslovanje kompanije, mozete sebi priustiti
vecu opustenost. Ako se vratimo na nas primer, verovatno je "dovoljno do
bro" da znate da u tekucem sistemu prosecna osoba moze cIa obradi otpri
like 2.5 porudzbina dnevno. Nije potrebno da sami detaljno istrazujete jer
vam taj podatak gotovo sigurno moze dati rukovodilac sluzbe; zbog toga ste i
pozvani. Sigurna sam da je preterano detaljno istrazivanje razlog zbog kojeg
americko ministarstvo odbrane placa $400 po odvijacu. (Pre nego sto pocne
te cia mi saljete uvredljive poruke, znajte da nisam nikad radila za njih.)
Uvek vredi pitati zbog cega je potrebno odredeno poboljsanje, Na pri
mer, moze biti zaostalog posla, a rukovocIilae mora odlueiti cia Ii da ubrza po
stupak iii da zaposli docIatno osoblje. Ako znate da ima zaostalog posh i
znate predviden obim povecanja prodaje (kao u nasem primeru obrade
rudzbina), mozete odrediti stepen poboIjsanja koji je zaista potreban.
Cifra do koje dodete moze se razlikovati od one koju yam je klijent prvo
bitno dao. Ukoliko vas klijent zeli cIa smanji vreme obrade na po!ovinu, mo
rate uraditi sve sto ie u vasoj moci da biste to postigli. Ali kad znate da je
~azvoj
projektnih uslova
Konkretne kategorije uslova nisu preterano bitne, ali one kojc sam n<lvc
la koristan Sll pokazatelj koliko ste dobro upoznali sistem. Trebalo bi da "e6
na uslova pripada prvoj iIi drugoj kategoriji. Ako imate samo listu opstih
projektnih strategija, kladila bih se da niste sasvim dobro razumeli problem
kOji pokusavate da resite.
NAPOMENA: Bez obzlra na obl1k u kojem ste deflnisall uslove, kada ih ispu
nite. prekinite rad na projektu. Vas projekat je zavrsen. Izadite negde i zabavite
se. Ova preporuka nije bas tako trivijalna kao sto mozda zvuci. Navescu cest
primer: optimizovanje bloka koda. Da biste ispunili uslov zadat u projektu,
funkcija mora da izracuna odredenu vrednost za manje od 10 sekundi. Stigli ste
do 9 sekundi, ali ste sigurni u sledece: ako isprobate ono drugo resenje, uspe
cete da smanjite vreme izvrsavanja za polovinu. Nemojte to ciniti. III, ako bas
morate, uradite to u slobodno vreme. Ne smete nastaviti da radite nakon
ispunjavanja svlh projektnih uslova jer inace projekat nece nikad biti zavrsen.
Jedini moguci izuzetak od ovog pravila jesu razvojno-istrazivacki (RI) projekti,
ali takvi projekti ionako imaju drugacije ciljeve, pa prema tome i drugacije
uslove. Umesto "obaviti proracun za manje od 10 sekundi", verovatnije je da ce
projektni uslov u RI projektu bito nesto poput "odrediti optimalnu metodu za
izracunavanje toga i toga". Posto nikad ne mozete znati da Ii je odredeno resenje
zaista optimalno, nikad necete ispuniti uslov; prema tome, mozete istrazivati do
beskonacnosti iii dok vam ne ponestane novca. sta god se prvo desi.
Funkcija 1
11
22
3,6
7,0'
Funkcija 2
11
32
3,6
10,6
;azetak
U ovom poglavlju, razmotrili smo aktivnosti koje omogucavaju upoznavanje
sistema na pocetku projekta. Prvo morate odrediti eiljeve sistema, a zatim ih
prevesti u konkretne projektne uslove kOji se mogu upotrebiti za procenji
vanje uspeha ili neuspeha pro.1ekta. Momte takode odrediti opseg sistema
graniee onog sto hoee i sto nece biti uradeno u okviru projekta.
Te aktivnosti su neka vrsta nultog koraka - sivari ko.1e morate obaviti pre
pocetka projektovanja sistema. U sledecem poglavlju razmatramo prvi "pra
vi" korak postupka pro.1ektovanja, a to je deflnieija radnih procesa koje ce si
stem podrZavati.
1ako je veliki broj sistema koji rade s bazama podataka projektovan za jedno
stavno sldadiStenje i uCitavanje odredenih vrsta podataka, svrha veCine je po
moe pri obavljanju odredene aktivnosti ili viSe njih. Te aktivnosti su radni
procesi (engL work processes) koje ce sistem poddati. Radni proees je skup
jednog ili vise pojedinacnih poslova, a oni zajeclno cine aktivnost koja ima
odredenu vaznost za organizaeiju. "Obrada porudzbine" i "Pronalazenje
kupeevog broja telefona" primeri su radnih proeesa, ali veoma razliCitih ste
pena slozenosti.
Posao (engl. task) jeste pojedinacna akeija, tj. korak tokom odvijanja
radnog proeesa. N a primer, proees obrade porudzbine moze se sastojati od
poslova "Evidentiranje porudzbine", "Provera iznos<1 kredita odobrenog
kupeu", "Provera stanja zaliha" i "Dostava prodate robe". Medutim, proees
pronalazenja telefonskog broja odredenog kupea verovatno bi se sastojao od
samo jednog posla, npr. "Pronalazenje zapisa 0 kupeu" iIi, ako volite da zala
zite u detalje, "Pronalazenje zapisa 0 kupeu" i "Prikazivanje saddaja
pronadenog zapisa 0 kupeu".
Razlikovanje posla od proeesa ponekad moze biti tesko jer se ta razlika
uglavnom odreduje proizvoljno. To je slieno odredivanju sta predstavlja data
skalarna vrednost u modelu podataka - jedan atribut u jednom modelu
moze biti razbijen na vise atributa u nekom drugom modelu. Aktivnost koja
se u jednom sistemu tretira kao posao moze se u drugom sistemu tretirati
kao proees i razdvojiti na zasebne poslove s nizim l1ivool11 detalja. Slieno kao
u postupku modelovanja podataka, svoju odluku morate zasnovati na seman
tici prostora problema.
U nekim sistemima nije moguea analiza radnih procesa. Na primer, alat
ke za izradu ad hok izveStaja ne podrZavaju nijedan konkretan proces, vee
odredene V1~'Jte aktivnosti. U takvim slueajevima, pogodnije je da pravite ko
risnicka seenarija. To je objasnjeno na kraju ovog poglavlja.
171
Razgovori s korisnicima
Posto identifikujete radne procese koji spadaju u opseg sistema, vas sledeCi
zadatak je ela utvrelite koje se sve radnje obavljaju u tekucem sistemu da hi
se ti proeesi izvrsili. U ovoj fazi ne treba previSe da brinete 0 tome 5ta od
toga posao, a sta je, mozda, zaseban radni proces koji zahteva dalju analizu.
Samo naaite nekoga ko vam moze reei "ovaj elokument elobijamo oel prodav
ca i prvo pogledamo da Ii je pravilno popunjen; ako jeste, p11stupamo dato
ted kupaca i..." Postavljc~jte mnogo pitanja i zapisujte sve sto saznatc. Osim
toga, nabavite kopije obrazaca iii izvestaja kOji se tokom procesa koriste kao
ulazni podaci iIi kOji nastaju kao rezultat procesa. Cilj vam je da shvatite sta
se dogada; zasad jos ne anaIizirate proces.
Uzgred, mnogi ljudi nazivaju ovu fazu analize "razgovori s korisnicima".
Licno vise volim izraz "analiza procesa" iIi neki elrugi neutralan izraz. Vrlo je
lako potceniti strah kOji racunari izazivaju kod ljudi, cak i koel onih koji se
sluze njima. Buduci da su mnogi ljudi jos uvek zabrinuti da ce ih racunari za
meniti, izraz "razgovor s korisnikom" lako moze biti pogresno shvacen kao
"sad cemo videti ko ce dobiti otkaz". To narocito vazi za velike organizadje,
u kOjima obicno nije moguce razgovarati sa svakim pojedinacno, a mnogim
ljudima moze biti nejasno ko ste vi i sta je je tacno vas zadatak.
Kad goel je moguce (a nije uvek), trebalo bi da pokusate da razgovaratc s
pojedinicima koji zaista obavljaju proces koji vas zanima, a ne s njihovim l'U
kovodiocem sluzbe iii neposrednim nadreaenim. Iskustvo mi kaze da su ru
kovodioci skloni prikazivanju idealne slike procesa za koje su odgovorni.
Ljueli koji svakoelnevno obavljaju oelredenu aktivnost najbolje ce vam opisati
probleme i smetnje koje i111aju. Naravno, treba da razgovarate is nadreae
nima, buduci da oni cesto najbolje znaju zasto se odreaeni poslovi obavljaju,
kao i posledice njihovog neobavljanja iii loseg obavljanja.
Identifkovanje poslova
Kada zavrsite razgovore s Ijudima sto obavljaju poslove koje ce vas sistem po
ddati, trebalo bi da prilieno dobro razumete aktivnosti koje se odvijaju u te
kucem sistemu. Vas sledeCi komk je da te infonnacije pretoCite u niz poslova.
Sustina je u tome da identifikujete poslovna pravila koja vaze tokom procesa.
N a poeetku ovog poglavlja, ree "posao" dcfinisala sam kao pojeclinaenu
akciju. Sada mozemo preciznije definisati sta ree "pojedinaena" znaCi u
ovom kontekstu. Ree ima dva znaeenja: akcija ima jasan poeetak i kraj, i sva
poslovna pravila vaze pre poeetka posla i nakon zavrsetka posh Tokom
izvrsavanja posla, pravila se mogu privremeno prekrsiti.
Prvo sto bi trebalo uociti na ovoj listi jeste ela Sll aktivnosti nm-eelene po
malo nasumicnim reclosleclom. To je sasvim u rec1u. Zasacl samo pokusavate
da nlzumete kako se aktivnosti oclvijaju
. . 1I tekueem sistemu. Kasnije
. edc
preCi na preCisCavanje procesa. Osim toga, Cini se cia stavke liste opisuju ra
zliCite nivoe detalja. To pitanje razmotrieemo malo kasnije. Zasacl eemo
samo identifikovati poslove.
Prva stavka na listi, "Provera da li je pravilno popunjen obrazac porudz
bine", ima jasan pocetak i kraj. Ta akcija se odvija pri prijemu nove porudz
bine, a zavrsava se kada je proveren ceo sadrZaj dokumenta. Posto mozemo
pretpostaviti da sva poslovna pravila vaze na pocetku procesa, u ovom sluca
ju nemamo problema. Ukoliko dokument kOji predstavlja porudzbinu nije
uskladen s poslovnim pravilima, biee odbacen. Po tome znamo da ako se
proces nastavi na sledeeem koraku, pravila ee i dalje vaziti. Dakle, stavka
broj 1 moze se opisati kao posao.
Jedino poslovno pravilo koje se odnosi na drugu stavku, "Ucitavanje da
toteke kupaca", jeste da osoba koja to cini mora imati pristup datoteci. Posto
eemo pretpostaviti da svako ko izvrsava ovaj proces ima pristup datoteci, to
nam ne govori da Ii je u pitanju posao. Akcija pocinje nakon zavrsene prove
re dokumenta porudzbine, ali posto se datoteka koristi i u kasnijim akcijama,
trenutak zavrSetka ove akcije nije poznat. Prema tome, to ne moze biti po
sao, vee samo jedan od koraka nekog posh
U stvari, datoteka kupaca se kOlisti u stavci 3 ("Unosenje podataka za do
stavu robe") i u stavci 5 ("Dodeljivanje nove sifre kupca"), sto je prva naznaka
da te stavke pripadaju istom poslu. Jasno je da se stavke od 2 do 5 mogu gru
pisati u jedan posao koji biste nazvali, na primer, "Evidentiranje porudzbine".
U ovom slucaju, stavka 4, "Unosenje podataka 0 porudzbini", sasvim je 06
gledno deo postupka evidentiranja porudzbine. Ipak, nemojte se iznenaditi
ako othijete da se neki poslovi odvijaju istovremeno. U rucnom sistemu,
neko lako moze da popunjava dva obrasca u isto vreme. Nebitna je cinjenica
da ti obrasci pripadaju logicki razlicitim poslovima.
Sada imamo nov posao koji se sastoji od cetiri koraka. PoCinje nakon pro
vere da Ii je izvorni dokument pravilno popunjen, a zavrSava se kada je cela
porudzbina evidentirana. Ali, postoji problem. Vas klijent ne dozvoljava da
kupci salju porudzbine koje premasuju iznos odobrenog kredita, a iznos kre
dita se ne proverava pre stavke 7, "Utvrc1ivanje iznosa kreclita odobrenog
kupcu", posle provere da Ii narucene robe ima na zalihama. Mec1utim, dok ne
bude potvrdeno da je porudZbina ispod granice maksimalnog kredita odobre
nog kupcu, ne mozete biti sigurni da Ii poslovna pravila i dalje vaze pre i posle
posla. Prema tome, stavka 7 je deo posla "Evidentiranje porudzbine".
~naliziranje
radnih procesa
Posto sada imate jasna saznanja 0 tome kako se stveu; mde u tekucem sistemu,
mozete razmobiti radne proeese da biste otkrili moguca poboljsanja. Kao sto
sam pomenula, u veCini organizacija postoji jaka inercija. To vazi podjednako i
za proeese i za rad s dokumentima. Uvodenje novog racunarskog sistema
pruza odlicnu priliku da se organizacija oslobodi dela starih navika.
Postoji staro pravilo efikasnosti koje propisuje da ne bi trebalo obradiva
ti nijedan dokument viSe od jedanput. Kao i mnoga druga pravila, ni 0'1'0 nije
uvek prakticno, ali nije neubiCajeno ustanoviti da se radni proces moze po
jednostaviti menjanjem redosleda poslova 11 njemu tako da se izbegne ra
zmena delova posla izmedu ucesnika u procesu iIi drugih procesa. Iz nekog
razloga, postupak tipa "ja uradim A i dam ga tebi, zatim ti uradis B i vratis ga
meni, a onda ja uradim C" te5ko je prepoznati kacla ste njegov neposreclni
ucesnik, ali postaje vidljiv cim se aktivnosti napiSu.
Da biste mogli da pravite til vrstu analiza, moraju yam biti veoma jasne
zayisnosti izmedu pojeclinih poslova. U svako111 procesu, neki poslovi zavise
od drugih pos10ya i moraju se obaviti tacno odredenim redosledom. Na pri
mer, sluzbi za dostavu robe ne mozete proslediti porudzbinu pre nego !ito je
aa
Tacka
donosenja
odluke
Podatak )
Korisnicki scenario
Alternativa formalnoj analizi radnih procesa jeste identifikovanje korisnic
kih scenarija. Korisnicki scenario sastoji se od dve komponente: skupa
od jednog iii viSe korisnickih profila kOji opisuju razne vrste korisnika
predlozenog sistema, i po jednog scenarija upotrebe za svaki korisnicki
prom, sto su narativni opisi naCina ua koje se ocehllje da korisnik upotreblja
va predlozeni sistem, tj. aktivnosti kOje se ocekuje da ce on iii ona obavljati.
lako se pomocu korisnickih scenarija mogu pribaviti iste informacije kao
pomocu analize radnih procesa, kOlisnicki scenariji su viSe usredsredeni na
naCine na kOje kOlisnici upotrebljavaju predlozeni sistem, a manje na speci
ficne korake transakcije. BuduCi da se viSe bave naCinol11 rada korisnika, po
nekad je tesko pripremiti korisnicki scenario koji ne bi zavisio od korisnickog
interfejsa sistema.
MedutiIl1, posto je namena metode da se utvrde korisnikovi ciljevi i oce
kivanja, korisnicki scenalio je narocito pogodan za sisteme koji treba da po
drze ved broj ad hok aktivnosti. Analiticaru omoguCava da se usredsredi na
vrste poslova koje korisnici treba da obavljaju, a cIa se pri tome ne "zaglibi" L1
mehanizme procesa koji jos nisu ni definisani.
I\' a primer, cuk i \TID jeclnostavan scenario, koji glasi: ,Trgonlcki putnici
klijcnata, od 11110SC
nja pormlzhine, do clostave
fakturisanja i uplata odgovarajuCih iZllosa",
tacno opisuje kako ce ta grupa korisnika koristiti sistem. Opi5 ne namccc ni
bkve odluke 0 detaljima funkcionisanja korisnickog interfejsa.
Hazvoj korisnickih scenarija i analize radnih procesa nisu me(tusobno
isldjucivi. Analize rac1nih
k01'isl1e su za razmatranje samih radnih
proeesa, dok ko1'isnicki scenariji opisuju nacine na koji ce pojecline g1'upe ko
risnika koristiti sistem. U vecini sistema, to su podjednako vazna pitanja.
Kada je projekat dovoljno
da opravdava napor, svakako je ko1'isno da
obavite obe vrste analiza, narocito zato sto se korisnicki scenariji obicno
1ll0gU izvesti na osnoVll informacija koje pribavite tokom analize radnih
cesa, bez dodatnih razgovora ili analiziranja.
;azetak
U OVOll1 poglavlju razmat1'ali smo nacine na koje mozete steci saznanja 0
aktivnostima koje predlozeni sistern t1'eba da podrZi. To se moze otkriti
moeu analize procesa S 1'azlicitim stepenima fo1'malnosti, izradom ko1'isl1i6
kih scenmija iIi kombinacijom te dye tehnike. U poglavlju 12, bavieemo se
izradom konceptualnog modela podataka, sto je ]ogicki opis nacina l1a koje
ce 5e podaci generisati, strukturi1'ati i koristiti u sistemu.
Konceptualni model
podataka
U ovoj fazi postupka projektovanja, trebalo bi da imate jasnu sliku onoga sto
treba da postignete. Definisali ste opseg projekta, odredili ste sImp projekt
nih uslova i analizirali ste radne procese. Vreme je da zapoenete izradu 1110
dela podataka.
Podsetite se da konceptualni model podataka sadrzi opis entiteta, njiho
ve atribute i veze izmedu njih. To nije sema baze podataka, koja opisuje
zieku strukturu tabela. Zasad jos ne znate kako se ona pravi. Da biste 1110gB
da napravite sernu, prethodno morate osmisliti korisnieki interfejs i odrediti
arhitekturu na osnovu koje
napraviti sistem.
183
/',
"It.
.0'~::I. .~NORTHWINn
INVOICE
TUDt!tS
~Iat.t: 03-Hov-2004
/',\,w,
:,:I" ..'."!iI' h.
Ship TCC
.,\."
AJtedS FutterldS'te
Ooere St;, ~7
E:i! 10:
~fmd$ F\..1terklS'te
Chen: Str, 67
Berlin 1220'il
Berlin 1120g
O.;'!l1l'\any
Germany
ProlrotHl:
Pro:lwtttrne:
Quantity:
UllitPrlOO:
[iSOOlJlt:
Ex\endJdPrlre:
28
Rossie Sauerkral",t
15
$46BO
25 %
$013.00
39
Ch:;utreuse verte
21
$18DO
Z5~
$2$3.60
4Il
Spegesild
$12 DO
25%
$18DD
Subtotal:
ff1?iit,l:
lotal:
$814.50
$2g.4Il
$84H6
Slika 12-1 Vecina radnih procesa zapocinje kada se pojavi papirni dokument
nalik ovoj narudzbenici
Pronadite uzorak ovog prvog bloka podataka i zapisite sve podatke koje
on sadrzi. Nemojte jos razmiSljati 0 razvrstavanju elemenata podataka na
entitete iii atribute, samo ih zapiSite. Obavezno zabelezite grupe koje se
je
navljaju, ako ih ima, a treba ida identifikujete elemente podataka za
vasa analiza radnih procesa pokazala da nedostaju. Vasa pocetna Usta ele
menata podntaka moze biti sliena onoj nn slid 12-2.
S'a1e.!'tJI'I""
8111 r; tfl"'u-~
Si;i>T. tf/"'u-~
"i
ci!"
Si;i>lIta
tJl'/.,.[M"
fj.,,J,,.c
U<ICPl'lb.
{Jt~M4.c
0"af"" On!",
81ff T- A!!,w,
0"ip T- A!';""",
?+--
saM;'''''''
0"ip0,
O,.!.,.OaCe
Oac.Rf"r.!
PNcl.d
U'"tPNC'
O,.!",.Odaif
Cu..rt(Jl1(er
C,,,,;,a'\f;V,,,,,,
C"Cad;V"",.
A!';""",
~
81fft:"
0"Cred
0"ip!":"
C,t,r
tZ"CIt,r
0"Cac.IP",,;,f,'
C,"IfC,.,
P,dafC,!.
Oi.rG(J"l(t
Ed'If!.!PNC.
O,.!.,. T-taf
P,.,cl.d
;V""'.
0"lWftbr
? +-- CaCep",
------+ 0"lWftbr
Kao !ito vidite, stavke Bill To (adresa l1a koju se salje faktura) i Ship To
(adresa za dostavu robe) identifikovane su kao cinjenice koje se odnose na
dodatni entitet Customer (kupac). Medutim, nije odmah jasno da li te dve
adrese pripadaju samo entitetu Customer, samo entitetu Sales Order (po
rudzbina) ili oboma_ Isti princip vazi i za pridruzivanje elementa Unit Price
(jedinicna cena) elementu Order Detail (stavka porudzbine). Isto kao !ito je
tekuca prodajna cena artikla logicki razliCita od cena po kojim<l je taj artikal
ranije prodavan, tekuce adrese klijenta na koje se salju faktura i roba logicki
su razlicite oel adresa na koju su ova faktura i roba bili poslati.
Da Ii su aelrese za dostavu robe i fakture takode atributi entiteta Custo
mer, pitanje je procene na osnovu prirode sistema i njegovih korisnika. Ako
te atribute dodelite entitetu Customer, m06 cete da zadate podrazumevane
vreclnosti
se preuzimaju pri unosenju porudzbine, !ito smanjuje vreme
potrebno za taj posao i mogucl1ost cIa 5e pri unosenju poclataka pogresi.
:vlec!utim, time se uvodi dodatan posao odrZHvanja tih vreclnosti u enti
tetu Customer. Aleo klijenti organizaeije imaju vise adre5a na koje im 5e do
stavlja kupljena mba (na primer, u pitanju je lanae maloproclajnih objekata),
taj cloclatni posao moze biti obiman, pa je bolje da se acIresa za clostavu robe
unosi kao sastavni deo procesa evic1entiranja poruclzbine.
Ponekad je najbolje resenje nesto izmedu te dve krajnosti. Na primer,
entitetu Customer mozete doclati vise atributa za dostavnu adresu, ali da pri
tome ne zahtevate c1a ih korisnik sve popunjava. Ako za odreclenog kupca
postoji S<1mo jedna adresa, sistem moze da je upotrebi kao podrazumcvanu.
Ukoliko postoji viSe adresa, sistem moze da ponudi korisniku listu adresa sa
koje ce on izabrati odgovarajucu. IIi, mozete ugracliti uslovnll logiku koja ko
risniku predlaze poslednju upotrebljenu aclresu ali mu clozvoljava i da izabe
re drugu ako je potrebno.
Mozete razmotriti i resenje u kome se entitet Customer azurira u proce
su unosenja poruclzbine. Ako nema adrese, iii korisnik unese novu aclresu,
sistem moze da pita treba Ii je plidruziti zapisu 0 kupcu. Postoje problemi s
korisnickim interfejsom, ne s modelom podataka, ali su te dve oblasti pone
kacl tako tesno povezane da 5e ne mogu potpuno razdvojiti.
Elem.ent podataka Salesperson (proclavac) takocte upucuje na to da
negde postoji entitet Employee (zaposleni), ali posto jos ne znmno kako bi
trebalo da on izgleda, stavljamo znak pitanja. Postoji verovatnoca da ce i
drugi dokllmenti ili procesi koristiti taj entitet. Ako bude tako, 111oze1110 do
dati potrebne atribute. U suprotnom, mozete se opredeliti da ostavite Sales
person kao atribut entiteta Sales Order. Ne zaboravite da se ta vrsta odluke
mora uvek zasnivati na semantici sistema. Necete dobiti apsolutno nista ako
napravite ehan za unosenje podataka 0 zaposienima, s nadreclenima, slu
zbama i lokalnim telefonskim brojevima, ako se ti podaci koriste senno za pri
kazivanje imena prodavca na narudzbenici.
Product (altikal) identiflkovan je leao entitet, a grupa elemenata koja je
identifikovana na prvom dijagramu kao grupa koja se ponavlja (Product Imti
kal!, Unit Price Ijedinicna cena/, Quantity Ikolicinal i Discount Ipopust/), iclen
tifikovana je kao entitet Order Details (stavke poruclzbine). Za entitet Product
identifikovan je pocetni sImp atlibuta, verovatno na 05noVU nekog drugog
izvomog dokumenta, a sa ove liste identifikovani su entiteti Supplier (doba
vljac) i CategOlY (kategOlija mtikala), mada ni za njih nemamo dmgih detalja.
Posto entitete definiSemo na konceptualnom nivou, u ovoj fazi nas ne
zanima cla Ii se atributi poput Extended Price (iznos po stavci) entiteta Or
der Detail ili Units In Stock (kolicina na zalihama) entiteta Product, cuvaju
kao vrednosti iIi izracunavaju kaela zatreba. Ne znamo ni da Ii se zapravo
mogu izracunati. To cemo videti kasnije.
jcste korisl1o, pod /lslovom cia se one lako mogll odrZavati i da se to red()\"ll()
cini (najbolje kao dopunski rezultat nekog drugog posla). OmoguCiti rcecpcio
neru da odgovam na pitanja 0 dostavi robe jeste dobro, <1Ii da Ii .ie to vreclllo
napora kOji bi bio potreban za ul10senje podataka 0 doshlVi Z,\ biljadu poruclz
bina sa1110 da bi ti podaci bili na nlspolaganju petorici kupaca koji se mspituju?
OdluCivanje zahteva S8mo da razmislite 0 posledicama projekt11ih odlub
koje donosite. Ali na to se lako moze zaboraviti pli prvoj odusevljenoj pomisli
"Nije Ii ovo super? Ustedeee 11am onoliko vreme". Kada god unosite mlre
deni podatak negde u sistem, razmislite da Ii se on mozda moze upotrebiti i II
nekom drugom delu sistema, kao podrazumevana vrednost iIi kao uslov za
nesto. Ako ionako unosite podatke za dostavu robe, sto ih ne biste ucinili do
stupnim i recepciollem?
Osim toga, kad koristite odredeni poclatak, razmislite 0 tome gde ce se
on unositi i gde ce se odrzavati, Opste pravilo glasi da je uglavnom bolje da
korisnicima ponudite listu stavki za izbor nego polje za tekst. Ali, popunja
vaBje i oclrzavanje liste stavki ima svoju cenu, kao !ito je ima i izrada odgova
rajuceeg korisnickog interfejsa. Morate pazljivo razll10triti ,we navedene
cinjenice da biste cloneli ispravne odluke 0 modelu podataka.
Naravno, eilj yam je da nikad ne zahtevate da se bilo koji podatak uliosi
dva puta. Ali, po istom principu, ne mozete primoravati korisnike da pri
vremeno prekinu aktivnost kojom su se bavili, da bi uneli poc1atak kOji im je
neophodan da bi obavili posao kOji su zapoceli. 0 tom problemu bice viSe
reci u cetvrtom delu knjige, ali utvrdivanje gde sve nastaju novi podaci i gde
se olli koriste kljucan je prvi korak postupka.
necete biti u stanju cla ill citate, mozetc napraviti i Iistc atrillllta koic stc
iclentinkovali za s\'<iki
Pocnite tako sto tete izabrati jedan
ohicno jedan od llaj\'<lzllijih u
sistemu, a zatim dodajte entitete koji su s njim l1a bilo
naClll po\'czani.
U Split mozete clefinisati i prirodu tih veza ("jedan prema jeclan", "jedan
ma viSe", "vise prema vise"), ili mozete sa1110 nacrtati liniju koja ce vas pod
setiti cIa postoji nekaha veza, koju cete detaljnije analizirati kasnije, .Ta
obicno anclliziram veze dok crtam dijagram, ali vama ce mozcla biti !aIde da
prvo postavite sve entitete i da ih zatim analizirate.
Prva verzija E/H dijagrama za primer obrade poruc1zbina prikazana je na
slid 12-4, To je jednostavan primer i dijagram sc lako cita. (Pretpostavite da
smo se opreclelili za resenje u kome je Salesperson samo atribllt entiteta Sa
les Order a ne entitet sam za sebe,) Ako raclite na sJozenom primeru, mozdn
cete morati da napravite viSe dijagrama kOji opisuju pojecline poclskupove
poclataka. U tom slllcajll korisno je da upotrebite neku vrstu (lutomntske po
drske za izradu clijagrama, U suprotnom, sinhronizovanje tih clijagnlma
moze se ispostaviti kao prilicno nezgodan posao.
Kardinalitet veze
Obaveznost svakog ucesnika
Atribute veze, ako ih ima
Uslove i ogranicenja veze, ako ih ima,
Nije obavezno
samo ako
postoje posebna
uputstva
Pre unosenja
porudzbine mora
biti odobren
kredit
Product
Category
Slika 12-5 E/R dijagram obrade porudzbina nakon podesavanja veza izmedu
entiteta
Obaveznost veza
Posto utvrdite vrste veza izmeau pojedinih entiteta, trebalo. bi da sacla za
svaku vezu odredite da Ii je obavezna za jeclno.g Hi za oba ucesnika. U nasem
pIimeru, veza
entiteta Customer (kupac) i Shipping Method (nacin
dostave) neobavezna je 11 oba smera tj. nije potrebno da za svakog kupca
bude odreden podrazumevani nacin dostave robe, a mogu postojati naCini
dostave koji se ne primenjllju ni za jednog kupca.
Idclltifikovanje
ncposrcdno cleluju nll oclredeni entitd ta
ko(\e je jednostavno. Identifikovanje procesa koji posrecino deluit! na cntitet
1ll0ZC zahtevati nesto viSe posla. 1\ a primer, mozda neee biti oCiglcclno cla
p05tupak 11110Senja porudzbine moze da izmeni poclraz1Il11evani naCin closta
ve robe odrec1enol11 kupeu, nih cia "Specijalni bonus" odrec1en za neku kate
goriju artikala maze da utice na procenat popusta, pa zbog toga i na ukupan
iznos porudzbine. A upravo to su vrste utieaja koje Sll noena mora programe
1'a zaduzenih za odrzavanje, ukoliko nisll detaljno dokumentovane.
Vecina analiticara doh1l11entuje te utic<~e tokom analize rndnih
sto je svakako korisno ako se menjaju procesi. Meautim, ponekad se uvode
izmene samog modela podataka, i to neposredno zbog promene poslovnog
okruzenja, iIi posredno - zato sto postojeCi proces zahteva izmene modela.
U tom slucaju je znatno jednostavnije da u dokumentaciji 0 entitetima po
trazite entitet kOji menjate nego cIa "prekopate" sve racIne procese da biste
njima pronasli sve one na koje ce llticati uveclena izmena.
UkljuCivanje informacija 0 rnclnim procesima u dokllmentaciju 0 entite
Kao i
tima zamislite kao neku v1'stu unakrsne referenee, sto zapravo i
svaki drugi sistem llnakrsnih 1'eferenci, uvodenje i odrzavanje m02e biti za
morno, ali - dllgorocno glecIano m07:e yam znatno olaksati zivot.
Atributi
Poslednji element dokumentacije neophodan za entitete jeste spisak atribu
ta i njihovih domena. Kada sastavljate taj spisak, prenesite na njega spisak
atributa koje ste utvrdili na osnovu izvornih dokumenata, a zatim obavezno
dodajte spoljne kljuceve (ako ih ima) kOji su potrebni za ocuvanje
jalnog integriteta.
Proverite i da Ii svaki entitet ima barem jednog kadidata za Idjuc kOji se
moze upotrebiti za nedvosmisleno identifikovanje svakog primerka entiteta.
On ce postati primarni ldjuc
u semi baze podataka. Imajte u vidu da
plimarni kljucevi ne mogu sadrzati N uIl vrednosti. Iz tog razloga mozda
nece biti uvek moguce da kao kljuc upotrebite postojeCi atribut iIi kombina
ciju atributa. U tahim slucajevima, potreban vam je proizvoljan identifika
tor koji ce sistem automatski gcnerisati.
U nasem primeru, za entitet Customer verovatno je potreban neki takav
vestacki identifikator. Ako pretpostavimo da kupac moze biti firma ili fizicko
lice, pocetna lista atributa moze biti nalik na onu sa slike 12-6.
Customer Entity
CompanyName iii
..".--tCompanyName:Name
Individual Name bite Null~lndividuaIName:Name
Address1 :StreetAddress
Address2:StreetAddress
Suburb:Suburb
State:State
Country:Country
PostalCode: PostalCode
Analiza domena
Na slid 12-6, spisak atributa ima oblik Ime:Domen. Mnogi analiticari zane
maruju postojanje domena i atribute preclstavljaju c1irektno s njihovim tipo
vima podataka i uslovima. Ako zanemarite taj korak postupka,
11
velikom drustvu. To nece biti ispravno, ali te3ko da ce vam to iko zameriti.
"Tip poclataka" d0111ena moze bib i drugi domen. Mozda stc \C(: cleflnisa1i
opSti clomen Datum kOji oclreduje cIa, net primer, svi datumi LI sistemu moraju
bib jeclnaki ili veCi od .1.. januara 1900. godine i formatirani s cetvorocifrenom
goc1inom. Sasvim je prihvatljivo da atribut Datum prodaje definiSete kao "da
tum posle 23. oktobra 1982. godine (datum kad je pocela prodaja)".
Definisanje formata
Nije bas neophodno, ali je cesto korisno da zadate odgovarajuCi format za
podatke u domenu. Ako na jednom mestu zadate da se svi datumi moraju
prikazivati u formatu DD-MM-GGGG, nece biti potrebe da to ponavljate.
"ormalizovanje
Mozda vas iznenaduje to sto se u ovoj diskusiji 0 izradi modela podataka ni
gde ne pominje normalizovanje modela podataka. Iskustvo mi je pokazalo
sledece: ako pocnete od elemenata podataka koje organizujete u entitete, a
usput eliminisete grupe koje se ponavljaju i veze tipa "vise prema vise", ve
rovatno cete doCi do modela podataka koji je u trecoj normalnoj formi.
s\e
0\'0
prilicna ])ovina za
vite, svaki entitet u modelu mom c1a zavisi "od kljuca, celog Idjuca i niceg
osim kljuca".
Sazetak
U ovom poglavlju razmotrili smo izradu konceptualnog modela podataka u
sistemu. Postupak pocinje ispitivanjem svih izvornih clokumenata racli
tifikovanja svih elemenata podataka koji se koriste u sistemu, i koji se zatim
organizuju u entitete. Potom se utvrduju veze izmedu entiteta a zatim se po
jedinacno analiziraju entiteti i njihovi atributi.
U sledecem poglavlju prelazimo na preslikavanje konceptualnog modela
u semu fizicke baze podataka koju cemo napraviti za izabranu masinu baze
podataka.
Arhitekture sistema
Pre nego sto sacinite opis seme baze podataka, morate doneti nekoliko odlu
ka 0 arhitektmi koju vas sistem zahteva. Nazalost, u strucnoj literaturi izraz
"arhitektura" koristi se za opisivanje dva razliCita (mada povezana) modela.
Da bi stvari bile jasnije, jedan od tih 1110dela zvacu arhitektura koda a dru
gi arhitektura podataka. Ali imajte u vidu da su to moji nazivi, i cia je malo
verovatno cia cete na njih naiCi na drugol11 mestu.
Arhitekture koda
Ono sto ja zovem arhitektura koda, u strucnoj literaturi naziva se "aplikativni
model", "slojevita struktura" i "servisni model". Arhitektura koda opisuje
naCin na koji je program ski kod logicki strukturiran. Struktura koda se naj
vise tice izrade aplikacije i kao takva izlazi van opsega ove knjige. Meclutim,
posto od arhitekture koda moze zavisiti da Ii ce usiovi za integlitet podataka
biti realizovani u semi
podataka, ipak cemo je razmobiti u OV0111 pogIa
vIju, mada prilicno povrsno.
U los a stara vremena, sistemske arhitekture bile su monolitne: ogromni
blokovi koda s minimalnom strukturom. Ko god je imao tu nesrecu da je po
kusao da izmeni (iIi da samo sbvati) monolitni sistem bilo kog stepena sloze
nosti, vise nikad nece na isti nacin pogledati tanjir spageta. Da bi uveli malo
201
rectl
zbrku, programeri Sli poceli clet strukturiruju svoj k6c1 U z<lselme k0111
raznih oblika: potprograme, module ili objekte - 11 zllvisnosti oel 1110
gllcnosti programskog jezika. Problem s tim pristupom jeste to sto 1ll11esto
zamrsenih spageta, lako mozete napraviti torteline - nezmisnc manjc blo
kove kada kOji su na neki /latin povezani, ali SVclko mora
pagada na kOji.
Da bi magli da upravljaju tim savremenim testeninama, l1111agi projek
tanti organizuju kOl11ponente u usluge (engl. sel'vices), kaje se ponekad nazi
vaju "slojevi" i kaje obavljaju odrec1ene paslove na datam logickom nivau.
Pastoji bezbroj nacina organizovanja slajeva. Razmotricemo dva najuabica
jenija: troslojni i cetvorosIojni model.
II
Troslojni model
Troslojni model organizuje kOl11ponente u korisnicke usluge (eng!. IIser ser
vices), pasIovne usluge (engl. business services) i usluge podataka (engl. data
services). Komponente koda koje prikazuju podatke karisnicima i odgovarcl
ju na njihove akcije smestaju se u sloj ko1'isnickih usluga. Ceo korisnicki in
terfejs ugraduje se u taj sloj. Sloj poslovnih usluga stanl se 0 pastovanju
poslovnih pravila i proverava ispravnost podataka koje je korisnik lIneo.
Komponente iz slaja pos10vnih usluga rade u sadejstvu i sa slojem korisnic
kih usluga i sa slojem usluga podataka. Komponente koda u sloju usluga
podataka, koje komuniciraju samo sa slojem poslovnih usluga, odgovorne su
za odrzavanje podataka.
Troslojni model je jednastavan i razumljiv, ali sam ustanovila da je njegava
upotreba u praksi problematicna. Uvek se nade poneka vrsta funkcionalnosti
koja se ne uldapa nedvosmisleno ni 1..1 jedan odredeni sJoj. Na primer, recimo
da se odredeni podatak mora fonnatirati pre nego sto se p1'ikaze kOlisniku.
Telefonski broj maze da se euva u bazi podataka kao niz od deset eifaI'a, ali se
plikazuje 1..1 fonnatu (999)999-9999. Da Ii fonnatiranje podataka spada u nad
leznost sloja kOlisnickih usluga ili sloja usluga podataka? Postoje opravdani
razlozi za postavljanje te aktivnosti i u jeclan i u drugi sloj. SHeno tome, da Ii je
upravljanje transakcijama cleo poslovnih usluga iIi usluga podataka? Kacla
paenete da projektujete slozene sisteme u kOjima se koliste hije1'arhijske
stlllkture podataka, donosenje te vrste odluka moze postati "eupavo".
Ako ste uvek dosledni u on0111 sto radite, pretpastavljam cla je nevazno
gcle cete postaviti tu vrsta funkcija, ali je 1..Ipravo to taeka u kojoj model po
staje neupotrebljiv. Ukoliko morate postovati skup spoljnih konvencija - kao
sto je ,,Eormatiranjc podataka pripada sloju korisnickih usluga, a formiranje
hijerarhijskih slmpova podataka pripada sloju poslovnih usluga" slozenost
modela pocinje da potire prednosti koje pruza.
Cetvoroslojni model
Deljenje arhitekture koch na cetlri sloja umesto 11,1 tri e]illli11ise veCinu
b1eJ~la 'koji se pOjavljlljll 11 troslojnom modclll. Cct\'()]'os]ojni model,
cesto naziva "s]ojevita struktura", organizuje kOll1ponente kochl 1I sloj
snickog lnterfe.1sa, slo.1 lnterfejsa za podatke, slo.1 interrejsa za transakeije i
slo.1
za spoljasnji pristup (slika 13-1).
Komponenta
korisni6kog
interfejsa
Komponenta
interfejsa
za podatke
1
Komponenta
interfejsa
za podatke
Komponenta
interfejsa
za podatke
Komponenta
interfejsa za
transakcije
Komponenta
interfejsa za
transakcije
1
Komponenta interfejsa
za spoljasnji pristup
Komponenta interfejsa
za spoljasnji pristup
Slika 13-1
model
ImeKupca ...
Metoda Azurimj zatim sastavlja upit tip" UPDATE, koji prosleduje sloju
interfejsa za spoljasnji pristup na izvrsenje i obraduje greske do kojih pri
tome moze doci. Tn metoda otklanja poslediee greske, aim je to l110guce, iii
prosleduje gresku
lanca pozivanja do sloja korisnickog interfejsa koji
kazuje odgovarajucu poruku 0 gresci.
Sloj intrefejsa za spoljasnji pristup odgovoran je za komunieiranje iz
medu aplikacije i spoljasnjih izvora podataka. U sistemima koji rade s baza
ma podataka, komponente koda na tom nivou staraju se 0 komllniciranju s
masinom baze podataka. One izvrsavajl1 upite i proslecluju njihove rezultate
(iii poruke 0 greskama) nagore duz lanca pozivajuCih komponenata.
U idealnom slucaju, trebalo bi da procedure na tom nivou projektujete
tako da izoluju transakciju od specificnosti masine baze poclataka za koju se
opredelite. Teorijski, trebalo bi da buc1e mogllce da se aplikadja, prvobitno
projektovana da radi s masinom baze podataka Jet, prebaci na SQL
samo uz jeclnostavnu zamenu sloja interfejsa za spoljasnji pristup. U stvarno
sti, to je malo teze izvesti.
Imajte u viclu cIa je sloj interfejsa za transakcije odgovoran za sastavljanje
upita; sloj interfejsa za spoljasnji pristup samo izvrsava te upite. Zbog
sintaksnih razlika izmedu raznih "clijalekata" jezika SQL, prakticna izveciba
tih slojeva retko kad je tako jeclnostavna. Za sImp zapisa kOji se dobija kao re
zultat jednog llpita tipa TRANSFORM u masini baze poclataka Jet, potreb
no je viSe komandi kada se koristi SQL Server.
Ako mozete unapred predvideti sve upite koje ce aplikacija izvrsavati,
sintaksne probleme cete izbed tako sto cete upite ugracliti u sem1.l baze
podataka. U tom slucaju, parametarski upiti mogu hiti veoma korisni. Nema
potrebe da 11 tokll racla aplikacije formirate ceo SQL iskaz koji uCitava poclat
ke 0 kupcu cije je prezime Jovanovic unapred cleHnisanom upitu mozete
proslediti "Jovanovic" kao parameter, Cime pojednostavljujete arhitekturu
koda aplikacije a verovatno i poboljsavate performanse.
Nazalost, nije llvek moguce unapred predvideti sve moguce upite koji
biti potrebni, narocito ako korisnicima pruzate mogucllost izvrsavanja ad
hok upita. U tom slucaju je gotovo nemoguce potpuno izolovati sloj inter
fejsa za transakcije. (Dosacl nisam nasla POtPUllO resenje problema; ako vi
smislite, bicu yam veoma zahvalna ukoliko
podelite sa mno111.) A do tacla,
l110zda cete morati da napiSete malo dodatnog kocla koji ce se uslovno izvrsa
vati u komponentama sloja interfejsa za podatke.
ce
ustedeli ste stotine redova koch II c1rugim clelovima sistema. OS1111 toga,
Jedini slucaj kada cete morati da napiSete novu komponentu u sloju inter
fejsa za spoljasnji pristup jeste kada se promeni masina baze podataka iii
objektni model.
Arhitektura koda koju izabcrete utice na semll baze poclataka u dve oblasti:
izolovanje sloja interfejsa za spoljasnji pristup (iii sloja usluga za podatke,
ako koristite troslojni model) i provera ispravnosti podataka. Vee je bilo reei
o izolovanju sloja interfejsa za spoljasnji pristup od promene masine haze
podataka, koje se postize predvidanjem potrebnih upita i njihovim ugradiva
njem u semu baze podataka. Dodatna prednost tog resenja je poboljsavanje
perfornumsi, ponekad cak znacajno. Provera ispravnosti poc1ataka nesto je
zapetljanija. U poglavlju 19 detaljno cemo razmotriti 3ta" i "kako" u proveri
podataka. Ovde cemo se baviti sa "kada" i "gcle".
::-.Jeki projektanti smatraju da svu funkcionalnost koja se tice provere
ispravnosti podataka treba ugracliti u samu masinu baze poclataka. To rese
nje nije bas bez ikakvih prednosti: svi uslovi integriteta poclataka i poslovna
pravila realizuju se na jeclnom mestu,
se lako mogu Hzurirati. Nazalost,
to
nije ni bel'. nedostataka.
Prvo, neka se pravila pros to ne mogu realizovati na nivou masine baze
poclataka. Na primer, posto masina Jet ne poclrZava okidace, nemogucc je
obezbediti postovanje pravila koje zabranjuje menjanje vrednosti primarnog
kljuca nakon unosenja zapisa u baw. Cak i u SQL Serveru, koji pruza viSe
l11ogucnosti u toj oblasti, ne mozete realizovati bas svako pravilo direktno u
masini baze podataka.
Drugo, cekauje da
proslede masini haze podataka kako hi s('
onda proverila njihova ispravl1ost, moze
smanji upotreblji\'()st siste
ma. Opste pravilo glnsi
ispravnost podataka treba proveravati 6111 1h
risnik unese. U nekim slucajevima, to znaci da se ispravnost unetog podatlm
proverava 6m korisnik pritisne neki taster, npr. kada sprecavate llnosenje
slova u numericko polje. U drugim slucajevima, ispravnost poclataka treba
ela proveravate kaela korisnik iz tekueeg polja prec1e u clrugo ili kada dode u
poslednje od odredenog nizn polja, npr. kaan nameeete pravilo cIa Zeljeni
Dah~mDostave mora biti jednak DatumuPorudzbine ili mlac1i od njega.
Cak i u samostalnoj aplikaciji koja radi na lokalnoj masini, rezultat prosle
divanja skupa podataka masini baze podataka nakon svakog pritiska na taster
jesu katastrofalno
performanse. A ako podatke prosledujete preko lokal
ne mreze ili preko ne smem ni da pomislim mreze sirokog opsega iIi
tern eta udaljenoj masini baze podataka, perfonnanse ee biti toliko lose
ce
kOlisnicima biti bolje da predu na papirne kartoteke (sto ce mozda i uciniti).
Ukoliko se celokupna provera ispravnosti poclataka obavlja na serveru,
jedino resenje je cla se podaci proslede masini baze poclataka racli provere
ispravnosti tek nakon popunjavanja celog zapisa. Meclutim, 11 toj fazi, kori
snik je vee presao na drugi posao. Obavestenje 0 problemu kOji se oclnosi na
podatke unete pre clesetak milluta samo ometa i zbunjuje korisnika.
Da bi se sistem
odazivao i bio !ito upotrebljiviji, proveru isprnvnosti
podataka morate ugracliti u aplikaciju. Ako bazu podataka koristi samo jedn,\
aplikacija i ako su pravila za ispravnost podataka relativno stabilna, mozeIa
cete se oprecleliti cia proveru ispravnosti podatakn obavljate It potpltl1Osti na
nivou aplihlcije i cIa niStn od toga ne prepustite masini baze podataka. Time
se stecli trud, ali je to resenje prilicno opasno.
Ako se kasnije pojavi druga aplikacija koja mdi sa istom baZ0111 podataka,
niSta osim dobrih namem ne sprecava novu aplikaciju cla nenamerno narnsi
integritet baze poclataka, a svi znamo koji je put poplocan dobrim namera
ma. Cak i ako se baza podataka nece deliti s elrugom aplikacijom,
je
ostetiti korisnici kO.1i pristupaju podacima u n.1oj pomoeu ad hok alatld kao
sto su Access iIi SQL Server Enterprise Manager. Strog bezbednosni model
koji zabranjuje svaku izmenu podatnka osim preko aplikacije, moze cIa clo
prinese sprecavanju tahe sutuacije, ali po cenu prevelikog ogranicavanja
pristupa podacima, sto moze biti neprihvatljivo.
lz navedenih razloga, smatram da
najbolje resenje da se ispravnost
podataka proverava i u aplikaciji i u semi
podataka. Access to Cil1i auto
matski. Kada za odredeno polje definiSete pravilo ispravllosti podataka nn
nivou tabele, H zatim ga prevucete na vezan obrazac, obrazac nasleduje pra
vilo ispravnosti.
Arhitekture podataka
Osim donosenja odluka 0 tome kako cete strukturirati program ski k6cl svog
sistema, morate se opredeliti i za odredenn arhitekturu podataka. Podsetite
se iz prvog pog1avlja cIa se sistern kOji radi s bazom podataka sastoji ocl viSe
zasebnih komponenata: same aplikacije, rnasine baze podataka i baze poc1a
taka (videti sliku 1-1). Na osnovu cetvoroslojnog modcla kocla, tu strukturll
1110ze1110 malo doterati, kao sto je prikazano na slid 13-2.
Komponenta
korisnickog
Komponenta
interlejsa za
podatke
Komponenta
interfejsa
za transakcije
Aplikacija
Komponenta interfejsa
za spoljasnji pristup
Slika 13-2 Sistem koji radi s bazom podataka sastoji se od sest odvojenih
slojeva
Jednos/ojne arhitekture
Product Name
Call1emilrt Pierro(
CarnaNon Tigers
Louisiana Fiel)' Hot Pepper Sauce
,Perth Pasties
1
Slika 13-3 Indeks je neka vrsta mini tabele, u kojoj su zapisi poredani
odredenim redosledom
"AUTOMIT"
1\1\0 tabela llcma ni incleks, ni primami kljllc, m<tsina baze padataka Jet
mom da proCita svaki od onih 100.000 zapisa cia bi utvrclila koji I11cdu njima
ispulljavaju zadati uslav. To znaci da ce kroz mrezu yutovati najlllanje J50
megabajta podataka. Ako postoji
za kolonu SifraKupea, cksplieitllo
cleklarisan ili zato 5to je ta kolona primarni kljuc, masina baze podataka Jet
procitace samo taj indeks, !ito ce verovatno bib tek nekoliko kilobajta poda
taka, i zati111 brzo pronaCi trazeni zapis u izvornoj tabeli.
Poboljsanje perform ansi uslecl upotrebe incleksa maze biti iZllzetno veli
ko, ali razume se, ima svoju cenu. Oclrzavanje indeksa je doclatan posao i
opterecenje za masinu baze poclataka: kad god clodate iii azurirate neki zapis
u tabeli, masina baze podataka mora cla azurira i indekse za tll tabelu. Taj
cloclatan posao obiCno je zanemarljiv, ali ako za datu tabelu imate preveliki
broj incleksa, to moze cla pogorsa performanse. U ekstremnom sillcajll, vre
me potrebno za odrZavanje indeksa premasice vreme koje stedite njihovom
llpotrebom.
Dvoslojne arhitekture
"AUTOMIT"
N-slojne arhitekture
0.lctlutim, kad,l Sc: bazi poc\ataka pristupa preko lnterneta, server haze
podataka \'iSe 11e oc1rzm<\ poclatke 0 stanju. Kad gm1 aplikacija posa)je zahtev
serveru haze poc1ataka, mora ponovo da t1spostavi \'CZU s njim i cIa P0l10VO
proslecli svoje identiflkacione podatke. Kada server baze podataka ohracli
primljeni zahtev, "zaboravlja" sve 0 aplikaciji koja je poslala.
Nekael su nepovezane arhitekture bile ogmnicene na Internet i intrane
te, ali posto sada tn arhitekturu namece ADO. NET, bez obzira na fizicku ar
hitekturu, post~~e sve teze izbeCi je.
U veCini okolnosti, mali dodatan posao ponovnog uspostavljanja veze pri
svak0111 110vom zahtevu vrlo malo utice na sistem koji radi s bazom podataka,
a svakako l1ema nikakav uticaj na semu baze podataka. Medutim, cinjenica
da se na Internetu ne cuva stanje, svakako utice na aplikaciju i zbog toga
moze zahtevati izmene seme baze podataka.
Vecina Internet aplikacija nastoje da budu laki klijenti (eng!. thin cli
ents). To znaci da aplikaeije obavljaju sto je moguce tllanji deo obrade na ldi
jentskoj strani, kojoj se obicno dodeljuju samo poslovi vezani za korisniCki
interfejs. Ali zamislite upit kOji ueitava veliki broj zapisa viSe nego sto moze
da se prikaze na jednom ekranu. U tradicionalnoj aplikaciji, skup rezultata bi
se u tom slucaju smestio u kes - na klijentskoj strani iii na selveru.
Meautim, u Internet aplikac.:iji, rezultati se ne mogu kesirati na ser
verskoj strani jer selver ne bi znao kuda da posalje sledecu grupu zapisa.
Ako se rezultati kesiraju na klijentskoj strani, komponente koje manipulisll
poc1acima (sloj interfejsa za transakcije i sloj interfejsa za spoljasnji pristup)
moraju se takoae nalaziti na klijentskoj strani, ate komponente svakako nisu
"lake". Cak su i prilicno "teske".
ActiveX Data Objects (ADO) i Netov Framework stavljaju na raspo
Iaganje mehanizam nazvan stranicenje (eng!. paging) za obradu takvih sluca
jeva, Stranicenje omogucava da zadate broj zapisa kOji zelite da ucitate iz
skupa rezultata. Slieno je odredbi TOP K standardnog SQL-ovog iskaza SEL
ECT, s tom razlikom sto imate mogucnost da zahtevate i "K zapisa iz sredine".
Na selverskoj strani, stranicenje izaziva ponovno izvrsavanje upita lmcl
god korisnik zatrazi novu stranicu. To nije problem kada upiti imaju prihva
tljivo vreme odziva. Pri slozenim upitima, kOji se relativno sporo izracuna
vaju, imate veliki problem. Aplikacija koja svog jedinog kOlisnika primomva
da ceka nekoliko minuta, jedva je prihvatljiva. Ali aplikacija koja primonlva
vise hiljada korisnika da cekaju nekoliko minuta kad god hoce da vide sle
deCih pet zapisa, zavrsice u korpi za otpatke, gde joj je i mesto.
Ako imatc problem sa slozenim upitom II nepovezanoj aplikaciji, postoji
nekoliko resenja. PIVO, koje je u veCini slucajeva i najpreporucljivije, jeste da
optimizujete upit "do daske". Upotrebite privremene tabele, denormaliznjte
podatke, uradite sve sto treba da biste vreme odziva smanjili na prihvatljiv
nivo.
Us 10 vi
Kao sasta\'ni
postupka cleflnisanja konceptualnog Jl10dcla podataka, dcfl
nisali ste i uslove za entitete, atribute i clomene. Da Ii cete te uslm'e preslikati
11 semu haze podataku, zavisi
kao sto smo videli ocl izabrane arhitekture si
stema, Klto sto sarn vee pomenuJa, neki projektanti najradije realizuju we
uslove iskljucivo u sloju interfejsa za podatke i u sloju interfejs't za transakcije
cetvoroslojnog modela, odnosno u sloju poslovnih usluga, u troslojnom
modell!.
U veCini s]uc<\jeva, preporucujem vam da uslove realizujete na oba
nivoa. Pod pretpostavkom da se slazete sa I11nom i c1a ste se opredelili cIa tlS
love realizujete u samoj bazi podataka, deflnisacete ih kao sastavni deo seme
baze podataka, Healizovanje integriteta podataka detaljno smo razmotrili u
poglavlju 4, ali korisno je da to ovde ponovimo.
Vecina uslova za domene i atribute, u semi baze poclataka preslikaee se u
uslove za polja u Aeeessu najcesee kao pravila ispravnosti podataka. Access
takode podrZava odredbu CHECK koja se koristi na SQL Servern ako se
opredelite da bazu podataka napravite pomocu SQL-ovih komandi umesto
pomocll DAO objekata iIi Accessovog korisnickog interfejsa.
Uslovi koji vaze za entitete obicno postaju uslovi koji vaze za tabele, a
oni se takode mogu zadati kao pravila ispravnosti podataka iIi kao SQL-ovi
uslovi tipa CHECK. Uslov za integritet entiteta, prema kome svaki primerak
entiteta mom da se identifikuje na nedvosmislen nacin, mozete obezbecliti
tako sto cete definisati primarni kljuc za svaku tabelu.
Bez obzira Illt to da Ii bazu podataka clefiniSete za SQL Server ili za
masinu baze podataka Jet, moze se clogoditi da ustanovite kako se neld uslovi
definisani u konceptualnom modelu podataka ne mogu zadati kao sastavni
deo definicije tabele. Na SQL ServeI'u, ispunjavanje takvih uslova mozete
obezbediti pomocu okidaca, BuduCi da masina baze podataka Jet l1e podrza
va okidace, ispllnjavanje tih uslova l110rate obezbediti u koelu aplikacije.
Veze izmedu entiteta
Prikazi i upiti
I Access i SQL SelYCr omoguc.avaju sklaclistcnje SQL-ovih iskaz<l SELECT.
Ti uskladisteni iskazi zo\'u se prikazi (engl. viuu.:s) II SQL Scrveru i upiti
(eng!. qlleries) u Accessu. (J a ell ill u ovoj knjizi nazivati upiti jer je to llohic<l
jeniji izraz.) U veCini sluCajeva, llpotreba usklac1istenog llpita br7.tl oel izvr
savanja iskaza SELECT sastavljenog po potrebi; to nije bas uvek tacno, ali
situacije u kOjima to ne va7.i toliko Sll retke cia se navedeno moze smatrati
opstim pravilol11.
Koje eete upite ukljuciti II semu baze podataka, oclredicete tako sto cete
u konceptualnom l110delu podataka potraziti slozene entitete. I majte u vidn
da je slozeni entitet logicki entitet kOji se zbog efikasnosti l110deluje p0l110ell
dve iIi viSe tabeIa. Trebalo bi cla u semu baze poclataka ukljuCite svaki upit
kOji denormalizuje slozeni entitet u vasel11 modelu. VeCina tih entiteta bice
tabele izmedu kOjih postoji veza tipa "jedan prema vise", kao iZl11edn tabela
Porudzbine i Stavke Porudzbine, ali se l110ze desiti i cla imate slozene entite
te s potklasama, izme(iu kojih postoje veze bpa "jedan prema jedan", pa i za
njih morate do dati upite da biste ih podrZali.
Korisnicima ee cesto trebati da pronadu odredene zapise u primarnim
entitetima sistema - na primer, datog kupea ili porudzbinu a to je druga
oblast u kojoj treba traziti upite kOji ce biti ugradeni u senm baze podataka.
Trebalo bi da sve te uobiCajene pretrage podrZite p0ll10ell parametarskih
upita koji korisnicima o11logucavajll da II vreme izvrSClvanja aplikacije zadaju
zapis kOji illl treba.
Ponekad ee bib potrebno da za isti entitet obezbedite vise upita tipa
"pronadi". Na primer, korisnikll l110ze da zatreba da pronacle poruclzbinll na
osnovu DatumaPorudzbine, SifreKupca iii BrojaPoruclzbine. Sve te opcije
treba podrzati pomocll zasebnog parametarskog upita.
S druge strane, korisnici nece pretrazivati bas sve tabele. U semi baze
podataka mozete imati tabelu koja sadrzi sve opstine u drzavi. Tal<ve refe
rentne tabele su izuzetno kOlisne, ali .Ie i izuzetno malo verovatno da ee kori
snici ikada traziti zapis 0 odredenoj opstini.
TrebaJo bi da takocle potrazite moguce upite i U obrascima i izvestajima
kOji se koriste u aplikaciji. Trebace yam upiti za povezivanje polja i upiti za re
ferentne podatke, kao sto su oni za prikazivanje pomOCtl padajuCih lista. Ako
U sistemu postoje zavisnosti izmedu obrazaca, trebace vam parametarski upiti
da biste i to podrzali. Primer
moze biti ohir za dijalog kOji se poziva jz
obrasca za unosenje porudzbina radi prikazivanja podataka 0 KUpCll.
U zavisnosti oel radnih procesa koje stc otkrih II sistemll, II selllll haze
poelatab llkljllcicete llpite (a na SQL Se\'eru mozda llskladistene procedure)
koje
izvrsavaju
.
. oclreciene akC:ije.
. Ako znate cla ce sistem reclovno arhivirati
stare poruclzbine ili azurirati cenovnike artikala, eflkasnije je da te aktivnosti
poclrzite pomocll upita iii uskladistenih procedura umesto cla potrebne ko
mancle ponovo formirate kad god zatreba.
Tokom izrade sistema, semu baze podataka verovatno cete dopuniti clo
datnim akc:ionim upitima. Za razliku od indeksa, posto upiti i uskladistene
procedure ne uvode nikakvo doclatno opterecenje sistema pri llpotrebi, ne
mojte se ustrucavati da ih dodate u semu baze podataka.
Imajte u vidu da razvoj sistema nije strogo lineman postupak. Dok izme
ne struktura tabela tokom izrade sistema mogll da budll llzrok problema
(a sto je vise oclmakao postupak razvoja, veCi ce biti i problemi), dodavanje
novih upita u semu trivijalan je posao koji treba ocekivati.
Zastita sistema
Posto dobro upoznate radne procese u sistemu i napravite konceptualni mo
del podataka, morate razmotriti administrativne zahteve sistema. Admini
strativni zahtevi ne moraju direktno uticati na semu baze podataka, ali su oni
poslovna pravila koja se ipak moraju poclrZati u verziji sistema koja ce uCi II
redovnu upotrebu.
Administrativni zahtevi su, II izvesnom smislu, "metazahtevi", po tome
sto se odnose na sam sistem a ne na prostor problema koji sistem modeluje.
Mogu se razvrstati u dye kategorije: bezbednosni zahtevi, kOji odreduju ko
moze da pristupa sistemu; zahtevi u pogledu raspolozivosti, koji odreduju
elemente kao sto su koliko cesto sistem mora biti dostupan (24 sata dnevno,
sedam dana u nedelji, iii samo u uobicajeno radno vreme, na primer) i kako
ce korisnici praviti rezervne kopije podataka. Posto je raspolozivost sistema
gotovo u potpunosti pitanje njegove fizicke izvedbe, ovde cemo razmotriti
samo probleme zastite sistema.
Razrada bezbednosne strategije moze biti slozen posao. Srecom, postup
ci su dobro dokumentovani za Access i masinu baze podataka Jet, kao i za
SQL Selver. Sto je jos veca sreca, posto je dizajn baze podataka odvojen od
njene prakticne izvedbe, tokom te faze postupka potrebno je da razmotrite
logicke bezbednosne mere, ana logickom nivou principi su jednostavni.
Nivoi zastite
Pno moratc utvrcliti kOji nivo zastite potreban. Imajte II vidll cla se 11 mom
slucaju radi 0 zastiti }loria/aka, a ne programskog koda sistema, sto pitanje
pmkticne izvedbe sistema. Najnizi ni\'o zastite je potpuno nezasticen sistem
koji dozvoljava plistup bazi podataka svakome, u svako doba. Takav sistem
oCigledno lako napraviti i administrirati jer ne treba da uradite nista posebno.
Me(tutim, ako podaci imaju bilo kakvll vrec1nost, izrac1a potpuno ne
zasticenog sistema predstavlja veliku nemarnost. To ipak moze biti opravda
no ako klijent u svojoj mrezi preduzima mere zastite pomocu kOjih moze
ograniciti pristup podacima. Nema potrebe da vi duplirate te mere zastite.
SledeCi nivo je zajednicki nivo zaStite (engl. share-level security) Na
tom nivou, doc1eljujete lozinku koja omogucava pristup celoj bazi podataka,
a svako ko zna tu lozinku moze da pristupa sistemu. Takva vrsta zastite ta
kode se lako pravi i aelministrira, a zahteva samo povremene izmene lozinki.
Zajeelnicki nivo zastite je dovoljan u mnogim situacijama.
Zastita na nivou pojedinacnog korisnika (engl. user-level security),
iako zahteva vise trucla za izradu i administriranje, omoguCava najdetaljniju
kontrolu nad bazom podataka. ZaStita na nivoll pojeelinacnog korisnika 01110
gucava administratoru sistema da svakom korisniku pojeclinacno clocleljuje
tacno odredena prava: "Mika 1110ze ela dod,~je i azurinl podatke entiteta
Kupci ali moze samo da gleda Porudzbine. Jelena i Mika mogu cla unose
nove i da azuriraju postojece podatke u entitetima Kupci i Poruclzbine. Ni
Mika, ni Je1ena ne mogu da briSu zapise iz tih entiteta".
U stvmi, nazvati taj mehanizam zastita na "nivo11 kOlisnika" p0111a1o navo
eli na pogresan zakljueak Bezbednosne plivilegije mogll se dodeljivati korisni
eima pojedinacno, ali se mogu clodeljivati i opstim kOlisnickim u10gama (engl.
roles) kojima se potom pridruzuju pojedinacni korisnici. To je efikasniji me
banizam za pIimenu zastitnih mera jer zahteva znatno manje administriranja.
U tom mode1u, morate najpre utvrditi kategorije korisnika - administra
tori sistema, operateri za unosenje porudzbina, referenti prodaje itd. - a za
tim treba ela oelredite bezbednosne privi1egije koje su neophodne svakoj
kategoriji (u1ozi) za svaki objekat u sistemu. Nije neophodno da dodeljujete
prava za same objekte koji predstav1jaju podatke; u stvari, bo1je je cia to ne
Cinite. Mozete oelrec1iti ela .Ie referentima prodaje potrebno da clodaju, Hzuri
raju i brisu zapise iz tabele Kupci, ali ne zelite ela oni bilo sta petljaju sa sa
mom tabelom. '\10zete im staviti na raspolaganje obrazac za odrzavanje
podataka u tabeli Kupei, ali im necete elozvoliti da pristupaju elirektno samoj
tabeli. Tako iskljucujete mogucnost ela oni nenamerno zaobi(tu oclreclenu
posebnu obradu koja se pokrece iz koela obrasca za oelrzavanje.
Sazetak
U OVOI11 poglnvlju, mzmotIili smo preslikavanje konceptualnog modela poda
taka u semu fizi6ke baze podataka. Prvo smo proucili dve arhitekture za
strukturiranje koda u sistemu - troslojni model i cetvoroslojni model- prven
shreno sa aspekta kako izbor arhitekture koda utice na semu baze poc1ataka.
05im toga, razmotrili smo nekoliko moguCih arhitektura podataka. U jed
noslojnom sistemu, aplikacija i podaci smesteni su na istom logickom racu
naru. Jednoslojna aplikacija moze raditi kao samostalna aplikncija, iii se poclaci
mogu nalaziti na nekom racunaru u mrezi, ali biti dostupni samo jednom ko
risniku. Mrezne aplikacije koje rade s 111asin0111 haze podataka Jet takode su
logicki jednoslojne, ali podacima moze plistupati vise kOlisnika istovemeno.
Dvoslojne, iii klijenllserver aplikacije mozete praviti P0ll10CU SQL Ser
vera. U toj logickoj arhitekturi, serverski racunar direktno manipuliSe poda
cima, dok klijent komul1icira s korisl1iko111. OSl1ovni principi clvoslojnih
aplikacija mogu se prosiriti na tri iii vise racunara da bi se dobilo ono sto
poznato kao n-slojna aplikacija.
Potom smo preSJi na preslikavanje konceptualnog l110clela podataka 11
semu baze podataka. To je obicno jednostavan po stupak jer je jeclini nov po
sao definisanje indeksa i upita koji ce se koristiti u bazi podataka. I najzacl,
obradili SIno posledice koje bezbednosni zahtevi mogu imati po semu baze
poclataka, a zatim smo ukratko pogleclali zastitne mere na logickom nivou.
U sledecem poglavlju, razmotriCemo ukratko neke probleme predsta
vljanja projekta sistema klijentu i razvojnom til11u.
Predstavljanje projekta
Ako sistem koji radi s bazom podataka ne pravite za lienu upotrebu, morate
biti u stanju da rezultate svog rada predstavite drugim ljudima. Obratite
paznju na to da sam upotrebila ree "predstaviti", a ne "dokumentovati". Kao
SCl';tavni deo predstavljanja projekta, moracete da napravite barem jedan do
kument, ali videla sam bas preveliki broj analiticara Cija se "dokllmentacija
projekta sistema" sastoji od recnika podataka, slika ekrana i uzoraka izvesta
.la, a tome nije pridruzeno niSta sto bi objasnilo kako su ti elementi medu
sobno povezani.
Sva dokumentacija ovog sveta nece posluziti nicemu ako je nerazllmljiva
i nepregledna. Kao sto ne mozete naueiti strani jezik samo citajuCi recnik za
taj jezik, tako ne mozete ni shvatiti projekat ako samo eitate tabele njegovih
podataka.
A sada, moje lieno misljenje: buduCi da je za ovaj posao apsolutno neop
hodna osnovna sposobnost izrazavanja u pisanoll1 obliku, ako imate izvesne
snl1mje po tom pitanju, nabavite dobru knjigu (neke od l110jih omiljenih na
vedene su u bibliografiji) iii se upiSite na neki kurs iz te oblasti. Gamntlljem
yam da je to dobro utroseno vreme. Ako je vase znanje gramatike manjkavo,
vasi klijenti ce se sigurno pitati sta .i0s niste razumeli kako bi trebalo. (Kraj
moje propovedi.)
225
osl':ariti postavljene ciljeve. Vasim klijentima nije potrebno (niti zcle) (la ra
zumeju detalje prakticne izvedbe sistema. Ali ako ce c10kmnent biti osnova
za razyoj, potrebno da razvojni tim Doci sve one skaklji\'e cletalje zhog ko
jih ce klijent prevrtati oeima.
Ponekad je najbolje resenje da pripremite vise dokumenata: jeclan za
klijenta i drugi, razlieit, namenjen razvojnom timu. To je narocito dobro
resenje ako koristite iterativni razvojni model jer se tesno poklapa s mode
10m. U takvim situacijama, pravim sledece dokumente:
Specifikaciju zahteva, namenjenu prvenstveno kIijentu, koja opisuje
moje razumevanje sistema, izrazeno (relativno) netehnickim termi
nima.
Specifikaciju arhitekture, koju ce Citati i klijent i razvojni tim, ali koja
je ipak namenjena prvenstveno ovom drugom. Taj dokument detalj
no opisuje veze i zaviSllosti izmedu k0111punenata.
Zasebnu tehnicku specifikaciju svake komponente, koju ce koristiti
razvojni tim.
Za jednostavnije sisteme, obicno je dovoljan sa1110 jedan dokument.
Obavezno razmotrite potrebe svake ciljne grupe i svakoj pruzite informacije
koje su joj potrebne, u obliku kOji ce lako razumeti.
truktura dokumenta
Ako organizacija za koju radite nema specificne standarde za dokumentaciju
koje cete rnorati da primenite, konacna struktura vaseg clokumenta zavisice
od njegovog opsega i vaseg licnog ukusa. Moze biti jednostavan iIi slozen ko
liko vi smatrate da treba; ne postoji standardizovan format. U OV0111 pogla
vlju dajem nekoliko opstih smemica, ali to einil11 uz pretpostavku da cete ih
prilagoditi svojim potrebama.
Ako ste sleclili moje preporuke za analizu sistema, ustanovicete cia se clo
kllment sastoji od nekoliko jasno definisanih odeljaka kOji 5e (ne sasvim slu
cajno) poklapajll s poglavljma iz treceg dela knjige. Verovatno cete cloclati i
neki Uvod iii Sazetak namenjen rukovodstvu.
Sazetak za rukovodstvo
U velikim organizacijama, razvojne projekte ccsto nadgleda komisija za raz
voj. Cak i za manje projckte, obicno neko iz rukovodstva ko nije neposrcdan
ucesnik projekta im<1 nadzornu ulogu iIi se stam 0 budzetu projekta. Ako
neko nadglecla vas projekat, korisno je da u dokumentaciju ukljueite oc1eljak
"Sazetak za rukovodstvo", direktno namenjen toj osobi.
Te osobe uglavnom nisu zainteresovane za detalje sistema, vee imaju ne
koliko specificnih pitanja na koja zele odgovore, a sto im efikasnije odgovori
te, to bolje. Rukovodstvo zahteva odgovore na pitanja sliena sledeCim:
Ako
realno dn kazete nesto poput "zasml .ios llije mogllce proceniti
ukupno vreme iii troskove do potpunog uvo(lenja u reclovnu upotrebu, ali
ocekujemo da ce to biti nesto U opsegu ocl x do y. Meclutim, za zavrsetak na
reeIne f:lze bice potrebno samo .::;, a njen rezultat ce biti ...", trebalo bi (b to
bude prihvaceno. Postarajte se samo eIa 0110 sto sledi iza "rezultat ce biti ... "
bude realno izvodljivo i dovoljno korisno za organizaeiju. Prema mom isku
stvu, ljudi su vrlo nevoljni da plate za "dodatna istrazivanja".
Ustanovila sam i da je pravilna obrada poslednjeg pitanja, u vezi s rizici
ma, jedan od najefikasnijih nacina da obezbedite kredibilitet kod klijenta.
Posvetite izvesno vreme razmiSljanju 0 tome sta bi sve moglo luenuti naopa
ko. Postoje Ii tehnicki problemi kOji nisu reseni? Da Ii se stvari mogu oduziti
vise od ocekivanja? Cde? Zasto? Budite paranoicni.
A onda se vratite u stvamost i budite realisticni. Kolika je verovatnoca da
ee se te stvari zaista dogoditi? Da, maze se dogoditi da ceo vas razvojni tim
bude izbacen iz stroja zbog neocekivane epidemije kuge, ili da iznenadna po
plava uniSti prostOtije u kojima radite. Ali sve to nije mnogo verovatno. Ono
sto jeste verovatno jeste da ce tokom projekta ndfto krenuti naopako, a ruko
vodstvo zeli da zna da ste uzeli u obzir moguee probleme i pripremili odgo
varajuce pIa nove za takve slucajave. Ne morate da navedete bas sve, vee
mozda u nekoliko pasusa samo eIva iii tli najveca problema koji vas brinu, ali
vazno je da pokazete da ste uzeli u obzir odredene rizike i probleme.
Ako ste spoljni konsultant, preporucujem yam da ne zabasurite pitanje
svoje struenosti. OCigledno je da ce prvo pitanje onoga ko vas angazuje za
posao bib da Ii ga vi mozete obaviti. Sazetak za rukovodstvo verovatno nije
najbo1je mesto da navedete svoje struene reference, ali bi trebalo da obradi
te potencijalne rizike ukoliko posao ne bude dobro uraden. Detalji pregovo
ra po tom pitanju zavise iskljueivo od vas; ne mogu yam niSta preporuCiti u
vezi s time. Iskustvo mi je pokazalo da direktan razgovor na tu temu dopri
nosi uspostav1janju vaseg kredibiliteta kao pos1ovne osobe.
lpis sistema
Bez obzira na to da Ii ste ukljucili formalni Sazetak za rukovodstvo ili manje
strukturiran Uvod, prvi ode1jak "pravog" dokumeneta je Opis sistema. To je
jedini odeljak dokumenta u kome su sliene potrebe svih kategorija Citalaca
dokumenta. I razvojni tim i klijent treba da razumeju opSti opseg projekta.
Razlikovace se samo nivoi detalja.
Ako niste pripremili formalni Sazetak za rukovodstvo, trebalo bi da neke
od infonnacija koje bi inace bile u tom odeljku navedete u ode1jku Opisi si
stema. Cak i ako ste pripremili Sazetak za rukovodstvo, moze biti korisno da
ncke teme sHdn detaljnije rnzradite, Druga mogucnost jc cIa neka pitanja
kao sto su porcdenje alternativnih resenja iIi opis moguCib rizika budu to
liko opsezno opisana da opravdavaju zasebne odeljke,
Bez obzira na to da Ii cete u dokument ukljuCiti i ta pitanja, vas glavni cilj
u ovom odeljku jeste da pruzite "veliku sliku" sistema, sto bi trebalo da po
stignete opisivanjem parametara sistema, tj. navodenjem cilja i opsega siste
ma, projektnih uslova i mazda - kratkag pregleda radnih procesa,
Ne maze se reCi mnago toga 0 predstavljanju cilja i opsega sistema. Ako
ste ih razumeli, opisite ih izrazima koje vasa ciljna grupa moze da razume.
Ako ih niste razumeli, vratite se na njih i pokusajte da ih shvatite.
Ponovo, preporucujem yam da budete sto izricitiji 0 oblastima koje su is
kijucene iz opsega sistema, sto vazi i za one koje ce kasnije mozda ipak biti
realizovane. Navedite sve sto moze naknadno biti ukljuceno u sistem, cak i
ako ste se zasad opredelili da odredenu oblast iskljucite iz opsega sistema.
Posvetite izvesno vreme identifikovanju oblasti za koje vi mislite da bi se
mogle ukljuCiti u sistem, ali koje nisu ~ikad bile izricito razmatrane. Ovo je
mesto i vreme da se uverite da i vi i vas klijent radite sa istim pretpostavkama.
Ako ste pripremili analizu troskova i dobitaka sistema, trebalo bi da je
ukljucite u ovaj dokument, ali ne obavezno u ovaj odeljak. To je pitanje stila,
ali Hcno ne volim da u glavni dokument umecern stranice i stranice pune ta
bela. Dokument je znatno Citljiviji ako u glavni dokurnent ukljucite samo
sazete informacije mozda jednu iIi dye tabele - a ostatak srnestite u odgo
varauCi prilog dokumentu.
Isto vazi i za dokumentovanje ciljeva i opsega sistema. Mazda ste pripre
mili detaljnu analizu funkcionalnosti, s pozivanjem na ciljeve i podrSku, koja
je cak i normalizovana po vaznosti ciljeva. To je odlicna aIatka koja ce biti ko
risna tokom izrade celog projekta. Medutim, ako je tabela duza od jedne
stranice, pre spada u prilog nego u glavni tekst. U glavni dokument ukljucite
samo saZetu tabelu s tekstualnim opisom i uputite citaoca na odgovarajuci
prilog ako zeli vise detalja.
Radni procesi
Najbolji nacin da predstavite radne procese sistema zavisi od oblika u kome
ste ih vi zabelezili za sebe. Ako ste upotrebili hijerarhijski format, mozete ga
umetnuti u tekst. Ako ste pripremili dijagrame radnih procesa, kOlisno je da
i njih umetnete u dokument. Nemojte pri tome zaboraviti da dodate i obja
snjenje simbola koje ste koristili. U oba slucaja, obavezno objasnite 5ta pod
razumevate pod recima "proces", "posao" i "aktivnost" (iii drugim recima
koje koristite).
Bez obzira nn oblik 11 kome opisujete radne procese, dodajte i opis ohic
nim recima. Prvo, tekstualni opis je provera formalnog upisa. Zac'ucllljllCe je
koliko ('etc malih gresaka otkriti nn taj naCin.
Drugo, oc1 kljucne je vaznosti cia klijent ispita tac;nost opisa ndnih pro
cesa, a iskllstvo mi kaze da Ijudi hijerarhijske prikaze i dijagrame vise gledajll
nego stu ih zaista razumeju. Ako date i graficku i tekstualnll verziju, pocl
sticete Citaoce cia ih bolje razumeju, a oba oblika predstavljanja infonnncijel
doprinose boljem razumevanju i jednog i drugog.
Ako predlazete izrnene radnih procesa, dodajte i tekucu i nOVll verziju, i
istaknite izmene u tekstllalnoj verziji. RaZllme se, morate objasniti zbog cega
ce izmene koje predlazete poboljsati tok rada ili resiti odredene probleme.
Ukoliko dodate eksplicitno objasnjenje izmena koje prec1lazete, cesto cete
ustanoviti da ce k1ijent ukazati na nesto sto ste II p1'vobitnoj analizi prevideli.
Dokumentovanje radnih procesa jedna je od oblasti u kojoj se sukoblja
vaju potrebe raziicitih kategOlija vasih ciljnih gmpn. Razvojni tim ocekllje opi
se izrazene tehnickim jezikom: transakcije se potvrduju a objekti podataka
aZllriraju. S druge strane, k1ijenti ocekuju da proces bude opisan izrazima koje
oni kOliste. To mogu biti i racunarski izrazi, ali je verovatnije da neee biti.
Kada niste sigurni, budite bliZe klijentovoj stnmi. U praksi, verovatnije
je da ce za razvojni tim biti znatno manji napor da razumeju klijentove izraze
nego obrnuto. Ako bas l110rate da koristite tehnicke izraze, obavezno ih tac
no clefiniSite u dokumentu.
Nazalost, to je lakse reCi
uraditi. Kada se celo vreme bavite racuna
rima, !ako je zaboraviti da
od izraza iz te oblasti nisu llobicajeni i izvan
nje. Ja imam spisak izraza kao sto su "transakcija", pa cak i ,.polje" i obavljam
zavdnu proveru pre nego sto dokument clostavim klijentu. To nije tesko ura
diti pomocu funkcije za pronalazenje zadatih reCi u programu za obradu
sta. Zbunjeni klijenti rnalo kad su i s1'ecni klijenti.
On) .ie jedno ocl mesta gclc su stranicc i stmnice tabela \erovlltno neiz
beine. Ne 1110:l.e se izhec-i cinjenica da u pitanju izrazito tchnicka cliskmi
ja, ali i jeclna od onih koje klijcnt ne 1110Z(; da zaobicle. Mozcte se S<11110
nadati da ce postupak biti !ito bezbolniji za njegcl.
Prvo, koristite sto manje tehnickih izraza. "Tabela", "polje" i "zapis" ver
ovatno S1..1 neizbezni, ali je bolje izbegavati "entitet", "relacija" i "atribut".
Znam da su manje tehnicki izrazi i l1lanje precizni, ali su ipak dovoljno bliski.
Osim toga, obavezno definisite znacenje svakog izraza koji upotrebite (pri
eemu je pozeljno da korisnicima ne odrzite kratak kurs projektovanja baza
podataka).
U praksi, problem i nije tako tezal<. Posto objasnite da svaka tabela pred
stavlja neku "stvar", a polja su "delovi infonnacije", kl~ienti su obieno sprem
ni za dalja objasnjenja. Mozda ce vas poneko zapitati zasto telefonske
brojeve obradujete kao tekst ili postaviti 11eko slieno pitanje, ali na tak-va pi
tanja radije ocigovaram u nefol"ma1nom razgovoru.
Ako dokument ima dvostruku namenu, tj. sluzi i kao tehnieka specifika
cija, moracete da u njega ukljuCite sve tehnieke detalje kOji su potrebni raz
vojnom timu. Tu vrstu detalja pokusavam da predstavim odvojeno od
glavnih tabela, obieno kao podnaslov odeljka 0 entitetu. Klijenti tako vrlo
brzo shvate da nema potrebe da razumeju i "te sl:vari". U takvim situacijmna
obicno napominjem svojim klijentima da treba da pogledaju listu atributa
radi opsteg razumevanja, kao i analizu domena radi tacnosti, a ostatak
mogu da zanemare.
TeOlijski, trebalo bi da klijent prouCi i veze izmec1u entiteta, ali u praksi
mi se retko desavalo da klijenti uoee greske iIi neslaganja u toj oblasti, pa i to
samo bd smo zajedno proueavali model. To je ipak malo previse nepoznata
oblast za njih.
Bicete bolje srece ako zahtevate da korisniei ispitaju velicine polja i tipo
ve podataka u njima. lpak, i u toj oblasti, ako imate ozbiIjne dileme, bezbed
nije je da se sa odgovarajuCim ljudima dogovorite za sastanak na kome cete
zajednield resiti problem.
Lieno smatram da je to veoma zamorno - sati razglabanja tipa "Sta mi
slite, da Ii je 2S znakova zaista dovoljno za Prezime?" tesko moze biti ono sto
ja zovem dobrim provodom - ali posto je kljucno da te stvari budu ispravne,
cesto je neizbezno.
Druga mogucnost je da ukazete na elemente koji yam se cine problema
ticnim. Posto paznja ljudi opada kada moraju da pregledaju SO stranica s tabe
lama, ako ukazete na elemente za koje yam treba njihova potvrda, verovatno
cete dobiti bolje rezultate.
~orisnicki
interfejs
Prototip interfejsa
Ustanovila sam da je prototip interfejsa najbolja alatka za predstavljanje ko
risniekog interfejsa novog sistema. Mnogim korisnicima, narocito onim
puno iskustva s racunarima, tdko je da na osnovu grupe slika ekrana na pa
piru zamisle kako ee sistem izgledati i raditi. Ako im obezbedite prototip in
terfejsa, neee morati da se trude da to zamisle.
Prototipovi se mogu praviti u svim oblicima i veliCinama, i mogu se k01i
stiti za razne namene. Jedan od najjednostavnijih sastoji se od slika ckrana i s
njima povezanih menija (bez programskog koda) koji moeleluju tok rada ko
nacne verzije sistema. Jedini neophodan program ski k6d jeste onaj kOji pove
zuje ekrane. Sve kontrole su na svojim mestima, ali nisu povezane s podacima,
niti na bilo kOji
naein funkcionalne. S!icno tome, jedine komande menija
koje nesto rade jesu one koje prikazuju okvire za d~ialog. (To nije sasvim taeno.
Drugim menijima obicno pridmzujem prozore s porukama tipa "Ova koman
da ee raditi to ito. Ta funkcionalnost nije ugradena u prototip",)
J edini izuzetak od pravila "nema koda" jeste kada je saddaj ekrana odre
den vrednostima podataka, Recimo da ste napravili ehan za unosenje poda
taka 0 kupcu, ali saddaj ekrana zavisi od toga da Ii je kupac fizicko lice iii
firma. Mozete se opredeliti da vidljivost odredenih kontrola bude uslovljena
onim sto korisnik
iz gmpe opcija. Tu funkcionalnost morate obezbe
diti i u prototipu.
Prototip interfejsa obieno pravim pomoeu alatke za programiranje ceo
ne komponente koju ocekujem da ce biti upotrebljena i za izradu konacne
verzije sistema. BuduCi da radim s vise razvojnih okruzenja, na taj nacin iz
begavam sindrom "uh, zaboravila sam da u VB-u ne postoje padajuee liste s
vise kolona".
Medutim, upotreba razvojnog okruzenja je opasna. Posto pravite pro
totip, a ne sistem, prihvatljivo je da iskoristite razne vrste preCica koje inace
ne bi niposto bile prihvatljive u programskom kodu produkcione verzije. Ali,
Specifikacija interfejsa
Mada je prototip interfejsa odlicna alatka pomoell koje korisnici stieo sliku
kako ce sistem raditi, njegova funkcionalnost je namerno ogranicena. Iz tog
razloga, on ne moze da zameni specifikaciju interfejsa. (Obmuta tvrdnja nije
tacna. Pazljivo napravljena specifikacija interfejsa moze da Heini prototip
sHvisnim.)
SHcno dokumentaciji rnodela podataka, specifikacija korisnickog inter
fejsa mora da sadrii tehnicke informacije koje klijent ne moze potpuno cla
izbegne. Iste preporuke vaze i u ovom sluCaju tehnicku terminologiju sve
dite na minimum; gde god je moguce, razdvojite tehnicki cleo ko.1i klijent
moze da zanemari od glavnog tela dokumenta.
Ako ste napravili prototip interfejsa, priprema specifikacije interfejsa
vrlo je jednostavna. Ja prilazem rastersku sliku svakog ekrana, tekstualni opis
njegove namene i obrade koja se iz njega pokrece, tabelarni spisak svih kon
trola i izvora podataka za svaku kontrolu (ako postoji). Ako niste napravili
prototip, ekrane morate opisati u nekom drugom obliku, ali peostali deo in
formacija ima isti oblik
U veCini sistema kOlisno je da prilozite i pregled toka rada. Ako sistem
treba da podrzi vise razliCitill raclnih procesa, trebalo bi dodate model redo
sleda ehana za svaki proces. To se radi jednostavno - oznacavanjem na dija
gramima radnih procesa.
Jpravljanje izmenama
Vasa clokumentacijll projekta verovatno c-e doziveti viSe izmena pre nego 'ito
dode u stabilno stanje. Kacla postane relativno stabilna, a svakako pre nego
!ito predete na slec1ec-u taw projekta, trebalo hi del za dokllment (ili grupu
clokumenata) llvedete upravljanje izmenama.
Imajte u vidu da "upravljanje izmenama" nije isto !ito i "zamrzavanje
specifikacije", koje.ie nerealno, cak i II najjednostavnijim sistemima. Ako pri
premite pIan za izmene, koje su neizbezne, dugorocno cete sebi znatno
olaksati zivot.
Upravljanje izmenama moguce je u viSe oblika. Obicno se odupirem
iskusenju da direktno menjam saclrZ<1j dokumenta; umesto toga, ustanovila
sam da .ie lakse da objavljujern beleske 0 izmenama ko.1e sluze kao prilozi
izvornom dokumentu. Ako su izmene veoma znac:ajne, ponekad.ie lakse na
pisati ceo dokument iz pocetka, iii odredene njegove clelove, ali to .ie malo
verovatna situacija.
Ukoliko mozete obezbediti centralnu lokaciju za glavnu specifikaciju,
mozda je opravdano menjati ili dodavati clemente direktno II dokument. To
se radi, na primer, pomocu alatki za reviziju teksta koje prostoje u programi
ma bo sto.ie Microsoftov \Vord, Dokument mozete potom postaviti na jav
ntl lokaciju 11 mrezi iii lla intranet.
Jeclini problem koji se pojavljuje kada dokument postavite na centralnu
lokacijll jeste kako obezbediti cia ljudi rade s tekllcom verzijol11 dokumenta a
ne s kopijmna koje su odstampali da bi na njima mogli da zvrlja.1u svoje napo
mene. Priznajem, i SaIn<l sam kIiva zbog Cinjenja tog "zlocina". Ccsto.
Sazetak
U ovom poglavlju navela sam nekoliko smernica za preclstavljanje projekta
sistema klijentu i razvojnom timu. Mozete ih smatrati misljenjem jednog
projektanta. Opisane strategije su se pokazale kao dobre u mom mdu, ali u
viSe oblasti koje sam opisala trebalo bi da te smernice prilagodite svom
naCinu rada i potrebama svojih klijenata.
lako se ovim poglavljem zavrsava treCi deo knjige, jos nis1110 zavrsili
proucavanje postupka projektovanja baza podataka. U cetvrtom deJu bavi
cemo se izuzetno vaznom komponentom aplikacije: kOlisnickim interfejsom.
esfa!Ja~u!
6o>l~!us!JO>l
afueJ\o~>lafoJd
Korisnicki interfejs
kao posrednik
Kada zavrsite poslove analize opisane u prethodnom delu ove knjige, trebalo
bi cIa dobro razumete sta sistem kOji projektujete treba da radio U cetvrtom
delu bavicemo 5e s nekoliko pitanja 0 kojima treba da vodite racuna kada
pravite korisnicki interfej5 sistema.
Ovo poglavlje poCinjemo razmatranjem opsteg pristupa projektovanju
korisnickog interfejsa i modela kOje treba da upoznate. 1z razumljivih razlo
ga, po tom pitanju mogu yam pruziti samo ogranicenu koliCinu informacija.
Da biste prosirili svoje znanje 0 pro.iektovm~u korisnickog interfejsa, pot
rebno je da prouCite i druge izvo1'e. U bibliografiji sam naveIa viSe odIicnih
knjiga, a sigurno cete naci i druge u knjizari kOja prodaje tehnicku literaturu.
Efikasan interfejs
U glavama korisnika, korisnicki interfejs jeste sistem; sve ostalo 5U stvari koje
oni sa zadovoljstvom zanemaruju. Dizajn korisnickog interfejsa je, prema to
me, kljucan za uspeh iIi neuspeh p1'Ojekta. Ako ga napravite kako treba, ko
risnici ee zaboraviti poneki propust u izvedbi sistema. Ako ga lose napravite,
bice sasvim nevazno koliko je efikasan vas programski k6d.
l1'On1j<:1 cele pIice je to sto ce r~alo ko plimeCivati dobar interfejs. Zaista
elegantni interfejsi su "nevidljivi". Cak i ako je interfejs los, mozda l1iko ni to
nece primetiti. KOlisnicki interfejsi mnogih racunarskib sistema, na1'OCito si
stema koji rade s bazama podataka, toliko Sll nezgrapni, da ee vas sistem biti
samo jos jedan ocl prosecnih, pomalo nametljivih sistema kakve Ijudi i ocekuju.
POl, ako niko nece niSta primetiti, zasto biste se oncla vi trucIili? A zasto
da ne? Na haju krajeva, to je posao kojim se bavite. Uz rizik da zvucim kao
vasa mama, ako se vee bavite projektovanjem racunarskih sistema, nije li 10
gicno da to radite najbolje lito umete?
239
rIIodeli irlterfejsa
Alen Kuper (Alan Cooper), u svojoj cuvenoj kl1jizi About Face: The Essenti
als of User lnteiface Design, opisuje nacin na kOji korisnici razmiSljaju 0 si
stemu (i nacin na kOji sistem razmislja 0 korisnicima), izrazen pomocll tri
modela: mentalni model, prividni model i stvarni model. Ta tri razlicita naci
na razmiSljanja 0 sistcmima vazna su za donosenje odluka 0 korisnickolll
interfejsu aplikacije koju pravite.
Korisnikov mentalni model opisuje sta korisnik misli da se dogada. To
se cesto ne poklapa sa onim sto se zaista dogada, ali to je sasvim u redu. Na
~ivoi
znanja korisnika
'\Ie mogu da zamislim da bi iko namemo zapoceo da pravi sistem kOji se ne bi
ponasao "plijateljski prema kodsniku". Mozda nacin upotrebe sistema nije
imao visok prioritet, ali niko ne bi namemo napravio sistem kOji zbunjuje ko
Iisnika i otezava mu rael. Problem je u tome sto, buduCi ela.ie "prijateljski
ma korisniku" jedan od onih
i dobronamernih izraza kOji ne znace
mnogo, preostaje yam ela sami smislite ad hok definiciju tog izraza.
Dve definicije izraza "prijateljski prema korisniku" koje se cesto
minju jesu ,,1ako se uci" i ,,1ako se koristi". Ako za trenutak zanemarimo pi
tanje sta je tacno ,,1ako", moramo se zapitati Jako za koga"? Sistem kOji ce
pocetnik lako savlac1ati ne mora obavezno i strucnjaku biti lak za upotrebu.
N ajbolje resenje je da razmotrite potrebe svakog nivoa korisnika i da za svaki
nivo pojedinacno obezbedite drugaciji oblik interfejsa.
Pocetnicki nivo
Svako je nekom trenutku poeetnik. Vrlo malo Ijuc1i ostaje na tom nivou s
poeetnickog nivoa prelaze na srec1nji iii zamenjuju vas sistem nekim drugim.
1z tog razloga, morate voditi racuna da ne ugrac1ite takvu podrsku za pocet
nike koja bi ometala naprednije korisnike.
Pocetnicima je potrebno da znaju !ita vas sistem radi pre nego sto pocnu
da uce kako se on koristi. Tu informaciju najbolje cete im predstaviti izvan
glavnog sistema. U jednostavnim sistemima, moze biti dovoljan uvoc1ni okvir
za dijalog koji opisuje sistem. (U tom slucaju obavezno obezbedite i 1110
gucnost trajnog iskljucivanja tog okvira za dijalog.) U slozenijim sistemima,
mozda ce biti prikladniji vodie kroz sistem.
Sistem za neposrednu pomoc
pogodan za pocetnike. Oni mozda ne
znaju da takav sistem postoji iii, ako znaju, ne znaju kako se koristi. 1pak, ima
1a sam izvesnog uspeha s neposrednim vodiCima kroz aplikaciju, tako sto sam
Srednji nivo
KOIisnici vecine sistema spadace u kategoriju "sa srednjim nivoo111 znanja",
Ta vrsta korisnika zna sta sistem radi, ali cesto zaboravlja detalje kako se
nesto radio To je gmpa za koju morate obezbediti podrsku neposredno u ko
risnickom interfejsu, 8recom, Microsoftovi standardi za \Vindowsov inter
fejs nude brojne alatke za P01110C toj kategoriji korisnika.
Dobra projektovan sistem menija jedna je od najboljih alatki za poclse
canje korisnika sa srednjim nivoom znanja na mogucnosti sistema. Brz
pregled stavki menija odmah ce ih podsetiti koje su sve [unkcije na raspo
laganju, a istovremeno ce im omoguCiti da zapocnu odgovarajuCi posao.
Odlican dmgi nivo podrske za korisnike sa srednjim nivoom znanja jeste
sis tern za neposrednu pomoc. Nazalost, pisanje sistema za neposrednu po
moc izlazi izvan okvira ove knjige. Mectutim, u tom kontekstu pomenucu da
ce veCina korisnika sa srednjim nivoom znanja koristiti indeks kao svoj pri
marni mehanizam za pristup informacijama u sistemu za pomoc. Zbog toga
preporucljivo da napravite sto detaljniji indeks.
Iskusni korisnici
Iskusni korisnici znaju sta treba da rade i kako da to urade. Njih najviSe zani
ma da posao urade brzo. Sto vise preCica ugradite u sistem, korisnici iz te
grupe bice srecniji. Iskustvo l11i pokazuje sledece: posto iskusni korisnici na
ginju ka upotrebi tastature, treba obavezno omoguCiti upotrebu sistema i
pomocu tastature ako nameravate da obezbedite podrsku i za tu grupu.
Iskusni kOlisnici takode cene mogucnost plilagodavanja mdnog okru
zenja SV0111 ukusu i potrebama. Posto pruzanje takve funkcionalnosti moze
biti skupa vezba, pazljivo razmotIite prednosti te funkcionalnosti pre nego sto
je ugradite. Ako se opredelite da omoguCite odreden nivo prilagodavanja in
terfejsa, l11akar to bilo sarno menjanje rasporeda prozora na eham], obavezno
ugradite mehanizam cuvanja izmena izmedu dye sesije. Nista ne moze iCi na
nerve tako kao kacl vas program plimorava da kad god ga pokrenete, morate
P0J10YO da sve razmestite kako vam treba.
se
Znatno je bolja poruka prikazana na slid 15-2. Mozda nije izuzetna, ali
bolja. Ne samo sto objasnjava situaciju recima koje korisnik razume, vee
mu i pl1Jza opdje drugacije od obicnog 0 K i Cancel (koje prose can korisnik
tumaCi kao "Ja sam idiot", odnosno "Ja sam idiot. Prihvatite moje najiskreni
je izvinjenje".)
You have changed the name of the customer. Since other iterns in the system,
such as Sales Orders, rely on the custorner name to maintain their links, this may
cause some items to get lost,
You have the following options:
Clicking this button will return the customer name to its original value,
Clicking this button will change the customer's narne in all other
records that referenoe it. This operation might take some time.
Clicking this button will change the customer name, but not
any other records that might reference it.
Slika 15-2 Ova poruka objasnjava posledice korisnikovih akcija i nudi vise
opcija
opste smcrniee tIn biste pokrili specifican slucaj kOji obrac1ujete. Ako 1110rak
smni da clonesctc odredene odluke, onda se dosledno pridrzavajte. lJ na
rec1nom odeljku bite reci 0 tome koliko je vazno da uvek buclete closledni.
Trebalo bi cia vum bucle jasno sleclete: ako pokllsate cIa smanjite koliCinu
in[ormaeija koje korisllici treba da zapamte, ne bi trebalo ni cIa ih pri tome
primoravate cIa iste podatke unose cIvaput. Vee bilo reCi 0 upotrebi podra
zumevanih i pon1..1denih vrednosti 1..1 takvim situacijama. Osim toga, ako kori
snik mora da radi s nizom ekrana koji slede jedan dr1..1gom, trebalo bi da
omogu6te da se potrebni podaei prenose s jednog obrasca na drugi.
Dalje, ne bi trebalo da od kOlisnika zahtevate da rucno 1..1nose podatke
kOji se, 1..1 raz1..1mnim granicama, l110g1..1 izabrati s neke liste. RaC1..1nari su po
znati po netolerantnosti, ali ne bi trebalo da korisnici brinu 0 tome da li za
pis 0 Petru Pelieu unet kao "Petar Pelic",
. PeriC" iii "P. N. PeriC'.
Medutim, obratite paznju na to da sam rekla "u razumnim granicama". Zah
tevati od korisnika da saceka da sistem popuni padajueu listu sa 6,5.000 zapisa
sve je samo ne razumno. Ono sto bi bilo razumno jeste da kOlisnicima pruzite
nacin da mtriraju listu i da zatim izaberu odgovarajuee podatke iz podskupa s
kOjim se lako moze raditi.
Kada korisnicima stavljate na raspolaganje Iiste necega, dodajte $to viSe
dopunskih podataka, narocito ako stavke na listi nisu obavezno jedinstvene.
Ne bi trebalo da korisnike obavezujete da pamte da je "Mile Simic" on<lj sto
zivi u Valjevu, dok "Milan Simic" zivi u Novom Sadu. Accessove obicne i
padajuce liste omogucav<~iu prikazivaje podataka u viSe kolona. U Visual Ba
sicu, mozete nadovezati odgovarajuce elemente.
U oba okruzenja, razl110trite mogucnost pIikazivanja dopunskih podataka
pomocu menija zavisnog od konteksta. Tehnicki, trebalo bi da se ti podaei pri
kazuju izdavanjem odgovarajuce komande, npr. "Detalji", u kontekstnolll me
niju. (Imajte u vidu da ta stavka menija ne treba da saddi tIi tacke, cak i ako
otvara okvir za dijalog. Dodavanje tri tacke je cesta greska.) Medutim, ako je
bro] dopunskih podataka vrlo mali, mozda cete moCi da ih prikazete direktno
kao stavke kontekstnog menija. Tako ce kOlisnici ustedeti malo vremena.
I najzad, nemojte nikada prisiljavati kOlisnike da pamte zapetljane siste
me sifrovanja. Mozda koristite brojeve koje sistem genelise da biste obezbe
dili jedinstvenost zapisa, ali u veCini slucajeva ne bi trebalo da korisnici
uopste znaju da se to dogada. Ako generisani broj nema nikakvu objektivnu
upotrebu, kao sto je broj rac1..1na, nemojte
cak ni prikazivati.
Mnoge organizacije prave liste skracenica koje predstavljaju stvari kao
sto su kategorije proizvoda iIi prodajne regije. Pravilo koje ja primenjujem
kada treba da odlucim da Ii da te skracenice koristim u sistemu jeste da Ii se
one kOliste u ne[ormalnim razgovOlima. Bolje izbegavajte situacije u kOji111a
ljucli pric~(!jil 0 "sportskoj obuCi" ali momju c1a 11l10Se .,SO", Samo ako skrace
oncIa se onu 1110Y,e koristiti i
nicu "SO" koriste i II mectusobnim razgm'orima,
e,
u sistemu, Pa cak i 11 tom sillcaju, verovatno bih u poije za vrstu robe cloz\'o
lilia unosenje i "SO" i "sportska obuca",
Vazna je doslednost
Doslednost u kolisnickom interfejsu znaCi vise od toga da se isti meniji uvek
nalaze na istim mestima. Trebalo bi da nacin n<1 kOji sistem komunicira s ko
risnieima takode bude dosledan. Kada projektujete sistem kOji radi s bazama
podataka, trebalo bi da obratite paznju na sledece tri oblasti: kako korisnici
prelaze s jednog zapisa u tabeli na drugi, koliko su slozeni predstavljeni enti
teti i kako korisnid zapoCinju azuriranje postojeCih zapisa i unosenje novih.
U vecini sistema postoji niz obrazaca kOji predstavljaju najvaZnije entitete
u sistemu, Na primer, mozete imati obrazac Kupd, obrazac Altikli i obrazac
NalUdzbenica, Morate smisliti nacin na koji ce se korisnid kretati po skupo
vima zapisa kOji su iZVOli podataka za te obrasce. Ukoliko nemate vrio oprav
dan razlog za upotrebu razlicitih mehanizama, trebalo bi da odaberete jedan
metod ida ga koristite u svakom obrascu.
Podrazumevani naCin u Access'll i u Visual Basic'll jeste da vezani obrasd
prikazuju sadrZHj prvog zapisa iz izvornog skupa zapisa i sadrze navigadonu
dugmad koja korisnicima omogucavaju kretanje kroz skup zapisa, Iz raznih
razloga, mozete se opredeliti da izmenite taj standardni interfejs. Na primer,
mozete prikazivati sadrZaj jednog zapisa i ugraditi neki drugi mehanizam za
biranje zapisa koji ce biti prikazan mozda zaseban obrazac kOji o111oguCava
trazenje podataka Hi padajucu listu s koje korisnik moze da izabere zapis. N a
slici 15-3 prikazan je primer ove druge tehnike, preuzet iz primera baze
podataka Access Developer Solutions.
Zamena podrazumevanog mehanizma navigacije potpuno je prihvatljiva
- u stvari, cesto postoje sasvim opravdani razlozi da to uradite - ali kada se
opredelite za jedan od njih, koristite ga na svim obrascima u SV0111 sistemu.
Nepotrebno je i zbunjuje korisnike kada na obrascu Kupd imate standardnu
navigacionu dugmad, na obrascu Narudzbenica imate dugme "Trazi narudz
bin'll", a podaci na obrascu Artikli prikazuju se u tabelarnom obliku.
Izuzetak od ovog pravila je slucaj kada imate viSe kategorija obrazaca,
Na primer, mozete se opredeliti da se obrasd za oddavanje referentnih ta
bela kOliste drugaCije od onih za unosenje primarnih entiteta. U tom sluca
ju, ako je interfejs dosledan u svakoj kategoriji, l1e opterecujete korisnike
bez potrebe.
Druga ohlast u kojoj treba ela buclete doslcelni jeste preelstavljanjc slozl'
nih entiteta. Ako imatc entitete koji su moclelovani pomol-u vise oel jeelnc ta
bele u vezi tipa "jedan prema vise" (Porudzbina je klasican primer toga),
oblik u kojem ill predstavljate korisnicima mora biti dosledan. Nemojtc pred
stavljati stavke porudzbine u obliku tabele, a imena kupaca u oblikll Iiste.
Select Category:
,V;
Select Product:
,,~,;
Product ID:
Product Name:
Supplier:
.'1'
Category:
,v,
Units In Stock:
Units On Order:
Reorder Level:
o Discontinued
Slika 15-3 Padajuca lista moze ponekad biti koristan mehanizam kojim
korisnici biraju klijenta, ali morate ga dosledno koristiti
dostavljcn<l, posle
poruclzbin<l postaje istorijski zapis kOji se 11(:' mo7.e
menjati. Neki projektanti ugntctuju l11eh<111i7.<1111 koji, kacla koris11ik zahtc\'<l
azuriranje zapisa, proverava chi li je roba iz pormlzbinc isporucena. To je
(jedva) prihvatljivo sarno ako se sui abrasei tako ponasaju.
Bolje resenje je da dozvolite azuriranje clirektno na obraseu ali da ZCl
kljucat~ sva polJa ~brasca aka prikazuje p~rnclzbinu za koju je roba isporu
cena. Takvo ponasanje obrasca zahteva viSe posh, ali posto ga obavlja sistem,
to se nc racuna. Osim toga, omogucava da se direktno azuriranje poclataka
primeni i u preostalom delu sistema, gcle zakljucavanje istorijskih zapisa nije
potrebno.
;azetak
U OVOI11 poglavlju, razmotrili smo neke principe koji vaze pri projektovanju
korisnickih interfejsa. Najpre smo proucili tri modela interfejsa: korisnikov
mentalni model sisterna (sta on misli da se dogada), stvarni model sistema
(!ita se zaista dogada) i prividni model (5ta sistem prikazuje korisnicima da se
dogada).
Potom Sl110 razmotlili hi kategOlije kOlisnika: pocetnike, sa srednjim
nivool11 znanja i iskusne. Ukratko 51110 opisali posebne zahteve koji vaze za sva
ku kategOliju i kako te zahteve moze najbolje da ispuni kOlisnicki interfejs. I
najzad, razmotIili smo hi najvaznija pravila za projektovanje kOlisnickog inter
fejsa: prepustiti komandu kOlisniku, minimizovati umni napor i biti closledan.
U sledecem poglavlju proucicemo opstu arhitekturu sistema i bavicemo
se prakticnijim problemima pri projektovanju korisnickog interfejsa.
Arhitekture korisnickog
interfejsa
Kada pocnete da projektujete korisnicki interfejs novog sistema, prvo mora
te da odluCite kako cete strukturirati opsti interfejs sistema - tj. arhitekturu
korisnickog interfejsa. U ovom poglavlju razmotricemo nekoliko manje
viSe standardnih arbitektura koje su opisane u knjizi The l.Vindows 1l1te/face
G1lidelines for Software Design, a realizovane su u viSe popularnih softver
skih paketa.
Mozete smisliti i vlastitu arhitekturu korisnickog interfejsa, ali kao i uvek
kada se udaljujete od postojeCih standarda, trebalo bi da imate opravdan ra
zlog da to cinite. Imajte u vidu da doslednost, ne samo unutar aplikacija,
nego i izmeelu njih, korisnicima olaksava zivot.
251
To nije tako los obrazac sam po 5ebi, ali pomislite na posao kOji korisnik
obavlja: unosenje porudzbine. Sta ako on otvOli obrazac Porudzbine i otkrije
da kupac jos ne postoji u sistemu? Korisnik mora da napusti taj obrazac, da
prede u neki drugi deo sistema i tamo unese novog kupca, zatim da ponovo
otvori obrazac Porudzbine i da najzad pocne da unosi porudzbinu. Ako obra
zac Porudzbine nije bio zatvoren, korisnik ce verovatno morati da se seb da
plitisne Shift+F9 (ili nesto podjednako oCigledno) da hi osvezio sadrzaj liste
kupaca. Nezgodno.
Neki pl'Ojektanti resavaju taj problem pomocu dogadaja NotInList pa
dajuce liste, omogucavajuci tako kolisnicima da unesu ime novog kupca.
U programskom kodu koji obraduje taj dogadaj, ti projektanti prikazuju po
ruku s pitanjem da Ii treba dodati novog kupca, pa ako korisnik odgovori
potvrdno, otvara se obrazac Kupci.
To resenje stedi korisniku nekoliko pritisaka na tastere, ali ga ipak prisi
ljava da prekine ono sto je do tog trenutka radio (unosenje porudzbine) i da
prede na nesto drugo (odrZavanje liste kupaca). Bilo bi znatno bolje kada bi
kOlisnik mogao da zavrsi tekuci posao bez prel--idanja. Ako korisnik unese ime
kupca kojeg nema na listi, polja koja bi inace bila popunjena, bice prazna.
(Uzgred, to je sasvim dovoljan pokazatelj da je u pitanju nov kupac; nema
razloga da plasite Ijude aktiviranjem zvucnog signala i prikazivanjem nepo
trebnih pOluka.) Posto korisnik popuni polja, sistem moze mirno da u pozadi
ni doda zap is 0 novom kupcu.
A];:o se sv,\ polja zapisa 0 kUpCll mogll popuniti podacima unetim nll
obrascu Porndzhine, posao je zavrscn. Ukoliko ilml cloc1atnih polju (sto se c:c
sto descl\a), })lO:'r!a cete se oprecleliti cia pitate korisnika zeli li cia te
doda bela zavrsi unosenje porucIzbine. (Ali nemojte ga to pitati dok ne
zavrsi unosenje poruelzbine nepristojno je prekidati nekoga.) Svoju odluku
treba da zasnivate na okolnostima u kojima se porudzbina unosi - drugim
recima, na radnim procesima.
Ukoliko porudzbinu unosi
pred kOjim stoji novi kupac, nakon
unosenja pOllldzbine pravi je trenutak za unosenje i podataka 0 nov0111 kupcu.
"Buduci da ste vi nas nov kupac, da Ii biste hili ljubazni da nam pruzite
liko dodatnih informacija ... pH Dmga prednost je to sto, ako se dopunski po
dad 0 kupcu (iii harem deo njih) nalaze na obrascu Porudzbine pomoeu kojeg
se unose dlllgi podaci, korisnik
lako da unese i podatke 0 kupcu dok ih
jos ima pred sobom, sto ce ga postedeti kasnijeg "kopanja po papirima.
Ali ako korisnik ima hlpU pomclzbina koje treba da unese a dopunski
podaci 0 kupcima nisu inti pri Illci, on 6e u veCini slucajeva zanemaIiti okvir
za dijalog i nece uneti dopunske podatke. Neprestano zapitkivanje korisnib
Ii da unese podatke koje nema pred sobom nimalo mu ne pomaze, vee
gnjavi. Bolje resenje bi hilo oznacavanje nepotpunih zapisa, koje korisnicima
omogucava da ih lako pronaau kasnije, kada dobiju potrehne podatke.
Mozete pitati korisnike da Ii
preau clirektno 11a odrZavanje poda
taka 0 kupcima (iIi kako god ste to nazvali u svom sistemu) kada
obrazac Porudzbine. Ali cinite to samo ako
pronalazenje i unosenje tih
podataka logican sledeCi korak za osobu koja unosi porudzbine.
H
~dit
Yiew
ealertd;il ~~
\,;,0
1001<;
"1iiii".
"
(:rcll~
T yp,: .'3. 4~de:>tk)fl
actions
91
lsi
161
291
30
10
111
121
1
171
13
14
181
191
mm Calendar
Contacts
:~
. Tasks
h!.:;l~)
;Ir~' :11
81
fa
December 11
20
Customer Orders
~
Reports
_.
Pages
;::z
Macros
,
Ei
Modules
Groups
faVorites
~ Customers
~ Startup
Eli
~ Suppliers
Employees
,
8;i Main Switchboard
ID
Ei
Glii
1111
Orders Subform
Product List
Microsoft Aess
,'-'
j)
..J..Qj~
Aplikacija Ciji korisnieki interfejs ima oblik komandne table (engL su.;itch
board), pri pokretanju prikazuje centralni obrazac, kao na slici 16-.'5, takocle
iz baze podataka NorthwincL VeCina dugmadi na obrascu UpUClljU na drugc
obrasce iIi izvestaje.
Carobnjaci
Cancel
kada pritisne dllgme Cancel, snimi podatke koje dotacl uneo. Uglavllolll
11('
preporucujem nijedl111 oel tih opeija, ali ako se tokom rada earobnjaka \lnos]
njih.
ve6a kolicina podataka, 1110ze biti opravdana jedntl
Druga mogucnost je da korisnieimtl ponlldite da priv1'emeno prekinll
md carobnjaka i da nastave kasnije. To je vrIo upotrebljivo resenje, ali i pri
licno slozeno za izradll jer zahteva privrerneno skladiSte za podatke, neki
mehanizam za odre(livanje gde korisnik stao i mogucnost nastavljanja od
te tacke.
Sazetak
U OYOl1l pogJavlju razmatraJi S1110 nacine na koje mozete strukturirati obrasce
u sistemu. Na m~visem nivou, mozete cla birate izmedu SDI sistema, koji pri
kazuje sve podatke u jednom prozOIll, i MDT sistema, koji radi s vise prozora.
SDT sistemi mogu se praviti u dye varijante: bo radne sveske i sa inter
fejsom u Outlookovom stilu, ,l svaka pruza prednosti U odredenim situaciia~
mao Vise varijanti postoji u MDI aplikaeijama od klasicnog MDT stila, do
arhitektura s komancInom tablom koju podrZava Aeeessov carobnjak Data
base, ukljucujuCi i projektnu arhitektllru Ciji je primer Visual Basic. I najzacl,
carobnjaci mogu biti upotrebljiva arhitektura bela treba podrZati posJove
koji se
obavljaju i sJozene radne procese.
U sledecem poglavlju prelazimo sa organizacije obrazaca na same obra
see da bismo odredili raspored elemenata obrasca na osnOVll strllkture enti
teta u modelu podataka.
Predstavljanje entiteta
na obrascima
U poslednjih nekoliko poglavlja toliko smo se bavili radnim procesima da se
mozda pitate zasto smo onda onoliko modelovali podatke. Ne brinite, U
ovom poglavlju razmotricemo kako se mogu strukturirati obrasci na osnovu
nacina na koji su entiteti sto se prikazlljll nn obrascima predstavljeni u 1110
delu podataka. Oelluke koje donosite 0 tome koje cete podatke prikazati 11a
datom obrascu zasnivaju se 11a radnim procesima, ali nakon tih odluka, vrstu
i raspored kontrola na obrascu odreauje struktura podataka koji se prikazuju
na obrascu.
Prva odluka koju morate da donesete jeste kako se obrazac preslikava na
model entiteta i veza. Da Ii obrazac predstavlja jeda11 entitet, elva entiteta u
vezi bpa "jedan prema jedan", elva entiteta u vezi tipa "jedan prema viSe" ili
vise od dva entiteta? Svaka od navedenih struktura entiteta moze se presli
kati u odreaene oblike obrazaca, kojima cemo se baviti u ovom poglavlju.
Razume se, isto kao i arhitekture koje smo razmotrili u prethodnom pogla
vlju, ti oblici su samo opste smernice, a ne pravila. To su oblici koji se, prema
mom iskustvu, najprirodnije uldapaju u odrea.ene vrste struktura podataka.
Jednostavni entiteti
Najprostija vrsta entiteta koja se moze predstaviti na obrascu jeste jedno
stavan entitet koji je u bazi podataka predstavljen 5amo jednom tabelom. Ako
takav entitet ucestvuje u vezama s dmgil11 entitetima, on je na strani
veze, iii se tabela 11a drugoj strani veze ("jeda11") ne predstavlja na obrascu.
Na primer, pogledajte E/H dijagram na slici 17-1, koji predstavlja entitet
Kupci, i veze u kojima llcestvuje.
265
Zaposleni
Kupci
Porudzbine
Slika 17-1 E/R dijagram koji prikazuje entitete povezane sa entitetom Kupci
U praksi, ne hi trebalo cla kOlisnike plimora"ate ela racle s vise oel otplilike
2.3 do 30 kontrola iii grupa kontroh (Obratite paznju na to da sam relda "kon
trola ili grupa kontrola"; grupni okvir koji sadrzi tri ili ('etiri radio-dugmeta
smatra se jeelnom kontrolom.) Ali !ita eete uraditi ako imate jednostavan enti
tet sa 7,5 atIibuta? U svakom trenutku mozete prikazati samo deo tih podataka.
Najjednostavniji naCin da strukturirate obrazac koji predstavlja entitet s
prevelikim brojem atributa jeste da polja razdvojite u grupe iii kategorije.
Obieno prvo izdvojim atribute koji nedvosmisleno identifikuju entitet Tu
podrazumevam ne samo atribute kOji predstavljaju kandidate za kljueeve,
vee i sve druge opisne atribute na osnovu kojih ee korisnici biti sigurni da
rade sa odgovarajuCim primerkom entiteta.
Na primer, za entitet Kupci, ta grupa identifikujuCih atributa verovatno
bi sadrzala detalje kao sto su ime i adresa, a mozda i atribut Prodavac. Za en
titet Artikli, ta grupa bi mogla da sadrZi atribute KategorijaArtikla, Naziv i
Opis. Ta grupa atributa treba da bude u gornjem delu obrasca i uvek viclljiva.
Preostali atributi se potom rasporeauju u grupe srodnih atributa koji tre
ba da se plikazuju zajedno. Za entitet Kupci, mozete kombinovati atIibute
kOji predstavljaju uslove prodaje - uobieajeni popust i uslove plaeanja, na pri
mer - u jednu grupu, a podatke za korespondenciju - referenta nabavke, re
ferenta prodaje itd. u drugu. Za entitet Artikli, mozete kombinovati tehnicke
specifikacije u jednu grupu, a atibute koji se tieu vrste pakovanja u drugu.
Posto organizujete atribute u grupe, imate nekoliko moguenosti. Na glav
ni obrazac mozete postaviti kontrolu tipa glUpa kartica, na Cijim ee kmticama
biti predstavljene pojedine grupe atlibuta. To je resenje koje najeesee kOli
stim. Grupa kartica pruza korisnicima najjasniji kontekst - odmah prepoznaju
da postoje i drugi podaci i kOji su podaci u pitanju. Meautim, ako imate vise
od pet ili sest grupa podataka, kontrola tipa grupa kartica nije pogodna.
U tom slueaju, mozda eete morati da neke ili sve grupe podataka preme
stite na pomoene obrasce. Pomoeni obrasci su takoae pogodni kada grupa
sadrZi vise atributa nego sto moze da stane na jednu karticu. Korisnicima
omoguCite da otvaraju pomoene obrasce pomoeu komandne dugmadi na
glavnom obrascu, iz strukture sliene komandnoj tabli. Meautim, ako imate
previse komandnih dugmadi, obrazac ponovo postaje neupotrebljiv. U tom
slueaju, bolje je da se pomoeni obrasci otvaraju iz menija.
Kada koristite pomoene obrasce, vodite raeuna 0 tome da odrZite kon
tekst u kome je kOlisnik radio. KOlisnicima uvek treba da bude jasno kojem
primerku entiteta pripadaju prikazani detalji. N ajlaksi naein da identifikujete
entitet jeste da na pomoenom obrascu ponovite odredene podatke iz glavnog
obrasca. Najeesee nije neophodno da ponovite celu identifikujueu grupu, vee
samo deo te grupe kOji je dovoljan da se pomoeni obrazac poveze s glavnim.
Druga mogucllost je
se pOl11ocni obmsci On',lraju 1.::ao ll10clalni obra
sci, To je ,iedno od 111alobrojnih mesta U sistemu gde se 1l1oclalni nai::in racla
moze opravclati jer odrZ<lva kontekst u kome je korisnik radio, ,Vledutitl1,
ll10d,llni obrasci lIvek ogranii::avaju korisnike, sto bi trebalo cla izbegavate
kad god
moguce, Tn telmiku koristim Sal110 kao posleelnju l11ogllcnost,
kaela vise nema praznog prostora na obrascu gde bi se mogli pOSblviti onil1
nekoliko atributa koji su neophodni za odrzavanje konteksta.
Altemativa pomocnim obraseima jeste struktura sa panelima, U tom
slucaju je vrio jednostavno obezbediti korisniku mehanizam za menjanje
plikazanog sadrzaja, iz menija iii (bolje) pomocu kontrole na glavnom obra
seu. Slika 17-2 prikazuje primer iz Visual Studija u kome se prikazom upra
vlja pomocu kontrole tip a TreeView (prikaz stabla).
r.
Tabbed documents
MDI environment
P"
Speed - - J - - - +
Enable Command Window autocompletion
Web Browser
QJ Source Control
QJ Text Editor
C:l Analyzer
CJ Database Tools
CJ Debugging
CJ Device Tools
Display
Display
110
,--------""'''''''-----,,-----
OK
Cancel
Help
Ako primarni entitet ueestnlje u vise n,za tipa ,jeclan prell1a jcclan" pri
rocla tih vcza odreciuje najpriroclniji razl11eStaj kontro1a na obrascll. Ukoliku
te veze l110gu cla postoje istovrel11eno, l110zete ih tretirati kao jedan \'cliki
skup zapisa i prikazati podatke na jec!nol11 ili na vise obrazaca, kao sto je
opisano u odeljku 0 jednostavnim entitetima.
Mec1utim, veze izmeciu entiteta eesto su medusobno iskljuCive, kao bela
svaki elati proizvod moze biti Napitak ili Sir, ali ne i jecino i elrugo. To
opravclava upotrebu vise podobrazaca ili panela, pod uslovom da imate do
voljno mesta na glavnom obrascu. Ne morate brinuti dOl li ce korisnici SIW,l
titi da u datom kontekstu ima i dodatnih informacija -jer ih nema. U stvari,
upotreba kontrole tipa grupa kartica u ovoj situaciji navela bi korisnika na
pogresan zakljueak.
Ako imate problema s manjkom prostora na glavnolll obrascu, upotre
bite jednu od tehnika za grupisanje i prikazivanje atributa koje smo opisali u
uc1eljku u jec1Ilustavnim entitetima. Ukuliku se kuntrole kuje prec1stavljaju
atribute potklase nalaze na jednoj od kartica, najbolje je dOl pokusate da
nadete neki opsti izraz koji cete prikazati na jezieku te kartice. Korisnike
moze da zbuni kada se natpis na jezieku kartice (ili na komandnom dugme
tu) menja kada prelaze se jednog zapisa tabele na drugi.
1z istog razloga, ako korisnici mogu da se krecu po zapisima primarnog
skupa zapisa, kontrole koje prikazuju atribute entiteta koji ima potklase izbe
gavam da postavim na prvu karticu grupe butica. BuduCi da su kontrole za
svaku potklasu razliCite, dobio bi se "skakutav" prikaz kada korisnik prelazi se
jednog zapisa na drugi. Kada atributi potldasa nisu na prvoj kartici, prikaz
moze ostati stabilan a sporedna korist je malo poboljsanje perfonnansi jer se
izbegava nepotrebno ponovno proraeunavanje sadrzaja nekih kontrola.
To izgJeda ocigJec1llo ili barenl meni tako izgleda - ali .i(~ to prilicllo cc
sta grc!ika. Pre dse
zaradila san: lepll svotu popravljajuci S\'C obrascc
tipa "viSe prema
koje je projektovala gospoda s titulom ,,vi)ii projck
tant interfejsa" u jednoj velikoj austmlijskoj band, To bio prvi put da sam
povcrovala u tacnost teorije da "pravi prograJlleri ne rade u bankam<l".
Posto lltvrdite da zapis na strani "jeclan" odrecluje sadrzaj koji se prika
zuje na obraseu, potrebno da odredite kako cete prikazivati zapise na stra
ni "viSe". Imate dve mogucnosti: mozete ih prikazivati jedan po jedan iIi sve
istovremeno.
Vas izbor zavisi od toga koliko detalja korisnid treba da vide od svakog
zapisa na strani "vise" Ako treba da prikazete samo nekoliko polja, obi(';l1o
mozete da prikazete sve zapise. Obrazac prikazan na slid 17-3, iz
po
dataka Northwind, prikazuje pomoclI podobrasca cetiri polja iz svakog zapi
sa na strani "vise".
Slika 17-3 Ovaj obrazac prikazuje zapise na strani "vise" pomoGu podobrasca
koji radi u rezimu neprekidnog prikaza
Slika 17-4 Ovaj obrazac prikazuje zapise na strani "vise" jedan po jedan
Biraci zapisa (engl. record selectors) u obliku "video dugmadi" pri clnu
podobrasca predstavljaju standardni mehanizam Microsoftovog Accessa za
kretanje po zapisima. Po pravilu, upotrebljavam standardne mogucnosti kad
god je moguce, ali pogledajtc rczultat u ovom slucaju: dva biraca zapisa viele
se jeelan iznad drugog, a samo njihovi polozaji upucuju na to kOji birac delu
je na skup zapisa na podobrascu a kOji na primarni simp zapisa. Nije kraj sve
ta, ali nijc ni optimalno
Ponekad mozete da uklonite birac zapisa primarnog obrasca. To hi tre
balo da bude izvodljivo na obrascu sa slike 17-4 ako obezbedite dobar inter
fejs za pronalazenje katcgorija artikala. Posto ionako nije mnogo verovatno
da ce korisnici pretrazivati podatke pomocu obrasca za odrzavanje podataka
slicnog ovome, dobra mogucnost pretrazivanja gotovo sigurno ce zaclovoljiti
njihove potrebe.
Druga mogucllost je c1a jedan ocl bimca zapisa zamenite nekim c1rngim
111ehaniz1110111 za kretanje - na primer, konHmclnom dllgmacli ili namenskol1l
trakom za pomeranje. Mec1lltim, npotreba clrllgaCije tehnike za kretanje po
zapisima moze biti teze razumljiva jer uvoc1ite necloslednost \l interfe.is. To je
ipak dobra resenje ako voelite racuna 0 tome da izaberete jeclan model i cia
ga se dosledno priclrzavate.
Na primer, mozete se opredeliti da koristite nesto nalik dugmadima
Forward i Back Internet Explorera da biste upravljali kretanjem po zapisima
na strani "jedan", a pomocu biraca zapisa u oblikll video dugmadi mozete
upnlVljati kretanjem po zapisima na strani "vise", To ce raditi pod llslovom
da opisani model koristite dosledno Ll celoj aplikaciji, sto hi znacilo da cak i
na obrascima kOji predstavljajll jednostavne entitete i kOji p1'ema tome ne
maju zapise na strani "vise", treba da koristite dugmad Forward i Back
Ponekad cete imati obrazac sa primarnom tabelom koja ncestvuje II viSe
veza tipa "jedan prema viSe", a potrebno je cla prikazete viSe od jeclne tabele
na strani "viSe" tih veza.
Ako plihvatite moj savet, izbegavacete takve situacije kad god mozete.
Projektovanje prikazivanja veceg broja tabela na strani "viSe" na obrascu
moze biti tesko a njegova izrada .ios teza, ali ponekad necete imati drugog iz
bora. Ako na istom obrascu morate da prikazete veci broj veza tipa "jedan
prema vise", najjednostavnije resenje je da za plikazivanje podataka sa straml
"vise" upotrebite grupu kmtica, To resenje obezbecluje korisnicima jasan
kontekst. Osim toga, moze da poboljsa performanse, buduCi da se zapisi ZH
grupu butica moraju ucitati samo kada se plikazuje saddaj kartica.
Po svaku cenu treba da izbegavate vidljivu gomilu kontrola koje prikazu
ju zapise sa strane "viSe" iz veceg braja veza "jedan prema viSe" istovremeno.
To bi bilo sporo i ruzno, a prikazivanje n1 istom obrascu podrazumevalo bi
vezu izmedu entiteta na strani vise koja mozda ne postoji. Na primer, na slid
17-5 nije jasno da Ii prikazani brojevi telefona pripadaju kompaniji iIi 050
bama za kontakt.
lijerarhije
Svaka veza tipa "jedan prema vise" tehnicki je hiierarhija, ali se ta rec obicno
koristi za veze koje se sastoje od tri iii vise skupova zapisa: to bi bila veza tipa
,jeclan prema viSe prema vise", ako se tako mo7.e re6i. Hijerarhijske veze se
cesto pojavljuju u modelima podataka, ali nije cesto potrebno da budu precl
stavljene na obrasdma.
I!il Compall.\'
I!!IIiU3
21
$12,00.
2
25%
50.00 !
0%
4.03~Oct:1~-31-0~j':1997~1:fOZl.1997
46.
~"'~.~~,,~~~.
10&'''12
10702 ,
10B35
10%2
11011'
nOelEmi
.."i4:j5:j;~:193~!
I. 16-Mar-I998.
210ct,1997
.....
21-Jdn-1993
24-M.r-1993
~.QS:/lpr-l?38
13:,i\.pr-1993.
24NoI' 1997.
. . . . . . .... ,.... ..
..". "."
~..w"
2 561.02 ,
1. $2394.
3
1
I'
.. 24:S"p-19~
4. 04-Mar-I938 .
AntOillO
Moreno T~Que'ia
- - 1 [Qill[!] of :I
06-Sep-1997,
14:AJJg- 1997
26-0<>,-1997:
12-0e,-1997
11 M.,1993
01-Apr1998:
,Owner
1:$4390
3 $11.99
3 55392
Mai v
Slika 17-7 Zavisni tabelarni prikazi Accessa 2000 predstavljaju hijerarhijske podatke
(:
Porudzbine
Slika 17-8 Izmedu Kupaca i Artikala postoji veza tipa "vise prema vise"
VeCina spojnih tabela sadrZe sarno primarne kljuceve sa obe strane veze
"viSe prema vise" Keto sto smo videli u poglavlju 3 i kao sto je prikazano na
sliei 17-8, smna veza ponekad ima atribute kOji su modelovani tako da pri
padaju spojnoj tabeli. Ako te atribute treba da prikazete na obraseu, trebalo
bi da to bude na strani "vise".
U nasem primeru, ako obmzae treba da prikazuje artikle koje je kupio
odredeni kupae (tj. tabela Kupei je strana "jedan"), jasno je da je datum po
rudzbine koji je polje iz tabele Porudzbine deo podataka 0 artiklima, a ne
o kupeima. "Kupae X kupio je mtikal Y 15-og, mtikal Z 18-og ...". Datum po
rudzbine bio bi cleo podataka 0 kupeu u obrnutom slucaju, gcle bi Artikli bili
stral1<l "jedan": "Artikal X kupili su kupac Y 15-og kupac Z 18-og ..." posto se
u tom sluCaju tabela Kupei tretira kao strana "vise".
Vrlo je verovatno da ce na strani "viSe" biti duplikata, iii barem delimic
nih duplikata . .\1orate se opredeliti da Ii cete svaku clupliranu stavku prikazi
vati pojedinacno iii cete prikazivati sarno zbirne podatke. Na primer, ako
prikazujete kupce kOji su kupili pojedine artikle, mozete se opredeliti da pri
kazete svakog kupea po jeclanput za svaki kupljeni artikal; iii mozete navesti
kupea samo jedanput i prikazati ukupan broj puta kada je kupac narucio ar
tikal i ukupnu kupljenu kolicinu (a mozda i prosek kolicine).
Vodite racuna 0 tome da izbegnete prikazivanje samo cluplikata. Potpu
no je beskorisl1o da prikazete ime odl'edenog kupea
puta ako osim njega
ne prikazujete nikakve dodatne podatke, npl'. datum porudzbine. Jedini raz
log zbog kojeg bi korisnici pozeleli da vide taj poclatak jeste da bi saznali
ukupan broj porudzbina koje je poslao odredeni kupac, a tom aritmetikom
treba da se bavi aplikacija, a ne korisnik.
Mada tretiranje veze "vise pl'ema viSe" kao veze "jedan prema viSe" ispu
njava veCinu zahteva, ponekad ce biti potrebno da tu vezu prikazete u pot
punosti. Osoba oclgovorna za odredeni artikal, koja pretrazuje podatke 0
kupcima tog mtikla, moze pozeleti da zna koje su jos mtikle kupili ti kupci da
bi, na primer, fonnirala "specijalne ponude".
Sazetak
Posto S1110 u poglavlju 16 razl1lotrili kako mozete organizovati obrasce na
osonovu poslova koje korisnici obavljaju, u ovom poglavlju objasnili smo
kako bi trebalo da strukturirate kontrole na obrascima, u zavisnosti od struk
ture entiteta koje zelite da prikazete.
Biranje Windowsovih
kontrola
U poglavlju 17 razmohili smo n1Zne nacine strukturiranja obrazaca u zavi
snosti od veza izmeau entiteta predstavljenih na obraseima. U OVOl11 pogla
vlju, razmotricemo biranje odgovarajuCih kontrola u zavisnosti od vrste
logickib podataka.
Pri izboru kontrola vaze dva osnovna principa. N 1jv1znije je c1a izaberete
kontrolu koja najbolje odgovara korisnikovom videnju podataka - drugil11 re
eim1, koja odgovara korisnikovom mentalnom modelu. Drugo, podatke koje
korisnik moze da unese treba ograniciti na najuzi moguCi opseg vrednosti.
Ljudi kOji rade s bazama podataka skloni su da posmatraju podatke kao
tekstualne vrednosti. Ako skup zapisa otvorite kao tabelarni prikaz u Accessu
(slika 18-1), sva polja su prikazana kao tekst. Ali, u stvari, samo polje Custo
l11erName (ime kupea) ima tip podataka Text. Polje CustomerNumber
kupca) je tipa AutoNul11ber, DateOfFirstOrder (datum prve porudzbine) je
Date/Time, CreditLimit (kreditni maksimum) je tipa Currency, a Preferred
Customer (dobar kupac) je tipa Yes/No (logicko polje).
Slika 18-1 U ovom tabelarnom prikazu vise tipova podataka prikazano je kao
tekstualne vrednosti
279
NAPOMENA: Ovde ne mogu opisati sve iz prividno beskrajnog niza raznih alat
ki koje se mogu naci kod nezavisnih proizvodaca; razmatranje sam ogranicila na
one standardne u Visual Studiju .NET i u Accessu. Medutim, preporucujem vam
da istrazujete sta je sve na raspolaganju. (Microsoftova Web lokacija je dobra
polazna tacka.) Naci cete mnogo toga beskorisnog, ali i mnogo vrlo upotrebljivih
stvari a moze se dogoditi da vam nekoliko stotina dolara koje ste potrosili na
alatku nekog nezavisnog proizvodaca ustedi vise sedmica razvoja i testiranja.
IlIifD
Slika :18-4 Dugmad za opcije iii preklopnici smesteni u okvir za grupu, mogu
da predstavljaju kratke liste fiksnih vrednosti
,,,-~~-.
--
November. 2004
'CJ Today:
DateTimePicker Control:
iJ
11/312004
Dale/Time PlopeJlies
IJ I
iazetak
U ovom poglavlju, razmotrili smo razne vrste kontrola koje l110zete upotre
biti za 1'rikazivanje i unosenje podataka. Vas izbor kontrola treba da se 1'0
kla1'a s ko1'isnikovim mentalnim modelol11, a podatke koje ko1'isnik unosi
morate og1'aniCiti na prihvatljiv opseg vrednosti bel god to moguce.
U narednom 1'oglavljll razl11otricemo sta mozete uraditi ako ogranica
vanje poelataka pri unosu nije moguce, a razlllotricemo i kaela se i na koji na
cin moze obezbediti provera ispravnosti podataka.
Jdrzavanje integriteta
laze podataka
Zamislite da ste vlasnik male proizvodne Finne i da ste naporno radili na
preuzimanju jednog klijenta od vaseg veceg i poznatijeg konkurenta. N ajzad
ste uspeli da ubedite klijenta da vmn pokloni svoje poverenje, ali robu mora
te isporuciti u roku od 48 sati. U proizvodnol11 pogonu potvrdili su vam da
mogu da urade zahtevani posao (malo "tesno", ali ipak mogu) i vi otvarate
sClmpanjac.
Deset minuta kasnije, pojavljuje se problem. Izgleda da racunovoda
neee da potpiSe radni nalog dok klijentu ne bude odobren kredit, za sta je
potrebno nedelju dana, n bez potpisanog radnog naloga ne moze da pocne
proizvodnja narucene robe. Sta eete uraditi? Verovatno eete prvo pokusati
da objasnite racunovodi da situacija zahteva da se pravila malo prekrse. Uko
liko vam to ne uspe, objasnicete cIa je obaveza da kredit bude odobren
obrade porudzbine V(l.e pravilo, a posto je i firma vaa, mozete krsiti pravila
kad god smatrate da to treba da Cinite. Ako nikakvo ubeclivanje ne uspe, na
kraju cete idiotu uruCiti otkaz i sami srediti papire.
Iz pouzdanih izvora znam da su racunovode Ijudi kao i svi drugi, i da
imaju pOl'odice i kredite kao i mi ostali, pa je scenario kOji sam opisala malo
verovatan. Ljudi ne odbijaju tek tako dn izvrse nnreclenje svog sefa (iii barem
ne ccsto). Ali racunarski sistemi to redovno cine. Oni lupaju svojil11 l11alim
elektronskim nozieama, 1111'ste svoja mala elektronska liea i odbijaju da ispu
ne potpuno razumne zahtcve, sve 11 ime "odrzavanja integriteta podataka".
Posto sam u prethodnom delu knjige opisala 5ta je to integritet podata
ka, kako se modeluje i gde se realizuje, sad eu vam reCi nesto ;::.aista strasno:
odrzavanje integriteta podat aka nije zaista vaZllO.
Sada eu napraviti pallZU i sacekati da se utisaju povici negodovanja.
291
'rimarni uslovi
Klasa pravila ispravnosti kOja nazivam primarni llslovi uprmlja hzickom
strnkturoll1 baze podataka. Ta klasa obuhvata pravila koja oclreduju tip,
mat i velicinu podataka, prihvatljivost Null vreclnosti, ogranicenja
integritet entiteta i referencijalni integritet.
Tip podataka
Ako ste izabrali kontrole odgovarajuce vrste, u 110rl11alnim okolnostima ko
risnici ne mogu da ne ispune uslov za ispravnost tipa poclataka. Nisam n1ko
ga viclela da namerno pokusava da upiSe datum u polje Iznos za uplatu, niti
da upisuje tekst u polje za potvrdivanje. i\1edutim, neko bi mogao cia pokusa
da upiSe "jedanaest" u polje za tekst koje ocekuje numericku vreclnost, sto je
razlog zbog kojeg je toliko vazan izbo;' kontrole za ul10senje poclataka, h~o
sto SI110 videli u prethodnom poglavlju.
Format
Formatiranje podataka obiC!1O nije problem, naroCito kada mozete ponovo
formatirati sacIrZaj nakon !ito korisnik napusti polje (to se lako radi i II Accessu
i u Visual Studiju) ili postaviti ulaznu maskll koja kmisnikn vooi pri unosenju
podataka. Medutim, voclite raeuna dn ne nametnete previse ogranicavajuCi
format. Ako se uneti poclaci ne uklapaju sasvim u format koji ste definisali,
mozda je najbolje da pooatke uklopite u format sto bolje mozete i cla kmisni
cima prepustite cIa podatke doteraju kako smatraju da je najbolje. To ne treba
da radite ako je pogresan format znak pogresnih poclataka, ali takva situacija je
retka. Kmisnik kOji lIpisuje telefonski broj kao 9-9999-99999-99 mozda prosto
ima posla s novim eudnim telefonskim sistemom.
Velicina podataka
Uslovi za velicinu podataka - naroCito u poljima tekstualnog tipa - stalan 5n
uzrok problema. Bez obzira na to koliko ste velikoclusni bili, izglecla da se
uvek pojavi potpuno ispravan ulazni poclatak kOji ne oclgovara zadatoj velieini.
Ponekad mozete izbeCi problem krsenja pravila za velicinu ako koristite polja
tekstualnog tipa, kojima dodelite maksimalnu cluzinu (2.55 znakova) i zaclate
da im je velicina promenljiva. U Microsoftovom Accessu, sva tekstualna polja
su promenljive velicine. U SQL Serveru, morate iZliCito zadati tip polja VAH
CHAR. BuduCi da obe masine baze podataka dodeljuju prostor samo za stvar
ne znakove koji se smestaju u bazu podataka, nema gllbljenja prostora.
Null vrednosti
Nedostajuce vrednosti su jos jedna oblast u kojoj korisnici cesto imaju te
skoca s primamim uslovima. Null vrednosti smo detaljno razmotrili na dru
gom mestu, gcle sam pokusala cla objasnim da - po mom miSljenju Null
vrednosti treba dozvoliti gde god u stvarnol11 svetll postoji raZ1ll11an razlog
da vrednost bude nepoznata, iIi barem tamo gde Null vrednost neee uciniti
da podatak bude potpuno neupotrebljiv 1.1 sistemu. Ako odluCite da zanema
rite ovaj muclar savet, moracete da smislite kako ce sistem pomoCi jadnom
korisniku koji pokusava da unese nov zapis a nema sve potrebne podatke.
U ovom slucaju, problem je kada ce biti potrebni podaei kOje korisnik
unosi. 1z analize radnih procesa sistema znate da su odredeni podaci neopho
clni pre zavrsetka ocIredenog posla. Ali to ne znaci da su sui podaei neophoclni
za obavljanje svih poslova obavezno potrelmi i kada se clodaje nov zapis.
Podaci 0 bankovnom racunu zaposlenog potrebni su yam da biste 1111.1 isplatili
zaradu. Prema tome, polja za podatke 0 bankovnom racunu ne mogu biti
Null kacla dode dan isplate. Ali ne bi trebalo da sistem sprecava kOlisnika da
IInese zapis 0 novol11 zaposlcnolll, niti da obavlja druge poslov(:', samo zato sto
nemu has we poc1atke. Moze biti potrebno da korisnik pokaze iclcntifikacionu
brticu da hi I11U bio dozvoljell ulaz u zgradu. Podaci 0 bankoVll0l11 racnllu
llisll potrebni za tu aktivnost. Podaci 0 bankovnom racunu bice potrebni 1/
odredenom trenlltku, ali 11e obavezno prvog <lana stupanja na posao. Nemojte
dozvoliti da to bude uzrok haosa u sistemu; sve ce biti ispravljeno kad docle
vreme - 0 tome ce se ionako postarati sam zaposleni!
Ako ne zelite da prihvatite Null vrednosti, cak ni privremeno, najlaksi
nacin da resite taj problem jeste da zadate neku razumnu podrazumevanu
vrednost. Jedna mogucnost je da u semi baze podaka deklarisete jednu po
drazumevanu vrednost za ceo sistem. Druga mogucnost je da sistem korisni
ku ponudi grupu vrednosti - mozda "NEPOZNATO", "NEVAZNO" i
"UNETI KASNIJE". Ponekad i sam sistem moze da izracuna prihvatljivu
podrazumevanu vrednost.
Opsezi vrednosti
Zadati opsezi vrednosti drugi su uslovi odredeni na nivou atributa OSi111
Null vrednosti - s kojima korisnici imaju teskoee. Neki uslovi za opseg vred
nosti eksplicitno su definisani tipom podataka - na primer,
je najveea
vrednost koju moze imati polje tipa short integer. Kada tip podataka odredu
je opseg moguCih vrednosti, ne mozete uCiniti mnogo vise nego da korisniku
objasnite uzrok ogranicenja. Aka su neophodne veee vrednosti, u semi baze
podataka morate izabrati tip podataka kOji prihvata siri opseg vrednosti. Ne
preporucujem vam da vasa aplikacija pokusava da to odredi tokom rada.
Mec1utim, ako ste ogranicenje opsega vrednosti definisali u semi baze
podataka u obliku pravila ispravnosti podataka iIi uslova tipa CHECK, iIi ste
ogranicenje realizovali u kodu aplikacije umesto u semi baze podataka, vero
vatno je u pitanju poslovno pravilo a ne primarni uslov, pa zato imate vise
manevarskog prostora. (Poslovna pravila razmatramo u narednom odeljku.)
The record you have entered appears to duplicate an existing record in the
database. What would you like to do?
Open a new window displaying the duplicate record. None of the
data you have just entered will be lost. After examining the
existing record, you can choose to keep the record you Mve just
entered or discard ~ and continue working with the existing
record.
Continue working with the record you have just entered without
viewing the existing record. Both records will be added to the
database.
Add the record you Mve just entered to the database and flag it
as a possible duplicate. You can recall both records later by
choosing Review Duplicates from the Administration menu.
new record and you can add any additional information that you
j
have available.
Add the new customer to the database, and COpy all the details
you have entered in the ord..... The Customer window will not
open. Vou can update the customer information later by
choosing Customers from the main menu.
Return to the Orders Window, where you can specify a different
customer.
Add the order you have just entered to the
as incomplete. You can resolve the unknown
choosing Incomplete Orders from the Administration menu.
order wlil not be fiUed until you resolve the reference.
Slika 19-2 Ovaj okvir za dijalog omogu6ava korisniku da izabere sta de uraditi
ako referencirani zapis U05) ne postoji
'oslovni uslovi
U prethodnom odeljku razmatrali smo primarne uslove koji stite strukturu i
integritet baze podataka. Malo je toga sto mozete tlciniti da biste pOJ11ogli
kOlisniku kOji krsi primarni uslov. Podaci moraju, barem na duzi rok, biti us
kladeni sa zahtevima relacionog modela. Medutim, podaci kOji ne ispunjava
ju odreden poslovni uslov, sasvim su drugo pitanje.
Kao sto sam vee rekla, poslovne uslove izvodite iz prostora problema, a ne
iz samog relacionog modela. Imajte u vidu da je model podataka upravo to
pojednostavljen model dela stvarnog sveta. Kao projektant sistema, potru
dicete se najbolje sto umete da biste u svom modelu obuhvatili sve vazne
aspekte rostora problema, ali uprkos najveCim naporima, neeete uvek uspeti
u tome. Cak i ako je vas model savrsen u svakom pogledu, kada napravite nje
govu prvu verziju, poslovno okruzenje se menja. Da bi bio uspesan, vas sistem
mora biti u stanju da bez veCih problema obraduje neocekivane situacije.
Postoje dva razloga zbog kOjih bi korisnici 1110gli da pokusaju da unesu
podatke koje sistem ne ume da obradi: slucajno iIi zato !ito stvarnost ne od
govara 1110delu sistema. (Postoje zapravo tJi razloga, ako dodate i namernu
sabotazu, ali uprkos pesimizmu prosecnog sistemskog analiticara, sabotaza
je izuzetno retka a - u svakom slucaju - poslovna pravila nisu nabolji nacin za
resavanje tog problema.)
JrU~'k~;~~'D~
-e>/;
'"
"
v ____
~~._
~___
~.. "'/#
__
~;.,
_Ill.
The DeliYery Date specifies when the customer would like the goods to be
deliyered to the address specified in the DeliYer Address, Unfortunately. the
s';stem is unable to interpret the data you ha~ entered: 31/01/99. What
would you like to do?
[;;6.~~,~~(h~Q~ti'!!
Replace the date you have entered, 31101199, with the value in
the text box below,
New Delivery Date:
Add the order you just entered to the database and flag it as
Incomplete, Vou can change the Delivery Date later by choosing
Incomplete Orders from the Administration menu. The order will
not be filled untn the Delivery Date is changed,
Open the Help window, which will display more information about
the Delivery Date field and entering date values.
Slika 19-4 Ovaj okvir za dijalog objasnjava gresku do koje je doslo pri
unosenju podataka i ne postavlja ultimatume korisniku
heslllislcni datum
koji CC sistem pri]l\'atiti i time narusiti inti'gritet
haze poclataka. Zbog toga je u ntsem intereslI da detaljllo razlllotrite S\'C iZl1
zetke kojih sc mozde setiti; to ee korisni\..:ll p0l1106 da 1I\"ek llade pri!i\atljin)
problema. Slika 19-5 prikazuje moguc odgovor sistema kada kori
datuma porudzbine
snik unese datum isporuke (Delivery Date) stariji
(Order Date). U ovom primeru se pretpostavlja da podrazumevani datum
porudzbine sistemski datum ida korisnik u normalnim okolnostima ne moze
da menja sac1rzaj tog polja.
The Delivery Date specifies when the customer would like the goods to be
delivered to the address specified in the DeliYer Address. It must be on or
after the date the order is placed. The date you entered is before the order
date. What would you like to do?
Replace the Def:very Date you have eilteredJ 01/01/99) with the
value in the text box below.
New Delivery Date:
Replace the Order Date you have entered, 01131199, with the
value in the text box below.
New OeUvery Date,
order you just entered to the database and flag it as
You can change the Delivery Date later by choosing
Orders from the Administration menu. TMe order will
until tMe Delivery Date Is changed.
Open the Help Window, which will display more Information about
the Delivery Date field and entering date values,
By default, only five employees can report to a manager. The employee YOli
just entered would exceed that number, and you do not have the authority
to override the rule. What would yOll like to do?
Q
Stika 19-6 Ovaj okvir za dijalog opisuje da poslovno pravilo moze prekrsiti
sarno onaj ko ima odgovarajuce ovlascenje
njirn<l povezani zapisi. Na primer, ako .ie problem z<lpis () jos neodohrenol1l
li hi trebalo iskljuciti saillo zapis 0 tom zapOSlellOl1l,
se5tolll zap05Ie110111 ,
iii zapise 0 svim zaposlenima koji su poclredeni tom poslm'octi'?
Morate razlnotriti sva takva pitanja pre nego sto se opredelite dOl ugrac1i
te mogncl1ost krsenja oclrec1enog poslovnog pravila. Ako takva mogucnost
postoji, povecava se upotrebljivost sistema, ali rezultujuce povecanje sloze
nosti sistema mozcla neee biti opravdano. U jeclnostavl1im sistemima moze
biti bolje da oclbacite zapis kOji krsi odrecleno poslovno pravilo i da taj izuze
tak obradite izvan racunarskog sistema. Ukoliko se opreclelite da izuzetne
slucajeve obradujete izvan sistema, to obavezno navedite U okviru za dialog
kOji prikazujete pri proved ispravnosti podataka. Nemojte prisiljavati kori
snika cla pogada sta bi trebalo da bude njegov slecleCi korak.
aazetak
U 0\'0111 poglavlju iznela sam neuobicajeno miSljenje da sistemi koji mde s
bazama podataka ne moraju obavezllo da ispunjavaju Hslove za integritet
baze podatakH. Razmotrili smo clve klase uslova: primarne llslove, koji odre
dlljU fizicku strukturll poclataka i izvedeni Sll c1irektno iz relacionog modela,
i poslovne uslove, kOji Sll izvedeni iz prostora problema.
Videli 5mo da je opasno dozvoliti korisnicima da krse primarne uslove,
ali i da je cesto opravdano dozvoliti da zapisi kOji ne ispunjav<\ju poslovne
uslove budu stavljeni 11a cekanje dok se problem ne resi. Naveli smo i neko
liko primera obrade zapisa koji su na cekanju.
U slede6em poglavljn razJ1lotric:emo razne aspekte izrade izvestaja na
osnovu podataka koje sistem odrZava.
Izrada izvestaja
Cinjenice uskladistene u bazi podataka postaju upotrebljive informacije
samo kada se kombinuju na neki smislen nacin; bez toga, one su bezvredne.
U OV0111 poglavlju razmotricemo kako moz.ete omoguCiti korisnicima da stva
raju te smislene kombinacije cinjenica da hi dobili infonnacije.
305
Sortiranje podataka
Access ima odlican interfejs za sortiranje podataka - komande Sort Ascen
ding i Sort Descending. K0l1snik miSem pritisne kontrolu zavisno od naCina
na koji zeli da sOltira podatke, zatim bira odgovarajucu komandu u meniju
Records iIi na paleti alatki. Tesko zamisliti jednostavniji interfejs.
Slika 20-1 Ovi zapisi se ucitavaju ako korisnik izabere komandu Filter By
Selection kada
izabrano "ar" u polju Product Name na obrascu iii u
tabelarnom prikazu
----_.._--------_._------
NAPOMENA: Nemojte pretpostavljati da Access zaista izvrsava SQL-ove ko
mande SELECT kada korisnik izabere komandu Filter By Selection. Mislim da
se to desava, ali nisam sigurna. Niko ne zna sta smisljaju oni mudraci iz Acces
sovog razvojnog tima.
------------------------~
----
.....--~..
Filtriranje po obrascu
Filter By Selection je jednostavan i elegantan interfejs koji kmisnici lako savla
davaju, ali kOji ih ogranicava na filtJiranje po samo jednom pOljll. Korisnici
mogll da zadajll dodatne komande Filter By Selection da bi postepeno sllzili
rezultujuCi skup podataka, ali to moze da postane napomo. Za kOlisnike kOji
zele m06niji intelfejs za filtliranje podataka, Access ima komandu Filter By
Form. Slika 20-2 plikazllje obrazac Customers iz baze podataka Northwind
nakon sto je kmisnik izabrao komandu Filter By Form iz menija Records.
Field:
Sort:
Criteria:
or:
Slika 20-3 Access 2000 prikazuje ovaj prozor ako u bazi podataka Northwind
korisnik izabere komandu Advanced Filter/Sort u otvorenom obrascu Customers
Izveitaji
Zbirni izveitaji
Nesto malo slozeniji Z<1 programiranje, ali cesto i korisniji, jcsu izvestaji koje
nazivam, "izvestaji na parce": zbirni podaci kombinovani i porecicni na razne
nacine. Procenat prodaje po mesecu iii po referentn, iii broj kupaca koji su
kupili pojedine kategorije artikala, primed su takve vrste izvestaja,
Zbirni izvestaji su dobri kandidati za graficko predstavljanje, Micro
sof'tov Graph i razne druge alatke nezavisnih proizvociaca veoma pojec1no
stavljuju izradu grafickih izvestaja. Mcciutim, preporucujem vam da izvestaj
u grafickom obliku pravite kao dO}JwHt tekstualnim podacima, a ne IImesto
niih. Tekstualni zbirni izvestaj 0 prodaji mozda i nije najrazumljivija SNar na
svetu, ali se moze izvesti u neku alatku za statistiCku analizu iii u program za
tabelarne proracune kao sto je Excel, radi daljc obrade.
bl
v
v
b uoe
na raspomganJu
1 na zantev, rae I resaWlllJa pm' erna sa stampaClma.
Imajte u vidll da se izvestaji vezani za odredeni 1'adni proces, kao !ito su
menni, mogll stampati pojedinacno iii grupno. Na primer, racnn mozete stam
pati eim se unese odgovamjuca porudzbina, ili mozete formimti grupll neod
stampanih izvestaja koje cete odstampati kada se zavrsi unosenje porudzbina.
KOlistila sam oba resenja sa uspehom. Raeune ob1cno stampam pojedinaeno
ako kOlisnik ima lokalni stampac, odnosno grupno, ako je u pitanju mrezni
stampac. Verovatno bi najbolje bilo da kOlisnicima omoguCite da sami podese
naCin rada - konfiguracije stampaea podlozne su promenama.
Neki projektanti se opredeljuju za resenje 11 kome sistem automatski
stampa izvestaje kOji se stampaju u redovnim intervaIima na primer, sed
micno iIi na kraju svakog mesesa ali licno volim da i takve izvestaje po
desim da se stampaju i na zahtev. Projektovanje sistema za automatsko
stampanje izvestaja predstavlja slozen posao. Sistem mora da racuna kada iz
vestaji treba da se stampaju (uzimajuci u obzir vikende i praznike) ida prati
da Ii je izveStaj bio odstampan na tacan datum. Ako viSe Ijudi koristi sistem,
on mora takode da odredi koja kategorija korisnika ima ovlascenje da po
krece posao stampanja, i sta treba da uradi ako se 111 zahtevani datum nije
dan korisnik iz te k1tegorije ne prijavi u sistem.
U poredenju sa svim problemima koji se pojavljuju pri automatskol11 ge
nerisanju izvestaja, O!110guciti korisniku da kad mu zatreba - izabere u ne
kom meniju stavku Stampanje sedmicnih izvestaja, trivijalan je zadatak. U
5vakom slucaju, moracete da obezbedite odgovarajucu st1vku menija (ili ok
vir za dijalog u slucaju problema pri stampanju izvestaja), posto kori5nicima
morate pruziti mogucnost da ponove stampanje izvestaja u sluCaju problema
pri stampanju.
Customer Name:
Pefformance Against Budget
E.!QiD
Midwest Region
Northern Region
Southea,t Region
SouthweSI Region
Sales by Sales Rep
jJty:
Save Report
2101e:
Legion:
ilika 20-4 Osnovna struktura koju koristim da bih omogucila jzradu ad hok izvestaja
F"
",-=""'~'"
1I:~~~~"W""..
;;
""C/"'A%'='fi'
~~heaSI Retion
mftMl$lillU
<-~
~",,0";;:6
',<"
-"'~fE:~!;;rI~tt~"
0l@t;mwI~_
~~%~'~lJf'&~1i'Ii.~ ':"~~!Ii~;~".~~1$r.,)k~~_
Customer !iam.:
.!:ill'
.5,tate:
Region:
Slika 20-5 Ovaj okvir za dijalog, koji se poziva iz glavnog obrasca za stampanje
lamenskih izvestaja, omogucava korisniku da uslove za izvestaje upisuje u bazu
)odataka i ucitava ih iz nje
ReportCategories
;ategorylD
;ategoryName
;ategoryTableName
ReportFormats
i CategorylD
Format'D
FormatName
LPhysicalN ame
CategoryCriteria
FormatlD
ReportiD
ReportName
CriterialD
lika 20-6 Struktura tabela koja omogucava korisniku da sacuva uslove i izvestaje; uz
), omogucava da se izvestaji dodaju sistemu i tokom upotrebe aplikacije
\letOll izracle n<llllcl1skih izvestnja koji sam o\'cle opisala, mada jeclno
stavniji za korisnike od prave abtke za izradu iz\'cstajOl, ipak viSe nego 'ito
jc potrebno za nekc aplikacije. Korisnicima najcesce treba 5amo mogllcnost
<lOl U stan<larclnim izvestajima povremeno zadaju dodatne uslove za filtri
ranje podataka. Takve jeduostavne uslove cesto mozete poddclti ako II na
mensld okvir za dijalog iz kojeg korisnik stampa izvcstaje dod ate nekoliko
kontrola za zadavanje uslova, umesto da pravite slozcniji namenski interfejs
za izraclu izvestaja kao ovaj kOji sam opisala.
Tipska pisma
Specijalna vrsta namenskog izvestaja jeste tipsko (cirkulamo) pismo. Ponekacl
je tekst tipskih pisama fiksan, ali je cesCi slucaj da koIisnici biraju sablonske
pasuse a sistem ih kombinuje da bi sastavio pismo. Bez obzim na to da Ii je
tekst fiksan ili ne, smatram da izvestaj iz baze podataka nije najbolji oblik
spondencije.
Mada mogucnosti fonnatiranja izvestaja iz baze podataka postaju sve
bolje, one se ne mogu meriti s mogucnostima formatiranja koje pruzaju pro
grami za obradu teksta, namenski projektovani za taj POS<:lo. Osim toga, veCi
na korisnika zeli mogucnost da pre stampanja pismu doda tekst, ali nije
dobro cIa im omoguCite cIa manipulipsu izvestajima iz baze poclataka jer bi
svaka izmena standardne struktrure postala trajna.
Bazu podataka svakako koristite za odrzavanje liste imena i adresa, pa
cak i za cuvanje sablonskih pasusa. Ali prenosenje tih podataka u program za
obradu teksta kao sto je Microsoftov \i\1ord omoguCava slozenije formati
ranje, a korisnici mogu da menjaju tekst pre nego sto ga odstampaju.
Srecom, prosledivanje tipskih pisama programu za obradu teksta postaje
sve lakse. Prosli su dani kada ste morali da se namuCite cIa biste poslali odgo
varajuce DDE (Dynamic Data Exchange) komande nekoj lose dokumento
vanoj aplikaciji, koja jos i odbija da saraduje. Na primer, u Wordovom
dokumentu danas mozete direktno da zadate Accessovu tabelu iIi upit kao iz
vor podataka za izradu cirkularnih dokumenata. Potom mozete upotrebiti
VBA (Visual Basic for Applications) programski k6d da biste u Wordov doku
ment llmetnuli podatke iz baze podataka i da zatim tako dobijeni rezultat pri
kHzete korisniku radi dalje obrade ili da ga posaljete direktno na stampanje.
U nekim okolnostima potrebno je da evidentirate tipska pisma koja je
generisao sistem. Ako korisnicima ne omoguc:avate da pisma doteruju pre
stampanja, nema potrebe da skladiStite generisana pisma u bazi podataka.
Treba samo da cuvate podatak 0 tome da je pismo generisano i mozela jos
datum i ime korisnika koji je poslao pismo. S druge strane, ukoliko korisnici
generisu pisma kombinovanjem sablonskih pasusa, taj postupak mozete mo
delovati pomocu slozenijeg entiteta, kao na slici 20-7.
Slika 20-7 Ova struktura moze da (Suva tipske pas use koji se ume6u u pisma
tazetak
U ovom poglavlju razmotrili smo razne aspekte pruzanja informacija korl
snicima na osnovu podataka uskladiStenih u bazi podataka. To obicl1o znnCi
izradu stampanih izvestaja, ali moze da znaci i da se informacije predstavlja
.iu na obrascu iIi u obliku skupa zapisa u tabelarnom prikazu.
Prvo smo proucili tehnike za sOltiranje i filtriranje podataka koje postoje
u Accessu, prikazane tehnike su do
u Accessu. Cak i ako aplikaciju ne
bri primm'i one vrste funkcionalnosti koju biste mozda zeleli da pruzite kori
snicima.
Ispitali S1110 nekoliko vrsta standardnih izvestaja koje bi sistem mogao da
medu kojima su izvestaji u obliku spiska i detaljni izvestaji, zatim
izvestaji i izvdtaji preslikani od obrazaca u sistemu. Zatim smo raz
motrili kako se komande za izradu izvestaja 1110gu integrisati u korisnicki in
sistema, kao i neka pitanja obrade gresaka koje se mogu pojaviti pri
izvestaja. Izrada ad hok izvestaja opisana je nesto detaljnije, a predsta
vila sam i tehniku koju koristim kada treba cla obezbedim tu funkcionalnost.
I najzad, razmotrili smo izradu tipskih pisama kombinovanjem mogucnosti
za upravljanje podacima koje pruza hazel podataka s naprednim mogucl1osti
ma za formatiranje teksta koje pruza program za obradu teksta.
U sledecem poglavlju bavicemo se temom pomoCi korisnicima i prouci
cemo oblike te pomoci kOji se mogu ugraditi u korisnicki interfejs sistema za
rad s bazom podataka.
Pomoc korisnicima
U izvesnom smislu, sve sto je opisano u cetvrtom clelu ove knjige spada u ka
tegoriju "pomoe korisnicima". Kada projektujete korisnicki interfejs i birate
strukturu prozora i kontrole, trebalo bi da yam eilj uvek bude pomoe
snicima u obavljanju poslova za koje su zaduzeni. Na primer, veCina gradiva
iz poglavlja 19, 0 integritetu podataka, zasnovana je na pIincipu da sistem
treba da pomaze korisnicima da izbegnu greske, ali da ih pri tome ne ometa.
U OV0111 poglavlju detaljnije cemo razmotriti oblike pomoCi korisnicima koje
mozete da ugradite u interfejs aplikacije.
~ivoi
znanja korisnika
Vee smo razmohili hi kategorije korisnika sistema koje projektujete. Pocetni
d
da znaju ta sistem wdL Korisnici sa srednjim nivoom znanja
da
;::;Il(!jlt kaka se obavljaju odre(leni poslovi, a iskusni korisniei zele cIa znaju kako
mogu da br:::.o obave pOSHO. Za svaki nivo korisnika potrebna je drugacija vrsta
pomoei. Uvoclni ekrani i vodici kroz sistem koji su tako kOlisni za pocetnike,
ometaee korisnike srednjeg niova i biee dosadni iskusnim korisnicima.
Morate smisliti posebne mehanizme za podrsku svake grupe korisnika, i
najbolji naCin uporednog funkcionisanja svih tih mehanizama. Na pIimer,
trebalo bi da uvodni okvir za dijalog, kOji plikazujete pocetnicima pri pokre
tanju aplikacije, sadrzi polje za potvrdivanje "Ne prikazivati viSe", koje na
prednijim korisnicima omogucava da iskljuce pikazivanje tog okvira za
dijalog. Kratki opisi (ToolTips) i poruke na statusnoj traci, koji su priklaclni za
korisnike sreclnjeg nivoa, obicno ne predstavljaju problem naprednijim kori
snicima ali za svaki slucaj - mozete obezbediti i nacin za iskljucivanje
kih opisa i poruka na statusnoj traci. U OVOI11 poglavlju detaljno cel110 opisati
pIilagodavanje kOlisnickog interfejsa pojedinim vrstama korisnika.
323
Slika 21-1 Standardni meni File u Accessu 2000 prikazuje sve komandne
vektore za komandu Save
Mnemonici za pristup
tastature
Kratki opisi
Kratak opis (TooITip) za dugme Save na Accessovoj paleti alath Form View
prikazano je na slid
Princip na kome se zasnivaju hath opisi vrlo je
jednostavan: oni igraju ulogu natpisa za dugmad na paletama alatki i za dru
ge kontrole koje nemaju natpise,
Slika 21-2 Kratki opisi objasnjavaju svrhu kontrola koje ne mogu imati natpise
na sebi
za s\'e nas kOji Sl110 \idcli ikonicll diskete koja se koristi 11 ivlicrosof't:o\DI11 01'
(keu), ali sta izabrati za dugme "Otvanmie obmsca Kupci') ivlozete upotre
biti slicicu ljudskog prom", ali sta ako vam zatrebaju sliCice j za otvanmje
obrazaca Zaposleni i Spoljni saradnici? Vasi vizuelni modeli mogu postati
pomalo "n<ltegnuti".
Se6om, kratki opisi vas oslobadajl1 veceg dela pritiska da naclete ikonicu
koja je sam a po sebi razumljiva. Ako im date pola objasnjenja, ve6ina Ijudi
prilicno lako smisli kratku prieu kojom povezuje sliku sa odredenim POj1110111
na tom principu se zasniva jedan od metoda pamcenj<l imena Ijudi - a krat
ki OpiS1 1m pruzaju tu polovinu objasnjenja.
Dakle, u Aceessu ste upotrebili slicicu ribe da biste predstavili Kupee.
(Sta su projektanti Accessa imali na 1111111?) Kada korisnik prvi put vidi vasu
paletu alatki, ne6e nikad pogoditi da riba predstavlja Kupce, ali 6e kratak
opis objasniti znaeenje te ikonice. Ako tu asocijadju pojacate dosleclnorn
upotrebom iste slieiee na svim mestima gde se referenciraju kupd - II mc
nijima, na obmscima i u dokumentaciji korisnici ce se tome prilagoditi bez
ikakavih problema.
Da biste zadali kratak opis u Accessu iii u Visual Basicu, treba samo da
zadate vrednost odgovaraju6eg svojstva, Tekst kratkog opisa treba da bude
kmtak jedna do dve reel. Imajte u vidll da kratak opis deluje kao natpis na
kontroli: njegova svrha je da korisnike podseti sta kontrola predstavlja, a ne
cla ih obucava kako se ona koristi.
Ako kontrola duplira odredenu stavku menija, kao kratak opis upotrebite
istu ree iIi izraz kao u tekstu stavke menija. Ukoliko kontrola ne cluplira nijed
nu stavku menija, upotrebite ime iii glagol koji najbolje opisuje funkcional
nost kontrole i na osnovu kog se kontrola razlikuje od drugih. Na primer, ako
paleta alatki sadrzi bi dugmeta koja otvaraju obrasee Kupci, Dobavljaci i Za
posleni, mozete zadati kratke opise "Kuper', "Dobavljaei" i "Zaposleni". Uko
liko pak jedno dugme otvara obrazac Kupd, a drugo omogucava stampanje
spiska kupaca, bili bi yam potrebni kratki opisi "Otvaranje obrasca Kupei" (iii
mozda "OdrZavanje kupaca") i "Stampanje spiska kupaca" da bi se ta dva
dugmeta razlikovala.
Napomena 0 slicicama: Pri povezivanju slieiea s pojmovima, kao i u svim
drugim oblastima projektovanja korisnickog interfejsa, kljueno je biti dosle
dan. Svaku slicicu koja predstavlja odredeni entitet u sistemu, koristite do
sledno gde god se u sistemu referencira taj entitet, !ito vazi i za svaku slieicu
povezanu s odredenim glagolom.
N ajbolje je cla izaberete grupu sliCica za svaku kategoriju - entitete i
glagole ida kombinujete slieice iz obe kategorije gde god je to potrebno.
Statusna traka
Statusna traka je cest mehanizam za pruzanje pasivne pomoCi korisnieima.
Vidljiva pri dnu prozora, statusna traka l110ze da prikazuje modalne inforl11a
dje, kao sto je stanje tastera NUl11 Lock i Caps Lock, iii da Ii je uJdjucen
rezil11 prosirenog biranja. Statusna traka takoae plikazuje tekst poruka na
menjenih k01isnic111a. Na shei 21-4 prikazana jedna od Accessovih statusnih
traka. Imajte u vidu sledece: posto je obrazac Categories l11aksimiran, statu
sna traka pri dnu prozora prividno je deo tog obrasca. Meautim, statusna
traka je zapravo sastavni deo sal110g Accessovog prozora.
Slika 21-4 Statusna traka nalazi se pri dnu glavnog Accessovog prozora
U Accessll se n:\ statusnoj traci lako moze prikazati opisni tekst za 5V,lk11
kontrolu na ObmSCll: treba smno pOdC5iti
StatllsBarText kontrole.
Ako izricito lle zadate vrecInost svojstva StatusBarTcxt kontrole
odreclenim polj(om tnbele, 11a stat~sno.i traci se prikazujc vrednost
Description tog polja (koju zaclajete u prikazu Design tabele). Meclutim,
liko ja zna111, u Accessu ne mozete iz programskog kocb zaclati tekst kOji se
prikazuje na statusnoj traci, pa se zato tekst na statusnoj traci ne moze upo
trebiti za cletaljniji opis stavke menija iii za cIrugu vrstu poruke korisnicima.
U Visual Basicu, tekst koji se prikazuje na sh1tusnoj traci zaclajete u
svojstvu Text odgovarajuceg panela kontrole StatllsBar. To yam omogucava
da na statusnoj traci prikazujete objasnjenja u celom sistemu, a ne samo cIa
opisete aktivnu kontrolu - kao u Accessu. Nedostatak te dodatne fleksibil
nosti jeste to sto tekst morate uvek zadati u programskom kodu i ne postoji
nacin da kontroli docIelite tekst koji bi Visual Basic automatski prikazivao.
Tacno je da taj dodalni posao rnoze biti closadan, ali je to mala cena koju tre
ba platiti za siIu funkcionalnost.
Najveca precInost statusne trake je to sto ne ometa korisnike dok racle.
Za razliku od prozora s porukom, statusna traka ne blokira upotrebu tasta
ture, niti
cIa je kOlisnik ukloni sa ehana. U stvari, u Accessu (i Visual
Basicu, ako ugracIite tu funkcionalnost) korisnik moze zadati da se statusna
traka ne prikazuje.
U Visual Basicu, statusnu trakll mozete llpotrebiti da korisnicima prilm
zujete opsirnije opise iIi cIa ih obavestavate 0 toku procesa koji se odvijaju u
pozaclini. Statusnu traku mozete iskoristiti i za prikazivanje poruka 0 greska
ma, macIa pri tome morate voditi racuna cIa ce korisnik mozda isldjuciti pri
kazivanje statusne trake. Nije dobro da statusnu traku koristite za bilo sta sto
korisnik mora da vicIi. Cak i ako je statusna traka vidljiva u glavnom prozoru,
korisnici mozda nece uoCiti poruku prikazanu na njoj.
Prikazivanje poruka na statusnoj traci ipak ima svrhe. Ako, kao sto sam
preporucila u poglavlju 19, zapise kOji ne ispunjavaju uslove integriteta po
dataka ne ocIbacujete nego ih pdvremeno obelezavate kao sporne, statusna
traka je dobro mesto da prikazete opis problema i nacina njegovog resa
vanja. SadrZaj problematicnog polja ponekad prikazujem crvenim znacinm,
a kada korisnik izabere to polje, na statusnoj traci prikazujem opis problema
i predlog resenja. Posto je prostor na statusnoj traci ogranicen, takode sta
vljam na raspolaganje i okvir za dijalog sa opsirnijim uputstvima, koji se obic
no pojavljuje kada korisnik pritisne odredeni funkcijski taster.
Visual Studio .NET podrZClva kontrolu ErrorProvider, koja pmza istll
funkcionalnost (isticanje problematicne kontrole i prikazivanje poruke 0
gresci) u malo drugaCijem obliku. PrecInost upotrebe te kontrole ie znatno
manja kolicina programskog koda.
Neposredna pomoc
Mehanizam tradicionalne neposredne pomoci u sustini je preslikavanje
stampane dok1ll11entacije u oblik upotrebljiv neposredno na racunaru. Kao
sto se gotovo uvek dogada bda se obezbeduje racunarska poclrsb za obje
kat iIi aktivnost iz stvarnog sveta, to preslikavanje olaksava neke stvari, dole
druge otezava.
Mehanizam za neposrednu pomoc koristi se lakse od stampane doku
mentacije, a mogucnost da se jednim pritiskom misa prikaze deo gradiva
kOji se referencira na tekucem ekranu, svakako je velika prednost. S druge
strane, mehanizam za neposrednu pomoc teze se pretrazuje, a i ne mozete
poneti sa sobom da biste ga l1a
prelistali LIZ soljll knfe.
Pazljivim projektovanjem sistema za neposrednu pomoc mogLl se do
nekle ublaziti njegovi nedostaci. (Medutim, on ce i clalje biti prenosiv koliko
je prenosiv racunar na kome je instaliran.) Projektovanje i pisanje sistema za
P0l110C vrIo je opsirna tema, Ciji veCi
izlazi izvan okvira ove knjige. Ovde
vam mogu dati samo nekoliko smernica, istaCi nekoliko speeificnosti pisanja
pomoci za sisteme koji racle s bazama podataka i uputiti vas na bibliogranju
ako vam trebaju detaljnije informacije.
Prva i najvaznija cinjeniea 0 kojoj
cla vodite racuna kada projektu
jete neposrednu pomoc za svoj sistem jeste sledeca: bez obzira na to koliko
je ta pomoc tesno integrisana u sistem, nemojte je nikad smatrati sastavnim
delom korisnickog interfejsa. To znaci da sistem mora biti samostalan i ne
sme ni u kom slucaju prisiljavati korisnika da pretrazuje neposrednu pomoc
(niti bilo koji drugi oblik dokumentacije) kako bi obavio odredeni posao.
Imajte \I \'idu da po[etnici mozda neel' nll'.lll11eti sta sadr7.i sisLem I'.a nc
posrednu P0I110C, pa se zato l110zda nece setiti cIa pritisnu taster F 1 kada ih
nesto zbl\ni. Mehanizam za neposrednu P0l110C smatrajte jednil11 od oblika
pomoCi koju pruza sam sistem, a ne kao zamenu za tu POl1loc. Projektanti
precesto smatraju da ih ugradnja mehanizma za neposrednll p01110e 0510
bac1a obaveze da nap rave sistem kOji je razumljiv sam po
Prem<l mom
iskllstvu, to je greska Cija je posledica ruzHn i neupotrebljiv softver.
Sledece sto treba da razmotrite kada projektujete mehanizam za nepo
srednu pomoc jeste u kom obliku cete pruzati tu pomoc. Teme neposredne
pomoCi mogu se grubo podeliti u dve vrste: orijentisane na obavljanje poslo
va i orijentisane na funkcije sistema. Teme orijentisane na obavljanje poslova
objasnjavaju korisnicima kako da obave odredeni posao, kao sto je stampanje
racuna ili zakazivanje sastanka. Teme orijentisane nc~ funkcije sistema detalj
no opisuju pojedine funkcije (kao sto je komanda Stampanje u meniju Iz
v ,) .,. I
1
I
1
,1
;t..{'
or
1
\
veStaJI
111 <OntrOle \l)OlJe za reKst LlUnU\.UpcU lIa 0 )nlSCU). Te
vrste
odgovanlju otprilike Uputstvu za korisnike i HeferentnOl1l prirueniku u
stampanoj dokllmentaciji.
Oba naveelena oblika p0l110Ci imaju svoje uloge u podrsci sistemima koji
rade s bazama podataka. Ako sistem kOji projektujete podrzava veCi broj rad
nih procesa, iii su raclni procesi koje sistem podrzava slozeni, P0J110C orijen
tisana na obavljanje poslova moze biti dragocena jer korisnicima sistema
pruza neku vrstu "mape" procedura u sistemu. Medutim, i dalje je vazl10 da
unutar samog sistema obezbedite pomoc i vodie za korisnika. Neprihvatljivo
da korisnicima samo prikazete abecedni spisak obrazaca kao onaj u Acces
sovom prozoru Database i da mehanizmu za neposrednu pomoc prepnstite
ela korisnicima objasni kOjim redosledom trebu da popunjavaju te obrasce.
(To svalmko ne bi bilo prihvatljivo kada biste mdili za mene.)
U ielealnom slueaju, teme orijentisane na obavljanje poslova ne bi treba
10 ela sadrze konceptualni, niti uvodni materijal. Ne zaboravite, to nije prava
alatka za objasnjavanje kOlisnicima sta sistem radio Jedina svrha tema orijen
tisanih na obavljanje poslova jeste da ukratko opiSu "kako" odredene proce
dure, a ne da objasnjavajll njeno "sta", niti "zasto".
AIm za slozene oblasti
vise tema pOl11oei, one ce biti eitljivije na
ekranu racunara. Ukoliko je radni proces kOji objasnjavate slozen i postoji
vise nacina da se obavi, najbolje
da i ne pokusavate da objasnite sve tc
nacine u jednoj temi. U glavnoj temi objasnite samo najjednostavniji iIi naj
uobicajeniji naein i postavite hiperveze koje vode ka temamH u kojima su
opisane varijac:ije.
Dok teme orijentisane nil obadjanje poslov<l OpiSlljU "kako", teme ori
jentisane na funkcije sistema opisnju "sta" i "zasto". U sistemimH koji rade s
bazmna podataka, veCina tema orijentisanih nn funkcije sistema oc1l1osice se
na elemente podataka i kontrole umesto n<1 same funkeije. Na primer, II
malo sistema kOji rade s bazama podataka bice potrebne teme kao sto su one
u Accessovom sistemu za pomoc, gde .ie, na primer, potrehno objasniti pre
ciznu sintaksu funkcije Mid$.
U tim sistemima neophodne su teme koje objasnjavaju znacen.1e svakog
entiteta i atributa u sistemu, kao i uslova kO.1i vaze za svaki mectu njima.
Mogu biti potrebne i teme ko.1e objasn.1ava.1u naCine upotrebe raznih vrsta
kontrola u sistemu na primer, kako se koristi kontrola tipa Tree View, iii
kako izabrati datum pomocu kontrole Calendar.
Kada planirate teme koje se odnose na podatke, vazno .1e da razmotrite
zbog cega bi korisnici zatrazili pom06. Ako koIisnik ima pred sobom obrazac
Porudzbine, l1a kome se nalazi pol.1e za tekst s natpisom "Zeljeni datum do
stave", zaista je izuzetno malo verovatno da ce pritisnuti taster F1 zato !ito ne
razume da .1e to datum na kOji bi korisnik zeleo da mu roba bude isporucena.
Ako .1e to sve sto objasnjavate u temi pomoei, ona je gora nego beskorisna
to .1e razlog gubl.1en.1a nerava i vremena,
Dakle, zbog cega bi korisnik pritisnuo F1? Mozda zato sto ne raZ\lme
zasto je datum vee popunjen ob.1asnite mu sta pedstavlja predlozena vred
nost i kako moze da je zameni. IIi, mozda Il1U je kupac rekao da zeli da mu
roba bude dostavljena "bilo kad posle plvOg u mesecu" pa objasnite cIa t!'e
ba da upiSe najraniji datum iIi drugo pravilo koje vazi u vasem okruzenju. Sto
bol.1e razmotrite pitanja koja kOlisnici mogu postaviti, toliko ce efikasniji biti
vas sistem za pomoc.
o Hidden objects
o System objects
EI Windows in Taskbar
Select to see an icon displayed on the Windows
taskbar for each open database object or window. To
use this feature, you must install Microsoft Internet
Explorer Active Desktop.
Slika 21-5 Saveti What's This? prikazuju se u okviru za dijalog kada pritisnete
dugme sa znakom pitanja na naslovnoj traci, a zatim pritisnete jednu od
kontrola na obrascu
U jednostavnim sistemima, dobra grupa tema vVhat's This? moze bib sve
sto je potrebno, naroCito ako sistem ne poddHva veliki broj slozenih radnih
procesa. Medutim, tekst saveta What's This? mora bib prilicno kratak, buduCi
cla se plikazuje preko prozora u kome je aktiviran i ne 1l1oze se pomerati. Ako
treba da objasnite slozenije uslove, necete imati clovoljno prostora i temi
What's This? moracete da clodate jednu iIi vise duzih tema u sistemu za ne
posrednu pomoc. (Ne zaboravite da na kraju teme What's This? clodate reee
nicu "Pritisnite FI za opsirnije objasnjenje" ili nesto slieno,)
Pitanje na koje tema What's This? pokusava da odgovori - kao sto ste
verovatno i sami pogodili jeste "sta je ovo?" Savet What's This? zamislite
kao natpis na kontmli koji je dugaeak jedan pasus. Zbog ogranieenja prosto
ra, obicno ne mozete biti nmogo kreativni u odgovorima na pitanja koja mis
lite da ce korisnici postavljati. Ali, uz malo promisljanja, ipak mozete smisliti
nesto bolje od natpisa na kontroli izrazenog drugim reeima.
Opisivanje zeljenog datum a isporuke samo kao "Datuma na kOji kupac
zeli da mu se isporuCi mba" isto je toliko lose u savetu What's This? koliko i
1J temi neposredne pomoci. Najmanje ::ito mozete reci .ie, na primer: "Najra
niji datum na koji treba isporuciti kupljenu robu, Predlozena vrednost je tri
dana posle datum a porudzbine, ali je mozete promeniti ako pritisnete polje
i upiSete nov datum. Pritisnite FI za opsirnije objasnjenje."
Zvucni signali
ZVllcni signal - upotreha zvub generisanug pomucll racunara za opisi\',mje
nekog stanja sistema - iZllzetno
mobn mehanizilm pomoCi korisniC'ima,
ali projektnnti mugu cIa upotrebe tu moe i za dobro i za
"Piiiip, pogresio
si" okvir za dijalog kOji se pojavljuje bela sistem otkrije ,,1<orisnikovu gresku"
skolski .Ie primer lose upotrebe zvucnog upozorenja. Korisnici ne vole da ih
neko iIi nesto upozorava na njihove greske, a pistanje ne S,lmo sto privlaCi
korisl1ikovu paznju na problem, vee i pazllju osobe koj1 je dovoljno blizu dn
ga cuje. Uzgred, standarelni racul11rski "piiiip" zaista l1ervira.
Meciutim, ako ZVUCl1e signale upotrebite l1a dobar naCin, to moze biti
veoma korisna alatb. U mesto da racunarski sistem zatrubi korisniku kada
ovaj nesto pogresi, pokusajte da napravite tako da racunar generiSe plijatan
zvuk (na primer, bo kad m1cb precle) bela k01'isl1ik uraeli nesto kako treba.
Recimo da pri unosenju podataka sistem proverava saclrZaj svakog polja Cim
korisnik prede l1a sleelecu kontrolu. Ako poelnci ispunjavaju zaelate uslove, si
stem moze
generiSe tihi
koji znaci "sve je u reelu". (Taj zvuk ne treba
da bude mnogo glasan.) Ako se pojavi problem, sistem se ne oglasava zvu
kOI1l vee prikazuje poruku na statusnoj traei. TiSinH
dovoljno upozorenje
da postoji problem, a korisnik ce pogleelati eknm.
Najbolja analogija za t~ tehniku pozitivnog oelziva (koju dugujem Ahmu
Cooperu) jeste tastatura. Cim pritisnete neki taster, cuje se tiho kuekanje.
Verovatno niste ni svesni tog zvuka, ali bela ga ne hi bilo, odmah biste pri
metili i ispitali u cemu je problem.
Primer tastature treba da umiri sva strahovanja u vezi s kakofonijom u
prostoriji punoj operatera koji unose poclatke. Kao' sto sam vee napom~nula,
"sve je u redu" zvuk ne mora cIa bucIe glasan cIa hi bio efikasan. Pozitivni
zvucni oelziv uspesno sam koristila u sistemu projektovanom za pozivni cen
tar s vise od 100 korisnika u istoj prostoriji.
Poruke
greskama
Dobro V(lSpitallCl osoba objasnjava prolJ]Clll sto jclsllije 1I111C, llCti\O trazi po
moe, ne pokusClva c1a bmle namctljiv<l vise nego sto jt' potrebno i trmli se cia
objasni poslc;c1icc svojih zahtc;va.
Nista manje od navedenog ne bi trebalo da Cini ni c1obro \'<lspitan racu
narski sistem. U stvari, posto racunarski sistemi zasluzlljll manje postovanje
nego ljudi, treba10 bi c1a cine viSe. (Puzanje po. zemlji ne bi bilo. neprikladno
II OVOI11 slucaju.) Kada prikaze poruku "greska", sistem treba da:
Jasno opiSe situaciju, izrazima koje ce korisnici razumeti.
Uctivo zatraZi pomoc, bez isticanja da je korisnik krivac.
Ne gnjavi korisnika zahtevima da uradi nesto !ito sistem moze i sam
da obavi.
OpiSe pos1edice svake akcije koju bi korisnik izvrsio.
Sistem
se ponebd beznadeZllo "zakllcati", ili ce zbog nekog uzroka u
okruzenju, kao !ito je manjak memorije iii kvar diska, postati nemoguce tin
nastavi rad bez pomoCi korisnika. Kada se tako nesto dogodi, nemate mnogo
izbora osim da korisniku prikazete odgovarajucn poruku. To je odlicna prili
ka, ne samo da sistem dobije potrebnu pomoc, vee i da lwrisltik dobije infor
macije koje su mu potrebne kako bi pomogao sistemu da ubuduce izbegne
isti problem.
Ukoliko sitnaciju objasnite jasnim jezikom, bez upotrebe zbunjujuceg
zargona, poruka koju plikazete korisniku omoguCice mu da oclmah resi pro
blem. A ako je razumeo problem bda je prvi put nagao na njega, korisnik ce
znati kako cIa ga ubuduce izbegava - pod pretpostavkom da se situacija moze
izbeci. Pogresan format pri unosenju podataka moze se izbeCi, ali kvar cvr
stog diska obicno ne moze.
Ako korisnikll objasni posledice njegovog izbora, vr10 je verovatno cla ce
sistern dobiti naj10gicniji odgovor korisnika. Imajte u vidu da nmogo toga sto
vama izg1eda savrseno oCigledno, nece biti oCig1edno i korisniku. Nemojte
biti nametljivi, ali nemojte se ni bojati da istaknete cak i ono sto oCigleclno.
Uljudan sadrz.aj poruke i nenametljivo ponasanje prema korisnicima pi
odnosa prema njima. Secate Ii se cla vam je vasa mati pricala
tanje je
kako cete viSe muva uhvatiti pomocu meda nego pomocll sirceta? Ako su ko
risnici stekli opSti utisak da je sistem uglavnom uCtiv i od pomoci, radije ce
yam oprostiti onu cudnu gresktl koja rusi sistem a ciji uzrok nikako ne llspe
(Niko nije
vate da otkrijete.
.
. savrsen.)
'roaktivna pomoc
Pasivna i reaktivna pomoc korisnidma relativno 511 dobro shva6ene kategori
je podrske kori5nicima, mach postaju sve slozenije sa sirenjem naseg znanja
o komuniciranju izmec1u racunara i Ijudi, i s pojavom 110vih programerskih
alatki. Posleclnja kategorija, proaktivna p011106, svakako se moze opisati kao
"novi lik u komsiluku" i zasad je ugmdena u vrlo mali broj sistema.
Proaktivna P0l110C se zasniva na jednostavnom plincipu: racunarski si
stem prati korisnikove akcije i deluje proaktivno da bi mu pomogao, tako sto
claje preclloge za efikasniju upotrebu sistema ili precluzima akcije II ime ko
risnika. Alatka Assistant u Microsoftovom Officell pruza proaktivl111 P01110C
tako 5to korisniku daje savete nn osnovu njegovih akcija.
Vrsta proaktivne pomoCi koja trenutno privlaCi 111nogo paznje jeste tzv. pa
metni agent (engL intelligent agent). Pametni agent softver kome kOlisnik
prepusta obavljanje oclredenog posh Pametni agenti se cesto prave U obliku
specijalizovanog \Neb kOlisnickog interfejsa kOji odgovara na zahteve tipa
"Nadi 111i najnizu cenu za ov'~i mtika\" iii "Predlozi mi knjigu koju bih voleo da
procitam". Ali Ilista ih ne ogranicava samo na \Veb okruzenje. Na primer,
mozete napraviti agenta kOji pomaze studentil1lH cla organizuju svoj raspored
predavanja kako smatraju cla im m~jvise oclgovara - "N emoj 111i stavljati pre
davanja iz matematike
podne, a strani jezik bih najraclije popoc1ne".
Microsoft stav1ia na raspolaganje dve alatke za izracll..l interfejsa ZHsnOVH
nih na animinmim likovima, H to S1..1 Offlce Assistant i Microsoft Agent. VeCi
na ljudi poznaje malu skakutavu spajalicu koja preclstavlja Officeovog
asistent,l (kor1snik moze da izabere drugaciji lik), ali ne zna svako cla Of
ficeov asistent ima prograrnabilni interfejs. Mectutim, Officeov asistent je na
raspolaganju samo u Officeovim aplikacijama i ne moze se distribuirati za
jeclno sa izvrsnom Accessovom komponentom.
Ako raclite u Accessll (iii u bilo k0111 dr1.1gom razvojnom okruzenju u
korne se mogu koristiti ActiveX kontrole, ukljucujuCi i Visual Basic), mozete
preuzeti paket Microsoft Agent SDK sa Microsoftove Web lokacije. Znatno
je 1110cniji od Officeovog asistenta.
Microsoft Agent je vdo zabavna igracka. Osil11 gotovih likova koje dobije
te 1.1 SDK-u, mozete projektovati i programirati i vlastitc likove. Microsoft
Agent takode podrzava prepoznavanje govora (na engleskom jeziku) sto ima
fantastican potencijal II aplikacijama koje racle s bazama poclataka.Yolela bih
cla neko napravi Microsoft Agent interfejs za alatku Microsoft English Q1.1elY
Obuka korisnika
korisnika sistema koji rade s bazama podataka ne razlikuju
vrste softvera. Pocetna obuka moze se obaviti koriSce
njem dokumentacije, preelavnca ili racunara; navede11e mogucnosti ne isklju
cuju jedna
Ako se opredelite za pruzanje nekog oblika obuke na racunaru, ne za
boravite ela jasno definiSete opseg i ciljnu grupu tog projekta. Pocetnicima je
l1ajvaznije da saznaju sta sistem meli, a tek na elrugom mestu kako to radi.
Opseg obuke pocetnika zavisi oel 510ze11osti sistema i doelelje11og bucIze
tn. U mnogim sistemima dovolj11o je prikazati jeelan iii elva uvoelna ehana
koji objasnjavaju sta sistem raeli. Za slozenije sisteme prikladniji su slozeniji
oblici obuke, mozda neki vodic kroz sistem ili cak formaln1 obuka l1a raCll
naru, s vezbama, ispitima i slieno.
Korisnike sreelnjeg nivo<1 znanja zanima prvenstveno k1ko se obavljaju
pojedini poslovi i u mnogim slucajevima njihove potrebe 1110ze cIa zadovolji
sistem za neposrednu pomoc koji detaljno opisuje obavljanje poslova koje si
stem
U
razlika izmedu "pomoCi" i "obuke" elonekle je proiz
voljna. Medutim, u slozenijim sistemima, kOlisnicima srednjeg nivoa znanja
moze biti potrebna ista vrsta formalne obuke na racunaru kao i pocetnicima.
Bez obzira na opseg obuke koju cete obezbediti, nastojte da obuka bude
razelvojenn od samog sistema. Korisnicima svakako treba 0l110guCiti cia po
k1'el1u obuku iz korisnickog interfejsa sistema, mozda P0l110CU neke stavke
menija za pomoc. Ali upotrebu materijala za obuku 11e treba mesati S 1101'
malnom upotrebom sistema.
Zahtevi za
Sazetak
U OV0111 poglavlju razl110trili S1110 tri oblika pomoCi korisnicima: pasivnu po
moe ug1'acienu u ko1'i5nicki interfejs sistema, reaktivnu pomoc koja se aktivi
ra kao rezultat odreciene akcije korisnika i proaktivnu pomoc koju aktivi1'a
sam sistem.
Prvo smo proucili tri vrste pasivne pomoCi: mnemonicke pristupne ta
stere, kratke opise i statusne trake. Zatim S1110 preSli na reaktivnu pomoc
koja se obicno izvodi u obliku sistema za neposrednu pomoc i saveta \Vhat's
This?, ali moze obuhvatiti i zvucne signale a trehalo hi da obuhvata i poruke
o greskama. I najzad, ukratko smo razmotrili novu oblast proaktivne pomoci
i obuku korisnika.
Bibliografija
Deo I: Teorija relacionih baza podataka
Date, C. J. An Introduction to Database Systems. 7th Edition. Reading: Ad
dison-Wesley Publishing Company, 1999.
Teorey, Toby J. Database Modeling & Design. 3rd Edition. San Francisco:
1997.
339
SOfi1C(lI'C
Recnik
kljuc tabele.
anomalije pri azuriranju Problemi pli radu s podacima ciji je uzrok lose
ma radi kOlisnik.
celovitost PIincip da rezultat svih operacija nad relacijom mora takode biti
desni spoljni spoj Spoljni spoj koji vmea sva polja iz dmgog skupa zapisa
entitet
0 cemu sistem evidentira podatke.
entitet siroce Slabi entitet kOji nije povezan ni sa jednim entitetom u pri
mamoj relaciji.
341
jaki entitet Entitet kOji moze da postoji bez ucestvovanja u vezi s drugim
entitetom.
relaciju.
sveta.
levi spoljni spoj Spoljni spoj koji vraca sva polja iz prvog skupa zapisa u
iskazu SELECT.
logicki izraz Izraz Ciji rezultat moze biti samo "istinito" (True) ili "neistini
to" (False).
logicki operator Operator ciji je rezultat logicka vrednost (True iii False).
logicki tip podataka Opsti opis domena, kao sto je "Tekst" ili "Broj", bez
sanje podacima.
rclac:ione teorije.
podataka.
podataka.
relacione teorije.
toj vezi.
primama relacija Relacija ciji primami kljuc preuzimajn svi ostali uccsni
prim ami uslov Uslov koji odreduje fizicku struktunl baze podataka.
prostor problema Deo stvamog sveta kOji modeluje aplikacija koja radi s
baZ0111 podataka.
puni spoljni spoj Spoljni spoj koji dajc s\'a polja iz oba llccsnika,
radni proces NeSto sto se olxlylja pOmOCll aplikacijc koja radi s bazol1l
podataka.
akcijom kOlisnika, kao sto je unosenje neplihvatlji\'og pod atka iii zahtev za ne
posrednu pomoc.
izmedu entiteta.
relacioni presek Relaciona operaci.1a izmectu dva skupa zapisa koja Ymca
istovremeno.
datom domenu.
alternate key
update anomalies
attribute
record selector
closure
wizard
fact attribute
log file
Cartesian product
loseless
decomposition
entity
orphaned entity
f1lnctiollal
depende11cy
snowflaking
grain
clustered index
attribute flag
increntental
development
data integrity
transaction integrity
Single document
interface, SDI
multiple document
interface, MDI
derived relation
form-based report
qllenJing
regular entity
equi-join
candidate key
cardinality
slider control
dimension key
komandna tabla
S 1/; itc h boa rd
type compatible
kompatibilni po tipu
IIser services
korisnicke usluge
kruzna zavisnost
join dependency
lab klijent
thin client
cascading update
lancano azuriranje
cascading delete
lancano brisanje
masina baze podataka database engine
model podataka
data model
containment model
model sadrzavanja
neposredna pOl1106
on-line help
nezavisni entitet,
regular entity
jaki entitet
nivo detalja
ofgranularity
normalizovanje
normalization
obaveznost
oJ)tionality
obelezje, atribut
attribute
list b(n;
obicna lisbl
objektni model za pri data access object
stupanje podacima
model
odnos, veza (izmectu
relationsh ip
entiteta)
ogranicenje, uslov
constraillt
okidac
trigger
operator ogranicavanja restriction operator
operator spajanja
join operator
operator za izracllna
s1lmmarize operator
vanje zbimih podataka
operator
rename operator
za preimenovanje
operator za prosirenje extend operator
osnovna relacija
base relation
padaju6a lista
combo box
pahuljasta sema
snowflake
paleta poslova
task bar
pametni agent
intelligent agent
polje za potvrdivanje
check box
polje za tekst
text box
poslovne informacije
business intelligence
347
l510\'nc
:JSIo.\"J1i USlo.\'i
)Slo.\"110 prm'i!o
)tpuni spoljni spoj
"egradnk za podatke
'ekopavanje podatab
'ikaz
'imami kljuc
'imami USlo.Vi
'iro.dni spoj
'ojekcija
'o.stor problema
'o.zor poto.mak
.dni proces
:clunclantno.st
senices
COllstmillls
mIl'
full oulerjoin
data 111 a 1'1
data milling
r;iew
primary key
intrinsic constraints
naturaljoin
projection
problem space
child window
lVork process
redundancy
:ferentna tabela
lookup table
:lacija
relation
laeiona baza poelataka Telational database
:laciona razlika
relational difference
:laciona unija
relational union
lacioni presek
relational
intersectioll
zim raela
mode
mospo.j
seWoin
,tem koji radi
database system
s bazo.m podataka
,tcm za upravljanjc
database mallage
bazama podataka
ment system,
DEAtS
laclistenje podataka data warehol/sing
up rezultata
result set
recordset
up zapisa
,bi entitet, zavisni
weak entity
entitet
)j
tier
.ojna tabela
junction table
outerjoin
oljni spoj
ranicenje
paging
scrubbing
ruganje
ma baze podataka
database schellw
fa
code
bela cinjenica
fact table
bela dogadaja
coverage table
bela snimaka stanja snapshot table
tabela transakcija
tabclarni prikaz
teski klijent
tctn spoj
tipc)\"i po.dataka koje
definisc korisnik
torka
trovrednosna logika
ucesnici veze
unakrsni upit
unutrasnji spoj
upit
uslov, ogmnicenje
uslov za domen
uslovi integriteta baze
po.dataka
USlo.vi integriteta
promena stanja
uslovi za integritet
entiteta
uslovi za o.cuvanje referencijalnog integriteta
usluge
usluge po.clataka
Yew, oclnos (izmedu
entiteta)
veza "jeclan prema
trl1ls(!ctiol/
la/;/e
dot as/wei
fal clienl
Ihct({~joil/
user-defined data
types, UDDr
luple
three-valued logic
praticipallts
crosstab query
innerjoin
query
cOllstmint
domain const-raint
database integrity
coltstmints
transition integrity
cOilstraints
entity constraints
referential integrity
cOllstraillts
services
data services
relationship
one-to-one
Telationship
veza "jeclan prema vise" one-to-lIwllY
relationship
prema vise" 1IUmy-to-lnany
veza
relationship
veza tipa sastavnice
bill of lIwterials
relationship
zajednicki nivo zastite share-level security
record
zapis
zastita na nivo.u pojedi- user-level security
nacno.g korisnika
zavisni entitet,
weak entity
slabi entitet
lIlulti-vallied
zavisni parO\'i grupa
vreclnosti
dependency pairs
zavisni tabelarni prikaz sub-datasheet
sema
star schema
mpietan spisak termina koji se koriste u izdanjima Mikro knjige naiazi se na adresiwww.mk.co.yu/recnik.
Indeks
Simboli
u tabelama dimenzija,
arhitekture korisnickog
135-136
interfejsa, 251-253
(jednako) operator, 91
interface), 256-26:3
141-143
A
podrska za radne proeese,
uslovi za, 218, 295-296
251-25:3
veza, identifikovanje, 191
Access (aplikacija), 5
interface),254-256
Jet), 95
,317
arhitekture podataka,
automatsko stampanje
208-217
izvestaja, 31.5-316
(ADO),8
arhitekture U obliku
:316-322
clokumenta, 2.53-263
arhitekture zasnovane na
Objects), 8, 19
poslovima, 251-253
ADO. NET, 8
3-6
Advanced Filter/Sort,
bimc
vrednosti, kontrola, 287
105
prozor, 309-310
Boyce-Coddova
normalna
forma,
42-43
definisanje elemenata
podataka, 6-9
pracenje,
brisanje
podataka,
podataka, 183-188
AllowZeroLength, indikator,
223
entiteta, odreclivanje,
81
194-195
alternativni kljucevi, 34
funkcionalna zavisnost,
35-36
kandidati i primarni
166-169,229
kljucevi, 33-35
AND, operator, 91
ogranicavanje opsega
anomalije
azuriranju, 26
84,218
vrednosti,197-198
ANSCNULLS, opeija, 92
aplikacije, 6
46-47
kljucevi dimenzija,
121-122
156-161,225-226
osobine cinjenicnih
apstraktni entiteti, 11
atributa, 122-129
161-165
349
2.51
entiteta, 188-191
arobnjaei,261-263
procesa, 179-181
etvoroslojna arhitektura
dimenzionalne baze
koda, 20.3-206
podataka, 111-119,232
projektovanje obrasca i,
44-45
277
injenice, 114
heterogcnc, 129-131
121-131
granularnost, 124-126,
140
)
struktura, 121-122
vrste, 127-129
grananje,138-140
)ataField, svojstvo, 283
izmene vreclnosti,
)ataGrid, kontrola, 274, 285
141-143
struktura,
133-137
)ateTimePicker, kontrola,
clirektno
merljivi
projektni
287
uslovi,162
atumi,36
korisniku, 244-24.5
za predstavljanje, 287
clodavanje
poclataka,
efinisanje parametara,
pracenje,
223
1.5,5-169
clokumentovanje
radnih
procesa,
179-181
domeni,
12,
18-20,
195-197
entiteta,
oclredivanje,
19,5-196
79
eklarativl1i
kompatibilnost
po tipu, 19
ekomponovanje bez
ogranicavanje
opsega
gubitaka,32
vrednosti,
197-198
elimieno ucestvovanje u
za,
218
uslovi
vezi, 21,49
doslednost dizajna
eljenje, operacija, 98-99
kOrisnickog interfejsa,
esni spoljni spojevi, 98
248-2.50
etaljni izvestaji, 311
39-40
282,284
d\'Oslojne arhitekturc
podataka, 213-214
E
E/R (entity relationship)
2.30-231
entiteta, 188-191
elementi podataka,
clefinisanje, 183-188
entiteti, 1.3-15
ponovno razmatranje,
192-19.5
potklase, 56-59
predstavljanje na
obrascima, 26,5-277
uslovi za integritet,
296-299
Excel,118
F
filtriranje poclataka, .306-310
semama, 217-218
fleksibinost, 28-31
formatiranje izvestaja,
320-322
formatiranje vreclnosti
u clomenu, 198
SELECT (SQL), 90
grananje, 138~140
granularnost, tnbclc
za izveStaje U obliku
Cinjenica,
140
menija,312
greske
alatki,312
operatOli, 92
odredba ROLLUP,
106~107
izmene, llpravljanje, 235
izmene vrednosti II
dimenzijama, 141-143
izracunavanje zbirnih
H
podataka, operator za,
103~104
heterogene Cinjenice,
izrada izvestaja, 30.5-322
129~131
ad hok (namenski) izvestaji,
HOLAP (hibridni OLAP)
305-306,316-322
sistemi, 11.5
pretrazivanje, sortiranje
i filtriranje podataka,
306-310
310-31.3
stampanje izvestaja,
performanse,211-21:3
312-316
indikatori, neskalarne
izrada modela podataka, 1.52,
vrednosti, 37
183-199
integrisanje komponenata
entiteta, 188-191
identifikovanje elemenata
realizovanje, 76-87
podataka, 183-188
uslovi, 68-75
normalizovanje, 198
ogranicavanje opsega
vrednosti, 197-198
193
ponovno razmatranje
interfejs
entiteta,192-195
s jednim dokllmentom
izvestaji
(SDI),254-256
256-263
izvedene relacije, 89
1I
J
jaki cntiteti, 'so
21,59
predstavljanje na
obrascima, 269-272
operatora,91
jeclnakovredni spojevi, 94
jednobitni inclikatori, 37
jednoslojna arhite'kiura
podataka,210-21.3
82-83
lancano brisanje/azurinmje,
73,299
objekti Relation, 86
po'drska za domene, 20
93-98
K
kanclidati za kljuceve,
52-.53,194
kardinalitet veza, 11,50
identiflkovanje, 190
poznat,6.5
Cinjenica), 114
kocke (c1imenzionalne
podataka), 116,
c1imenzionalne baze
podataka
prototip i spceif'ikacija,
2:33-2:3.J
programskog koda,
WindowsoYfc kontrole.
202-206
biranje
usluga, 202
)1l1unieimnje s korisnicima,
287-289
172-173
za logicke vrednosti,
281-282
mkretni entiteti, 14
mtrole, 279-290
za skllpove vrednosti,
plikazivanje pornka na
282-286
za tekstualne vrednosti,
289-290
za brojeve i datume,
za izradu izvestaja,
312-313
287-289
za logicke vrednosti,
281-282
172-173
za tekstllalne vrednosti,
289-290
L
vanje, 153, 232-233
Inki
klijenti, 216
arhitekture,251-253
lancano
aZuriranje, 73, 299
lancano
brisanje,
73, 299
interface), 256-263
levi
spoljni
spojevi,
98
LinkChildFields,
svojstvo,
interface),2.54-256
285
doslednost, 248-250
LinkMasterFields, svojstvo,
efikasnost, 239
28.5
korisnik komanduje,
lista
s hirnnjem viSe stavki,
244-245
286
minimizovanje ull1nog
ListField,
svojstvo, 283
napora, 246
logicke
vrednosti,
kontrole
modeli,240
za
predstavljanje,
nivoi korisnika, 242
281-282
logicki
operatori, 90-92
251-253
logicki
tipovi
podataka, 68
jredstavljanje entiteta
lozinke,
222-223
na obrascima, 265-277
hijerarhije, 272-274
M
jcdan", 268
vise",269-272
interface), 256-26.3
vise", 275-277
') III po 11 e n tc
l11chanizmi za podrskll
korisn ici ma, ,32:3-:3:37
oimka, :3:37
pasivni, 32,5-329
proaktivni,
3:36-:3:37
reaktivni, 32.5, 330-:3:35
meke izmene, pracenje, 143
interfejs), 240
161-165
metodologije, nnpomene
Microsoft ADO, 8
alatka, :310
.336-337
Microsoftov Aceess, 6
minimizovanje umnog
napora, 246-247
mnemonicki pristupni
tasteri, 325-326
model evolutivnog
150-151
1.50-152
;301-304
f1eksibilnost, 28-;31
izrada,
183-199
entiteta, 188-191
identifikovanje
elemenata podataka,
183-188
normalizovanje, 198
ogranic\\y,mje opsega
\TedJlosti,197-l98
ponovno nlzmatranje
entiteta, 192-195
predstavljanjc, 230-2:31
mzlike U odnosu
na stvarnost,
obrada,301-304
147-1.52
modularnost programskog
koda,202-206
MOLAP (multidimensional
OLAP) sistemi, US
MonthView, kontrola, 287
MSDE (Microsoft Desktop
Engine),7
N
nadovezivanje skupova
zapis<1,99-100
namcnski (ad hok) izvestaji,
305-306,316-322
242-243,323
normalizQl'ane baze
podataka. definicija, ] 1:2
normalizO\'anje bam
podataka, :31, 36-47, 198
normalizO\',mje eli menzija,
138-140
normalne forme. 31
N-slojne arhitekture
podataka, 215
Null vrednosti, 76-78. 90-92
uslovi,295
zbirne funkcije, 104
numericke vrednosti,
kontrole za
preclstavljanje, 287-289
o
obaveznost ucesnika u vezi,
,50,59
obaveznost veza
identifikovanje, 190-191
obicne liste, kontrole,
282-284
povezani par, 285
objektni modeli za
pristupanje podacima, 8
obrasci, projektovanje
za prikazivanje entiteta,
26.5-278
obrazac, filtriranje po,
308-309
Office Assistant, 3.36-337
ogranicavanje, operator, 93
ognmicavanje opsega
vrednosti, 296
okidacke procedure, 79
okruzenja za definisanje
podataka,9
OLAP (on-line analytical
processing) sistemi. 112
OLTP (on-line transactional
processing) sisterni, 112,
118
opcmcijc nad
S9-10S
dopune, 103-108
opcracije nad skupovima,
99-10:3
relacione operacije, 92-99
opis sistema,
clokumentovanje,
228-229
opseg sistema, odredivanje,
165-169
opsezi vreclnosti,
ogranicavanje, 197-198,
296
opste projektne strategije.
164
OH, operator, 91
OHDER BY. oclredba iskaza
SELECT (SQL), 93, :306
osnovne relacije, 89
p
padajuce liste
kontrole, 282-284
otvorene, 28.3
pahuljaste seme, 114
pasivni mehanizmi, 1'omoc
korisnicima, 32,5-:329
performanse, uticaj
arhitekture poclataka na,
212-217
peta normalna forma, 46-47
pistanje, kao upozorenje
korisniku. :334
PIVOT, odreclba, 106
poeetnici, projektovanje za,
323-324, :337
podobrazac, kontrola, 285
poluaditivne Cinjenice, 123
polja za potvrc1ivanje,
kontrole,281
polje za tekst, kontrola,
289-290
ohuka, :3,37
eiel1lcnatn pocbtaka,
pasi\'ni mcilanizmi,
183-188
:32.5-:329
lIorm,llizovanje, 198
proaktivni mehanizmi,
ograniCavanje
:32.5,:3:36-337
vreclnosti,197-198
ponovno razmatranje
330-335
entiteta, 192-195
)OnOVI10 razmatranje
entiteta, 192-19.5
)oruke
147-152
o greskama, 334-3:3.5
preclstavljanje projekta
drugim<l, 22,5-226
prikazivanje na statusnoj
traci, 328-329
Windowsove kontrole,
biranje, 279-290
procesi
za brojeve i datUI11e,
clefinisanje
287-289
za logicke vreclnosti,
identifikovanje, 173-177
281-282
zavisnosti, utvrdivanje,
za skupove vreclnosti,
177-179
282-286
za tekstualne vreclnosti,
174-177,300-304.
289-290
i lIslovi integriteta;
postupak projektovanja baZel
raclni procesi
poclataka, 147
entiteti i, 194
152,171-177
oslovne informacije,
117-119
clefinisanje sistemskih
parametara, 152,
15,5-169
193
152,171-177
projektni uslovi,
161-165
152, 183-199
analiza domena,
195-197
projektni uslovi,
161-16.5
entiteta,188-191
152, 183-199
iclentifikovanje
elemenata podataka,
183-188
entiteta, 188-191
normalizovanje, 198
ogranicm"anje opscga
vreclnosti,197-198
1'0110\'110 razmatranje
entiteta, 192-195
147-152
predstavljanje projekta
drugima, 22.5-226
vVindowsove kontrole,
biranje, 279-290
za brojeve i datume,
287-289
za logicke vreclnosti,
281-282
za skupove vreclnosti)
282-286
za tckstualne vreclnosti,
289-290
potklase, 129
223-224
pracenje izmena 11
climenzionalnim bazama
podataka, 141-143
preclstavljanje
hijerarhija na obrascima,
272-274
projekta, 22,s-226
raclnih procesa na
dijagrnmima, 179-181
105
Jet), 95
prdrazivanjc poc1atab,
306-310
pribzi (SQL Sener), 89,
220-221
primarne relacije, ,51-,52
primarni kljucevi,
292
i jedinstveni indeksi, 84
nepopunjena polja, 297
primarni uslovi, 292-299
prirodni spojevi, 95
prividni model (korisnieki
interfejs), 241
privilegije, dodeljivanje, 223
proaktivni mehanizmi,
pomo(; korisnicim<1,
336-337
problem nedostajuCih
podataka, 69, 76-78.
Videti i Null vrednosti
problemi sa stampacem,
313-315
procecluralni integritet, 79
profili, korisnicki, 181
projekcija, operator, 93
projektni interfejs, 260
projektni uslovi, razvoj,
161-16,5
analiza troskova i dobitaka,
166-169,229
kOji se tieu radnog
okruzenja, 163-164
projektovanje i7vp~h.i"
316-322
projektovanje korisnickog
interfejsa,
232-233
arhitekture korisnickog
interfejsa, 251-2.53
MDI (multiple document
interface),256-263
SDI (single document
interface), 253-256
doslednost, 248-250
efikasnost, 239
korisnik komanc1ujc,
244-245
minimizoVC1l\je llmnog
napora, 246
mocleli, 240
nivoi korisnika, 242
podrska za radne procese,
251-253
predstavljanje entiteta
11a obrascima,
265-277
hijerarhije,272-274
veze tipa "jedan prema
jedan", 268
veze tipa "jedan prema
vise", 269-272
vise", 275-277
prototip i specifikacija,
233-234
Windowsove kontrole,
biranje
za brojeve i datu me,
287-289
za logicke vrednosti,
281-282
za skupove vrednosti,
282-286
za tekstualne vrednosti,
289-290
za izradu izvestaja,
312-313
prosti kljucevi, 33
prostor problema, 5, 192
prosirenje, operator za, 104
prototip korisnickog
interfejsa,
241
provera isp'ravllOsti podataka,
204, 280. Videti i uslovi
integriteta
prva normalna forma,
36-38
R
raclio-clllgmad,
282
radni procesi, 74,229-2:30
analiziranjc, 177-179
clefinisanje, 1.52, 171-179
clefinisanje elemenata
podataka, 183-188
dokumentovanje, 179-181
podrska u arhitekturi
interfejsa, 2,51-2.53
predstavlj,;nje, 229-230
utieaj na entitete, 192-193
razgovori s kOlisnicim(l,
172-173
razlicito, tabela istinitosti
operatora, 91
razlika, relaciona, 101-102
razvoj ceone komponente
aplikacije,9
reaktivni mehaniz111i, pomoc
korisnicima, 32,5,
330-335
reclundantnost
eliminisanje, 25-27
u tabelama cilljenica, 122
relacije (skupovi zapisa), 10
definicija, 11
kandid<~ti i primnmi
kljncevi, 33-35
pracenje aktivnosti
korisnika, 223-224
virtuelni, 204
relaciona algebra, 89-108
dopune, 103-108
operacije nad skupovima,
99-103
relacione operacije, 92-99
relacioni model, 9-11
relacioni OLAP
lIS
Helation,objekti
baze
podataka),86
Report, carobnjak, 317
Required, svojstvo polja, 81
csellje S komel1cionalnim
vredllostima, Wi
okovi, oc1govaranje na
pitanja 0, 227
sistemi, 115
106-107
za rukovodstvo,
227-228
DI (single document
interface),254-256
220-221
dopune, 103-108
99-103
pretrazivC1nje, sOltiranje
i filtriranje podataka,
306-310
Videti i pomo'::
korisnicima
stemski parametri,
definisanje,
155-169
169
predstavljanje, 282-286
abi entiteti, 50
sloj
za podatke,
20:3-204
pristup,
20.5
interfejsa za transakcije,
203-20.5
slozeni kljucevi, 33
specifikaeija korisnickog
interfejsa, 234
spojne tabele, 60
sirociCi, 73
spoljni spojevi, 98
SQL Server, 6
82-83
podrska za domene, 20
UDDTs (user-defined
za,243,323-324,337
sa, 153
310-316
stepen, relacije, 12
stranicenje, 216-217
strugnnje, 137
25-47
poc1ataka, lll-118,
232. Vidcti i tabde
dimenzija; tahc1e
cinjeniea
projektovanje obmsea i,
277
fleksibilnost, 28-3]
198
Boyee-Coddova
normalna forma, 42
forma, 44-47
39
36-38
40-42
eliminisanje, 25-27
interfejs),241
sistema, 225-226
201-224
arhitekture podataka,
208-217
kOJ11ponente, 217-221
preelstavljanje, 232
priprema, 15:3
stampanje izvestaja na
zahtev, 315-316
r
nhclarni prikaz, 2S.s
dcfinisanje II
semama, 217-21S
abelecinjenica, 114,121-1:31
struktura, 121-122
vrste, 127-129
grananje, 138-140
struktura, 1.33-137
menija, 325-326
:ekstllalne vrednosti,
kontrole za
predstavljanje, 289-290
:eio, relacije, 12
sistema, 241
biranje, 196-197
(UDDT), 79-80
ToolTips, ,326-328
veza
s tanj a, 70-71
288-289
105-106
202
troskovi, oclgomralljc na
stanja, 70-71
llslovi referencijalnog
integriteta,72-74,
8,5~86, 296-299
166-169,229
pitanja 0, 227
u
llcesnici veze, c1efinicija,
20-21,49
l:J1)es),79-80
Mask),289-290
246-247
unutrasnji spojevi, 98
uskladisteni, 220-221
uslovi
za opsege vrednosti,
197-198,280,296
287,289-290
191,218
podataka, 218
291-304. Videti i
integritet podataka
174-177,300-304
entiteti i, 194
uslovi integriteta
podataka, 74
68-70, 79-80
71-72,
S1~S.S
ValidationRule, svojstvo, 81
294
49-66
binarne,
49
definicija ucesnika, 49
c1efinisanje,188-191,
217-218
modelov,mje, ,51-,54
obaveznost, ,50, 59
identifikovanje, 190-191
predstavljanje hijerarhija
na obrascima, 272~274
predstavljanje
na dijagramima, .52
predstavljanje na
obrascima, 268-269
59
predstavljanje na
obrascima, 269-272
60
grananje, 138
predstavljanje na
obrascima, 275-277
lIname, 49, 61
.iseUimenzionalni OLAP
sistemi, 115
za slmp()\'e \Teclnosti,
282-286
za tekstualne vrecll1()sti,
289-290
XOR, operator, 91
zastita
Nindowsove kontrole,
na nivou pojedinacnog
279-290
korisnika, 222
sistema,
221-224
287-289
z,~ednicki
nivo, 222
za logicke vrednosti,
281-282
z<1nemari\'anjc
prada, 301-304
\Tednosti, 44-45
274
zavisnosti
utvrdivanje, 177-179
velicine, 294
uradena.