Modeliranje MOV ograničenja
U prethodnom delu, pri uvodjenju i definisanju pojedinih koncepata strukture MOV, definisana su i neka ograničenja - kardinalnost preslikavanja i ograničenja na vrednosti domena. Medjutim, postoje i mnogo složenija semantička ograničenja (uzajamni odnosi objekata i njihovih atributa) koje je nemoguće ili nepraktično prikazati strukturom MOV, pa je neophodno definisati jezik za njihovu specifikaciju.
Klasifikacija ograničenja se može uraditi na sledeći način:
· Strukturna ograničenja (ograničenja na preslikavanja)
· Vrednosna ograničenja (ograničenja na vrednosti atributa)
Sama struktura PMOV, odnosno dijagram objekti veze iskazuje ova ograničenja. Na svakom DOV zadate su kardinalnosti preslikavanja za sve veze. Neka od njih se ne upisuju, već se podrazumevaju, kako je to diskutovano. Isto tako, s obzirom na to da se koriste samo jednoznačni atributi, da svaki atribut mora biti "primenljivo svojstvo" za sva pojavljivanja posmatranog objekta i da su identifikatori objekata označeni, implicitno su definisane kardinalnosti direktnog (atributa) i inverznog preslikavanja OBJEKAT ----> DOMEN.
Pored ovih ograničenja, u redjim slučajevima je potrebno definisati i ograničenje tipa "redosled" za preslikavanja čija je gornja granica kardinalnosti GG > 1, koje definiše zahtevani redosled povezivanja pojavljivanja objekta kodomena preslikavanja sa datim pojavljivanjem objekta domena preslikavanja.
MODELIRANJE-MOV-ograničenja, vrednosna ograničenja
Vrednosna ograničenja (ograničenja na vrednost atributa) definišu dozvoljene vrednosti atributa i dozvoljene promene ovih vrednosti. U vrednosna ograničenja spadaju ograničenja na pojedinačne vrednosti atributa, koja se nazivaju Prosta vrednosna ograničenja. Međutim postoje i složena vrednosna ograničenja koja vezuju vrednosti različitih atributa u specifičnim pojavljivanjima objekata različitih klasa.
Primer:
Student petog semestra mora da ima položen predmet Matematika I. Ovo je primer “ograničenja stanja”.
Pod ograničenjem stanja podrazumevaju se dozvoljena stanja, odnosno dozvoljene vrednosti atributa i preslikavanja u jednom MOV. Međutim mogu se definisati i “ograničenja prelaza stanja” koja definišu moguće promene datog stanja sistema, odnosno datih vrednosti atributa.
Primer:
Ocena pri ponavljanju ispita ne može padati.
Moguće je definisati formalni jezik za iskazivanje vrednosnih ograničenja, mada se u praksi ova ograničenja iskazuju prirodnim jezikom, eventualno struktuiranim preko nekih jednostavnih pravila.
Mada se u osnovi zadaju na isti način, iz praktičnih razloga je pogodno ovu klasu ograničenja podeliti na dve podklase: Ograničenja na domene i medjuzavisnosti atributa. Ograničenja na domene se jednostavno iskazuju i daju se uz definiciju domena kako je to ranije pokazano. Za iskazivanje medjuzavisnosti atributa koriste se formule "objektnog računa", predikatskog računa prvog reda u kome su promenljive objekti u sistemu.
Osnovni pojmovi predikatskog računa su:
· Afirmativna rečenica, koja ima smisla i koja je istinita ili neistinita naziva se sud.
· Afirmativna rečenica koja ima smisla i koja sadrži jedan ili više promenljivih parametara i koja postaje sud uvek kada parametri iz rečenice dobiju konkretnu vrednost naziva se predikat. Broj parametara u predikatu se naziva dužina predikata.
Na primer, x2 + y2 <= 1 je primer predikata dužine 2.
MODELIRANJE- MOV jezik za iskazivanje vrednosnih ograničenja (Primer)
Za iskazivanje vrenosnih ograničenja koriste se formule tzv. Objektnog računa.
Pod Objektnim računom se ovde podrazumeva Predikatski račun prvog reda u kome promenljive uzimaju vrednosti iz definisanih klasa objekata u sistemu. Činjenica da promenljiva uzima vrednost iz neke klase objekata označava se na sledeći način:
x : O, gde je x pojavljivanje , a O klasa nekog objekta, odnosno promenljiva x uzima vrednost iz skupa pojavljivanja objekta O.
x` označava vrednost promenljive pre operacije ažuriranja, dok x označava vrednost promenljive posle operacije
ažuriranja. Obe vrednosti su neophodne da bi se iskazala dozvoljena promena stanja u modelu podataka.
MODELIRANJE-Primer MOV “dot notacija”
Takozvana “dot notacija” se koristi da poveže promenljive iz dve klase objekata preko nekog preslikavanja definisanog u modelu. Označava se na sledeći način:
x : O.P, označava da x (odnosno x`) uzima vrednost iz klase koja je kodomen preslikavanja P klase O.
Atomske formule, odnosno simboli koji se koriste daoznače neki atomski predikat su:
x.A Θ y.B gde su x i y promenljive (objekti), A i B atributi tipova objekata O1 i O2 iz čijih pojavljivanja, respektivno, promenljive x i y uzimaju vrednosti (x:O1,,, y:O2), a Θ je operacija poređenja, definisana nad domenom atributa A i B (A i B moraju biti definisani nad istim domenom).
x.A Θ C, gde su x,A i Θ kao u prethodnom stavu, a C je konstanta koja ima isti domen kao A.
MODELIRANJE-Primer MOV formula objektnog računa
Formule objektnog računa(ddf – dobro definisana formula)formiraju se preko sledećih produkcionih pravila (sintakse):
ddf::= atom I
(ddf) I
Not ddf I
ddf And ddf I
ddf Or ddf I
Exists naziv_promenljive (ddf) I
Foreach naziv_promenljive (ddf) I
if ddf Then ddf
Exists je egzistencijalni kvantifikator, a Foreach je univerzalni kvantifikator. Svako ograničenje je dobro definisana formula u kojoj promenljive uzimaju vrednosti iz definisanih klasa. Ograničenje se definiše na sledeći način:
definicija_promenljivih naziv_ograničenja (lista_promenljivih) := ddf,
Primer: Student petog ili višeg semestra mora da ima više od 10 položenih ispita.
Ogr1(Student, Prijava):= Foreach Student (If Student.Semestar>=5
Then Card (Student.Prijava) >10);
MODELIRANJE-Primer MOV operacije
Pogodno je operacije u PMOV podeliti na operacije održavanja (ažuriranja) baze podataka i operacije pretraživanja (izveštavanja). Primeri i jednih i drugih operacija će se dati za model na sledećoj slici.
Iz same strukture PMOV očigledno je da se operacije održavanja baze podataka svode na operacije dodavanja novog objekta u klasu, izbacivanja objekta iz klase, izmenu vrednosti nekog atributa, zatim povezivanja, razvezivanja i prevezivanja dva objekta preko zadatog preslikavanja, odnosno veze.
MODELIRANJE-Primer MOV
Operacija-ubacivanje
(1) UBACIVANJE. insert naziv_objekta( dvotačka_lista parova atribut-vrednost)
(dvotačka_lista parova id_susednog objekta-vrenost)
Primer: insert RADNIK (MLB:307,IME:Ana, STAROST:25, ŠIFOD:03)
U listi parova atribut-vrednost neophodno je zadati sve atribute koji ne mogu imati nula vrednost. Podrazumeva se da je među njima i atribut identifikator objekta, jer on, očigledno ne može da ima nula vrednost. Lista parova id_susednog objekta-vrednost daje indentifikatore svih susednih objekata prema kojima dati objekat ima"obavezno" preslikavanje (preslikavanje sa donjom granicom većom od nule).
Podrazumeva se da operacija ubaci prouzrokuje operacije poveži prema svim okolnim objektima prema kojima posmatrani objekat ima obavezno preslikavanje.
MODELIRANJE-Primer MOV
Operacije-izbacivanje, razvezivanje
(2) IZBACIVANJE.
delete naziv_objekta (naziv_id_objekta:vrednost)
Primer: delete RADNIK (MLB:307)
Podrazumeva se da operacija izbaci prouzrokuje operacije razveži za sva preslikavanja u kojima učestvuje posmatrani objekat.
(3) RAZVEZIVANJE.
disconnect naziv_preslikavanja (_id_domena:vrednost, id_kodomena:vrednost)
Operacija disconnect se ne može direktno primeniti na preslikavanja čije su kardinalnosti DG = 1 i GG = 1 inače bi uvek narušila uslov integriteta.
Na primer, disconnect RUKOVODI(MLB:307,ŠIFOD:03)
Podrazumeva se da operacija razveži za jedno preslikavanje prouzrokuje i operaciju razveži za njeno inverzno preslikavanje.
MODELIRANJE-Primer MOV
ažuriranje, povezivanje
(4) AŽURIRANJE.
update naziv_objekta (naziv_id_objekta:vrednost, dvotačka_lista parova aribut_vrednost)
Primer:
update RADNIK(MLB:307,IME:Mira)
Atributi pojavljivanja objekta zadatog identifikatorom dobijaju zadate vrednosti. Identifikator objekta se ne može ažurirati.
(5) POVEZIVANJE.
connect naziv_preslikavanja (_id_domena:vrednost, id_kodomena:vrednost)
Operacija connect se ne može direktno primeniti na preslikavanja čije su kardinalnosti DG = 1 i GG = 1, jer se to povezivanje ostvaruje automatski sa ubacivanjem objekta domena preslikavanja.
Na primer:
connect RUKOVODI(MLB:307,ŠIFOD:03)
Podrazumeva se da operacija poveži za jedno preslikavanje prouzrokuje i operaciju poveži za njeno inverzno preslikavanje.
MODELIRANJE-Primer MOV
prevezivanje
(6) PREVEZIVANJE.
reconnect naziv_preslikavanja (id_domena:vrednost, id_kodomena_sa:vrednost, id_kodomena-na:vrednost)
Operacija reconnect se sastoji od uzastopne primene operacije disconnect sa jednog kodomene i connect na drugi, u jednoj atomskoj transakciji. Ona se primenjuje na ona preslikavanja na koja se operacije disconnect i connect ne mogu direktno primeniti.
Na primer:
reconnect RADI(MLB:037, ŠIFOD:03, ŠIFOD:07)
MODELIRANJE-Primer MOV
Operacija pretraživanja
U PMOV je moguće definisati dve vrste operacija za pretraživanje. Prvi skup operacija je "navigacione“ prirode i one omogućuju kretanje kroz model i pristup pojedinačnim pojavljivanjima objekata "tekuće" klase, klase kojoj se u tom trenutku pristupilo.
Drugu grupu operacija čine tzv "specifikacione" operacije, odnosno odgovarajući upitni jezik, kojima se iskazuje struktura i uslovi koje rezultat operacije treba da zadovolji. Da bi se definisale operacije nad klasama objekata i omogućilo jednostavno povezivanje klasa objekata preko preslikavanja definišu se promenljive na sledeći način:
naziv_promenljive ":" naziv_klase_objekata,
što zanači da promenljiva uzima vrednosti iz klase (skupa) objekata.
Na primer:
x:RADNIK, promenljiva x uzima za svoje vrednosti pojavljivanja klase objekata
RADNIK ili naziv_promenljive_1 ":" naziv_promenljive_2 "." naziv_preslikavanja,
što znači da prva promenljiva uzima vrednost iz kodomena navedenog preslikavanja za vrednost domena preslikavanja datog vrednošću druge promenljive.
x: ODELENJE
y: x.ZAPOŠLJAVA,
y uzima vrednosti iz podskupa klase RADNIK koji čine pojavljivanja koja su su preko preslikavanja ZAPOŠLJAVA vezani za dato odelenje preko tekuće vrednosti promenljive x. Kako je objekat agregacija njegovih atributa, promenljivoj x se takođe mogu pridodati atributi preko iskaza:
naziv_promennljive "." naziv atributa
Na primer:
x.NAZOD ili y.IME ili y.MLB i slično.
Kao i ranije, pri definiciji ograničenja, može se umesto definicije promanljive usvojiti konvencija da su nazivi promenljivih jednaki nazivima klasa iz koji uzimaju vrednosti.
MODELIRANJE-Primer MOV
Navigacione operacije GET ANY
Očigledno je da je osnovna operacija pretraživanja izvlačenje jednog pojavljivanja objekta iz zadate klase. Ako je klasa prazna, odgovarajuća operacija vraća kod "EOK".
Definišu se sledeće navigacione operacije pretraživanja u modelu objekti veze:
1. GET ANY naziv_ promenljive {daje bilo koje pojavljivanje klase nad kojom je promenljiva definaisana ili EOK ako je klasa prazna }.
Na primer:
x:ODELENJE, y:x.ZAPOŠLJAVA
GET ANY x - daje bilo koje pojavljivanje objekta odelenje,
GET ANY y - daje bilo koje pojavljivanje objekta radnik iz podskupa radnika vezanih za tekuće pojavljivanje objekta odelenje.
2. GET ANY naziv_promenljive WHERE uslov {Uslov se može iskazati preko relacionih operatora (=, <, > i slično) koji se mogu definisati nad domenima atributa klase nad kojom je definisana promenljiva i logičkih operatora AND OR i NOT. Rezultat operacije je jedno, bilo koje, pojavljivanje objekta koje zadovoljava uslov.}
Na primer : sekvenca naredbi GET ANY x WHERE x.ŠIFOD = 011;
GET ANY y WHERE y.ZANIMANJE = `lekar`AND y.STAROST > 40;
daje odelenje sa šifrom 011 i sve lekare starije od 40 godina iz tog odelenja ili EOK ako takvih radnika nema.
MODELIRANJE-Primer MOV
Navigacione operacije GET DUPLICATE
Operacija GET ANY daje samo jedno pojavljivanje date klase, odnosno jedno pojavljivanje koje zadovoljava dati uslov. Da bi se mogli izvući i druga (ili sva) pojavljivanja uvode se operacije
GET DUPLICATE naziv_promenljive i
GET DUPLICATE naziv_promenljive WHERE uslov
koje daju jedno od preostalih pojavljivanja date klase, posle primene operacija GET ANY ili GET DUPLICATE.
Promenljiva koja je zadata nad specijalizacijom kao preslikavanjem ima neke specifične karakteristike. Naime, domen preslikavanja specijalizacije je nepovezana unija podtipova posmatranog tipa. Nepovezana unija skupova definiše se kao unija parova koji se sastoje od naziva skupa i elementa skupa koji se "uniraju". Imajući to u vidu promenljiva definisana nad ovom preslikavanjem ima jedan atribut sa imenom "type" i promenljivu strukturu zavisno od konkretne vrednosti atributa "type". Ako je:
x: naziv_nadipa
y: x.naziv_specijalizacije, tada promenljiva y ima strukturu:
< type, CASE type OF
naziv_prvog_podtipa :lista_atributa_prvog_ podtipa;
naziv_drugog_podtipa :lista_atributa_drugo_ podtipa;
naziv_n-tog_ podtipa : lista_atributa_n-tog_ podtipa>
MODELIRANJE-Primer MOV
Navigacione operacije izveštavanja
Operacije izveštavanja formiraju izvedene (složene) objekte, objekte koji se mogu izvesti iz baznih objekata predstavljenih strukturom PMOV. Da bismo jasnije objasnili operacije formiranja izvedenih objekata, prikazaćemo prvo jedan primer takvog objekta.
U tabeli je prikazana struktura izvedenog objekta koji se dobija tako što se uz svaku šifru i naziv odelenja navode matični brojevi, imena i starost radnika starijih od 40 godina i srednja starost radnika po odelenju.
Analizirajući izvedeni objekat pretstavljen tabelom, može se zaključiti da je jedno pojavljivanje ovoga tipa objekta agregacija:
· Jednog pojavljivanja nekih atributa objekta Odelenje (SIFOD i NAZIVOD);
· Jednog pojavljivanja preslikavanja ZAPOŠLJAVA: ODELENJE ---> RADNIK gde se iz kodomena RADNIK uzimaju samo
neki atributi (MLB, IMER i STAROST) i selektuju samo ona pojavljivanja koja zadovoljavaju uslov RADNIK.STAROST > 40.
· Jedno pojavljivanje preslikavanja ZAPOŠLJAVA predstavlja podklasu objekata RADNIK (skup pojavljivanja tipa objekta Radnik).
Izvedenog atributa SREDNJA_STAROST koji se dobija kao vrednost neke funkcije nad atributima posmatranog modela. (U ovom slučaju kao srednja vrednost atributa STAROST za radnike iz jednog odelenja, starije od 40 godina).
Ovaj izvedeni objekat se može dobiti sledećim izrazom:
x : ODELENJE, y : x. ZAPOSLENI SELEKTUJ x.SIFOD, x.NAZIVOD,
(SELEKTUJ y.MLB,y.IMER,y.STAROST GDE_JE y.STAROST > 40),
(SELEKTUJ AVG (x.ZAPOŠLJAVA,STAROST)
GDE_JE y.STAROST > 40);
x uzima vrednost iz klase ODELENJE i y uzima vrednost iz kodomena preslikavanja ZAPOŠLJAVA za datu vrednost x . Iskaz SELEKTUJ definiše atribute od kojih se formira složeni objekat. Iskaz GDE_JE definiše uslov koji pojavljivanja objekata date klase treba, u rezultatu, da zadovolje. Podrazumeva se da su sve promenljive u gornjem izrazu univerzalno kvantifikovane, odnosno da se navedeni uslovi ispituju za svaku vrednost objektne promenljive i da se one koje zadovoljavaju uslove pojavljuju u rezultatu. U gornjem primeru se takodje podrazumeva da je definisana funkcija AVG koja sračunava srednju vrednost date kolekcije vrednosti.
MODELIRANJE-Primer MOV
Navigacione operacije izveštavanja 1
Moguće je, izjednačiti imena promenljivih sa imenima klase objekata i time preskočiti definiciju promenljivih. Izraz, u tom slučaju bi bio:
SELEKTUJ ODELENJE. SIFOD, ODELENJE. NAZIVOD,
(SELEKTUJ ODELJENJE. ZAPOŠLJAVA. MLB, ODELENJE. ZAPOŠLJAVA. IMER,
ODELENJE. ZAPOŠLJAVA. STAROST
GDE_JE ODELENJE. ZAPOŠLJAVA. STAROST > 40),
(SELEKTUJ AVG (ODELENJE.ZAPOŠLJAVA, STAROST)
GDE_JE ODELENJE. ZAPOŠLJAVA. STAROST >40);
Da bi se izbeglo stalno ponavljanje naziva klasa uvodi se izraz SELEKTUJ i deo IZ.
SELEKTUJ SIFOD, NAZIVOD,
(SELEKTUJ MLB, IMER, STAROST
IZ ODELENJE. ZAPOŠLJAVA
GDE_JE STAROST > 40),
(SELEKTUJ AVG (STAROST)
IZ ODELENJE. ZAPOŠLJAVA
GDE_JE STAROST > 40)
IZ ODELENJE;
Ovakav način iskazivanja izvedenog objekta najsličniji je standardnom relacionom upitnom jeziku SQL, on se preporučuje za korišćenje i nadalje će se, uglavnom, koristiti. Omogućava, da se i neke druge konvencije i mogućnosti koje postoje u SQL-u uvedu bez dodatnog objašnjenja.