Odštampajte tekst Odštampajte tekst

Priprema za drugi test: Veze

relationships.gifJedan zadatak na tesu biće da odredite i uspostavite vezu između dve tabele.

 Potrošite 15 minuta na ova tri primera, kako bi prvi zadatak na testu uradili za 5 minuta.

 

glavnigrad0.gifGlavni grad Srbije je Beograd, Engleske London, Francuske Pariz,…

Imate tabelu Gradovi i tabelu Drzave kao što je prikazano na skici. Napravite te tabele u Access-u, povežite ih, i unesite navedene podatke.

Najpre ustanovite koji je odnos izmedju ovih tabela?
Koliko jedna drzava ima glavnih gradova? U principu jedan (pustimo sada izuzetke, vise o tome procitajte ovde). A jedan glavni grad je glavni grad samo jedne drzave. Dakle, odnos izmedju ovih tabela je 1:1.

Ovaj odnos modeluje se tako sto se na bilo koju stranu veze doda strani ključ tj. primarni kljuc jedne tabele pojavice se kao strani kljuc u drugoj tabeli. Ovde ćemo, recimo, primarni ključ tabele Gradovi (to je polje gradID) dodati kao strani kljuc u tabelu Drzave (nazvacemo ga glavni grad).

glavnigrad1.gif

glavnigrad2.gifTako uz pomoc LookUp Wizarda za svaku drzavu možemo izabrati jedan grad iz tabele Gradovi da bude njen glavni grad. Jedino je bitno da se jedan glavni grad ne može ponovo izabrati za drugu državu. To obezbedjujemo tako što polje koje je strani ključ podesimo da budu No duplicates kao što je prikazano na slici.
 

Pogledajte sada jedan naizgled sličan primer:
Imate iste dve tabele: Gradovi i Države. Sada želimo da evidentiramo sledeće činjenice:
Beograd, Niš, Novi Sad itd. su u Srbiji… Zagreb, Split i drugi su u Hrvatskoj… Pariz i Marsej su u Francusjkoj,…
Koji je odnos gradova i država? U jednoj državi imamo više gradova. A jedan grad pripada samo jednoj državi.
Dakle, odnos je N (gradova) prema 1 (država).
Ova veza modeluje se tako što se na N stranu veze doda strani ključ.  Ovde je N strana  veze tabela Gradovi. U tu tabelu dodajemo polje drzava. To polje je ustvari isto što i polje drzavaID iz tabele Drzave, samo što je tamo na domaćem terenu i zove se primarni ključ , a ovde gostuje, pa se zove strani ključ.

gradovi1.gif

Kada ovo napravimo u Access-u imaćemo mogućnost da za svaki grad (uz pomoć lookup wizarda) odaberemo kojoj državi pripada.
I u trećem primeru geografija:
Imamo dve tabele: Drzave i Reke.

reke0.gif

Sava protiče kroz Sloveniju, Hrvatsku, Bosnu i Srbiju. Dunav kroz 10 zemalja (Nemačka, Austrija, Slovačka, Mađarska, Hrvatska, Srbija, Bugarska, Rumunija, Moldavija, Ukrajina), Morava samo kroz Srbiju, itd.

U kom su odnosu Reke i Drzave?
Jedna reka može da protiče kroz više zemalja, a kroz jednu zemlju protiče više reka. Dakle, odnos je N:N.
Da bi se modelovao ovaj složen odnos, uvodi se nova tabela koja sadži primarne ključeve iz obe tabele (oni su za našu  treću tabelu strani ključevi).

reke1.gif

Naziv treće tabele odredite proizvoljno, samo se potrudite da se iz naziva jasno vidi čemu tabela služi. Jednostavnosti radi mogli smo je nazvati i DR ili RD što asocira na vezu Drzave-Reke.

Za primarni ključ ove tabele uzima se zbir dva polja koja sadrži (ima situacija kada se to ne radi, ali da ne komplikujemo sada).

Pogledajte kako izgleda odnos Više:Više. Sa leve strane neki gradovi se ponavljaju više puta. A sa desne strane i reke se ponavljaju vise puta:

reka2.gif

Na sledećoj slici vidi se jedan deo odnosa: jedna reka protiče kroz više država:

reke4.gif

Ovde se vidi drugi deo odnosa: Kroz jednu državu protiče više reka:

reka5.gif

p.s.
Ne garantujem da su podaci o broju stanovnika i dužinama reka tačni. Preuzeo sam ih sa Wikipedije, i grubo zaokružio. 
Inače, za dužinu reke izraženu u kilometrima dovoljan je Integer jer je najduža reka na Svetu duga manje od 7000 kilometara.


5 komentara na “Priprema za drugi test: Veze”

  1. Ovo sam namerno izdvojio u komentar da ne bih suviše skrenuo sa teme u članku i da vam ne bih zakomplikovao život uoči testa.
    Dakle, ovim ne morate da se zamarate:

    SVEJEDNO ILI NIJE SVEJEDNO?
    Iako je kod veze 1:1 svejedno na koju stranu stavljate strani ključ, u ovom konkretnom slučaju (glavi gradovi i države) bolje je da državi dodelimo glavni grad, nego da za grad biramo državu u kojoj je on glavni. Zašto?
    Zato što neki od gradova u tabeli Gradovi uopšte nisu glavni gradovi. Kod takvih gradova strani kljuc bi mogao biti prazan, što nije pogrešno, ali može kasnije biti uzrok grešaka.
    (Još jednom napominjem da ovo sve važi pod uslovom da insistiramo na odnosu Jedna država Jedan glavni grad. U suprotnom bi odnos bio 1:N, pa bi strani ključ išao u tabelu gradovi.)

  2. Ucenicko pitanje:
    ok, znači vi mi date skicu i ja je stavim u access… tu ono povežem i to je to?

    Odgovor:
    Da.
    Ipak, bilo bi dobro da prvo dovrsite skicu. Zbog sebe, da ne pogresite posle u Access-u. A dovrsiti skicu znaci: odrediti tipove polja i ubaciti sve sto je potrebno za povezivanje tabela. To je otprilike ovo sto je u clanku dopisano/docrtano crvenom.

  3. alex,daca,joca 4-2

    Imamo mi bolji nacin za razumevanje veza! Veza 1:1 bi bila kada bi devojka i decko bili zajedno, veza 1:N bi bila kada bi decko varao devojku, a veza N:N bi bila kada bi decko varao devojku i devojka varala njega, odnosno kada se ne bi znalo ko koga vara!!! :)))
    p.s. sto bi rekla nasa razredna Ruza, zar nismo originalne?! :))))

  4. :) Računajte da će buduće generacije četvrtaka na vašem originalnom primeru vežbati veze.

  5. alex,daca,joca 4-2

    profesore, a po plusic? :))) a i vidite koliko je rano, a mi vec vezbamo…:)))

Napišite komentar:

Ukoliko prvi put komentarišete, komentar mora biti odobren pre nego što bude objavljen.