Odštampajte tekst Odštampajte tekst

Vozi Miško!

autobus-v.gif

Auto-prevoznik “Vozi Miško” angažovao vas je da mu napravite bazu podataka koja će mu pomoći u vođenju evidencije o autobusima.

Kroz ovaj zadatak važbamo da stvari i odnose iz relanog sveta razbijemo na više tabela, i da onda te tabele povežemo. Iako možda zvuči komplikovano, cilj je da na kraju sve postane savršeno jednostavno, prirodno i logično.

Opis problema iz realnog života koji želimo da modelujemo izgleda ovako:

Kod svakog autobusa bitan je broj registracije (tipa: BG 123-456), broj mesta u autobusu,  datum nabavke i datum poslednjeg remonta. Bitno je u svakom trenutku i da se zna koji vozači voze taj autobus, kao i u kojoj garaži je smešten. Kod garaže važan nam je njen naziv, mesto gde se nalazi, adresa i broj telefona. Vozačima evidentiramo ime, broj telefona i datum rodjenja.
U svaku garažu može biti smeštno više  autobusa, a za jedan autobus može biti zaduženo više vozača. Vozač ne može u istom trenutku biti zadučen za više autobusa, kao što se ni autobus ne može istovremeno nalaziti u više garaža.

Pri rešavanju problema najpre razmislite koje su nam tabele potrebne. Imajte na umu da nam za svaki skup entiteta (kokoške, učenici, autobusi, knjige,…) treba po jedna tabela. Ovde će nam trebati tri tabele: Autobusi, Vozači i Garaže.

Sem obeležja koja su data u zadatku (registracija, broj mesta i td.) potrebna su nam i obeležja (polja) koja opisuju veze između ovih tabela. To su:

  • Primarni ključ za svaku tabelu. Na ovom času smo se opredelili za veštačke primarne ključeve koje smo nazvali ID, i koja su tipa AutoNumber. Da bih se uverio da ovo ne pišem uzalud, upisujem plus učeniku koji mi prvi da odgovor na pitanje o kome smo već debatovali na času: od svih pomenutih obeležja postoji jedno koje je dobar kandidat za prirodni primarni ključ jedne od tabela. Koje je to obeležje?
  • Strani ključevi.
    1. Polje garaža u tabeli Autobusi, u kojem za svaki autobus  biramo garažu u kojoj je  smešten. (Na slici se vidi kako nam je LookUpWizard omogućio da korisniku ponudimo da odabere jednu od garaža koje su već upisane u tabelu Garaže)

vozi2.gif

2. Polje autobus u tabeli Vozači, u kojem za svakog vozača biramo autobus za koji je zadužen.

vozi1.gif

 Skica modela izgleda ovako:

vozi4.gif

Kada dobro postavimo model, komplikovane odnose iz realnog života nije problem prikazati tabelama. Pogledajte sliku:
U tabeli Garaže možemo da vidimo sve garaže koje koristi naša firma. Kada kliknemo na plusić pored neke garaže, možemo da vidimo koju su autobusi u njoj. Kada kliknemo na plusić pored autobusa možemo da vidimo koji su sve vozači zaduženi za taj autobus.

vozi3.gif

Ovaj model će isto tako jednostavno funkcionisati šta god da se promeni u praksi: ako prodamo autobus, izbrisaćemo jedan red u tabeli Autobusi; Ako se preparkira autobus, promenićemo obeležje garaža u tabeli Autobusi; Ako otvorimo novu garažu upisaćemo novi red u tabelu Garaže; Ako se Zoki Spid prekrsti u Zoki Slou, editovaćemo samo jedan red u tabeli Vozači.

Dobro organizovane tabele puno će nam olakšati posao kada naše aplikacije počnemo da obogaćujemo upitima, izveštajima i formama.


Jedan komentar na “Vozi Miško!”

  1. Na stranici Fajlovi možete preuzeti ovu bazu podataka. Ona se malo razlikuje od ovde opisanog modela.
    Prvo, autobusima smo dodali još jednu osobinu. To je polje Parkiran tipa Yes/No, koje korisniku omogućava da zabeleži da li je autobus trenutno parkiran u garaži ili je na putu.
    Drugo, veštački primarni ključevi više se ne zovu isto u svim tabelama (ID), nego se zovu autobusID, garazaID i vozacID. Kada budete sami modelovali baze drzite se ovog saveta: primarne kljuceve nazovite tako da može da se prepozna iz koje su tabele.

Napišite komentar:

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