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

 

3.        GET DUPLICATE naziv_promenljive  i

4.        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.

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Modeliranje MOV ograničenja 1
  • Modeliranje MOV ograničenja 2
  • Modeliranje MOV ograničenja 3