Model objekti i veze – Atribut i domen
Objekti u sistemu se opisuju preko svojih svojstava, odnosno atributa. Atributi uzimaju vrednost iz skupa mogućih vrednosti. Ovi skupovi se nazivaju domenima. Domeni su predstavljeni elipsama (Matbr, Adrese…).
Formalno se atribut objekta može definisati kao preslikavanje iz klase objekta u domen.
Primer:
Mlb: Radnik -> Matbr (1,1)
ImeR: Radnik -> Imena (1,1)
ZnaJezik: Radnik -> Jezici (1,M)
Pošto se atribut definiše kao preslikavanje, može se reći da atribut ima svoju kardinalnost. Ako je kardinalnost atributa DG=1, GG=1, onda se takav atribut naziva jednoznačni atribut objekta; Ako i inverzno preslikavanje jednoznačnog atributa ima kardinalnost DG=0 ili 1, GG=1, tada se takav atribut naziva identifikator objekta, jer jedno pojavljivanje takvog atributa jedinstveno određuje jedno pojavljivanje objekta u klasi.
Predefinisanost modela objekti i veze
Atribut Mlb je identifikator objekta iz klase Radnik. Ako je gornja granica granica GG=M, onda se takav atribut naziva višeznačni atribut. ZnaJezik je višeznačni atribut.
Domeni mogu biti:
-
predefinisani, odnosno standardni programsko-jezički domeni, kao što su Integer, Character, Real, String, Logical, Date i slično,
-
semantički, odnosno korisnički definisani, kada se posebno iskazuju, preko svoga imena, predefinisanog domena i ograničenja na mogući skup vrednosti predefinisanog domena. U MOV se ne koristi koncept semantičkog domena (atributi ImeR i NazivOd nad domenom Imena),
-
koncept složenog domena koji ima svoju strukturu i predstavlja agregaciju drugih prostih ili složenih domena se takođe ne preporučuje. Plate su složen domen i predstavljaju agregaciju prostih domena <Datum, Iznos>. Složen domen je po definiciji semantički domen.
Konvencije u modelu objekti-veze
S obzirom da domeni u MOV imaju karakter semantičkih domena, poređenje vrednosti iz različitih domena nije moguće i tretira se kao greška. Međutim, ponekad se domeni razlikuju samo po tome što su njihove vrednosti date u drugim jedinicama iste „semantičke veličine”. Na primer jedan u metrima, a drugi u kilometrima, a oba predstavljaju semantički istu veličinu, dužinu, ili jedna ili druga forma predstavljanja datuma. Da bi se omogućilo poređenje različitih domena (kada se to želi), neophodno je definisati pravila (procedure) konverzije jednog u drugi domen.
U MOV se ne koriste višeznačni atributi, već se odgovarajuća svojstva objekta predstavljaju bilo kao preslikavanja posmatrane klase prema novodefinisanoj klasi koja predstavlja domen višeznačnog atributa ili kao „slaba” klasa.
Svi atributi moraju da budu primenljivih svojstava na sve objekte u odgovarajućoj klasi. Zbog toga je donja granica kardinalnosti atributa (preslikavanje KLASA->DOMEN) uvek DG=1. Kako se ne koristi višeznačni atribut, to je za ovo preslikavanje i GG=1, pa se kardinalnosti atributa ne moraju predstavljati na DOV.
Atributi i identifikatori objekata mogu se posebno označiti (zvezdicom ili podvlačenjem).
U MOV se ne koriste semantički domeni (veza između atributa jedne klase ili više klasa).
Definicije MOV
Definicije atributa, odnosno njihovih domena najpogodnije je dati preko tabela. Jezik za definisanje ograničenja se bazira na konceptu primitivnih i složenih ograničenja. Primitivna ograničenja se konstruišu preko sledećih operatora:
-
Θ konstanta, gde je Θ bilo koji operator poređenja koji se na datom domenu može definisati (>, ≤,<, ≥, =), a konstanta je neka vrednost iz datog domena,
-
Between konstanta, gde su konstante vrednosti iz datog domena,
-
In (lista vrednosti), gde se lista formira od konstanti iz odgovarajućeg domena,
-
NotNull, kada dato polje ne može da dobije null vrednost, odnosno mora da ima vrednost.
Složena ograničenja se formiraju od primitivnih ili drugih složenih ograničenja vezujući ih logičkim operatorima And, Or i Not.
Očigledno je, na osnovu definicije koncepata atributa i veze, da ne postoji formalna (a možda i suštinska) razlika između ova dva koncepta. Veza definiše dva preslikavanja, direktno i inverzno, između dve klase objekata, a atribut preslikavanje između klase objekata i odgovarajućeg domena.
Ako bi se svi domeni tretirali kao klase objekata, tada bi atribut predstavljao jedno preslikavanje u vezi sa tom klasom sa odgovarajućim objektom. Na primer, ako se domen IMENA tretira kao klasa objekata (čija su pojavljivanja nizovi karaktera dužine 20), tada bi atribut IME predstavljao preslikavanje RADNIK —–> IMENA u vezi objekata RADNIK i objekata IMENA. Isto tako, moglo bi se postupiti i obrnuto i preslikavanja u datim vezama tretirati kao atribute čiji su domeni odgovarajuće klase objekata.
Prva vrsta modela koji koriste samo koncepte objekata i preslikavanja se nazivaju funkcionalni modeli podataka.
U drugu vrstu modela koji koriste samo koncepte objekata i atributa spadaju pojedini semantički modeli podataka (SDM) i objektno_orjentisani modeli. Osnovna karakteristika ovih modela je ta što se pojam veze između objekata eksplicitno ne koristi, već se implementira na taj način što se kao domen atributa jednog objekta tretira klasa drugih objekata. Iskazom INVERZNO u specifikaciji nekog atributa, ukazuje se na inverzno preslikavnje (atribut) koji sa posmatranim atributom čini jednu binarnu vezu.
U PMOV, iz semantičkih i praktičnih razloga, ako se model objekti-veze implementira preko nekog „klasičnog”, rekord orjentisanog jezika ili sistema za upralvljanje bazom podataka, pogodno je razlikovati koncept atributa od koncepta veze.
Sa semantičke tačke gledišta prihvata se da je prirodnije razdvojiti koncepte atributa i veza. Tako, na primer, prirodnije je tretirati IME kao atribut (svojstvo) objekata RADNIK, a RADI kao preslikavanje RADNIK ——> ODELENJE veze između objekata RADNIK i ODELJENJE. Pri tom je kriterijum „prirodnije” veoma relativan.
Primena tog slabo definisanog kriterijuma „prirodnije” dovodi do dilema u modeliranju – kada neki skup objekata predstaviti kao domen, odnosno njegov odnos sa nekim drugim tipom objekata kao atribut, a kada ga predstaviti kao tip objekata, odnosno njegov odnos sa nekim drugim tipom objekata kao vezu?
Uputstva za razrešenje ove dileme su sledeća:
- ako ne postoji potreba za posebnim identifikovanjem svakog pojavljivanja objekta u skupu i ako su ta pojavljivanja vrednosti koje su „ugrađeni” tipovi podataka (bazni domeni) nekog SUBP-a ili nekog jezika (celobrojne vrednosti, karakteri, nizovi karaktera i slično), tada skup takvih objekata treba tretirati kao domen,
- ako ne postoji potreba da se neki skup objekata opisuje atributima, tada ga treba tretirati kao domen. Drugačije rečeno, ako neka osobina objekata uzima vrednosti iz skupa prostih vrednosti, treba je predstaviti kao atribut, a dati skup kao domen, ili, ako neka osobina objekta uzima vrednosti iz skupa n-torki (parova, trojki), tu osobinu treba predstaviti kao vezu, a dati skup vrednosti kao tip objekata. Ova preporuka ne sprečava korišćenje složenog domena, ako je to povoljnije,
- ako se, u toku modeliranja, ukaže potreba da se neki već definisani atribut poveže sa nekim objektom, odnosno da se definiše preslikavanje DOMEN —> OBJEKAT, tada odgovarajući domen treba tretirati kao tip objekta, a atribut kao preslikavanje u vezi.
Sa praktične tačke gledišta, u mnogim primenama, za implementaciju modela, pogodno je jedan objekat i skup njegovih atributa tretirati kao rekord, pa je to još jedan razlog da se razdvoje koncepti atributa i veze. Time se implicitno uvodi i koncept agregacije, jer se objekat može definisati kao agregacija njegovih atributa.
Generalizacija i specijalizacija MOV
Generalizacija je, kao što je rečeno, apstrakcija u kojoj se skup sličnih tipova objekata tretira kao generički tip objekta (nadtip). „Slični” tipovi objekata su oni tipovi koji imaju neke zajedničke atribute, veze i/ili operacije.
Specijalizacija je inverzni postupak u kome se za neki tip objekta definišu njegovi podtipovi, koji imaju neke njima specifične atribute, veze i/ili operacije.
Na primer, skup tipova Radnik, Student, Penzioner, Dete može se predstaviti generičkim tipom Građanin. Isto tako se tip Radnik može specijalizovati u podtipove Vozač, Inženjer, Lekar i druge.
Klasa nadtipa sadrži sva pojavljivanja „sličnih” objekata, sa onim atributima i preslikavanjima koji su im zajednički, a klase podtipova su podskupovi pojavljivanja nadtipa sa dodatnim, njima specifičnim preslikavanjima.
Kada se jedno pojavljivanje tipa može specijalizovati samo u jedan podtip (eksluzivna specijalizacija) tada je GG = 1. Na primer, jedno pojavljivanje tipa RADNIK može imati samo jedno zanimanje (u jednom trenutku vremena). Kada se jedno pojavljivanje tipa može specijalizovati u više podtipova (neeksluzivna specijalizacija) tada je GG > 1.
Na primer, neki građanin može istovremeno da bude i dete i student. Ako je u specijalizaciji DG = 0, tada ne mora svako pojavljivanje tipa biti specijalizacija u neki podtip (unija podtipova je podskup nadtipa).
Postupci generalizacije i specijalizacije se u PMOV pretstavljaju specijalnom „S” (Subtype ili IS-A (is a)) vezom koja se sastoji od dva preslikavanja:
- generalizacije, odnosno preslikavanja PODTIP —-> NADTIP (trivijalno preslikavanje između podskupa i skupa za koje je uvek DG = 1 i GG = 1, pa se kardinalnost ovoga preslikavanja i ne predstavlja na DOV) i
- specijalizacije, koja predstavlja preslikavanje NADTIP —-> NEPOVEZANA UNIJA PODTIPOVA. „Nepovezana unija” podtipova predstavlja skup koji sadrži sva pojavljivanja svakog podtipa kao različite elemente u skupu, čak i kada su neka pojavljivanja dva (ili više) podtipova jednaka.
U generalizacionoj hijerarhiji objekata važi pravilo nasleđivanja osobina i pravilo nasleđivanja operacija: Podtipovi nasleđuju sve atribute i veze svoga nadtipa.
Na primer tip Student je podtip tipa Građanin i pored svojih atributa BrojInd i Semestar, on nasleđuje i atribute svog „nadtipa”, Mlb, Ime, Starost. Atributi tipa lekar su njegovi atributi i atributi svih njegovih nadtipova po generalizocionoj hijerarhiji, tj, Specijalnost, Plata, Mlb, Ime i Starost.
Podtipovi takođe nasleđuju i operacije nadtipa koje se u MOV veoma retko definišu.
Agregacija i dekompozicija MOV
Agregacija je apstrakcija u kojoj se veza između dva objekta ili više tipova objekata tretira kao objekat na višem nivou apstrkacije. Zbog toga što istovremeno predstavlja i objekat i vezu, agregacija se često naziva i mešoviti tip objekta-veza. Objekti koji čine agregaciju se nazivaju komponentama agregacije.
Postupak inverzan aregaciji se naziva dekompozicija. Kardinalnost preslikavanja KOMPONENTA->AGREGACIJA mora biti specificirana, dok je za inverzno preslikavnaje uvek DG = 1 i GG = 1, što znači da je agregacija egzistencijalno zavisna od svojih komponenata.
Agregirani objekat se razlikuje od ostalih objekata u sistemu po tome što nema svoj sopstveni identifikator, već ga identifikuju objekti koje on agregira. Agregacija je klasa Prijava, a njene komponente su Student i Predmet. Jednom pojavljivanju agregacije uvek odgovara po jedno pojavljivanje komponenti koje je čine. Jedan Student može da učestvuje u formiranju 0 ili M Prijava.
Agregirani objekat se u modelu tretira kao i bilo koji drugi objekat. To znači da on može da ima svoje atribute i/ili da bude u vezi sa nekim drugim objektima (moguće agreiranim, takođe), da ima svoje podtipove i slično. Mada svaka veza agregira dva objekta, samo one binarne veze kojima bi imalo smisla dodati neke atribute ili koje bi imalo smisla povezivati sa drugim objektima treba tretirati kao agregirane objekte (agregacije).
Dobra praksa modeliranja može da bude i to da se svaka binarna veza u kojoj oba preslikavanja imaju GG = M, tretira kao agregacija. U MOV koriste se samo binarne veze objekata. Ako postoji potreba da se direktno predstavi veza tri ili više objekata, tada se takva veza tretira kao agregacija.
Na primer, činjenicu da dobavljači dobavljaju neke proizvode za specifične projekte može se predstaviti kao agregacija objekata Dobavljač, Proizvod i Projekat. Ako se višestruke veze predstavljaju kao agregirani objekti, tada model uključuje samo binarne veze što omogućuje jasno definisanje kardinalnosti direktnog i inverznog preslikavanja koje ih čine.
Model podataka objekti i veze (MOV) – Primeri
Primer 1: kola parkira jedan student
Model podataka za ovaj hipotetički fakultetski informacioni sistem je predstavljen tako što su pojedini delovi namerno neobični, da bi se iskazale neke karakteristike MOV.
Pretpostavlja se da na posmatranom fakultetu postoji specijalan parking namenjen samo studentima. Ovaj zaključak sledi iz činjenice da svaka Kola Parkira najmanje jedan Student. Drugim rečima, DG preslikavanja Kola->Student koja je jednaka 1 pokazuje da svaka kola na parkingu moraju biti vezana barem za jednog studenta i mogu biti vezana samo za jednog studenta GG=1. Student ne mora da Parkira nijedna, a može najviše jedna Kola.
Primer 2: student, registar, predmet
Ovaj primer prikazuje vezu studenta i predmeta.
Student mora biti Registrovan barem za jedan predmet, a za Predmet može da bude registrovano nula, jedan ili više Studenata.
Primer 3: student, imaju, roditelj
Donja granica preslikavanja Roditelj->Student je jednaka 1. To znači da Roditelj ne može postojati u bazi ako nije vezan za nekog studenta. Ne može se izbaciti neko pojavljivanje Studenta iz baze ako je za njega vezano pojavljivanje Roditelja koji je Roditelj samo tom Studentu, ili se zajdeno sa njim mora izbaciti i takvo pojavljivanje Roditelja.
Uopšteno ažuriranje baze podataka može da naruši kardinalnost preslikavanja (tzv. „strukturna ograničenja”) i zbog toga je neophodno definisati odgovarajuća dinamička pravila integriteta.
Očigledno je da su kritična preslikavanja sa donjom granicom različitom od nule (najčešće 1) i gornjom granicom različitom od M (najčešće 1).
Primer 4: student, prijava, predmet
Jedno pojavljivanje klase Prijava ima kao svoje komponente pojavljivanje objekta iz klase Student i Predmet. Atributi ove agregacije daju za datog studenta i dati predmet, datum i ocenu položenog ispita.
Primer 5: student, specijalizacija vanredni
Klasa Vanredni predstavlja podtip klase Student preko specijalizacije Vrsta. Znači da se za jedan nadtip može definisati i samo jedan podtip preko neke specijalizacije.
Međutim, u ovom slučaju specijalizacija ne sme da bude obavezna (donja granica preslikavanja specijalizacije mora da bude jednaka nuli).
Primer 6: projekat, podtip zadatak
Klasa Zadatak predstavlja klasu slabih, identifikaciono zavisnih objekata, zavisnih od objekata nadređene klase Projekat. To ovde znači da se pojedini zadaci sami za sebe ne mogu pojavljivati u modelu i da atribut ŠifZad ne može jedinstveno identifikovati jedan zadatak u sistemu. Tek agregacija <ŠifProj, ŠifZad>, odnosno veza projekta i zadatka jedinstveno identifikuje jedan zadatak u sistemu.
Ovakva identifikacija Zadatka se naziva „govoreća šifra” jer, pored jedinstvene identifikacije zadatka u sistemu, daje i informaciju o projektu kome zadatak pripada. U mnogim modelima slabi objekti su posledica govorećih šifara u odgovarajućem sistemu. Govoreće šifre treba izbegavati jer dati model podataka, odnosno odgovarajuću bazu čine neelastičnom.
Primer 7: predmet, pripada katedri
Posebno je zanimljiva „kruta” veza između klasa Predmet i Katedra koja je posledica činjenice da oba preslikavanja ove veze imaju donju granicu kardinalnosti jednaku jedan.
Svaki Predmet mora da Pripada nekoj Katedri i može da pripada samo jednoj, dok svaka Katedra mora da ima bar jedan Predmet. To znači da se nova Katedra može ubaciti u bazu samo ako se istovremeno (u istoj transakciji) u bazu ubacuje barem jedan novi Predmet koji joj pripada.
Isto tako neki Predmet koji je poslednji predmet u posmatranoj Katedri, ne može se izbaciti iz baze ili se sa njim mora izbaciti i odgovarajućia Katedra.