TABELE U BAZI PODATAKA NORTWIND
 
Na slici je prikaz šeme sistema baze podataka Nortwind. Prikazano je osam tabela, od kojih je za svaku bilo potrebno napraviti potpunu strukturu s imenima polja, tipovima podataka, opisima i svojstvima.
 
Tabele se medjusobno povezuju da bi se podaci iz jedne mogli koristiti u drugoj, ali i da bismo obezbedili tačnost podataka koji se ponavljaju.
 
Osnovni uslov za uspostavljanje veze između dve tabele je da oba polja između kojih se uspostavlja veza sadrže istu vrstu podataka. Ta polja ne moraju da imaju i ista imena, ali širina polja i tip podataka moraju da budu jednaki i (što je još važnije), vrednost koja se nalazi u povezujućim poljima određenih zapisa obe tabele mora da bude ista da bi veza bila uspostavljena. Veza se najčešće uspostavlja tako što se međusobno povezuju ključna polja obe tabele, odnosno primarni ključ jedne tabele i spoljni ključ druge tabele.

 

KLJUČEVI I USPOSTAVLJANJE VEZA IZMEÐU TABELA
 
Preporučljivo je da sve tabele tabela imaju primarni ključ (eng. Primary key), odnosno jedno ili više polja čiji je sadržaj jedinstven u svakom zapisu. Na primer, polje OrderID (broj porudžbine) je primarni ključ tabele Orders, jer saki zapis te tabele sadrži drugačiju šifru porudžbine. U teoriji relacionih baza podataka to se zove integritet entiteta. Pošto svaki zapis ima različitu vrednost primarnog ključa, možete da razlikujete dva zapisa. To je važno, jer je moguće da će u tabeli postojati dve porudžbine sa istim datumom, za istog kupca i koje je potpisao isti zaposleni.
 
Ako prilikom pravljenja nove tabele ne zadate primarni ključ, Access će vas pitati želite li da ga on napravi. Ako odgovorite sa Yes, Access će tabeli dodati polje primarnog ključa tipa AutoNumber. U svakom novom zapisu automatski se upisuje redni broj u polje primarnog ključa. Primarni ključevi drastično ubrzavaju proces pretraživanja i sortiranja slogova u nekoj tabeli.

 

Pravljenje primarnog ključa
 
Primarni ključ pravite tako što najpre birate polje koje želite da bude primarni ključ, a zatim na paleti sa alatkama pritisnete dugme Primary Key (to je dugme na kome je sličica ključa). Možete napraviti i primarni ključ koji se sastoji od više polja, tako što ćete izabrati ta polja i pritisnite dugme Primary Key.

 

Šta su spoljni ključevi
 
Osnovna funkcija primarnih ključeva je da obezbede jedinstvenost zapisa u tabeli, a koriste se i za međusobno povezivanje tabela. Zajedničko povezujuće polje u drugoj tabeli ne mora da bude (i najčešće nije) primarni ključ u toj tabeli. Zajedničko povezujuće polje (ili grupa polja) sadrži isti tip podataka kao primarni ključ povezane tabele.
 
Polje (ili polja) koje tabelu povezuju s primarnim ključem druge tabele zove se spoljni ključ. Za razliku od primarnog ključa, koji se pravi na poseban način, spoljni ključ može da bude svako polje (ili grupa polja) koje se koristi kao povezujuće polje. Veza između zapisa dve tabele se uspostavlja kada polje primarnog ključa jedne tabele sadrži istu vrednost kao polje spoljnog ključa druge tabele (zbor toga je neophodno imati isti tip podatka).

 

VRSTE VEZA IZMEÐU TABELA
 
Veze koje postoje na nivou tabela imaju prioritet nad vezama koje su definisane na nivou upita. Ukoliko uspostavite vezu između dve tabele, Access će je automatski prepoznati kada sastavljate upit koji obuhvata polja iz više tabela. Veze između tabela mogu da se svrstaju u četiri grupe:

  • Jedan prema jedan – 1:1
  • Jedan prema više – 1:n
  • Više prema jedan – n:1
  • Više prema više – n:m
     

Veza tipa 1:1
 
Veza tipa “jedan prema jedan” znači da jednom zapisu iz jedne tabele odgovara tačno jedan zapis iz druge tabele sa kojom je prva u vezi. Iako se retko koristi u sistemima za upravljanje bazama podataka, može da bude koristan način međusobnog povezivanja tabela. Dobre primere veza tipa “jedan prema jedan” nalazimo u većini aplikacija za fakturisanje; postoji datoteka pridružena fakturama koja sadrži podatke neophodne za izdavanje računa kupcu na adresu koja nije ista kao ona u datoteci s matičnim podacima o kupcu. Ta datoteka obično sadrži šifru kupca i dodatan skup polja za podatke o adresi.
 

Veza tipa 1:n
 
Veza tipa “jedan prema više” omogućava povezivanje jednog zapisa iz jedne tabele s više zapisa u drugoj tabeli. Primer takve veze je zaposleni koji je potpisao više porudžbina ili kategorija koja obuhvata više proizvoda. U oba primera imamo veze tipa “jedan prema više”. Veza Employees–Orders (Zaposleni-Porudžbine) spaja šifru zaposlenog (primarni ključ tabele Employees) sa šifrom zaposlenog u tabeli Orders (koja postaje spoljni ključ tabele Orders).

 

Veza tipa n:1
 
Veza tipa “više prema jedan” (koja se često zove i veza s referentnom tabelom) pokazuje Accessu da je više zapisa u jednoj tabeli povezano s jednim zapisom u drugoj tabeli. Na primer, tabela Odrers (Porudžbine) i tabela Customers (Kupci) su povezane vezom više prema jedan, tj. više porudžbina je vezano za jednog kupca.

 

Veza tipa n:m
 
Veza tipa “više prema više” najteže se razume. U opštem slučaju, možete da je zamislite kao par veza tipa jedna prema više između dve tabele, kao što su veza između tabela Products (Proizvodi) i Orders (Porudžbine) u bazi podataka Northwind. Jedan proizvod može da se nađe na više porudžbina u isto vreme, što znači da postoji veza tipa “jedan prema više” između tabela Products i Orders. S druge strane, jedna porudžbina može da obuhvati više proizvoda, što je takođe veza tipa “jedan prema više”, ali od Orders prema Products. Ovakav par odvojenih, dvosmernih, veza tipa “jedan prema više” čini jednu vezu tipa “više prema više”. Po pravilu, takva veza se razbija na dve veze 1:n prema novoj tabeli koja se rađa između ove dve, kao na slici 61.

 

REFERENCIJALNI INTEGRITET BAZE PODATAKA
 
Pored definisanja veza između tabela u Accessovoj bazi podataka, možete da zadate i određena pravila koja će obezbediti određeni stepen tačnosti podataka u tabelama. Na primer, ne biste želeli da dozvolite brisanje zapisa iz tabele Customers (Kupci) ako u tableli Orders (Porudžbine) postoje zapisi koji su povezani s njim (odnosno ne možete dozvoliti brisanje kupca, ako u tabeli Orders postoje “njegove” porudžbine). Kada biste izbrisali zapis o određenom kupcu bez  predhodnog brisanja zapisa o porudžbinama koje mu pripadaju, u sistemu bi se pojavile porudžbine bez kupca. Ta vrsta problema može u potpunosti da ugrozi referencijalni integritet baze podataka.
 
Referencijalni integritet važi samo za ključna polja tabela; kad god se doda, izmeni ili izbriše polje primarnog ili spoljnog ključa, proverava se očuvanost referencijanog integriteta. Ukoliko bi izmena sadržaja ključnog polja bila uzrok raskidanja veza između tabela, kaže se da je time narušen referencijalni integritet. Moguće je podesiti opcije tako da referencijalni integritet određene relacije bude automatski obezbeđen.

 

Korišćenje alatke Relationship Builder za uspostavljanje veza između tabela
 
Postojanje veze između tabela se definiše u posebnom prozoru baze podataka koji se naziva Relationship Builder. Njega možete da izaberete stavkom menija Tools/Relationship ili da pritisnete dugme Relationships na paleti sa alatkama. Pojavljuje se glavni prozor Relatoinships u kome možete da dodate tabele i uspostavljate veze između njih.
 
Na ekranu se pojavljuje nova paleta sa alatkama koja mu je pridružena. Kada ga prvi put otvorite, prozor Relationships je prazan. Tabele dodajete na jedan od sledećih načina:

  • Dodajte tabele pre nego što se pokrene alatka Relationship Builder, u okviru za dijalog koji joj prethodi
  • Na paleti sa alatkama pritisnite dugme Show Tables
  • Sa linije menija izaberite Relatioships / Show Table
  • U prozoru Relationships pritisnite desni taster miša otvorite pop-up meni i izaberite Show Table u meniju.

 

Uspostavljanje veza između tabela
 
Pošto postavite tabele u prozor Relationships, spremni ste da uspostavite veze između njih. Da biste to uradili, izaberite u jednoj tabeli polje koje će služiti kao povezujuće i prevucite ga na odgovarajuće polje u tabeli s kojom želite da uspostavite vezu.
 
Da biste uspostavili vezu između dve tabele, uradite sledeće:

  • Pritisnite polje CategoryID u tabeli Categories
  • Držeći pritisnut taster miša pomerite pokazivač u prozor tabele Products
  • Prevucite ikonu za biranje polja na polje CategoryID u tabeli Products. Access otvara okvir za dijalog Edit Relationships koji je prikazan na slici.
  • Izborom opcije dugme Create uspostavljate novu vezu. Access zatvara okvir za dijalog i povlači liniju između tabela Categories i Products.

 

Zadavanje opcija veze u okviru za dijalog Relaitonships
 
Okvir za dijalog Edit Relationships nudi više opcija za vezu između tabela Categories i Products. Slika prikazuje taj okvir za dijalog i opcije koje nudi. U njemu se vidi koja je tabela primarna tabela u vezi i da li je obezbeđen referencijalni integritet (čekiramo Enforce Referential Integrity). Okvir za dijalog vam pokazuje i vrstu veze (“jedan prema jedan” ili “jedan prema više”) i omogućava da zadate da li su dozvoljena lančana ažuriranja i brisanja (automatske izmene ključa ili brisanja povezanih zapisa) u povezanim tabelama, kada je zadato očuvanje referencijalnog integriteta. 

 

Cascade Update Related Fields
 
Kada u okviru za dijalog Edit Relationships zadate opciju Enforce Referential Integrity, Access vam omogućava da potvrdite i opciju Cascade Update Related Fields (lančano ažuriranje povezanih polja) (Slika 63). Ova opcija pokazuje Accessu da je korisniku dozvoljeno da menja sadržaj povezujućeg polja, odnosno polja primarnog ključa u primarnoj tabeli (šifru kategorije – CategoryID). 

 

Cascade Delete Related Records
 
Ukoliko u okviru za dijalog Edit Relationships zadate opciju Enforce Referential Integrity, Access vam omogućava da potvrdite i opciju Cascade Delete Related Recordes  (lančano brisanje povezanih zapisa) (Slika 63). Biranjem ove opcije nalažete Accessu da, ukoliko korisnik pokuša da izbriše zapis u primarnoj tabeli, u tabeli detetu postoje zapisi koji su s njim povezani, najpre mora da izbriše sve povezane zapise u tabeli detetu, pa tek onda i zapis u primarnoj tabeli. 

 

Korišćenje Accessove alatke Table Analyzer
 
Novina u Accessu 2000 je ugrađena alatka Table Analyzer, koja analizira tabelu i kontroliše da li je ona u potpunosti normalizovana. Alatka daje predloge za razdvajanje podataka u međusobno povezane tabele. Njenim korišćenjem možete da definišete primarne i spoljne ključeve, i utvrdite da li postoje pogrešno popunjeni slični podaci (alatka vam automatski predlaže i ispravke). Na primer, ako imate datoteku koja sadrži i imena kupaca i stavke artikala koji su oni kupili, verovatno se podaci o kupcu (ime, prezime, adresa itd.) ponavljaju u više zapisa. Ako se ime kupca (na primer) Petar Petrović Bulevar Kralja Aleksandra 10 pojavljuje u više slogova, moguće je da je na nekoliko mesta unesena neka slovna greška. Access uz pomoć alatke Table Analyzer automatski raspoređuje ulazne podatke u dve tabele ili u više njih i predlaže ispravke sadržaja podataka.
 
Selektujte tabelu koju želite da analizirate, npr. tabelu Products (Proizvodi), kliknite na Tools / Analyze / Table i pokrenućete čarobnjaka (slika 64) koji će u nekoliko koraka da analizira tabelu i da svoje predloge za normalizaciju iste.  

 

Lookup polja
 
Za polja tipa Text, Number i Yes/No postoji mogućnost podešavanja na Lookup kartici. Svojstvo Display Control može imati jednu od vrednosti: Text Box (polje za tekst), Check Box (polje za potvrđivanje), ListBox (lista) i Combo Box (padajuća lista). Izborom jedne od ovih opcija određujete podrazumevanu vrstu kontrolnog objekta kada se određeno polje postavi na formu.

Dat je primer za polje EmployeeID u tabeli Orders. Da bi se olakšao unos podataka u to polje, svojstvo Display Control je iz Text Box promenjeno u Combo Box. Izvor podataka (Row Source) je tabela Employees nad kojom je postavljen upit. Potrebno je podesiti i ostala svojstva na kartici Lookup, kao na slici.
 
Kada podešavamo Lookup karticu za polje koje je spoljni ključ u nekoj tabeli, biramo Combo Box, kako bismo u njemu prikazali podatke iz druge tabele. Dalje, potrebno je da izaberemo vrstu objekta koji će biti izvor podataka za spoljni ključ (Row Source Type), konkretan objekat koji je izvor za podatke (Row Source), broj kolona iz druge tabele preko kojih se vrši povezivanje u tom spoljnom ključu (Bound Column), broj kolona iz izvorne tabele koje će biti prikazane u Combo Box-u (Colmn Count), da li želimo prikazano zaglavlje u kolona u Combo Box-u (Column Headers), širinu kolona u Combo Box-u (Column Width), broj stavki u Combo Box-u (List Rows), širinu celog Combo Box-a (List Width) i da li želimo da ograničimo unos podataka u Combo Box (Limit to List).

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Povezivanje tabela 1
  • Povezivanje tabela 2