Professional Documents
Culture Documents
Dijagram OBJEKTI-VEZE
Model objekti – veze se koristi za predstavljanje objekata koji postoje u nekom realnom sistemu i
veza koje postoje između tih objekata. Kasnije se prevodi u relacioni model na osnovu određenih pravila
prevođenja. Na osnovu relacionog modela se implementira baza podataka pomoću nekog DBMS-a.
Mi ćemo u stvari koristiti prošireni model objekti-veze (PPMOV, ili EER model, kao skraćenica od
Extended Entity-Relation Ship Model, a može i od Enchanced Entity-Relation Ship Model). Kasnije će biti
reči u čemu je razlika između ova dva modela.
MOV sadrži tri osnovne komponente:
Strukturu modela
Struktura modela sadrži koncepte pomoću kojih se opisuju objekti, njihovi atributi i veze
između objekata. Predstavlja se dijagramom objekti – veze.
Ograničenja
Ograničenja mogu biti strukturna i vrednosna.
Strukturna ograničenja definisana su samom strukturom modela (i u vezi su sa
kardinalnostima koje se pojavljuju na dijagramu).
Vrednosna ograničenja možemo podeliti na ograničenja na domene i ograničenja na
međuzavisnosti atributa (tiču se uzajamnih veza objekata i njihovih atributa).
Primer ograničenja na domene je recimo ograničenje na domen atributa Ocena:
Ocena: INTEGER(2) BETWEEN 1 AND 5
Ograničenja na međuzavisnosti atributa je nemoguće ili nepraktično prikazati strukturom
PMOV-a, pa je neophodno definisati jezik za njihovu specifikaciju. Za iskazivanje
medjuzavisnosti atributa koriste se formule "objektnog računa", predikatskog računa prvog
reda u kome su promenljive objekti u sistemu. Evo kako bismo mogli napisati ograničenje da
student trećeg semestra mora imati više od 10 položenih ispita
OGR2(STUDENT,POLOŽIO) : = FOREACH STUDENT (IF STUDENT.SEM >= 5
THEN CARD (STUDENT.POLOŽIO)>10);
gde funkcija CARD(S) daje broj elemenata skupa S.
Ili ograničenje da je student trećeg semestra morao položiti matematiku
OGR3(STUDENT,POLOŽIO,PREDMET) : =
FOREACH STUDENT
(IF STUDENT.SEM = 3
THEN EXISTS STUDENT. POLOŽIO (STUDENT.POLOŽIO.PREDMET.NAZP ='MATEM'));
U nekim PMOV-imamo
Dinamička pravila integriteta
Dinamičkim pravilima integriteta se opisuju akcije koje se preduzimaju pri izvršavanju
operacija održavanja baze podataka - INSERT, UPDATE, DELETE. Akcije koje se mogu preduzeti
su RESTRICT (odnosno NO ACTION), CASCADE, SET NULL, SET DEFAULT1.
U dijagramima objekti-veze koncepti modela objekti-veze predstavljeni su odgovarajućim
simbolima, kao npr.:
1
akcije mogu biti drugih naziva, ali sa istim dejstvom
Model objekti-veze 2
Pretpostavimo da imamo sledeći opis sistema biblioteke. U biblioteci se pamte podaci o autorima:
(obeležja su šifra autora i ime i prezime autora) i naslovima (obeležja su šifra naslova i naziv). Jedan
autor mogao je da napiše više naslova ili da ne napiše nijedan. Za neki naslov može da se ne zna autor, a
može biti i da je neki naslov napisalo više njih. Ako je autor napisao neki naslov, tada se pamti koji je
autor po redu (pošto ima naslova koje je napisalo više autora zajedno). Knjiga ima samo jedno obeležje,
šifru knjige. Knjiga može da ima tačno jedan naslov, dok jedan naslov može da bude na više knjiga.
Naslov pripada jednoj ili više oblasti, dok jednoj oblasti može da pripada više naslova ili da ne pripada
nijedan. Obeležja oblasti su šifra oblasti i naziv oblasti. Za članove se pamti šifra člana i ime i prezime
člana. Posebno se vodi evidencija o knjigama koje trenutno drže članovi (tada se pamti datum i vreme
iznajmljivanja knjiga2), a posebno o knjigama koje su pozajmljene, pa vraćene. Jedna knjiga može
trenutno biti kod jednog člana ili nije ni kod jednog. Jedan član može trenutno držati više knjiga ili da ne
drži nijednu. Svaka zapamćena pozajmica odnosi se na tačno jednu knjigu i tačno jednog člana i za svaku
pozajmicu se pamti datum i vreme uzimanja knjige i koliko dana je član imao knjigu kod sebe. Čuvaju se i
podaci o rezervacijama. Svaka evidentirana rezervacija odnosi se uvek na jednog člana i jedan naslov i za
svaku rezervaciju pamti se datum i vreme rezervacije.
Pokušajmo kroz ovaj opis sistema biblioteke da uvedemo osnovne koncepte dijagrama objekti-veze.
Pojedinačni objekati u realnog sistema imaju neka svojstva (ili atribute) koja ih opisuju. Za one
objekte koji imaju ista svojstva uvodi se u modelu objekti-veze odgovarajući tip objekta. Tip objekta je
opšti predstavnik neke klase, a svaki pojedinačni objekat predstavlja jedno pojavljivanje (primerak,
instancu) datog tipa. Klasa objekata je skup pojavljivanja objekata datog tipa. Na primer, tip objekta je
Radnik, pojavljivanja toga tipa su Jovan Jovanović, Petar Petrović i drugi, a klasa objekata je RADNIK i
predstavlja skup pojavljivanja tipa objekta Radnik (nazive klasa objekata pisaćemo velikim, a nazive
tipova objekata malim slovima). Kandidat za ključ nekog tipa objekta je atribut, ili skup atributa, koji su
jedinstveni za svako pojavljivanje tog tipa objekta. Tip objekta može da ima više kandidata za ključ. U
tom slučaju, jedan od njih se proglašava za primarni.
Nezavisna klasa objekata
Prvi koncept koji ćemo uočiti je nezavisna klasa objekata. Nezavisna klasa objekata je klasa čija
pojavljivanja su nezavisna od pojavljivanja drugih klasa objekata u sistemu, odnosno postojanje objekata
u toj klasi nije uslovljeno postojanjem objekata iz neke druge klase. Prikazuje se kao pravougaonik.
Atributi neke klase prikazuju se u obliku elipsi. Atribute koji čine ključ označavamo tako što ih
podvučemo punom linijom.
U sistemu biblioteke imamo sledeće nezavisne klase objekata:
2
Smatrati da postoji tip podataka koji u sebi sadrži i datum i vreme, tj. nećemo posebno čuvati datum, posebno vreme
Model objekti-veze 3
Na osnovu prethodnog, na prvi pogled moglo bi se reći da je klasa NASLOV zavisna od klase AUTOR,
jer svaki naslov je morao napisati neki autor. Međutim, klasu NASLOV ne možemo proglasiti za zavisnu
od klase objekata AUTOR pošto mogu postojati naslovi sa jednim, sa dva, sa tri autora… a to nije u
skladu sa definicijom zavisne klase gde se traži zavisnost od konstantnog broja instanci.
Kardinalnosti uslovljenosti i uslovljavanja mogu da imaju i neke druge vrednosti od ovih u
prethodnim primerima.
Primer 1: Recimo da imamo sistem železnice u kojem postoje stanice (svojstva šifra stanice i naziv
stanice), i da imamo relacije koje povezuju tačno dve stanice, pri čemu se za svaku relaciju pamti dužina.
Svaka stanica uključena je u jednu ili više relacija. Odgovarajući dijagram bi bio:
Kardinalnost sa strane zavisne klase nam ukazuje koliko puta zavisna klasa nasleđuje ključne
atribute od klase od koje zavisi. U ovom slučaju, klasa Relacija pored sopstvenog atributa Dužina
nasleđuje dva puta atribut ŠifSt (zbog kardinalnosti (2) na dijagramu), te su njeni atributi {Dužina, ŠifSt,
ŠifSt}. Kako atributi jedne klase ne smeju imati iste nazive, preimenovaćemo ih u recimo {Dužina,
ŠifPočetneSt, ŠifKrajnjeSt}. Ključ će činiti atributi ŠifPočetneSt+ŠifKrajnjeSt (smatraćemo da NS1-ŠA1 i
ŠA1-NS1 prtedstavljaju dve različite relacije), pa se radi o identifikacionoj zavisnosti.
Primer 2: Za test znamo šifru i naziv. Svaki test odnosi se na tačno jednu oblast. Obeležja za oblasti
su šifra oblasti i naziv oblasti. Iz jedne oblasti može biti više testova, a može da ne bude nijedan.
Primer 3: Obeležja radnika su šifra radnika, prezime radnika, ime radnika i šifra zanimanja. Za svakog
radnika evidentira se isplata i tom prilikom se pamti datum isplate i iznos isplate. Jedna isplata odnosi se
uvek na jednog radnika, dok jedan radnik može imati više isplata, a moguće da nije imao nijednu.
Primer 4: Obeležja vozača su ID vozača (jedinstven za svakog vozača), prezime, ime i broj lične karte.
Vozači formiraju tiPMOVe. Svaki tim ima jedinstvenu oznaku i uvek ga čine tačno tri vozača. Jedan vozač
može biti član jednog ili više tiPMOVa.
Model objekti-veze 6
Primer 5: Vodi se evidencija o pregledima. Svaki pregled odnosi se na jednog pacijenta (obeležja:
BrZK, ime i prezime) i jednog lekara (obeležja: ID, ime i prezime) i za svaki pregled se pamti datum i
vreme pregleda. Jedan pacijent može u jednom danu da zakaže pregled kod više lekara. Pacijent može
zakazati više puta pregled kod istog lekara, ali samo u različitim danima. Jedan lekar može imati
zakazane preglede za više pacijenata u jednom danu. Recept ima atribut oznaka recepta koji je
jedinstven za svaki recept. Prilikom pregleda može biti izdato više recepata, ali može da ne bude izdat
nijedan. Svaki recept nastao je prilikom jednog pregleda.
Primer 6: Obeležja tima su šifra tima i naziv tima. Obeležja projekta su oznaka projekta (jedinstve za
svaki projekat) i naziv projekta. Svaki tim radi na jednom ili više projekata. Na jednom projektu radi
samo jedan tim. Obeležja softverskog proizvoda su oznaka softvera (jedinstvena za svaki softver) i naziv
softvera. Svaki softverski proizvod je nastao kao rezultat rada na jednom projektu. Projekat može, a ne
mora da dovede do stvaranja softvera.
Klasa veza
Klasa veza je svaka klasa čija instanca predstavlja odnos instanci (najmanje dve) iz jedne ili više klasa
objekata, pri čemu taj odnos može imati i određena svojstva.
Recimo, između klase AUTOR i klase NASLOV možemo uspostaviti klasu veze JE_AUTOR. Klasa veze
može imati i sopstvena obeležja. Klasi veza JE_AUTOR možemo pridružiti obeležje Koji, koje ukazuje kao
koji po redu je naveden autor koji je napisao neki naslov. Klasa veze se obeležava rombom, koji se
povezuje sa svakom od klasa koja učestvuje u vezi:
Postoje i kardinalni brojevi veze. Zapisuju u obliku uređenog para (m,n). Pretpostavimo da su klase
objekata A i B u vezi. Tada u uređenom paru (m,n) na strani klase A m predstavlja minimalan, a n
maksimalan broj instanci klase B sa kojom jedna instance klase A može biti u vezi. Slično, u uređenom
paru (m,n) na strani klase B m predstavlja minimalan, a n maksimalan broj instanci klase A sa kojom
jedna instance klase B može biti u vezi. Još jednom, kao brojnosti mogu se navesti 0, 1 i N (tj. više).
Model objekti-veze 7
U našem primeru, jedan autor mogao je da napiše više naslova (maksimalna kardinalnost je više - N)
ili da ne napiše nijedan (minimalna kardinalnost je 0). Zato je sa strane klase AUTOR kardinalnost (0,N).
Dalje piše da je jedan naslov mogao napisati samo jedan autor ili više njih. Otuda pored klase NASLOV na
liniji veze pišemo kardinalnost (1,N). Klasi veze JE_AUTOR dodajemo sopstveni atribut Koji.
Ponekad možemo da biramo da li ćemo odnos imeđu dve klase predstaviti preko veze ili preko
zavisne klase. Tako odnos između klasa NASLOV i OBLAST može da se predstavi kao veza:
Uopšte, kada imamo dve klase povezane vezom koja sa neke strane ima kardinalnost (1,1), odnos
tih klasa možemo predstaviti bez koncepta veze tako što ćemo klasu koja u vezi ima kardinalnost (1,1)
proglasiti zavisnom od klase sa druge strane veze. Ono što može da nas opredeli da li ćemo neki odnos
prikazati preko zavisne klase ili preko klase veza je da li taj odnos ostaje trajan (prikazati ga preko zavisne
klase) ili može prestati u nekom trenutku (prikazati ga preko veze).
Vezom možemo predstaviti i odnos između klasa KNJIGA i ČLAN:
ER dijagram se često može nacrtati na različite načine (videli smo na primeru klasa NASLOV i
OBLAST), pogotovo kada se radi o složenijim modelima.
Takođe treba znati da kada odnos između dve klase objekata predstavimo kao klasu veza koja i sa
jedne i sa druge strane ima kardinalnosti iz skupa skupa {(0,N), (1,N)}, klasa veza sa obe strane nasleđuje
ključ. Pravilo je da tada nasleđeni ključevi čine ključ klase veze. Nije dozvoljeno da neki od sopstvenih
Model objekti-veze 8
tributa klase veze (ako ih ima) uđe u sastav ključa. Ako je neophodno da se i neki sopstveni tribut nalazi
u ključu klase veze, onda umesto preko klase veze odnos između klasa treba predstaviti preko koncepta
zavisne klase. Setimo se prethodnog primera sa zakazivanjem pregleda, ali mu malo promenimo tekst.
Primer 7: Vodi se evidencija o pregledima. Svaki pregled odnosi se na jednog pacijenta (obeležja:
BrZK, ime i prezime) i jednog lekara (obeležja: ID, ime i prezime) i za svaki pregled se pamti datum (samo
datum, ne i vreme) pregleda. Jedan pacijent može u jednom danu zakazati pregled kod više lekara.
Pacijent može zakazati više puta pregled kod istog lekara, ali samo u različitim danima. Jedan lekar može
imati zakazane preglede za više pacijenata u jednom danu.
Pretpostavimo da ovo rešimo preko klase veze sa kardinalnostima (0,N) sa obe strane. Na osnovu
prethodnog klasa veze ZAKAZANO pored sopstvenog atributa Datum ima i nasleđene tribute ID i BrZK.
Ključ čine sva tri atributa, ID+BrZK+Datum:
Ali kao što je rečeno, ovakvo rešenje nije moguće! Potrebno je uvesti zavisnu klasu:
U modelu objekti-veze postoje još neki koncepti koji nam nisu trebali da predstavimo biblioteku.
Model objekti-veze 9
Specijalizacija i generalizacija
Za neku klasu objekata kažemo da predstavlja specijalizaciju ako predstavlja specijalan slučaj neke
druge klase objekata bar po jednom od dva kriterijuma:
pored zajedničkih svojstava, ima i neka specifična svojstva
ima specifične odnose sa drugim klasama objekata
Odnosno, ako među objektima neke klase (tzv. nadklase) možemo uočiti neke podskupove (tzv.
podklase) gde svaki podskup ima neka specifična obeležja, takav odnos predstavljamo kao
specijalizaciju. Podklasa se uvek predstavlja grafički kao nezavisna klasa, bez obzira da li je nadklasa
nezavisna ili zavisna klasa. Specijalizacija se predstavlja trouglom spojenim sa nadklasom i podklasama.
Pretpostavimo da pamtimo podatke o vozilima (šifra vozila i registarski broj vozila). Svako vozilo je ili
automobil i tada treba pamtiti i broj mesta, ili kamion itada teba pamtiti broj osovina i nosivost. U ovom
slučaju imamo nadklasu VOZILA sa podklasama AUTOMOBILI i KAMIONI:
Ili slučaj kada imamo studente sa svojstvima broj indeksa i ime studenta, pri čemu su neki studenti
strani državljani i imaju dodatno svojstvo naziv države iz koje dolaze:
Generalizacija je postupak obrnut u odnosu na specijalizaciju i daje isti rezultat na kraju, odnosno
istu nadklasu i iste podklase kao i specijalizacija.
Model objekti-veze 10
Agregacija
Agregacija je klasa veze koja se ponaša kao klasa objekata tako što i sama kao klasa učestvuje u
nekoj vezi. Predstavlja se simbolom veze (rombom) unutar simbola nezavisne klase (pravougaonikom).
Recimo da na fakultetu imamo neke nastavnike koji predaju neke predmete. Pri tome jedan
nastavnik može da ne predaje nijedan predmet, a može da predaje više predmeta; jedan predmet može
da ne predaje nijedan nastavnik, a može da ga predaje više nastavnika. Ovaj odnos između klasa
NASTAVNIK i PREDMET možemo predstaviti klasom veze sa kardinalnošću (0,n) sa obe strane klase veze.
Dalje, imamo studente koji pohađaju predavanja, ali samo iz onih predmeta koje predaje neki nastavnik.
Bilo bi pogrešno spojiti klasom veze klase STUDENT i PREDMET, jer bi to značilo da možemo spojiti nekog
studenta sa predmetom koji niko ne predaje. Takođe, ako bismo nekog studenta spojili sa predmetom
koji predaje više nastavnika, ne bismo imali informaciju kod kojeg nastavnika student sluša predmet sa
kojim je spojen. Zato vezu između klase NASTAVNIK i klase PREDMET tretiramo kao agregaciju, a zatim
između te agregacije i klase STUDENT uspostavimo klasu veze POHAĐA. Ovim smo postigli da student
može pohađati samo predmet koji predaje neki nastavnik.
Zadaci:
1. Na osnovu sledećeg opisa nacrtaj ER dijagram i prevedi ga u ER model. Autobus ima jedinstveno
obeležje registracija. Autobus može biti ili običan (ima dodatno obeležje broj sedišta) ili na sprat
(dodatna obeležja su broj sedišta dole i broj sedišta gore). Obeležja stanice su redni broj stanice
(jedinstven za svaku stanicu), naziv
stanice i lokacija stanice. Za liniju
pamtimo oznaku linije (jedinstvena za
svaku liniju). Svala linija povezuje
tačno dve stanice (početnu i krajnju).
Jedna stanica može biti početna ili
krajnja stanica za više linija, a može da
ne bude ni za jednu. Obeležja vozača
su ID vozača (jedinstven za svakog
vozača), prezime, ime i broj lične karte.
Vozači formiraju timove. Svaki tim ima
jedinstvenu oznaku i uvek ga čine
tačno tri vozača. Jedan vozač može biti
član jednog ili više tiPMOVa. Za svaku liniju zadužen je jedan ili više timova. Jedan tim može biti zadužen
za jednu ili više linija. Svaki tim zadužen za neku liniju koristi jedan od autobusa. Jedan autobus se može
koristiti na više linija, a može i da se ne koristi ni na jednoj.
2. Na osnovu sledećeg opisa nacrtaj ER dijagram. Obeležja radnika su MLB (jedinstven za svakog
radika), ime radnika, prezime radnika, zanimanje i starost. Svaki radnik radi u jednom odeljenju. Jedno
odeljenje zapošljava najmanje jednog radnika. Obeležja odeljenja su šifra odeljenja (jedinstvena za svako
odeljenje) i naziv odeljenja. Svakim odeljenjem rukovodi jedan radnik. Jedan radnik može da rukovodi
najviše jednim odeljenjem. U svakom odeljenju proizvode se neki proizvodi, najmanje jedan, a može i
Model objekti-veze 11
više. Neki proizvod može da se proizvodi u više odeljenja, a ne mora ni u jednom. Za proizvode se pamti
šifra (jedinstvena za svaki proizvod), naziv i vrsta. Proizvod može biti ili materijal (ima dodatno obeležje
poreklo) ili mašina (dodatno obeležje amortizacija). Neki proizvodi mogu biti ugrađeni u neke druge
proizvode i tada se pamti koja količina proizvoda je ugrađena. Jedan proizvod može biti deo više
proizvoda, ili nije deo nijednog. S druge strane, jedan proizvod može biti da nije sastavljen ni iz jednog
proizvoda, ili je sastavljen od više njih. Za svakog radnika se evidentiraju isplate. Za svaku isplatu se
pamti datum isplate i iznos. Jedna isplata odnosi se uvek na jednog radnika, dok jedan radnik može imati
više isplata, ali ne u istom danu. Moguće je i da radnik nije imao nijednu isplatu.
4. Na osnovu sledećeg opisa nacrtaj ER dijagram jednog sportskog takmičenja. Obeležja takmičara su
redni broj, prezime, ime i država iz koje dolazi. Neki takmičari su reprezentativci i tada imaju dodatni
atribut broj nastupa za reprezentaciju. Svaki takmičar nastupa u jednoj ili više disciplina (u svakoj
disciplini jedan put). Obeležja discipline su oznaka discipline i naziv discipline. U svakoj disciplini nastupa
bar jedan takmičar. Obeležja sudija su šifra sudije, prezime i ime. Svaki sudija je član jednog ili više žirija.
Svaki žiri čine tačno tri sudije. Žiri ima samo atribut oznaka žirija. Svaki žiri je zadužen za najmanje jednu
disciplinu. Za neku disciplinu zadužen je samo jedan žiri. Nastup svakog takmičara u nekoj disciplini
ocenjuje sudijski žiri zadužen za tu disciplinu i tada se pamti ocena žirija. Svaki žiri zadužen za neku
disciplinu ocenjuje bar jedan nastup.
5. Na osnovu sledećeg opisa jedne agencije za nekretnine nacrtaj ER dijagram. U agenciji radi više
agenata. Za svakog agenta poznat je ID agenta, ime, prezim i telefon. U bazi se evidentiraju isplate
zarada agentima. Svaka evidentirana zarada odnosi se uvek na jednog agenta i tada se pamti i datum
isplate i suma novca. Agent je mogao da ne primi nijednu zaradu ili da primi više zarada, a u jednom
danu moguća je samo jedna isplata jednom agentu. Vodi se evidencija o klijentima. Za svakog klijenta je
poznata njegov ID, ime, adresa, mesto, telefon. U bazi se čuvaju informacije o svim prodatim stambenim
nekretninama. Za sve nekretnine pamti se jedinstvena šifra, adresa, mesto, površina u kvadratima i
lokacija (da li se radi o užem gradskom jezgru, periferiji itd.). Nekretnine se dele na stanove i kuće. Za
stanove poznata je vrsta stambenog objekta (garsonjera, jednosoban itd), a za kuće površina placa u
arima. Nekretnine se prodaju klijentima. Svaka prodaja odnosi se na jednog klijenta i jednu nekretninu i
za svaku prodaju pamti se datum kupovine i cena, pri čemu u svakoj prodaji nekretnine posreduje jedan
agent agencije koji za to dobija određeni procenat od vrednosti ugovora. Svaki evidentirani klijent kupio
je najmanje jednu nekretninu. Jedan agent mogao je da učestvuje u više prodaja nekretnina ili da nije
učestvovao ni u jednoj. Pretpostavićemo da jedna nekretnina u jednom danu može biti samo jednom
predmet prodaje; da jedan klijent može kupiti više nekretnina u jednom danu; da jedan agent može
učestvovati u više prodaja u jednom danu.