Baze podataka

Podatak - nosilac realne slike stvarnosti koji daje opis nekog činjeničnog stanja (žut; beo; ceo; 1; F14; 354; $10,50; Car Dušan; itd.). To je, u stvari, činjenica o nekom segmentu realnog sveta koju treba čuvati u elektronskom obliku na duži vremenski period i koja ima značenje za korisnike baze podataka. Informacija - obrađeni podaci povezanih grupa podataka ili podatak koji proširuje nivo znanja, odnosno smanjuje ei- tropiju sistema (neodređenost). Za informaciju je bitno da bude jasna, tačna i pravovremena.


Tako bi rečenica: "Danas je naša firma ostvarila promet u iznosu od $5000 sa zaradom od $320" bila informacija, ako nas obaveštava o ačem što nismo znali. Baza podataka - kolekcija povezanih podataka sa višestrukom namenom. To je skup podataka koji se odnose na jednu temu ili namenu. Možda je lakše shvatiti bazu podataka kao skladište opšte namene za smeštaj i obradu bilo koje vrsteri- formacija, prema vašoj želji. Na primer, u bazu podataka možete smeštati imena i adrese. Takođe biste mogli da skladištite podatke o vašoj videoteci, fonoteci, zai- hama i porudžbinama vašeg privatnog preduzeća, kao i svih oblika evidentiranja i KORISNICI prikazivanja podataka o poslovanju. Baza podataka je više od samih podataka. Ona sadrži objekte kcfi će vam pomoći pri upravljanju podacima, kao što su obrasci (za unos ili ažuriranje podataka) i z- veštaji (za prikaz i/ili štampanje probranih grupa podataka u odgovarajućem obliku) kao i jedna ili više tabela u koje skladištite podatke koji su značajni za vas. Sistem baze podataka - je celina koju čine: • sama baza podataka, koja može predstavljati jednu datoteku, dok je to u kompleksnijim modelima najčešće hijerarhijski i strukturno organizovan sistem više povezanih datoteka • sistem za upravljanje bazom podataka (Database Management System - DBMS) i • korisnici baze podataka. Na slici desno je predstavljen opšti model sistema. MS Access je kompleksan skup više zavisnih alata za kreiranje i razvoj baza poch- taka, pa je teško reći da je to tek jedan program, alise u svakom slučaju može svrstati u kategoriju visoko razvijenih DBMS razvojnih alata (pograma). DBMS je jedan složen softverski alat koji treba da omogići: • Skladištenje podataka sa minimalnom redudansom (ponavljanje istih podataka) i njihovu centralizaciju, čime se postiže jednostavna i efikasna organizacija podataka. • Korišćenje zajedničkih podataka od strane svih ovlašćenih korisnika, kao i podelu korisnika sistema na gripe prema pravima pristupa. • Logičku i fizičku nezavisnost programa od podataka. Bez obzira što se podaci fizički pamte, po pravilu, samo jednom, u jedinstvenoj fizičkoj organizaciji, svaki korisnik dobija svoju sopstvenu logičku sliku (logička struktura) podataka kakva mu najviše odgovara. • Jednostavno korišćenje baze podataka preko grafičkog interfejsa bliskog korisniku, čime se krajnji korisnici lakše uključuju u razvoj informacionog sistema (IS), pa time njegovo korišćenje uglavnom ne predstavlja nila- kav problem. Licima koja učestvuju u razvoju ovakvog sistema značajno se povećava produktivnost, odnosno rezultati se postižu za relativno kratko vreme. • Najracionalnije iskorišćenje zauzetog prostora na spoljnoj memorijskoj jedinici. Informacioni sistem - je visokouređeni skup metoda, procesa, i operacija za prikupljanje, čuvanje, obradu, prenošenje i distribuciju podataka u okviru jedne organizacije, uključujući i opremu koja se u te svrhe koristi i ljude koji se tim aktv- nostima bave. Kao primeri mogu poslužiti informacioni sistemi poslovnih banaka i svih većih trgovinskih preduz:ća, spoljno-trgovinskih preduzeća , projektnih biroa, avio kompanija i slcno.  Opšta arhitektura sistema za upravljanje bazom podataka koja omogućuje ostvarivanje navedenih ciljeva sastoji se iz tri nivoa: Intemifizički nivo definiše način na koji su podaci fizički organizovani na spoljnim memorijskim je-dinicama (diskovima). Konceptualni nivo definiše opštu logičku strukturu baze podataka, sve podatke u modelu i njihove o- gičke odnose (veze), treba da omogući upravljanje podacima kao zajednčkim resursom u sistemu baze podataka. Eksterni nivo (korisnički) na njemu se definiše logička struktura podataka pogodna za specifične zahteve, odnosno programe. Iako su tabele primarni izvori podataka, korisnici baze podataka nemaju direktan pristup ovim objektima, već obrali po-dataka pristupaju preko određenih obrazaca ili formulara (Forms) za unos i ažuriranje podataka, koji se nalaze u bazama koje mogu da predstavljaju aplikacije pod Access-om. Grafičke mogućnosti rada pruža operativni sistem Windows, a na¬zivamo je grafički korisnički interfejs (GUI). Otpremnica broj 003 Kupac Bane EXPORT - Poručeno 30.03.1990 Na adresu Bulevar Vojske Jugoslavije 31,11070 NOVI BEOGRAD Način plaćanja VIRMANOM ’ | Način otpreme Poštom T | Datum otpreme 08.04.1990 Rok uplate p 06.10.2000 - M Datum potvrde 29.02.2000 Danas I petak STAVKE fakture POREZI + Izjava I NAPOMENA I Svega ROBA:| OTPREMNICE 7.500,00 Rabat: 5 (%) 375,00 Za UPLATU: S e damHi 1 j adaSt ot inuDvadeset Pet din (00/100) POREZI: I 1.925.00 IZNOS sa PP:| ii.050.00 08.04.1998 flVÏÏh 2 MfJ of 25 Na slici predstavljen je jedan primer obrasca (Form) u grafičkom interfejsu, a koji se koristi za ažuriranje podataka o ot-premnicama i njihovim stavkama. Korisnici i osoblje koje učestvuje u projektovanju i razvoju baze mcže se podeliti u nekoliko grupa: Izvršioci projektanti baze podataka, administrator baze podataka, sistem analitcari, apli-kativni programeri, kao i nekoliko lica angažovanih od strane investitora i krajnjih korisnika sistema. Podrška projektanti i programeri DBMS-a, inženjeri u razvoju zaduženi za softverske alate i osoblje zaduženo za razvoj softvera koje obuhvata sistem baze podaaka, hardvera i Krajnji korisnici stalni, povremeni i slučajni korisnici sa različitim stepenom iskustva i priorite¬tom u pristupu podacima. Standard u projektovanju baza podataka Da bi baza podataka bila smatrana standardnom mora da ispunjava najmanje sledeće uslove: • da se tekstualni podaci unose prema kodnim stranama: 1250, 1251 ili 1252 (YU tastaira, latinična ili ćirilična za naš region), koje ne prave razliku između velikih i malih slova; • da se za format ispisa svih (numeričkih, valutnih, datumskih, vremenskih,...) podataka oslanja na po-dešavanja na nivou OS-a (u Regiona! Settings) i/ili korisničkim opcijama u aplikaciji), a u potpunosti mora da odgovara korisniku; • da se za veličinu polja u tabelama uzimaju racionalne dužine, prema opsegu i velčini samog podatka u tom polju; • da ima mrežnu orijentaciju, zaštićen relacioni model i zahtevani referencijalni integritet; • da ima neki oblik standardnog sistema menija; • da se lako administrira, može dalje razvijati i ima period korišćenja duži od jednog poslovnog perioda (uglavnom 6 ili 12 meseci); • da, po isteku test perioda, ne zavisi od autora, odnosno da je može administrirati liceobučeno za takve poslove u firmi korisnika; • da korisniku pruža na raspolaganje sistem pomoći, arhiviranje rezervne kopije; • da je urađena po projektnoj dokumentaciji (u slučaju IS-a) i da su sve izmene u modelu baze - doku- mentovane. Poštovanje standarda u razvoju baze podataka je od izuzetnog značaja, a ono što bi bilo dovoljno da vas usmeri ka tom cilju je: • jednostavnost korišćenja i lakša implementacija, • olakšane naknadne izmene i usklađivanje po zahtevu i potrebama korisnika, • bezbednost podataka i veliki uticaj korisnika na oblik (format) njihovog prikaza, • totalna korisnička orijentacija, što znači da korisnik baze podataka, odgovore na sva pitanja o korišćj- nju, dobija od same baze (aplikacije).  1 ENTITETI I VEZE MEĐU NJIMA Entitet je element o kome se memorišu informacije. To je element koji postoji i koji se može razlikovati od ostalih elem- nata. Entitet predstavlja bilo šta o čemu se mogu memorisati opisne informacije, što je u stanju da postoji nezavisno i što može biti jednoznačno određeno. Entitet može biti AUTOMOBIL, a njegovi atributi: marka, tip, boja, godina proizvodnje, i sl. Podaci u okviru baze nisu raspoređeni haotično, nego su grupisani po entiteima, što znači da svaki entitet sa sobom nosi određenu vrstu podataka. Jedna baza se može sastojati od jednog ili više entiteta. Između entiteta mogu postojati određene veze koje su ilustrovane u sledećim primerima i mogu biti sledećih oblika: Veza 1:1 1:1 je najprostiji oblik veze, a za primer se može uzeti veza RUKOVODI izmetu entiteta RUKOVODILAC i SEKTOR, gde se vidi da jedan rukovodilac može rukovoditi samo jednim sektorom, ali i obratno - jedan sektor ima samo jednog ruko-vodioca. RUKOVODILAC RUKOVODI SEKTOR Veza l:n (n:l) je najčešći tip veze, a da li je veza 1:n ili n:1 zavisi od toga u kom smeru je posmatramo. Za primer ovog tipa veze se mi¬že uzeti veza SEKTOR ZAPOŠLJAVA RADNIKA, gde su entiteti SEKTOR i RADNIK u vezi 1:n, jer u jednom sektoru može biti zaposleno više radnika. VEZA1:N VEZA N: 1 RADNIK RADI_U SEKTOR Posmatrajući ovu istu vezu u suprotnom smeru možemo uočiti vezu RADNIK RADI_U SEKTORu, gde više radnika može raditi u jednom sektoru.  Rekurzivna veza još jedan problematičan tip veze, a sreće se u situacijama kadase između dva (ili više) entiteta pojavi veza 1:n prema je¬dnom paru atributa, a 1:1 ili n:1 prema drugom paru. Kao primer REKURZIVNA VEZA možemo uzeti vezu RADNIK:RUKOVODILAC. Jedan radnik se, u tabeli RADNICI, može pojaviti samo jednom, dok se kod izbora nadzornika (rukovodioca) u tabeli RUKOVODIOCI, jedan radnik opet može pojaviti samo jednom, pa se uočava veza 1:1, ali pošto je jedan rukovodilac nadralen većem broju radnika, jasno je da postoji i veza RUKOVODIOCI:RADNICI = 1:n. Objedinjavajući ove dve veze u jednu relaciju - proizlazi da je ona tipa n:n. Ovaj tip veze je u bazi podataka moguće ostvariti, ali se model teško može održavati, pa se savetuje njeno obavezno eliminisanje, tj razbijanje na više entiteta sa vezama 1:n. Primer povezanosti entiteta jedne baze podztaka Na sledećoj slici su predstavljeni entiteti baze podataka Biblios (biblios.mdb) i veze među njima. Na Web adresi http://www.interbest.co.yu/source/access/ možete preuzeti (u ZIP formatu) neke od primera baza podataka koji su u skriptama izloženi, test pitanja, dodatke, index pojmova i slično, ili se obratite autoru na Mikac@BitsYu.net. Entiteti u ovoj bazi su: Naslovi, Autori, Izdavaci, Naslov_Keywords, Naslov_Autor, Lica i VrsteNasiva. Na slici se vidi da se izdavač u tabeli IZDAVACI može naći samo jednom, a u tabeli NASLOVI više puta. Naslov može imati jednog izdavača, a jedan izdavač se može naći u više naslova, pa je veza NASLOVI:IZDAVACI, preko polja (atrib- ta) IzdavacID, tipa n:1 f:1). Veza NASLOVI:AUTORI je tipa n:n (na istom naslovu se može aći više autora, a sam autor može učestvovati na više naslova), pa je dodatnom tabelom NASLOVI_AUTORI obezbeteno njeno "razbijanje" na dve veze tipa 1:n. 2 UVOD U MS ACCESS Objekti MS Access-a MS Access spada u grupu programa za upravljanje bazama podataka - DBMS (Database Management System). Kao što i samo ime kaže, ovi alati se koriste u projektovanju, razvoju i korišćenju baza podataka. Podaci koji se obrđuju mogu praktično biti sve što je, za korisnika baze podataka, prirodno i potrebno: • Imena i adrese • Poslovni kontakti, kupci, predviđanja prodaje • Informacije o zaposlenima i saradnicima • Podaci o kretanjima i stanjima zalihama • Fakture, uplate, knjigovodstvo • Planovi, rezervacije, projekti itd. PRIMER: Pogledati kako su podaci organizovani u demo bai MAGAZA (magaza.mdb u arhivi magaza.zip) ili neku od ba-za koje ste dobili uz instalaciju MS Access-a. Jedna baza podataka u MS Access-u može da sadrži sledeće vrste objekata: Tabela (Table) je osnovni tip objekta u bazi i predstavljaju direktan (primani) izvor podataka. U tabelama se, po osmišljenim principima i vezama, čuvaju podaci kojima raspolaže korisnik i one su prvi objekti koje te- ba kreirati. Podaci u tabeli su smešteni u polja (kolone, eng. Fields), a sva definisana polja čine slog (zapis, red, eng. Record). Kvalitet baze podataka i IS-a leži u kvalitetnoj organizaciji podataka u tabelama baze, kao i njihovim dobrim vszama (relacionom modelu). Upit (Query) je tip objekta za postavljanje pitanja o podacima iz tabela (ili drugih upita), a u cjh njihovog ažuriranja kroz obrasce ili pregleda kroz izveštaje (na ekranu ili štampaču), pa se mogu definisati kao po-sredni izvori podataka. Na primer, upiti mogu da daju informacije (odgovore na pitanja) kao što su "koliko kupaca je iz Novog Sada, koja su njihova imena i brojevi telefona", s tom razlikom što vaš nao- godavac govori srpski, a upit - jezikom SQL. Upiti se mogu koristiti za spajanje (engl.j oin) kolona iz više (relacijama povezanih), tabela. Jedan upit bi mogao, na primer, da spoji tabele kupaca, porudžbina, sta-vki porudžbina i proizvoda da bi odgovorio na pitanje "koji kupci su naručili koje proizvode i koja je vrednost njihovih porudžbina". Upiti su, takođe, korisni prilikom izmene, brisanja ili unošenja velike ko-ličine podataka u jednom prolazu. Svaki korisnik MS Access-a bi trebalo da ga bar toliko pcznaje da može bez problema iz njegove baze "izvući" potrebne podatke i to onako kako mu zada kolega ili nao- godavac. Svaki dalji rad u upravljanju bazom se zasniva na kreiranju objekata (formei izveštaji) koji ne mogu bez upita ili tabela, pa se njihovo kreiranje može znatno ubrzati samo pod uslovom da su izvori podataka (tabele i upiti) dobro kreirani. Obrazac (Form) omogućava unos i prikazivanje podataka u prikladnom formatu koji lči na štampane obrasce u kojima treba popuniti prazna mesta. Vaši obrasci mogu biti jednostavni ili prilcno složeni - sa grafikom, linijama, mogućnostima automatskog pretraživanja, koje unos podataka čine brzim i lakim. Obrasci mo-gu da sadrže i druge obrasce (nazvane pod-obrasci, engl. subforms) što omogućuje istovremeni unos podataka u više tabela. Izveštaj (Reports) daje izvanredne mogućnosti pregleda i štampanja podataka. Kao i obrasci, izveštaji mogu da budu jednostavni, ali i veoma kompleksni. Primeri izvštaja su: spiskovi, hronološki pregled poslovanja, cirkularna pisma, nalepnice sa adresama i fakture. Izveštaji se za podatke obraćaju tabelama, ali još češće upitima, a njihov osnovni zadatak je da te podatke predstave u obliku koji je lak za pregled, raum- ljiv i gde se mogu brzo uočiti greške. Na primer, izveštajem se može dobiti "prodaja po mestma", "broj porudžbina u nekom periodu" i druge informacije koje se koriste za donošenje važnih poslovnih odluka. Primeri nekoliko izveštaja su prikazani kroz ovaskripta (na slobodnim prostorima). Pages ili Data Access Pages (Web stranice za pristup podacima), omogućuju kreiranje složenih obrazaca na n- tranetu kompanije koji su povezani s podacima u vašoj mreži. Cak i novajlija može da kreira Web stranice sa uvek ažurnim podacima. Hiperveze i vama i drugima omogućavaju pristup podacima koje ste objavili na Webu (i koje su drugi objavili), i to u formatu hipertekstualnih veza, direktno iz vašihMS Access obrazaca. Mnogi smatraju da posao objavljivanja podataka na W;bu treba da bude prepušten is-ključivo administratoru Web lokacije (Webmasteru). MS Access 2000 je nepobitan dokaz da to nije tačno. Alatka Data Access Pages vodi vas kroz postupak izrade obrasca i njegovog povezivanja s podi- cima u izabranim objektima baze podataka, a zatim generisane HTML strane šalje na vašu Web lokaciju. Makro (Macro) je niz MS Access komandi, a koristi se u slučajevima kada nekoliko komandi (određenim redos- ledom) treba pozvati na više mesta u MS Access aplikaciji (uglavnom iz forme). Kada pokrenete makro,  MS Access izvršava sve naredbe makroa u redosledu u kom su akcije navedene. Bez pisanja program¬skog koda, možete definisati makroe koji automatski otvaraju obrasce za bazu podataka, štampaju nalepnice sa adresama, obrađuju porudžbine i drugo. Makroi olakšavaju sastavljanje skupova tabela upi¬ta, obrazaca i izveštaja u kompletne aplikacije koje može da koristi bilo ko,čak i ako zna malo ili ne zna ništa o samom MS Access-u. Makroi se izbegavaju u profesionalnim MS Access aplikacijama, jer se oni ne mogu kompajlirati, pa ne daju mogućnosti kreiranja aplikacije. Modul (Module) kao i makro omogućava automatizaciju, ali mnogo napredniju, jer se u njemu, kao razvojna platforma, koristi VBA, u obliku procedura tipa Sub i Function, koje su na raspolaganju celom projektu. Za razliku od makroa moduli omogućavaju precizniju kontrolu nad preduzetim akcijama i zahtevaju s- kustvo u programiranju u VBA (9isual Basic for Applications), a ako uzmemo u obzir da forme i iz\eštaji imaju takođe modul koda, jasno je da VBA predstavlja osnovnu programersku razvojnu platformu za MS Access. Na ovom kursu se nećemo baviti temama vezanim za VBA. Kako su tabele izvori podataka, tako MS Access-fajl predstavlja bazu u slučaju da ima tabele, dok se u MS Access aplikacijama uglavnom nalaze ostali objekti, a veza sa tabelama se uspostavlja Link-om. Koncepcija odvajanja baze i aplikacije se obavezno primenjuje u profesionalnim projektima, a šta sve treba uraditi i kakve se prednosti ovog odvajanja - radićemo na višem kursu MS Access (2). OTVARANJE baze iz MS Access-a Pokretanjem MS Access-a, (npr. na Start/Programs/Microsoft Access) dobićete dijalog kao na slici i ponuđene sledeće opcije ulaza: • Create a New Database Using (kreiranje nove baze koristeći...) - Blank Database (... praznu bazu) - Database Wizard (automatsko generisanje baze) • Open an Existing Database (otvaranje postojeće baze podataka) Database Wizard Database Wizard pomaže početnicima da na lakši način uđu u rad na bazama i vide nekoliko primera aplikacija Ovim se kreira cela baza za nekoliko minuta, a ponuđeno je više tipova baza podataka (adresari, porudžbine, vođenje inventara, videoteke, fonoteke...). Posle odabrane varijante, odlučujemo se o izboru tabela, i polja u tabelama, uključenju probnih podataka, izgledu aplikacije, izveštaja, i nazivu aplikacije. Sledi automatski proces kreiranja objekata i posle kraćeg vremena - baza je na raspolaganju, kao jed¬nostavna aplikacija koja je jednostavna, ali vrlo korisna za ičenje principa rada u MS Access-u. Iako predstavlja dobar način da se vidi kako mogu izgledati aplikacije podMS Access-om, ovaj način ipak nećete mnogo koristiti kod kreiranja svoje baze i aplikacije. Jedan od razloga je i njegovo pravilo da se imena polja u tabdma (koji se dalje prenose na sve ostale objekte) imenuju na engleskom jeziku. Čarobnjaci u kreiranju svih drugih objekata, osim tabela, sigurno će vam mnogo značiti u MS Access, pa ih od srca pre-poručujemo, a naročito ćemo ih koristiti kod kreiranja formi (obrazaca) i izveštaja. U toku rad u MS Access-u preporučuje se što više konsultovanja primera gotovih baza koje Microsoft isporučuje uz instalacionu verziju paketa (Nwind, Orders, Solutions) Na prvi pogled Radni prozor MS Access baze (Database Window) sadrži CommandBar (preko kojeg se otvaraju kartice željenih tipova objekata), kao i svoj Toolbar, sa nekoliko najčešćih komandi. U samom vrhu ovog prozora (naslovna traka) nalazi se ime baze koja se obrađuje. Sistem menija i paleta alatki u MS Access-u funkcioniše na sličan način kao i ostalim programima Microsoft Office-a, dok se sve ostalo smatra radnom površinom u kojoj se razvija i radiMS Access aplikacija. Na samom dnu MS Access prozora smeštena je statusna linija (Status bar) preko koje se korisniku prosleđuju dodatne informacije o tekućem objektu i in-formacije koje se odnose na tastere Insert, Num Lock, Caps Lock, Scroll Lock,...  Database Window Po otvaranju neke MS Access baze podataka na ekranu se pojavljuje Database Window. On omogućuje izbor jednog od šest (sedam) tipova objekata aktivne baze podataka, kao i režim (mod) rada u njima: Open - otvaranje postojećeg, Design - redizajniranje postojećeg, odnosno, New -kreiranje novog objekta). Kod izveštaja opcija Open je zamenjena odgovarajućom opcijom Preview (kojom se on otvara za pogled), a kod makroa i modula opcijom Run (kojom se on pokreće). Desnim klikom na objekat možete dobiti sve moduse rada sa datim objektom, pa ovaj natin treba maksimalno koristiti kod otvaranja objekata za bilo kakvu obradu. Ne treba zanemariti ni konice na Toolbar-u, a posebno u situaciji kada tre-ba preći iz jednog u drugu modus obrade objekta, a Database Window se nije vidljiv. Toolbar daje još jednu prednost - preko ikonice možete uvek preći u pretpostavljeni (suprotan) modus (npr. iz Open u Design režim rada). Na prethodnim slikama je prikazan Database Window u MS Access 2000 i MS Access 97. Sistem menija File meni, osim standardnih stavki kao kod svih Windows aplikacija, sadrži i stavke: • Get External Data omogućuje uvoz (Import) ili povezivanje (Link Tables) tabela iz druge MS Ac-cess baze ili nekog drugog kompatibilnog izvora podataka. Koristeći isti dijalog može se uvesti i bilo koji objekat iz druge MS Access baze. Link-om povezana MS Access tabela ne može se otva¬rati u dizajn modu (u tom modu joj se može pristupiti samo otvaranjem matcne baze (one u kojoj se tabela nalazi). • Save As/ Export omogućava čuvanje nekog od MS Access objekata, pod drugim imenom u teku¬ćoj ili drugoj bazi, kao i u obliku tabele u formatu druge aplikacije. • Database properties je spisak svojstava MS Access baze podataka. Može da sadrži informacije o autoru, nazivu, predmetu, ključnim recima aplikacije, statistike i spisak objekata u bazi, kao i mo¬gućnost kreiranja korisnički definisanih (Custom) svojstava baze. Edit meni sadrži standardne stavke za pokretanje komandi ažuriranja (Cut, Copy, Paste, Undo, Delete, Rename) za rad sa objektima iz baze, kao i mogućnost kreiranja praice (SKortcut-a) na dati objekat. Za sve ove alate na raspolaganju su i odgovarajuće stavke PopUp menija koji dobijate desnim klikom na objekat, pa ih kors- tite za brži i kvalitetniji rad, jer je MS Access, kao i OS Windows predstavlja objektno orijentisano radno okruženje. View meni sadrži stavke izbora tipa objekta u database prozoru, određivanje tipa ikona i njihov raspored, kao i pregled svojstava (Properties) objekta i programskog koda objekta (forme i moduli). Preko stavke Toolbars omogućen je pristup korisničkom podešavanju sistema menija i paleta alata. Insert meni sadrži opcije za kreiranje novog objekta u bazi, kao i automatsko generisanje forme ili izveštaja na - dacima o kupcima (njihova imena, adrese, telefone...), drugu tabelu za proizvode i neku treću za porudžbine. Polje predstavlja jedinični podatak, kao što je ime osobe, ili naziv ulice, poštanski broj ili naziv proizvoda. Polje se obično pojavljuje kao jedna kolona u tabeli. Zapis sačinjavaju svi podaci pojedinačne stavke tabele, kao što su svi podaci o jednom kupcu iz tabele lu- paca, ili o jednom proizvodu iz tabele proizvoda. Zapis se, u vizuelno predstavlja kao red. Zapisi se često nazivaju slogovima ili rekordima (Records) ili n-torkama, gde je n-broj polja u slogu. Atribut, domen i relacija Atribut element informacije kojim je jednoznačno uređena vrsta svojstva. Domen skup svih vrsta vrednosti koje određeni atribut može primiti. Relacija skup uređenih n-torki. Relacija ima sledeća svojstva: • šema relacije ne sadrži dva jednaka naziva atributa, • redosled kolona u relaciji nije bitan, • relacija ne sadrži dve jednake n-torke, • redosled n-torki u relaciji nije bitan. Stepen relacije broj uređenih n-torki. Relaciona šema konačan skup naziva atributa zajedno sa skupom ograničenja. Kreiranje tabela Wizard-om MS Access, pored mogućnosti kreiranja baze podataka Wizard-om (čarobnjak), pruža na raspolaganje i Wizard za kreira-nje tipskih tabela podataka. U fazi savladavanja i istraživanja u oblasti projektovanja baza podataka sigurno je da će korišćenje ovog alata doprineti bržem uočavanju mogućnosti MS Access, ali se u profesionalnom radu nameće potreba za kreiranjem sopstvenih tipskih tabela. To znači da ćete se u svom daljem radu u MS Access-u sve više oslanjati na sopstvene snage, a manje na automatzme, bar kod upravljanja tabelama i upitima. Čarobnjaci kod izrade formi i izveštaja su nezaobilazni na svim nivoima poza- vanja MS Access. Indexiranje i ključevi Indexiranjem se omogućava da se, u daljem korišćenju tabele kao izvora podataka, može brže sortirati, pretraživati i ob-rađivati u svakom drugom obliku - po polju podataka koje je indeksirano. Indeksiranje se preporučuje za polja numeričkih podataka i to samo u situacijama kada se nad njima planira neki oblik pretraživanja. Uključivanje indeksira- nja po polju podatka može dovesti do znatnog uvećanja fajla baze podataka, a dešava se občno kod tabela koje imaju veliki broj slogova podataka (u desetinama hiljada i više) • Isključivanje indeksiranja može prouzrokovati spor odziv upita kod kojih je primenjen neki od oblika sortiranja i kaskd- nog grupisanja, pa je na programeru da odabere pravi način u konkretnom slučaju. Kada je po datom polju uključen primarni ključ - update podataka je nešto sporiji, ali se zato svaki upit po ovom polju drastčno ubrzava. Ovde od presudnog značaja može biti iskustvo kolega, pa ih, u svakom slučaju, saslušajte. Kardinalnost - broj n-torki ili slogova (predstavljeni po kolonama) jedne relacije (ili tabele). Polje primarnog ključa - Ovo polje jednoznačno identifikuje svaki zapis u tabeli. Na osnovu sadržaja ovog polja može se tačno odrediti o kom zapisu se radi. Iz toga sledi da je primarni ključ, u stvari, atribut neke tabele (relacije) koji identifi-kuje jedan slog (n-torku) i naziva se još ključem relacije. Prost ključ - kada u jednoj tabeli postoji polje koje u potpunosti može odrediti jedinstvenost sloga, onda se takav klju naziva prostim. Entitet RADNIK sadrži atribute RadnikID, Prezime Ime, Zanimanje i MB. RADNICI RadnikID Prezime Ime Zanimanje MB 001 Petrović Petar novinar 1011963325641 002 Stojanović Aleksandar elektrotehničar 0209948025632 003 Slavković Svetlana prevodilac 2612975361258 004 Topolac Zivotije profesor 1809958521438 005 Stojanović Aleksandar geodeta 1111197211121 Ovde se vidi kako polje primarnog ključa (RadnikID) jednoznačno određuje slog; zamislimo da je kolona zanimanje u ne-kom upitu izostavljena. U tom slučaju, na bazi vrednosti polja RadnikID možemo zaključiti o kom Stojanović Aleksandru se radi, tj. koje je njegovo zanimanje, odnosno da li je u pitanju Stojanović Aleksandar- elektrotehničar ili neko drugi sa istim imenom i prezimenom ko je po zanimanju geodeta. Složen ključ - Kada se jedinstvenost sloga ne može u potpunosti odrediti preko jednog polja, tada se mora koristiti so- žen primarni ključ. Ako u tabeli RADNICI imamo samo polja Prezime i Ime, tada bismo morali uvesti i polje SrdnjeSlovo jer, kao što vidimo Prezime i Ime ne mogu u potpunosti odrediti edinstvenost sloga (jer se mogu pojaviti dva radnika sa istim imenom i prezimenom). Tada primarni ključ čine zajedno Prezime, Ime i SrednjeSlovo, što predsta/lja složeni pri- merni ključ, jer ga čini više polja. Na primer, ako relaciji RADNICI dodamo atributMB (matični broj), tada je i ovaj atribut kandidat za ključ, odnosno po-moću njega se takođe može odrediti jedinstvenost n-torke. Obično se, u ovakvim situacijama, jedan atribut bira za primarni ključ, a ostali neizabrani kandidati se nazivaju alternativnim ključevima. Spoljni ključ - Pored primarnog ključa, relacija može imati i spoljni ključ. O čemu se zapravo radi?! Ponekad se dešava da jedna relacija ne može egzistirati bez druge, na primer stavka fakture ne može da postoji bez fakture. Recimo da relais ja FAKTURE ima ovaj oblik: Fakture (BrojFakture, Datum, Partner). BrojFakture je primarni ključ jer određuje jedinstvenost sloga. Faktura ima svoje stavke, pa iz toga proizilazi da relacija FaktureStavke ima ovakav oblik: FaktureStavke (BrojFakture, BrojStavke, Artikal, JedinicaMere, Količina). Kako stavka bilo koje fakture ne može da postoji bez fakture kojoj pripada, tako ni relacijaFaktureStavke ne može da eg¬zistira bez relacije Fakture. Ove dve relacije povezane su preko ključa BrojFakture koji je zajednički za obe relacije. Na osnovu njega se zna koja stavka pripada kojoj fakturi. Zato se kaže da, u ovom slučaju relacija FaktureStavke nasleđuje atribut BrojFakture od relacije Fakture i on je za relaciju BrojFakture - spoljni ključ. Spoljni ključ služi za uspostavljanje re¬lacija između tabela u relacionim bazama podataka. VEZBA: Kreirajte tabelu KUPCI(Naziv, Lice, Adresa, Mesto, Telefon). Složen ključ čine polja Naziv i Mesto, jer se u stom mestu (gradu) ne sme pojaviti kupac sa istim nazivom firme, ali se dozvoljava da ista firma postoji sa istim ime¬nom u više mesta. 4 OSNOVE UPRAVLJANJA TABELAMA Tabela predstavlja kolekciju podataka određene tematike i primarni izvor podataka za bazu. Sastoji se iz slogova (reabva, eng. record) i polja (fields). Ona je osnovni objekat baze podataka. Podaci kojima se fizčki manipuliše jedino postoje u tabelama, dok su ostali objekti baze samo način da se podaci iz baze, izabrani po nekom kriterijumu, sortirani i grupisani (po potrebi), prikažu na određeni način. Zato je kreiranje i definisanje karakteristika tabela, kao i uspostavljanje relacija između njih, jedan od najvažnijih zadataka prilikom projektovanja baze podataka. M Podac o Firmi : Table ID_Fi Matični 1 Naziv Firme Adresa j ID_Me*to 1 Telefon 3 2168 601233 POZO RISTE NA TERAZIJAMÀ TERAZIJE 29 BEOGRAD 011 /334-037,338-907 2169 601101 POŠTANSKA ŠTEDIONICA 27. MARTA 71 BEOGRAD 011/3248-111 3248-610 3Î ] 2170 601104 PPT INŽENJERING,P.P. BULEVAR VOJVODE MIŠIĆA 37-3 BEOGRAD 011 / 2 35-1650,235-1890 2171 600801 PRAG, HOTELSKO UGOSTITE US KO 1 TUR. PRE. NARODNOG FRONTA 27 BEOGRAD 011/Ć87-355 2172 601231 PRAKTIČNA ŽENA, NIP NEMANJINA4 BEOGRAD 011/641-155/631-653 2173 600118 P RAM, PP ALEKSE NENADOVIĆA 32 BEOGRAD 011 /3220-188,459-406 2174 601201 PRAVNI FAKULTET UNIVERZITETA U BEOGRAPU BULEVAR REVOLUCIJE 67 BEOGRAD 011/341-501 2175 601103 PREP. GRAPSKIH PIJACA 1 TRŽNIH CENTARA ŽIVKA KARABIBEROVIĆA 3 BEOGRAD 011/422-56Ć 2176 601104 P REP NAPREGNUTI BETON, P REP.ZA PROJEKTOV. UČITE US KA 60/]_ BEOGRAD 011/4886-810,4887-004 2177 601103 P REP UZEĆE PLAVU AN KA PLAV VE UŽARA KOSANOVIĆA 2 BEOGRAD 011/413-858 1410-054 2178 601109 PRENAP,P.O.O DOSITEJEVA1 /III BEOGRAD 011/626-569,181-108 2179 600713 PRESEDAN M, PP MIŠKA KRANJCA 7 BEOGRAD 011 /583-346,582-493 2180 601231 PRESS EXPRES (PIREKTORMITAR DANILOVIĆ) ŠUMADIJSKI TRG 6 A PF2024 BEOGRAD 011 /556-598,559-845 2181 600605 PREVOZ, PU EVU A, PREPSTAVNIŠTVO BALKANSKA 48 BEOGRAD 011 / ć 8 7—164 2182 600134 PRIMA GRAFIKA SARAJEVSKA 1 BEOGRAD 011 / 642-6 6 6,3 3 9-42 2 2183 600501 PRIMA KOMERC TAD E USA KOŠĆUŠKOG 70 BEOGRAD 011/187-333,187-496, 637 2184 600716 P RIMA MEDICAL OO CARA DUŠANA 72 BEOGRAD 011 /639-082,187-496, 637 2185 600902 PRIMA, OMLAPINSKAZAPRUGA V LAJ KO VICEVA 9 BEOGRAD 011 /347-516 2186 600720 P RIMAR EXPORT-IMPORT P.O.O. CARA LAZARA 5 BEOGRAD 011 / 6 2 8-653,6 2 7-345 2187 600716 PRIMAX, VE LE P ROGE RIJE 1 APOTEKE NEMANJINA 2 BEOGRAD 011 /644-968 2188 600702 PRIMERA TEODORA MIRIJEVS KOG 64 BEOGRAD 011 /444-7834,457-542,411 2189 601231 PRINCIP, IP KOLARČEVA 7/6 BEOGRAD 011/3248-496 2190 601102 PRIREĐIVANJE IGARA NA SREĆU PP SVETOZARA MARKOVIĆA 40 BEOGRAD CENTR. 011 /334-876 A Re cord: ^ üliT“ 3~ ► j nj>*| of 26431 <| ;T " jj __i A Nije neophodno da svi podaci, koje planirate da vodite u bazi podataka, budu u jednoj tab^. Obradom postojećih uvek se mogu sračunati potrebni podaci (i dobiti informacije), a razvrstavanjem po tabelama možete postići veće efekte u fuik- cionalnosti i lakom održavanju tabela, a samim tim i baze podataka. Kreiranje tabela Početni korak za kreiranje tabele je komanda New u database prozoru (kada je aktivna kartica Tables). Ovim se otvara di¬jalog koji nudi pet načina u kreiranju tabele i to: Datasheet View omogućava direktno unošenje podataka u tabelu, pri čemu program sam određuje tip polja. Ime polja se daje opcijom Rename Column iz menija koji se dobija desnim klikom na naslov kolone. Ovaj način se koristi u dva slučaja i to: a) kada još nije poznata struktura tabele i b) la-da je potrebno ubaciti kopirane podatke iz nekog drugog programa (npr. MS Excel). MS Access će svim poljima dati imena kao Fieldl, Field2,..., a na osnovu sadržaja unetih po po-ljima, pokušati da odredi neka svojstva polja, kao što je maksimalna dužina i format podatka. Ovde se podrazumeva da su sva polja tekstualnog formata i qpciono unete dužine u samom MS Access-u. Ovaj pristup u kreiranju tabele treba izbegavati, jer se njime skoro ništa ne deif niše. Design View vodi u standardno kreiranje tabele detaljnim izborom svojstava polja podataka, kao što su imena polja, tip podataka i veličina polja, određivanje primarnog ključa, indeksiranje, granič¬nih uslova za unos podataka i slično. Poznavanje ovog pristupa je najvećeg značaja, a ujedno je to najkompleksniji, najčešći i najdetaljniji pristup. Table Wizard prepušta formiranje tabela Wizard-u, koji to čini pozivajući se na biblioteku već formiranih ta-bela. Ova mogućnost je korisna kada želimo da kreiramo neke manjeviše standardne objekte kao što su adresari, podsetnici, računi, izveštaji, fakture, evidencije troškova i sl. Ovaj pristup je koristan u učenju i savladavanju "tajni" MS Access-a, ali je njegov nedostatak u tome što nudi mnogo toga, a vi najčešće ne možete da pronađete baš ono što vam treba. Import Table daje mogućnost uvoza tabele iz nekog drugog izvora podataka koji je kreiran prema nekom od standarda za datoteke i baze podataka. Može biti re o MS Access bazi, ali i mnogo drugih organizovanih tabela, kreiranih programima kao što su: MS Excel, dBASE, Cliper, FoxPro,..., kao i fajlove tekstualnog formata, gde je za podeu na kolone (polja) potrebno definisati širinu svake kolone pojedinačno. Treba imati na umu da se na ovaj način stvara kopija importovane U drugom dijalogu Table Wizard vam nudi da unesete ime tabele i (opciono) deklarišete polje primarnog ključa. U trećem dijalogu Table Wizard-a možete pregledati relacije kreirane tabele sa drugim tabelama u bazi, a potom preko tastera "Relationships.." (eventualno) možete zadati parametre neke od relacija (kao u prikazanom četvrtom dijalogu). T able Wizard Is your new table related to any other tables in your database? Related tables have matching records, Usually, your new table is related to at least one other table in the current database. jnot related to 'ARTIKLI' r not related to 'CompanyInformation' not related to 'Dobavljači' not related to 'Dostavnice' not related to 'DostavniceStavke' not related to 'Funkcije' not related to 'IZLAZ' □ Relationships... J In some cases, the wizard will create table relationships for you. The list below shows how your new table is related to existing tables. To change how a table is related, select a table in the list and click Relationships. My new 'Mailing List' table is ... Cancel < Back Next > I Finish 1 U petom dijalogu se možete odlučiti na koji način ćete otvoriti kreiranu tabelu: - u Design View modu, - Datasheet View modu ili - dozvoliti MS Access-u da kreira i formu (obrazac) za unos podataka ove tabele (samo u verziji 2000). Na sličan način se koriste i svi ostali Wizard-i: Query Wizard, Form Wizard, Report Wizard. Dizajn tabele Način na koji se najčešće dizajniraju tabele je Design View. Tu je omogućen detaljan opis i definicija svakog polja nove tabele, kao i kasnije modifikacije postojeće tabele. U gornjem panelu otvorenog prozora upisuje se: Field Name ime polja, kojim se definiše ime atributa u tabeli. Iz mnogih razloga (koje ovde nećemo pomira¬ti) poštujte sledeća pravila kod zadavanja imena polja: a) koristite što kraće ime uz kombinovanje velikih i malih slova, b) ne koristite specijalne znake osim "_", c) ne koristite YU slova. Iako, i bez ovih pravila, sve može da funkcioniše u lokalnom okruženju (vašMS Access i vaš PC i va¬ša lokalna mreža) ipak kod distribucije (publikovanja) baze podataka ili njenog povezivanja sa nekom aplikacijom u razvoju (npr. pod VisualBasic-om ili operativni sistem UNIX) možete imati grd¬nih problema. Ista pravila treba koristiti i kod imenovanja fajla baze i svih objekata u bazi. Ovo ne treba mešati sa unosom podataka i komentara, gde se može koristitibilo koje pismo ili jezik (omogu¬ćen operativnim sistemom). Data Type tip podatka, koji se čuva u tom polju je najvažnije svojstvo polja, pa mu posvetite veliku p^nju. Ovde je važno što više izbegavati Text tip, jer se njegovim korišćenjem najmanje štedi prostor, a baza gubi na performansama (zauzeće, brzina rada, korisnička orijentacija,...). Pbnekada ni sam korisnik to neće primetiti dok ne vidi i drugu situaciju. Primer za ovo može biti poštanski broj mesta, koji treba obavezno definisati kao broj (lumber), a ne kao tekst (Text). Description tekstualni opis podatka dužine do 255 karaktera, a njegovo upisivanje se savetuje, jer se on, u toku rada korisnika na datom polju podatka, ispisuje u statusnoj liniju i korisniku pruža dodane informacije o tom polju. MS Access podržava sledeće tipove podataka (Data Type), a u dodatku su dati i opsezi za numerčke tipove: Text tekst (slova, brojevi i svi specijalni znaci) sa kojim se ne vrše računske operacije, a dužine do 255 karaktera. Memo dugačak tekst (slova, brojevi i svi specijalni znaci) dužine do 65535 karaktera. Ovakav tip tek-stualnog podatka ne može ući u neko sortiranje, pretraživanje ili grupisanje, što treba imati u vidu. Number brojevi koji se upotrebljavaju u aritmetičkim izrazima, a veličina polja (Field Size) zavisi od "podtipa" koji može biti: Byte, Integer, Long Integer, Single, Double, Replication ID, Date/Time, Currency, Auto Number (koji može biti Long Integer ili Replication ID opsega) ili Yes/No. OLE Object Objekat kao MS Word dokument, MS Excel tabela, zvuk, grafikon, slika... povezan je (Linked) ili ugrađen (embedded) u MS Access tabelu. Lookup Wizard daje mogućnost da se kreiraju polja koja omogućavaju izbor vrednosti iz druge tabele ili iz (ograničene) liste vrednosti upotrebom grafičkih kontrola ComboBox ili ListBox. Izborom ove stavke startuje se Lookup Wizard, kojim se definiše vrsta izvora, način popunjavanja i broj polja. Zbog značaja i Lookup Wizard-a o njemu će biti reci u nastavku. U zavisnosti od izbora tipa podatka u donjem panelu Design View prozora prikazuje se dodatna lista svojstava svrstanih u dve grupe (kartice): General i Lookup. sadrži listu opštih svojstava polja: je veličina polja; podrazumevani tip i dužina se podešava opcijama u MS Access-u. Najčešće je to 50 karaktera za tekst, a, Long Integer za brojeve. je svojstvo specifično za numeričke podatke i određuje broj cifara iza decimalne tačke. definiše poseban izgled tekstualnog polja, dok je za brojeve predloženo nekoliko standardnih ti¬pova (General Number, Currency, Fixed, Standard, Percent, Scientific), kao i za Date/Time (General*, Long*, Medium*, Short*). Ovi formati u velikoj meri zavise od podešavanja uRegi- onal Settings servisu Control Panel-a, pa je pravi trenutak da u tom servisu sve podesite na formate ispisa podataka u našem regionu i to: 1. Number: sa decimalnim zarezom i tačkom kao separatora za grupe, a tačka-zarez za separator liste 2. Currency: simbol za valutu podesite na "din", a ostalo kao i zaNumber 3. Time: "HH:mm:ss" i za separator dvotačku 4. Date: "dd.mm.yyyy", bez tačke na kraju i tačku za separator Input Mask definiše masku za unos podataka, koju korisnik mora ispoštovati prilikom unosa podatka, a lo- risna je u slučajevima unosa: broja telefona, broja pošte, matičnog broja i sl. Caption po potrebi definiše naslov polja. Ovaj tekst će biti ubačen pri kreiranju grafičko-upravljačke kon¬trole u nekoj formi koja prikazuje podatke iz ove tabele. Ukoliko se ovde ne unese ništa, uzima se već postavljeno ime polja u Field Name, pa se njegov unos savetuje u slučajevima kada, a ako ne bude uneto podrazumeva se da ima vrednost kao i ime polja Field Name). predstavlja vrednost koja će se automatski upisati u polje pri popunjavanju novog zapsa. je izraz koji definiše zahteve koje mora da ispuni uneti podatak. Obcno su uslovi vezani za bro- jevnu vrednost i opseg kome dati podatak pripada, a može se rešiti i pitanje da li je podtak uopšte unet, jer ako nije unet ima problematičnu "vrednost" Null. Validation Text je tekst poruke koja se pojavljuje ukoliko uslov Validation Rule nije zadovoljen. Kreiranjem pot¬pune validacije izbegavaju se komentari, koje korisnik dobija na engleskom. Required određuje da li je u tom polju unos podatka obavezan ili podešavanjem Recycle Bin na ovu nesretnu opciju, pa ako bazu i obrišete - znate da je u korpi. Interesantna je i činjenica da se fajl baze podataka mnogo lakše briše (preko Windows Explorer-a) od mnogih objekata same baze (preko MS Access-a), a da bi obezbedili bazu od brisanja iz Windows Explorer-a (koje bi mogao da obavi slu¬čajni korisnik vašeg računara) nabavite neki od programa za zaštitu pristupa folderima ili iskoristite mogućnosti operativnog sistema u oblasti personalizacije (Passwords, Users, SaveSource i slično). Pošto, objekti obrisani iz baze, ne mogu biti vraćeni, to nameće potrebu da se, prilikom uklanjanja nepotrebnog objkta, a u cilju sigurnijeg rada, primene neka pravila. Ono što je najvažnije - obratite pažnju na svaku poruku kojom vas MS Ac-cess upozorava da će objekat biti izbrisan. Jedno od zlatnih pravila je da objektu dodelite neko ime koje će vas asocirati da je taj objekat planiran za brisanje, ali ga ne treba brisati dok god se ne uverite da sve u modelu baze funkcioniše korektno. Prilikom promene imena objekta treba voditi računa i o objektima sa kojima je preimenovani objekat u vezi, kao naprimer: tabele u relaciji, ugnježdeni upiti, podobrasci (Subform /Subreport). Drugi način je da, sve nepotrebne objekte prebacite u drugu bazu (Copy/Paste), pa ako vam neki od starih objekata (ili neki njegov deo) zatreba - znate da ga možete naći na sigurnom mestu. Ovo je navika mnogih profesionalaca, a ono o čemu treba da vodite računa je da svaki od projekata ima jednu ovakvu bazu. Važno je držati se i pravila kod imenovanja ovakvih (Recycle) baza, da ne dođete u situaciju da ne znate koja od baza je "ona prava". Cak je i redosled brisanja objekata nekada od važnosti, pa se bezopasnim smatra brisanje sloga podataka (korisnički pris¬tup). Ovo brisanje se može povratiti (preko Paste)ako je za brisanje korišćena akcija Cut, ali se ni u tom slučaju ne garantuje istovetnost brisanih slogova (slučaj polja tipa AutoNumber). Ostala brisanja su u nadležnosti administratora baze, gde treba voditi računa da se brisanjem objekata brišu i svi podaci koje oni čuvaju, a brisanje obavljati redom: 1. polje u tabeli (Design View) 3. polje primarnog ključa (Design View) 2. relacija između dve tabele (Relationships) 4. tabela (Database Window) Brisanje formi i izveštaja nije ni izdaleka tako opasno, jer se za njihovo kreiranje mogu koristitičarobnjaci, a koji zahteva- ju postojanje izvora podataka (tabele i upiti). Brisanje upita ili modula (procedura kao njihovih delova) može predstavljati problem za one koji nemaju iskustva u njihovom kreiranju, a ono što je u ovom slučaju važno je da model baze (tabele i relacioni model) ne može biti narušen, pa se brisanje smatra bezopasnim. SAVET: Polja podataka, koja se mogu dobiti obradom (izračunavanjem) podataka iz postojećih polja - ne treba kreirati. Tako npr. u tabeli Stavka(Artikal, Komada, Cena) ne treba kreirati polje Vrednost, jer se ono može uvek dobiti proizvodom polja Komada i Cena. Izračunata polja dovode do problema redudanse i suvišnog naknadnog ažu-riranja. Na sledećim slikama dat je primer dizajniranja tabela, gde se mogu prepoznati značenja atributa i izgledi tabela u dizajn modu. 5 NORMALIZACIJA BAZE PODATAKA Ovo je proces podešavanja strukture baze podataka kako bi njene performanse bile poboljšane, kako u pristupu podci- ma, tako i u pogledu integriteta i brzine procesiranja (sreće se i pod nazivom: kreiranje relacija normalizacijom).Sva pravila normalizacije podataka u nekoj bazi ne moraju se obavezno primeniti, ali u kompleksnijim i profesionalnim bi¬zarna podataka teško ih je izbeći. Svako od navedenih pravila podrazumeva pravila nižeg reda. Ova pravila bi trebalo da prepoznate u krpanju baze (Kad-rovi). Pravilo I: Eliminisanje grupa podataka koje se ponavljaju Prvo pravilo normalizacije baze podataka sastoji se u tome, da morate napraviti odvojenu tabelu za svaki set kolona koje su u relaciji pa svakoj tabeli date primarni ključ. Za baze podataka koje poštuju ovo pravilo se kaže da su u prvoj normal-noj formi. Dakle, ako u tabeli imate niz polja (sličnog imena) uklonite ovu ponavljajuću grupu tako što ćete kreirati novu tabelu za ponavljajuće podatke i povežite je relacijom sa ključnim poljem iz prve tabele. PRIMER: Ako tabelu PLATE(RadnikID, Ime, Mesec, Sektor, Rukovodilac, LD) svedemo na PLATE(RadnikID, Mesec, Sektor, LD) izbećićemo ponavljanje grupa podataka RadnikID i Ime, kao i Sektor i Rukovodilac. Pravilo 2: Eliminacija redudartnih podataka Redudantnim podacima se smatraju oni podaci koji su nepotrebno smešteni na više mesta u bazi podataka. Drugo prav lo normalizacije baza podataka kaže da, ako polje samo delimčno zavisi od više-vrednosnog ključa, premestite ga u drugu (posebnu) tabelu. Dakle, nemojte smeštati iste podatke na dve razlcite lokacije (tabele). Ovo može voditi u greške ažuriranja ili brisanja. Ako su ekvivalentni elementi podataka uneseni u dva polja, uklonite drugi element podataka, kreirajte novu tabelu sa od¬nosnim elementom i pratećim ključnim poljem, a zatim smestite ključno polje kao relaciju prema lokaciji koja je sadržala oba objekta. Drugim recima, ako imate potrebu da premestite dva polja da biste stvarno identifikovali slog, ali samo jed¬no od polja iz te tabele, koje je neophodno za izvršavanje pregleda tabele, potrebna Vam je nova tabela. Za baze podataka koje zadovoljavaju ovo pravilo se kaže da su u drugoj normalnoj fami. U bazi Kadrovi, u tabelu Plate radnik se ne unosi svojim imenom već identifikacjom preko njihovog ID broja (Radni¬kID). Na ovaj način se memorijski prostor za bazu uveliko smanjuje, održavanje baze se olakšava, a brzina operacija nad tabelama povećava. PRIMER: Ako tabelu PLATE(RadnikID, Mesec, Sektor, Rukovodilac, LD) svedemo na PLATE(RadnikID, Mesec, SektorID, LD), a podatak o tome ko je Rukovodilac sektora definišemo u đ- beli SEKTORI(SektorID, Sektor, Rukovodilac), tada će tabela PLATE biti u drugoj normalnoj fami. Pravilo 3: Eliminisanje kolona koje ne zavise od primarnog kljUa Polje, koje nije u direktnoj vezi sa indeksnim ključem tabele, bi trebalo da bude preneto u drugu tabelu. U jednoj tabeli podataka bi trebalo da budu smešteni samo elementi podataka koji su u direktnoj relaciji sa primarnim ključem tabele. Ovo pravilo se nčgčešće odnosi na izvedene podatke ili druga izračunavanja. Dakle, ako imate elemente podataka koji nisu u direktnoj relaciji sa primarnim kljičem tabele, ove elemente bi trebalo da prebacite u njihove sopstvene tabele. Drugim recima, ako kolona tabele stvarno ne treba da bude u toj tabeli, ona je verovatno neophodna u nekoj drugoj a- beli. Za baze podataka koje slede ovo pravilo se kaže da su u trećoj nomalnoj formi. PRIMER: Ako tabelu PLATE(RadnikID, Mesec, Sektor, LD) svedemo na PLATE(RadnikID, Mesec, LD), a podatak o tome u kom je sektoru radnik unesemo u tabelu RADNICI imaćemo: RADNICI(RadnikID, Ime, Prezime, MB, Sektor) Dok prva tri pravila normalizacije uključuju eliminaciju ponavljajućih, radudantnih ili relevantnih polja podataka, preosta¬la dva pravila uključuju izolaciju višestrukih relacija u cilju poboljšanja opšteg integriteta podataka. Prva tri pravila su  obično sve što treba da ispoštujete da biste došli do dobro dizajnirane baze podataka, melutim, u slučaju kompleksnijih modela je neophodno slediti i sledeća pravila, a detaljno se obrađuju na višem kursu - MS Access (2). Pravilo 4: Izolacija nezavisnih višestrukih relacija Ne može postojati tabela koja sadrži dve ili više l:n ili n:n relacija koje nisu u direktnoj vezi. Ovo pravilo se koristi a po-boljšanje relacionog modela baze podataka kada on sadrži više od jedne l:n relacije. Drugim recima, ukoliko je podatak važan, ali nije u direktnoj relaciji sa drugim elementima sloga, moraćete da preneete ove podatke u novu tabelu. Za baze podataka loje slede ovo pravilo kaže se da su u četvrtoj normalnoj formi. Pravilo 5: Izolacija zavisnih višestrukih relacija Peto pravilo normalizacije podataka kaže, da je neophodno da izolujete nezavisne višestruke relacije u bazi podataka. Ovo pravilo se koristi za poboljšanje relacionog modela baze podataka kada on sadrži više od edne n:n relacije. Dakle, ako imate pravila koja zahtevaju višestruke reference prema istom polju ili setu polja, izolujte to polje u drugu tab¬lu i kreirajte jednu ili više tabela za povezivanje, koja će sadržati zahtevane reference (veze), a istovremeno zadržati integritet baze podataka. Drugim recima, ako nekoliko složenih relacija postoji u Vašoj bazi podataka, treba da izdvojite svaku od tih relacija u rij- hovu sopstvenu tabelu. Za baze podataka koje slede ovo pravilo kaže se da su u petoj normalnoj fomi. VEZBA: Otvorite MS Excel fajl (roba.xls), pa prema podacima (kolonama u prvom radnom listu) kreirajte po- rebne tabele u vašoj bazi (roba.mdb), s tim da baza bude normalizovana primeiom pravila l, 2 i 3. 6 RELACIONI MODEL Izborom Relationships sa Toolbar-a Database otvara se prozor u kome se definiše relacioni model (veze polja između ta-bela). Iz dijaloga Show Table (koji se dobija sa Toolbar-a) biraju se tabele i upiti koji učestvuju u relacijama. Višestruko biranje objekata vrši se uz pomoć tastera Shift. Kada se tabele nađu na panelu, odgovarajuće relacije se kreiraju preno- som polja koje povezuju dva objekta od jednog do drugog. Spuštanjem na odgovarajuće polje u drugoj tabeli na paelu, pojavljuje se dijalog u kome se bira tip i osobine veze. MS Access će automatski prepoznati (sugerisati) vezu l:N (One- To-Man\) ili l:l (One-To-One). Ostaje još da se odredi da li treba uključiti referencijalni integritet i u okviru njega da li tre¬ba postaviti opcije za kaskadno brisanje i/ili kaskadno ažuriranje sadržaja tabela. Ostale tipovi veza mogu se definisati u Join T\pe. Veza i relacija VEZA je izraz za liniju koja spaja dva polja u dve tabele. Tabele se dakle vezuju preko polja podatakaa veza može biti i višestruka (preko više polja). Višestruke relacije mogu uticati na pove¬ćanje broja redudantnih (ponovljenih) podataka u bazi kao i na nemogućnost ostvarenja referencijalnog integriteta date relacije, pa ih treba izbegavati. Ako veza između dve tabele nema oznaku tipa (l i ') to znači da je ve¬za tek inicirana. RELACIJA predstavlja jednostruku ili višestruku vezu između dve ta¬bele preko njihovih polja. Sve veze između dve tabele moraju da se uklapaju u jedan tip relacije (l:n, n:l, l:l), šo znači da se u jednoj rela¬ciji ne mogu uključiti veze različitih tipova. Relacija se smatra definisanom (uspostavljenom) tek po uključenju referencijalnog integri¬teta (dijalog Relationships) i tipa relacije (dijalog Join Properties). MS Access prepoznaje tip relacije, pa se u ovaj dijalog ulazi da bi se tip relacije, eventualno, promenio (najčešće kod upita). Relacije tipa l:n i 1:1 Relacija tipa l:n (ili n:l) je najčešći tip relacije, ali bi se slobodno moglo i reći da se dobar relacioni model zasniva a¬mo na ovom tipu relacije između tabela. Relacija tipa l:l je ređi tip, jer daje mogućnost da se obe tabele (koje su u ovoj relaciji) smeste u jednu. U sMajevima kada u jednu tabelu treba smestiti veliki broj polja (atributi jednog entiteta) onda se, zbogpreglednosti relacionog modela i njegovog lakšeg održavanja, polja "grupišu" u više tabela, a između definiše relacija l:l. Kao primer za ovo se može uzj- ti neki kompleksan entitet kao što je avion, gde se on mora podeliti na grupe atributa (motor, putrniki prostor, kabina posade, teretni prostor, ...), pa treba kreirati tabele prema ovim entitetima, a sve njih povezati po jednom polju (atributu) koji egzistira u svima (npr. AvionlD). Rekurzivna veza Rekurzivnom vezama se nazivaju ciklične veze između dve ili više tabela. Ovo je slučaj kada bi se, praćenjem smera niza veza u smeru strelica (n:l), formirao kružni tok. U slučaju dve tabele ovakva relacija se može inicirati, ali je uključi¬vanje referencijalnog integriteta moguće samo u slučaju kada se ova veza zasniva na relaciji l:l. Za primer se može uzeti relacija z- među tabela RADNICI(RadnikID, Prezime, Ime, SektorID) i SEKTORI(SektorID, Sektor, Rukovodilac), gde bi trebalo ove tabele vezati jednom vezom l:n, a drugom n:l. Drugi slučaj, kada rekurzivnu vezu treba ostvariti između više tabela (npr. tri tabele: RADNICI, SEKTORI, RUKOVODIOCI) je moguće ostvariti, ali se nameće problem održavanja referencijalnog integri¬teta u slučajevima kaskadnih popravaka i brisanja. Vrlo lako se može doći u situaciju da se brisanjem samo jednog sloga u jednoj tabeli izvrši ("nepotrebno") brisanje velikog broja slogova u druge dve tabele. Drugi problem ove veze je sluraj obavez-  nog podatka koji se ne može upisati jer ne postoji u izvornoj tabeli, a koji na isti taj nain ne može da se upiše zbog ne-dostatka izvornog podatka u trećoj tabeli. Rekurzivna veza se može ostvariti, ali je treba izbegavati zbog nemogućnosti ostvarivanja ispravne relacije, odnosno nj- nog teškog održavanja. NAPOMENA: Ako se ukaže potreba da se promeni primarni ključ u tabeli koja već učestvuje u relacijama, pre to¬ga moraju se ukinuti sve njene veze sa ostalim tabelama. Brisanje tabela izRelationships (panela sa relacijama) ne znači da su izbrisane i njene veze, već je ona samo sakrivena u cilju bolje pregsd- nosti. Relacije ostaju čak i kada je tabela izbrisana sa panela, te ih treba brisati jednu po jednu, dok se veza briše - brisanjem vektora koji grafički povezuje tabele u Relationships. Primer nešto složenijeg relacionog modela: VEZBA: Između tabela u bazi Kadrovi uvesti relacije kao na slici.   Problemi pri definisanju relacije Relacija se ne može uključiti jer nije unapred zadovoljen referencijalni integritet, što se javlja u slučaju kada obrađuje mo¬del sa već postojećim podacima, pa referentno pdje (destinacija ili izvor, a nalazi se na strani gde je i strelica) ne sadži podatak koji je upisan u zavisno (Lookup) polje (sa druge strane veze). Referentno polje nije primarni ključ niti je indeksirano kao No Duplicates. Referencijalni integritet Referencijalni integritet (Referential Integrity - RI) se u određenoj joj RI nije uključen predstavlja potencijalnu opasnost za očuva¬nje ispravnosti rada baze. Ako u relaciji, RI nije uključen, tada se svi mogući slučajevi eventualnog ugrožavanja integriteta ba¬ze moraju programirati, što je daleko teže od uključivanja RI. Za sve greške i nastale probleme ugrožavanja RI, u 99% slučajeva, odgovornost je na administratoru baze podataka, dok se tek za l% moge "okriviti": računar, MS Access, lokalna mreža, napa¬janje el. energijom i drugi faktori. Problemi sa integritetom ažuriranja Integritet kaskadnog ažuriranja treba uključiti u situaciji kada je ažuriranje izvornog podatka korisniku omogućeno. U bazi Kadrovi ova situacija se može nametnuti kada polje RadnikID u tabeli Radnici ne bi bilo tipaAuto Number. Vrednost u polju RadnikID je izvorni (referentni) podatak za mnoge tabele u bazi, pa ako bi se njegova vrednost menjala, trebalo bi, na isti način, ispraviti (update) i sva polja koja imaju tu vrednost. Dakle, ako bi se RadnikID u tabeli Radnici ispravio sa 3 na 333, to bi trebalo da se uradi i u tabelama Plate i P_R, a kako broj tabela može biti znatno veći, bolje je ovaj posao prepustiti kaskadnom ažuriranju MS Access-a. U slučaju većih zahvata na kaskadnom ažuriranju, prethodno treba kreirati rezervnu kopiju ili se pouzdati u neprekidno napajanje električnom energijom preko solidnog UPS-a. Ako se kaskadno ili manuelno ažuriranje ne obavi u potpunosti i na kvalitetan način, doći će do situacije prividnog nepos-tojanja podataka. Pored toga što podataka nema tamo gde bi ih očekivali, oni se mogu pojaviti tamo gde ih ni slučajno ne bi očekivali, pa se ovo smatra najvećom mogućom greškom u održavanju baza podaaka. Cak ni brisanje podataka nije tako opasno, jer se bar zna da ih nema, dok se u ovom slučaju javlja i problem njihovog nekontrolisanog "pojavljivanja" na pogrešnim mestima. Problemi sa integritetom brisanja Integritet kaskadnog brisanja se zahteva u slučaju da se izvorni podatak ne ispravlja već briše, jer u slučaju da se briše iz-vorni podataka, moraju se brisati i slogovi u drugim tabelama, čija polja se referenciraju na brisano polje (najčešće slog). Pretpostavimo da iz tabele Radnici obrišemo jednogradnika, tada bi se morali brisati slogovi tabela: Plate i P_R, u koijma se on pominje. Dakle, posle brisanja radnika sa podatkom RadnikID = l, moraju se brisati i svi slogovi iz Plate i P_R u &- jima je RadnikID = l. U suprotnom bi došlo do situacije da poljai slogovi sa referencom ostanu bez izvora, a time i neupotrebljivi. Ovakva polja se mogu uočiti po tome što umesto očekivanog teksta sadrže samo broj (isprobati u bazi Ka¬drovi). Rešenje normalizacijom Primenom navedenih pravila normalizacije treba izbeći bilo kakav oblik redudanse (ponavljanja podataka na više mesta u bazi), ali i pravilno odabrati polja primarnog ključa. Savetuje se unos bar po pet slogova u svaku izvornu tabelu i bar lO-ak u tabelu sa referencom na izvornu, jer se ovim testiranjem praktcno uočavaju načinjene greške u dizajnu tabela i relacionom modelu. Baze u kojima je primenjena normalizacija i u svim relacijama uključen referencijalni integritet, su znatno manje, a njihov rad brži i sigurniji. Ako se baza koristi u višekorisničkom okruženju, navedena pravila nisu dovolj¬na, pa je potrebno primeniti potpunu optimizaciju modela i radnog okruženja (serverračunar, parametri lokalne mreže, Jet Engine, ODBC ili SQL server), što se obrađuje na višim kursevima. VEZBA: Na ovom terminu polaznici treba da izlože relacioni model baze podataka koju uzimaju kao svoj zachtak, a predavač treba da im sugeriše eventualne korekcije.  7 UPRAVLJANJE UPITIMA Upiti služe kao posredni izvori podataka za izbor podataka na specifičan način. To podrazumeva filtriranje, grupisanje, pretraživanje, sumiranje podataka iz jedne tabele ili povezivanje više tabela po odreienim kriterijumima, pa čak i kreira-nje novih ili brisanje postojećih zapisa. Upiti su sekundarni izvori podataka i osnova za forme forms) koje prikazuju njihove podatke na ekranu, ili izveštaje (Reports), kojima se isti prikazuju i štampaju, a osnovne vrste upita uMS Access-u su: Select Query je najčešći i najjednostavniji tip upita, kojim se pregledaju, analiziraju podaci iz tabela. Podaci mogu da potiču iz jedne ili iz više tabela ili dragih upita. Crosstab Query gde su podaci grupisani po kolonama i redovima, na naiin koji je uobičajen za unakrsne tabele. Pogodni su za sumiranje velikog broja informacija u preglednom obliku. Action Query je specijalni tip upita koji menja veću grupu podataka jednom operacijom, a osnovni tipovi k cionih upita su: Make Table Query omogućava kreiranje novih tabela izborom polja iz postojećih. Delete Query briše podatke iz tabele u skladu sa navedenim uslovom. Append Query dodaje izabrane podatke jedne tabele drugoj. Update Query menja sadržaj odabranih polja u tabeli. Union Query nadovezuje kombinujući odgovarajuća (srodna) polja iz više tabela ili upita u jedinstveni reziltu- jući set podataka. SQL Specific upiti karakteristični za SQL (Structured Query Language), koji se ne kreiraju u standardnom (Design View) , već u SQL dizajn modu (SQL View): Pass-Through Query šalje komande direktno na SQL database server, kao što je Microsoft SQL Server ili Sybase SQL Server. Sa tabelama se radi na serveru, ums- sto da se linkuju u aplikaciju. Data-Definition Query slično tipu Action Query, menja i kreira nove tabele u bazi. Kreiranje upita Kreiranje novog upita započinjemo tako što, u prozoru baze biramo komandu New, posle čega sledi dijalog New Query (kao na slici) sa sledećim opcijama: Design View startuje ekran za dizajniranje upita ili kreiranje upita dodavanjem potrebnih tabela ili du-gih upita za upit koji se kreira. Simple Query Wizard je standardni "čarobnjak" za kreiranje jednostavnih upita (npr. grupisanje i sortiranje od-ređenih polja, zapisa odabranih tabela ili ranije formiranih upita po nekom kriteri^mu). Cross-Tab Query Wizard omogućuje kreiranje upita tipa unakrsnih tabela. U toku dijaloga omogućeno e vezivanje nekih od agregatnih funkcija (Sum, Min, Max, ...) za polja koja postavimo u preseke ra-dova i kolona, kao i sumiranje po redovima. Find Duplicates Query kreira upit koji pretražuje izabranu tabelu ili upit i nalazi zapise sa jednakim vrednostma u jednom ili više definisanih polja. Find Unmached Query pomaže da se kreira upit koji traži zapise koji postoje u jednoj tabeli, a ne slažu se sa p- ljima druge tabele na, koje bi trebalo da se referenciraju. Referenca (a zatim i relacja) se ne može ostvariti dok se ne obezbedi potpuno slaganje po ovim poljima, pa se ovaj alat koristi kada se pojave problemi sa uspostavljanjem relacije (uključivanje referencijalnog integriteta preko referentnih polja) između dve tabele. Dizajn upita Upit je objekat koji nudi tri moda pristupa: Design View (vizuelni dizajn), SQL View (dizajn u kodu SQL-a) i Datasheet View (izvršenje, pregled i ažuriranje rezultujućeg seta podataka). Na ovom nivou izučavanja upita mi ćemo se najviše za¬držati na Design View, a SQL View ćemo konsultovati da bismo shvatili koncepciju SQL jezika. Izborom Design View, pri kreiranju novog upita, otvara se prozor u čijem zaglavlju je ispisano ime i tip upita (QuerylO - Select Query), a tu je i prozor Query Properties (koji se prema potrebi uključuje) za podešavanje nekih svojstava na ni¬vou polja ili upita. 1^ Query Properties General | Description i Output All Fields . . . Yes Top Values 5% Unique Values No Unique Records , . , . No Run Permissions .... User's 5ource Database . . . (current) Source Connect 5tr . Record Locks No Locks Recordset Type .... Dynaset | ODBC Timeout 60 Filter Order By Max Records U ovom modu se najčešće dizajnira, odnosno edituje i isprobava postojeći upit. U gornjem panelu prikazuju se tabele ili upiti koji sačinjavaju upit koji se dizajnira, dok se u donjem panelu ubacuju polja koja sačinjavaju upit. Pri kreiranju no-vog upita automatski se otvara dijalog za izbor tabela ili upita koji će ga sačinjavati, a inače se može pozvati preko Show Table tastera. Željeni objekat se selektuje, a klikom na Add, prebacuje u gornji panel, a isto se može učiniti i dvostrukim klikom na željenu tabelu ili query. Polja koja će se naći u upitu, biraju se prenošenjem iz gornjeg panela na slobodno me¬to (Field), ili dvostrukim klikom na njega u gornjem panelu. Ako je u View meniju čekirana opcija Table Names, u donjem panelu se prikazuje i polje Table, u kome stoji ime objekta iz koga potiče dato polje. Ako upit treba da sadrži neke sumirajuće funkcije ili matematike izraze, izborom opcije Totals u donjem panelu pojavljuje se i polje Total koje nudi (funkcije): Group By, Sum, Avg, Min, Max, Count, StDev, Var, First, Last, Expression, Where. Upiti sa totalima se ne mogu ažurirati, tj. preko njih se ne mogu menjati podaci u tablama. Opcija Sort daje mogućnost sortiranja po izabranom polju (ili poljima) po rastućem (Ascending) ili opadajućem (Des¬cending) poretku, a sa Show se bira da li će po izvršenju upita dato polje sa podacima biti vidljivo. U odeljkuCriteria upisuju se granični uslovi za prikaz podataka iz odgovaraju¬ćeg polja. Uslova može da bude više, i oni se upisuju jedan ispod drugog (Or), čineći logičku OR operaciju. Horizontal¬na sa uslovima za više polja čini logičku AND operaciju. Kriterijum najčešće čine logički i relacioni operatori, ali mo¬že biti i kombinacija konstanti, operatora, funkcija, literara, imena polja, kontrola i svojstava (properties) uz standardne džoker znake * i ?. Expression Builder (iz upita se pokreće preko stavke Build u Pop8p meniju) je alat MS Access-a koji će vam pomoći u korišćenju funkcija MS Access-a i SQL-a, u kreiranju izraza (formula), ali je njegova osnovna namena da vas uputi u osobine funkcija i objekata koji vam stoje na raspolaganju, pa, iako je bez njega je uglavnom brže (ako poznajete os¬nove programiranja u VBA), on predstavlja dobar edukativni alat.  8 OSNOVE SQL-A Šta je to SQL? SQL (Structured Query Language) je strukturni jezik za postavljanje upita i višestruku manipulaciju podacima koji se o- risti u VisualBasic-u i MS Access Jet bazama podataka kao primarni metod za pristup podacima.SQL naredbe se mogu podeliti u dve osnovne kategorije i to: naredbe za definiciju podataka D'L) inaredbe za manipulaciju podacima (DML). DDL naredbe omogućavaju definisanje tabela, indeksa i relacija u bazi podataka, dok seDML naredbe koriste za selek- tovanje, sortiranje, sumiranje, izračunavanje u cilju dobijanja potrebnih informacija koje su smeštene u tabelama podataka. Zbog kompleksnosti i obimnosti gradiva u ovoj oblasti, izučavaćemo samo DML naredbe, a ostalo ostaviti za kasnije. SQL je razvijen 1970 godine u IBMu sa idejom da obezbedi korisnicima računara standardni metod za odabir podataka iz različitih formata baza podataka. Namera je bila da senapravi jezik koji neće biti baziran ni na jednom do tada perna-tom programskom jeziku, ali koji bi se, opet, mogao koristiti unutar bilo kojeg programskog jezika za ažuriranje i kreiranje upita u bazi podataka. Većina SQL naredbi vraća rezultat u obliku ssta slogova podataka koji se naziva prikaz ili rezultujući set.SQL nije prete- rano korisnički orijentisan. Mnogi programi, koji koriste SQL iste naredbe skrivaju iza dijaloga, upita po primeru, ili uz pomoć drugog korisnički orijentisanog interfejsa. Ako su Vaši podaci smešteni u relacionu bazu podataka, Vi ćete korstiti SQL naredbe, znali Vi to ili ne. U okviru svakog seta SQL standarda postoje 3 nivoa kompatibilnosti. Proizvod koji pretenduje da budeSQL kompatibi¬lan mora da zadovolji 1. nivo kompatibilnosti. Nivoi 2. i 3. su opcioni i proizvodi koji se bave bazama podataka bi trebalo da ih podržavaju kako bi povećali međusobnu kompatibilnost u različitim sistemima relacionih baza podataka. Mi ćemo SQL učiti preko sintakse Microsoft Jet SQL-a i njegovog testiranja u MS Access okruženju. Kada jednom sava- date koncept koji je ovde prikazan, bićete u mogućnosti da te veštine koristite u praktčno svim SQL orijentisanim programerskim alatima i alatima za projektovanje i upravljanje bazama podataka. Sve upite ćmo formirati u bazi poda-taka MAGAZA istim redosledom kojim su i ovde dati (od Query01 do Query24), ali ćemo, na osnovu primera u njima, kreirati i neke upite koje sami osmislimo. U ovoj lekciji ćete naučiti: • kako se koristi SELECT..FROM za odabir podatakaiz jedne ili više tabela i prikaz tih informacija u jednoj a- beli koju možete listati ili ažurirati; • naučićete i kako da limitirate podatke, koje treba selektovati, na samo one slogove podataka koji zadovoljava¬ju kriterijume date klauzulom WHERE; • da jednostavno presortirate podatke u tabeli korišćenjem klauzule ORDER BY; • da kreirate jednostavne naredbe koje će automatski sumirati i dati totale i podtotale koristeći klauzulu GROUP BY..HAVING; • tipične SQL funkcije za manipulaciju brojevima i stringovima; • da povežete "slične" tabele u jedinstvenu sa poklapanjem kolona klauzulom UNION; • da koristite napredne tehnike JOIN i TRANSFORM..PIVOT klauzula i da uživate u lakoći njihovog korijenja. Napredne mogućnosti SQL-a se izučavaju na višim kursevima, a ako planirde da se profesionalno bavite baza podataka, preporučujem vam da potražite neki od referentnih (zvanično dokazanih, autorizovanih i potpunih) priručnika za SQL (kao jezik) ili SQL Server (kao alat). Naredba SELECT..FROM Query03 : Select Query I- nlxl Artikal Vrsta Artik I Alat za punjenje rashladnih ure Alat Alat za sečenje cevi Alat — Klešta-sečice za kapilaru Alat Grejač 2 kW po poruđžbini Alat Suko priključnica dupla Alat Cevgr.l-1620 p=1100w Alat Kreda (stick) Alat ±_ Krckalica Alat WD-40 Alat Brava Alat Sarka Alat Amort.vmg olimpik 016 prišt. 1 Amortizer Amort.vmg olimpik 017 prišt. 2 Amortizer Amort.vmg ps100 kraći prišt. Amortizer Amort.vmg ps664 duži prišt. Amortizer Amort. Vm gorenje kraci Amortizer Amort. Vm gorenje duzi Amortizer Amortizer suspa kraci Amortizer Amortizer suspa duzi Amortizer Amort. Vm niš Amortizer Automatski osiaurač 25a dupli Autom. osla. 'r | \ Record: H I i jl 8 ► I M ►*] of 263 ^ fjmH Query01 : Select Query Artikal ± Alat za punjenje rashladnih uređaja Alat za sečenje cevi Klešta-sečice za kapilaru Grejač 2000VV po poruđžbini Suko priključnica dupla Cev gr. 1-1620 p=1100w Kreda (stick) Krckalica WD - 40 Brava Sarka Amort.vmg olimpik 016 prišt. 1 Amort.vmg olimpik 017 prišt. 2 tabela baza podataka. Kao rezultat SE- Record: H | | [ G 1 ► I H !►*! of 2 ^ Klauzula ORDER BY Kada koristite naredbu SELECT..FROM rezultujući set podataka će biti vraćen u redosledu u kojem je pronđen u izvor¬noj tabeli. Ako rezultate treba prikazati u nekom drugom redosledu treba koristiti klauzulu ORDER BY. Opcije ASC i DESC iza svakog polja unutar Hauzule ORDER BY se koriste za sortia- nje po rastu, odnosno opadanju. Ako nijedna opcija nije data, SQL podrazumeva sortiranje po rastućem redoslsdu. Sledeći primer daje tabelu Artikli sa kolonama Artikal i SerijskiBroj sa opadajućim sortiranjem po polju valD (vrsta artikla) (QueryO4): SELECT Artikli.valD, Artikli.Artikal FROM Artikli ORDER BY Artikli.valD DESC; U okviru klauzule ORDER BY može se uneti više od jednog polja, kao npr. (QueryO5): SELECT Artikli.valD, Artikli.Artikal FROM Artikli ORDER BY Artikli.valD DESC , Artikli.Artikal; čime se dobija rastuće sortiranje po koloni Artikal, a opadajuće po kolo¬ni valD (vrsti artikla). Klauzula WHERE Jedan od najnaprednijih aspekata naredbe SELECT..FROM je njena mogućnost da upravlja sadržajem rezultujućeg eta podataka uz pomoć klauzule WHERE. Ova klauzula može upravljati sadržajem rezultujućeg seta podataka na dva naina: • limitirajući sadržaj rezultujućeg seta podataka i • povezivanjem dve ili više tabela u jedinstveni rezultujući set podataka. Korišćenje klau zule WHERE za limitiranje rezultujućeg seta podataka Klauzula WHERE omogućava logička poređenja podataka iz bilo koje kolone tabele podataka. Najprostiji oblik lorišćenja ove klauzule je: WHERE kolona = vrednost Vrlo je važno znati da WHERE klauzula uvek p'ethodi SELECT..FROM naredba, pa kreirajmo upit oblika(Query06): SELECT DostavniceStavke.ArtikallD, DostavniceStavke.Komada FROM DostavniceStavke WHERE (((DostavniceStavke.Komada)=1)); koji će nam dati prikaz sloga kada je vrednost u poljuKomada jednaka 1. Različite WHERE klauzule se mogu povezati u jednu korišćenjem AND, OR i NOT operatora, kao u primeri(Query07): SELECT Dobavljaci.Dobavljac, Dobavljaci.MestolD FROM Dobavljaci WHERE (((Dobavljaci.Dobavljac)o'Print 93') AND ((Dobavljaci.MestolD)=1)); gde će biti prikazani oni slogovi koji zadovoljavaju uslova da Dobavljac nije tekst 'Print 93'. a vrednost u polju MestolD, u istom slogu, jednako je 1. S obzirom da se SQL programiranje često zahteva i u VisualBasic-u obratite pažnju na korišćenje jednostrukih (') navod¬nika u okviru SQL upita (MS Access podržava i dvostruke), jer ćete na taj način olakšati njihovo održavanje na isti način kao i VisualBasic stringova, npr.: frmER.datSecRS.RecordSource = "SELECT [Engleski] FROM [RECNIK] WHERE [Srpski]='" & _ frmER.datPrimRS.Recordset![Srpski] & "'" & " Order by [Srp¬ ski]" Ovde je omogućeno selektovanje po promenljivom podatku frmER.datPrimRS.Recordset![Srpski] koga korisnik unosi, pa se on uklapa u jedinstveni SQL string, gde se jednostruki navodnici moraju navesti ispred i iza ove literarne vrednosti. LlKE klauzula vraća sve redove u čijim kolonama se nalazi sadržaj sličan literaru koji je prosleđen funkcijom, a u okviru izraza se mogu koristi uobičajeni džokerski znaci '*' i '?', kao u sledećem primeru, gde ćemo dobiti one artiklečije ime po-činje ili završava na 'A' (Query08a): SELECT Artikli.valD, Artikli.Artikal FROM Artikli WHERE (((Artikli.Artikal) Like "A*")) OR (((Artikli.Artikal) Like "*a")); BETWEEN klauzula daje slogove čije se deklarisano polje nalazi između datih vrednosti, kao u primeru (Query08b): SELECT Dostavnice.DostavnicaBroj, Dostavnice.DobavljaclD, Dostavnice.DatumPrispeca FROM Dostavnice WHERE (((Dostavnice.DatumPrispeca) Between [Od datuma:] And [Do datuma:])) ORDER BY Dostavnice.DatumPrispeca DESC; gde se parametarskim upitom prikazuju podaci o dostavnicama za vremenski period između dva uneta datuma.  Korišćenje klauzule WHERE za povezivanje dve ili vise tabela Klauzula WHERE se može koristiti za poredenje kolona u različitim tabela¬ma. Na ovaj način mogu se postaviti kriterijumi koji će povezati dve ili više tabela u jedinstveni rezultujući set podataka kao u primeru (Query09): SELECT Artikli.Artikal, DostavniceStavke.Komada FROM Artikli, DostavniceStavke WHERE (((Artikli.ArtikallD)=[DostavniceStavke].[ArtikallD])); gde su povezane tabele Artikli i DostavniceStavke i prikazani podaci Ar- tikal i Komada u slučajevima kada polja ArtikallD iz jedne i druge tabele imaju istu vrednost. Rezultujući set će u ovom slučaju izgledati kao na slici desno. Dok će upit (QuerylO): SELECT Artikli.Artikal, DostavniceStavke.Komada FROM DostavniceStavke INNER JOIN Artikli ON DostavniceSta- vke.ArtikallD = Artikli.ArtikalID WHERE (((DostavniceStavke.Komada) Between 2 And 10) AND ((Artikli.ArtikalID)=[DostavniceStavke].[ArtikalID])); dati samo one slogove gornjeg seta podataka, uz dodatni uslov da je vrd- nost u polju Komada izmedu 2 i 10, pa samim tim verovatno dati kraći set podataka za prikaz. U ovom slučaju nije ko- rišćeno uslovljavanje (WHERE) po polju ArtikalID, već je zahtevano unutrašnje slaganje (INNER JOIN) tabela po polju ArtikalID (što je često i jednostavnije). SQL funkcije za agregaciju SQL standardi definišu osnovni set funkcija koje su sadržane u svim SQL kompatibilnim sistemima, a poznate su pod imenom funkcije za agregaciju. Ove funkcije se koriste za brzo izračunavanje rezultata iz numeričkih podataka koji su smešteni po kolonama. SQL funkcije za agregaciju koje se koriste u MS Access Jet-u su: Group by označava polje (ili jedno od polja) po kome se podaci u Total upitu grupišu. Sum daje zbir (sumu) po polju u odnosu na prethodno Group B\ polje. Avg daje aritmetičku sredinu vrednost za dato polje, u odnosu na polja po kome se grupše. Min daje minimalnu vrednost u datom polju. Max daje maksimalnu vrednost u datom polju. Count daje broj različitih vrednosti koje polje uzima, ne računajući nultu vrednost. StDev daje standardnu devijaciju vrednosti u polju. Var daje varijansu (kvadrat standardne devijacije). First daje vrednost polja u prvom zapisu u set-slogu koji vraća upit. Last daje vrednost polja poslednjeg zapisa u set-slogu koji vraća upit. Expression Koristi se za prikaz izračunatih vrednosti, unošenjem funkcija nad poljima. Funkcija može biti jednostavna, jedna od agregatnih (sum, avg, min, max, stdev, var), aritmetičkih ili složenija za šta se obično koristi opcija Build iz menija koji se dobije desnim klikom na poljefield:. Potom se izabere jedna od internih, ili korisnički kreiranih, funkcija. Where kriterijum uslov u vidu SQL izraza, za polje koje upit ne prikazuje u setslogu. Primer korišćenja funkcija agregacije se može dati upitom (Query12): SELECT Sum(DostavniceStavke.Komada) AS Zbir, Min(DostavniceStavke.Komada) AS Najmanje, Max(DostavniceStavke.Komada) AS Najviše, Count(DostavniceStavke.Komada) AS [Ukupan broj] FROM DostavniceStavke WHERE (((DostavniceStavke.Cena)<1 10="" 50="" 5="" a="" agregaciju="" ako="" ali="" artikle="" as="" ava="" b-="" bar="" biste="" biti="" broj="" broja="" broju="" by..having="" by="" da="" dati="" desc="" desno="" dgova="" distinct="" distinctrow="" dlstlnct="" dlstlnctrow="" dobavlja="" dobavljati="" dobija="" dobijete="" dobiti="" dodatno="" dostava="" dostavnica.="" dostavnice.="" dostavnice.datumprispeca="" dostavnice.dobavljacld="" dostavnice.dostavnicabroj="" dostavnice.dostavnicald="DostavniceSta-" dostavnice="" dostavnicestavke="" dostavu.="" dva="" e="" eg="" elite="" em="" ena="" enje="" enjem="" ete="" from="" funk="" funkcija="" group="" having="" havlng="" i="" ili="" imaju="" imena="" in="" iskoristite="" isti="" istu="" iz="" izvr="" ja.="" je="" jedan="" jedinica="" jednom="" joln="" kada="" kao="" klauzula="" klauzule="" klauzulu="" klji="" klju="" ko="" koisti-="" koja="" koji="" kojih="" kojim="" kojima="" kori="" koriste="" koristite="" koristiti="" kreirati="" listu="" lnner="" lo="" lolonu="" mo="" n="" na="" nad="" najmanjih="" najprodavaniji="" nastati="" ne="" nego="" neki="" nekoliko="" njihova="" nom.="" npr.="" nu="" o="" oblik:="" od="" ograniavanje="" oj="" omada="" omogu="" on="" one="" op="" order="" originalnom="" ostavnica="" otpremnicestavke.artikalld="" otpremnicestavke="" ova="" ovih="" ovo="" pa="" percent="" pet="" plata="" po="" podataka.="" podatke="" pogledu="" pojaviti="" poljima.="" poljima="" pona="" ponavljaju="" postoje="" pregled="" preko="" pretpostavimo="" prikazani.="" prikazu="" prikupiti="" primenjuje="" primer="" problem="" prodaje="" prodano="" proizvoda.="" proizvoda="" properties="" prozoru="" prvih="" puta.="" radnicima.="" razlikom="" razlikuju="" re="" reci="" red="" redovima="" rezultata="" rezultuju="" s-="" s="" samo="" sastoji="" se="" select="" selektujete="" seta="" setu="" situacije="" slede="" slika="" slogova="" sql-a="" su="" sum="" sumiranja="" sumofkomada="" svi="" svih="" svim="" svojstvo="" tabele="" tabeli="" tako="" te="" to="" tom="" tome="" top="" tpremnicestavke.komada="" tra="" treba="" tvarili="" u="" uery="" ueryl3="" ueryl5="" ueryl6="" ueryl7="" ueryl8="" ukupno="" ukupnog="" um="" umesto="" uneti="" upis="" upit="" uslovljavanje="" uz="" values="" ve="" vi="" vke.dostavnicald="" vratiti="" vrednost="" vrednosti="" where="" za="">50)); a rezultovaće prikazom kao na slici. Kako se ova klauzula koristi gotovo isto kao i WHERE klauzula, to znati da i ovde možemo koristiti više, logički povezanih, uslova, kao u primeru (Queryl9): SELECT OtpremniceStavke.ArtikallD FROM Artikli lNNER JOlN OtpremniceStavke ON Artikli.ArtikallD = OtpremniceStavke.ArtikallD GROUP BY OtpremniceStavke.ArtikallD, Artikli.Artikal HAVlNG (((Artikli.Artikal) Like 'R*') AND ((Sum(OtpremniceStavke.Komada))>50)); gde se pored već pomenutog uslova traži da ime artikla poiinje slovom "R".  Tipovi SQL klauzule JOIN Setovi podataka nastali kao rezultat korišćenja WHERE klauzule se ne mogu ažurirati, što se primenom jednog od tri tipa JOIN klauzule može prevazići, odnosno zahtevima za unutrašnjim INNER JOIN ili nekim od spoljašnjih slaganja LEFT JOIN, odnosno RIGHT JOIN. Shvatanje ovog slaganja u mnogome zavisi od vašeg poimanja relacije, jer se u svojstvima odnosne relacije (pored ostalog) deklariše i jedan od ovih oblika slaganja. Zbog kompleksnosti, ova tema se dataljnije o> raduje na razvojnom (višem) kursu., a ovde će biti samo prezentirana na primerima. INNER JOIN klauzula INNER JOIN može se koristiti za kreiranje rezultujućeg seta podataka koji sadrži samo one slogov koji odgova-raju jedni drugima u obe tabele, kao npr. kod upita (Query20: SELECT Artikli.ArtikalID, Artikli.Sifra, DostavniceStavke.Cena, DostavniceStavke.Komada FROM Artikli INNER JOIN DostavniceStavke ON Artikli.ArtikalID = DostavniceStavke.ArtikallD; Join Properties Left Table Name Right Table Name |3SH d [DostavniceStavke d Left Column Name | ArtikallD d Right Column Name ArtikallD d (* i: Only include rows where the joined fields from both tables are equal. AitikallD • Sifra Cena Komada Artikli Artikli DostavniceStavke DostavnioeStav 0 0 0 0 dd - Field: Table: Sort: Show: Criteria: or: C* 2: Include ALL records from 'ArtikJi' and only those records from 'DostavniceStavke' where the joined fields are equal, 3: Include ALL records from 'DostavniceStavke' and only those records from 'ArtikJi' where the joined fields are equal, Cancel T gde se zahteva jednakost polja Artikli.ArtikalID i [DostavniceStavke].ArtikallD. LEFT JOIN Klauzula INNER JOIN vraća samo one redove koji imaju odgovarajuću vrednost jednaku u obe tabele, dok naini spolj- njeg povezivanja daju kao rezultat sve slogove podataka koji vraćaju vrednost sa jedne strane povezivanja, bez (bzira da li postoji odgovarajući slog sa druge strane koja se povezuje. Klauzula LEFT JOIN će vratiti sve slogove iz prve tabele u listi (tabela sa leve strane) i odgovarajuće slogove iz tabele sa desne strane, ali samo one koji imaju odgovaajuću vred-nost u ovoj koloni, kao u primeru (Query21): SELECT DostavniceStavke.ArtikallD, Artikli.PocetnoStanje FROM Artikli LEFT JOIN DostavniceStavke ON Artikli.ArtikalID = DostavniceStavke.ArtikallD; RIGHT JOIN Ova klauzula funkcioniše na sličan način kao prethodna, samo što se rezultujući set podataka bazira na drugoj (desnoj) tabeli, a koristi se na isti način (Query22). SELECT Artikli.Artikal, OtpremniceStavke.Komada, Otpremnice.DatumOTP FROM Otpremnice lNNER JOlN (Artikli RlGHT JOlN OtpremniceStavke ON Artikli.ArtikallD = OtpremniceStavke.ArtikallD) ON Otpremnice.OtpremnicalD = OtpremniceStavke.OtpremnicalD ORDER BY Artikli.Artikal; UNION upiti Ova ključna reč SQL-a omogućava ujedinjenje dve tabele ili dva SQL upita koji sadrže slične podatke, ali nisu u relaciji. UNION vraća set podataka koji nije moguće ažurirati, pa su oni zgodni za izradu prikaza na ekranu, izveštaja, kao i za pripremu podataka za statističke prikaze i grafikone. Union tip upita je jedan od onih koji mogu da se dizajniraju (kreia- ju) samo u SQL View-u. U sledećem primeru upit daje set podataka sa ujedinjenjem tabela Dobavljaci i Kupci (Query23): SELECT Dobavljaci.Dobavljac, Dobavljaci.KontaktOsoba, Dobavljaci.Adresa FROM Dobavljaci UNlON SELECT Kupci.Kupac, Kupci.KontaktOsoba, Kupci.Funkcija FROM Kupci; čija se rezultujuća tabela vidi na slici, gde su i dobavljači i kupci smešteni u prvu kolonu. Kada koristiti rad u SQL-u? Pored toga što ćete kad-tad mo¬rati da radite u SQL-u neki tip upita (kao što je Union) koji ne može da se kreira u Design View modu, pretpostavimo da imate veoma složen upit, ali da one ne funkcioniše zbog promenjenog imena tabele, polja ili upita na koji se referei- cira. Da biste lakše korigovali greške, otvorite upit u SQL View-u, pa ispravite objekata. Ako je greška ispravljena, upit će moći da se vidi i dizajnira i u Design View modu. VEZBA: U cilju prikaza stanja artikala, kreirati upite: - početna stanja artikala: qryPS(ArtikalID, PocetnoStanje), koristeći tabelu ARTIKLI - ulaz artikala: qryULAZ(ArtikalID, Komada), koisteći tabele: ARTIKLI i DostavnicsStavke - izlaz artikala: qryIZLAZ(ArtikalID, -Komada), koristeći tabele: ARTIKLI i OtpremniceStavke Potom kreirati Union upit qryPROMET, kojim će se kreirati unija prethodna tri upita, a koji treba dazigleda kao: SELECT ALL * FROM qryPS UNION SELECT AL L * FROM qryULAZ UNION SELECT ALL * FROM qrylZLAZ; Na kraju kreirati upit qrySTANJA(ArtikalID, Sanje), korišćenjem qryPROMET kao izvor podataka, a korišćj- njem totala i sumiranje po polju Stanje.  Unakrsni upiti klauzulom TRANSFORM..PIVOT Ovo je izuzetno složena alat koji omogućava kreiranje rezultujućih setova podataka koji sadrže sumirane podatke u formi koja se naziva unakrsni upit, što daje mogućnost međusobne zamene mesta između kolone i reda. Da bi kreirali ovaj tip upita, najpre treba zadati nje¬gov tip (Crosstab Quer\) iz palete alata. Primer koji će biti prikazan daje rezultujući pregled u obliku ta¬bele sa sadržajem: DostavniceID u kolonama, ArtikalID po redovima i količinom u preseku odgo¬varajućeg reda i kolone: ArtikalID DostavnicaID Komada DostavniceStavke DostavniceStavke DostavniceStavke Group By Group By Sum Row Heading Column Heading Value Field Table Total Crosstab Sort Criteria TRANSFORM Sum(DostavniceStavke.Komada) AS SumOfKomada SELECT DostavniceStavke.ArtikalIDFROM DostavniceStavke GROUP BY DostavniceStavke.ArtikalID PIVOT DostavniceStavke. DostavnicaID; kao na slici: 1=1 9uery24 : Crosstab Query HHE3I ArtikalID 1 2 3 4 5 |6| 11 12 16 18 19 20 21 22 23 25 26 ► 19 Grejač 2 kW po porudžbini 5 2 Kreda (stick) 1 Brava 22 26 48 Re cord: n| a KTy p a j PæepBMcaHO flaHa BpeflHOCT — 110,0 din — 0,00 din CnoBHHa: CTOTHHyrieneceirieT uHHape. H (00/100) HanoMeHa MOJIHMO Bac fla pe3epBaqnjy noTBpflMTe y poxy OÆ 5 Aat-ta, J Record: H | i ► 1 h !►*! of il 0,00% = TpoLUKOBH OTnpeMe 3a ynnaiy 45,00 din 155,00 din procedura (u VBA) obavlja se u prozoru koda forme, a koji se poziva dvostrukim klikom na stavkeEvent Procedure u ok-viru pravila za polja i objekte dizajn moda forme. 11 IZVEŠTAJI Reports (izveštaji) su objekti koji omogućuju pregled i štampanje traženih oblika lista i totala, od prostih do veoma sože- nih. Izveštaji su, po pristupu u dizajniranju, vrlo slcni formama, ali se preko izveštaja ne omogućuje ažuriranje podataka od strane korisnika. Kreiranje izveštaja U okviru Database Window bira se komanda New, pri čemu se startuje sličan dijalog kao i u slučaju kreiranja forme. Za izveštaj, izvor podataka može biti tabela ili upit. Kod složenijih izveštaja najžešće se koriste upiti, a kako Report ima velike mogućnosti grupisanja i kreiranja totala, mi ćemo za izvor uzimati postojeće tabele. Pri kreiranju se nude sledeće opcije: • Design New • Auto Report Za razliku od Form Wizard-a, Report Wizard ima dodatne mogućnosti za grupisanje podataka u vi¬še nivoa, sortiranje po više ključeva, kao i za različite vrste sumiranja i primenu agregatnih funkcija. Na kraju se može izabrati jedan od ne-koliko standardnih šablona za formatizovanje izveštaja. Dodatni dizajn izveštaja (podešavanja, doterivanja i usklađivanja), kao i kod formi, mo¬gu se izvode se u Design View. Label Wizard služi za kreiranje izveštaja oblika nalepnica i natpisa, a u ponudi se nalaze i mnogi poslovni i industrijski standardi. Ostavljena je mogućnost samostalnog podešavanja broja ko¬lona po strani i veličine labela. Kroz ovaj Wizard moguće je podešavanje jedinice mere i vrste pa¬pira koja se ubacuje u štampač, izbor fonta, izbor polja za nalepnicu kao i određivanje po kom po¬lju će ispis nalepnica biti sortiran. Dizajn izveštaja Pri dizajnu izveštaja, na Toolbar-u su na raspolaganju alati: Auto Format Wizard (dostupna je i sa format menija) sadrži opcije za formatiranje postojećih izveštaja na ne-koliko klasičnih načina. Svaki izveštaj se može kasnije doraditi u modu za dizajn, a mogu se kreirati i novi. Sorting And Grouping (dostupna kroz View meni) je daleko najznačajniji alata - specifičan za izveštaje, a omo¬gućava da se po svim sekcijama izveštaja postigne dodatno sor¬tiranje i grupisanje podataka u više ni¬voa, kontrolisani prelom strana i kolo¬na. Field/Expression omogućava biranje polja po kojima će se vršiti grupisanje, a Sort Order daje mo¬gućnost biranja sortiranja po opadajućem ili rastućem redosledu. Page Setup Za podešavanje opcija pri kreiranju izveštaja koristi se stavkaPage Setup sa File menija. U Page Setup dijalogu podešava ju se parametri: Margins za podešavanje margina. Opcija Print Data Only šalje na štampu samo podatke sa izveštaja, ali ne i njegov dizajn. Page nudi izbor orijentacije (Portrait ili Landscape) strane, veličine papira i punjenja štampača, kao i izbor štampača. Grid Settings podešava se broj kolona, razmak između ko¬lona i razmak između redova Item Size podešava se širina kolone i visina reda Layout Columns redosled štampanja u slučaju više kolona. U skriptima je (na delovima slobodnih strana) prikazano nekoliko tipova izveštaja. Za pre¬gled prikaza (pre ili bez štampanja) koriste se navigacioni ta¬steri u donjem levom uglu prozora izveštaja (slika desno), a print dijalog se pokreće preko +
ili Pop8p me¬nija tekućeg izveštaja. Za programiranje izveštaja potrebno je poznavanje VBA. VEZBA: Kreirajte izveštaje, slične prikazanim kroz ova skripta. 12 IZRADA STANDARDNE BAZE PODATAKA Vaš zadatak, koji ste odabrali na sedmom terminu ovog kursa (bazu podataka), donećete na ovaj termin, izložiti relađoni model i prikazati kreirane objekte MS Access baze podataka. Ne zaboravite da Vaš fajl (*.mdb) obrišete po završenom prikazu, jer pravo na njega imate samo Vi. Napravite bazu podataka koja će da sadrži podatke o nekim vašim poslovima, hobiju i slcno. Baza treba da sadrži ng- manje dve tabele u relađiji (savetuje se 5 do 10 tabela). Primeri ovih tabela su na slikama dizajn moda ovih tabela (u nastavku teksta. Omogućiti unos podataka preko fome. B INTERVENCIJE : Table HIBID Field Name Data Type Description IH T IstorijaID ZubPacijentaID Datum Opis AutoNumber Number Date/Time Text □ Field Properties General J Lookup | Format Short Date Input Mask Caption Default Value Now() 64 characters Validation Rule long, including Validation Text spaces. Press Required No FI for help on field names. Indexed No Račun Pacijent Račun br. Datum Usluga Cena Cukić Milovan 001 12.10.1998 Plombiranje Čišćenje kamenca Bušenje 78.0 Din. 60.0 Din. 5,00 Din. 003 12.10.1998 Poliranje Čišćenje kamenca Ukupno: 143.00 Din. 26.0 Din.60.0 Din. Ukupno: 86,00 Din. Ukupno: 2Ž9.00 Din. U formama treba da bude omogućeno pretraživanje i manipulaciju slogovima baze po ugledu na sideću: Na kraju kreirati izveštaje (na osnovu prethodno kreiranog upita), koji će da sadrži grupisanja is umiranja, kao npr.: I HakmcsK krilsil artbb Efc.k A4- ajíes KJVI J wc. C'.DI O o FUÍIH k fiin« b intuí oír JOtfkd DJDT JTO2- i.ionn. (DI i j aiiíi Fol1J±it Tup±in± Joad lb.lDJW2- 1,20 Bd. (Dll) 637-177 JOüd u.n JW2- Í,U Dd. (Dl 1) 637-177 Poto leoptr p±ptr A 4 J oeaol raü7jwc- H.CDDm. (Dl 1 | 637-177 J oeaol 1 i D? J wc- H.CDDm. (Dl 1 | 637-177 ?i njwi 40. DO Dm. Futro Li :i uto i re □ P Fap F iitiz-j 14.II JTO2- Hj.CCi Did. KO^ÍTlS U b*J1Uli k JOüd Ib.lDJ W2- D, 42 Qri . (Dll) 637-117 2)1 a 7P.IDJ ÍW D.W Pid . 2)1 a mmjra Di JD Pid . KO^ÍTlS U b«J1v«M|