Objekto vaidmenų modeliavimas
Objekto vaidmenų modeliavimas (angl. Object Role Modeling, ORM) - tai semantinis duomenų modeliavimo būdas, modeliuojamą sritį išreiškiantis per objektus ir jų atliekamus vaidmenis (sąsajas tarp objektų). ORM supaprastina duomenų modelių projektavimo procesą naudojant natūralios kalbos elementus. Be to, lengvai suprantamos diagramos gali būti iš karto patikrinamos pavyzdžiais, o duomenų modeliai transformuojami į reliacinius duomenų modelius (ar kitos kalbos duomenų modelius). Turtinga grafinė notacija, kaip ir gausybė ribojimų, suteikia galimybę aiškiai bei tiksliai išreikšti verslo taisykles.
ORM išsivystė iš natūralios kalbos informacijos analizės metodo - NIAM (angl. Natural language Information Analysis Method) ir binarinių sąryšių modeliavimo (angl. Binary Relationship Modeling), kurie buvo sukurti XX a. VIII dešimtmečio viduryje.
Pagrindinis ORM vystytojas ir plėtotojas - Dr. Terry Halpin [1]. Jis ir pateikė pirmąją ORM formalizaciją [2].
Pagrindiniai ORM elementai
[redaguoti | redaguoti vikitekstą]Faktai
[redaguoti | redaguoti vikitekstą]Faktas yra teiginys arba tvirtinimas apie tam tikrą taikomosios srities informacijos dalį. ORM modeliavimo požiūriu, faktų nustatymas yra taikomosios srities pažinimo proceso dalis. Todėl, kiekvienas faktas turėtų būti tikrovinis bei atpažįstamas bet kam, susijusiam su taikomąją sritimi.
Pats paprasčiausias fakto pavyzdys galėtų būti elementarus faktas (vientisas, nedalomas): „Žmogus rūko“
Pav. 1 Elementarus ORM faktas
Faktas apima įvairovę komponentų, kurie padeda tiek išreikšti faktą žodžiais, tiek suteikti jam išraiškingumo. Paprastai, faktas susideda iš objektų ir jų atliekamų vaidmenų. Didžiausia faktų dalis susideda iš dviejų vaidmenų. Fakto vaidmenys sudaro fakto predikatą. Aiškumo dėlei, panagrinėkime pavyzdį:
Studentas, kurio studento kodas yra „25615720“, studijuoja studijų programą, kurios kodas „612209P109“
Pav. 2 ORM fakto struktūra
Predikatai
[redaguoti | redaguoti vikitekstą]Faktą apibrėžia predikatas. Predikatas yra veiksmažodis ar žodžių junginys su veiksmažodžiu, kuris objekto tipus sujungia į faktą, bei parodo objektų semantinį kontekstą, t. y. sąryšį tarp objektų. Predikatas susideda iš vieno ar daugiau vaidmenų. Vaidmenys vaizduojami langeliais, t. y. vieną vaidmenį atitinka vienas langelis. Vaidmenų skaičius predikatuose yra vadinamas predikato dimensija. Nors teoriškai predikatas gali būti sudarytas iš bet kiek (bet ne mažiau nei vieno) vaidmens, tačiau paprastai predikato dimensija neviršija dviejų vaidmenų.
Objektų tipai
[redaguoti | redaguoti vikitekstą]Objekto tipas nurodo tam tikrą duomenų aibę (sritį). ORM požiūriu taikomoji sritis dalinama į prasmines objektų aibes, kurios siejamos faktais. Konkrečiu atveju (Pav. 2), objekto tipas „Studentas“ nagrinėjamą sritį padalina į tai kas yra studentai ir kas nėra. Paprastai bet kuris taikomosios srities dalykas (arba daiktavardis) yra modeliuojami kaip objekto tipai. Objekto tipas gali būti esybė arba reikšmė.
Pav. 3 ORM objekto tipai
Esybė – tai bet koks atvaizduojamos aplinkos dalykas, kuris yra identifikuojamas unikalumo nuoroda. Unikalumo nuoroda (angl. Reference mode) – tai esybės sąryšis su reikšme, kuri skirta identifikuoti konkretų objektą. Kitaip tariant, tai esybės egzempliorių unikalumą pažyminti reikšmė. Reikšmė tai yra objekto tipas, kurio egzemplioriumi gali būti tik reikšmė išreikšta tam tikru duomenų tipu.
ORM ribojimai
[redaguoti | redaguoti vikitekstą]Kaip jau minėta, ORM iš kitų modeliavimo būdų išsiskiria tuo, kad pasiūlo daugybę įvairių duomenų ribojimų, bei galimybę ribojimus kombinuoti kartu, išgaunant naujus.
Vidiniai unikalumo ribojimai
[redaguoti | redaguoti vikitekstą]Kiekvienas faktas privalo turėti nors vieną vidinį unikalumo ribojimą. Vidinis unikalumo ribojimas turi apimti bent jau du vaidmenis trinariui fakto tipui ir bent jau tris vaidmenis fakto tipui susidedančiam iš keturių vaidmenų.
Kiekvienas predikatas, išskyrus vienanarį, turi turėti bent jau vieną aiškų vidinį unikalumo ribojimą. Nepritaikius daugianariams (narių skaičius daugiau arba lygus 2), nėra nusakomas esybės egzempliorių skaičius sąryšyje.
Privalomo vaidmens ribojimai
[redaguoti | redaguoti vikitekstą]Privalomo vaidmens ribojimas nusako, kad esybė privalo atlikti pažymimą vaidmenį. Privalomą vaidmenį gali atlikti kai kurie esybės, priklausomai nuo modeliuotojo pasirinkimo, tačiau nei vienas reikšmės objekto tipas negali atlikti privalomą vaidmenį.
Pav. 5 Privalomo vaidmens ribojimas
Išoriniai unikalumo ribojimai
[redaguoti | redaguoti vikitekstą]Išoriniai unikalumo ribojimai išreiškia objekto tipą, kuris unikaliai identifikuojamas dvejais vaidmenimis.
Pav. 6 Išorinis unikalumo ribojimas
Taikant išorinį unikalumo ribojimą yra svarbu nustatyti taikytinus vaidmenis. Dažniausiai pasitaikanti išorinio unikalumo taikymo klaida yra netinkamų vaidmenų parinkimas.
Sudėtiniai objektų tipai (pirminių sąryšių ribojimai)
[redaguoti | redaguoti vikitekstą]Pirminiai sąryšių ribojimai nusako kuris vaidmuo pirmiausiai identifikuoja sudėtinį objekto tipą. Pirminis sąryšio ribojimas išreiškia išorinio unikalumo ribojimo buvimą, todėl diagramose paprastai jie kartu tiems patiems vaidmenims netaikomi. Pirminis sąryšio ribojimas parodo, jog sudėtinis objekto tipas pirmiausia identifikuojamas ribojamais vaidmenimis.
Pav. 7 Pirminio sąryšio ribojimas
Indeksų ribojimai
[redaguoti | redaguoti vikitekstą]Indekso ribojimas nedraudžia vaidmenų, kuriems jis yra taikomas, egzempliorių. Indeksai taikomi numanant galimus duomenų paieškos atvejus, siekiant paspartinti duomenų paieškas.
Pav. 8 Indeksų ribojimai
Disjunktyvūs privalomo vaidmens ribojimai
[redaguoti | redaguoti vikitekstą]Disjunktyvus privalomo vaidmens ribojimas išsiskiria nuo paprasto privalomo vaidmens ribojimo tuo, kad yra taikomas dvejiems ar daugiau vaidmenims, atliekamiems tuo pačiu objekto tipu. Disjunktyvus privalomo vaidmens ribojimas nusako tai, jog kiekvienas objekto tipo populiacijos egzempliorius turi pasirodyti bent jau viename iš ribojamų vaidmenų.
Pav. 9 Disjunktyvus privalomo vaidmens ribojimas
Išskyrimo ribojimai
[redaguoti | redaguoti vikitekstą]Išskyrimo ribojimas nusako, jog objekto tipas gali atlikti tik vieną vaidmenį iš dviejų ar daugiau vaidmenų susidedančios grupės, kuriai yra taikomas ribojimas. Kiekvienas objekto tipo populiacijos egzempliorius gali atlikti tiktai vieną iš ribojamų vaidmenų, tačiau gali neatlikti ir nei vienos. Žinoma, jei tai nenumatyta kitų ribojimų.
Pav. 10 Išskyrimo ribojimas
Žiediniai ribojimai
[redaguoti | redaguoti vikitekstą]Žiedinis ribojimas taikomas to paties objekto tipo vaidmenų porai fakte. Dažniausiai naudojami binariniuose fakto tipuose, tačiau gali būti taikomi ir aukštesnės eilės (trinariuose, keturių ar daugiau narių) fakto tipuose, kuriuose tas pats objekto tipas atlieka du vaidmenis. Išskiriami šeši pagrindiniai žiediniai ribojimai: simetrinis (sym), nesimetrinis (ans) asmiterinis (as), neciklinis (ac), nerefleksyvus (ir), netranzityvus (it.). Gali būti taikomi keli žiediniai ribojimai vienai vaidmenų porai. Žiedinių ribojimų sąsaja pateikiama T. Halpin 1 , išreiškiama:
Pav. 11 Žiedinių ribojimų sąsajos
Simetrinis ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Simetrinis“ (angl. Symmetric, SYM) reikalauja, kad to paties objekto priešingas vaidmuo taip pat būtų teisingas. Jeigu egzistuoja egzemplioriaus A ryšys su B, tuomet egzistuoja ir egzemplioriaus B ryšys su A.
Pav. 12 Simetrinis ribojimas
Pavyzdžiui, jei asmuo A yra asmens B brolis, tuomet asmuo B taip pat yra asmens A brolis (jeigu Jonas yra Tomo brolis (Jonas, Tomas), tuomet Tomas taip yra Jono brolis (Tomas, Jonas)).
Pav. 13 Simetrinio ribojimo pavyzdys
Asimetrinis ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Asimetrinis“ (angl. Asymmetric, AS) apriboja priešingo vaidmens egzistavimą tarp dviejų skirtingų objekto tipo egzempliorių. Asimetrinis ribojimas nusako, jog esant duomenų kombinacijai (A,B) negalima duomenų kombinacija (B,A), t. y. jei esybės egzempliorius A turi ryšį su tos pačios esybės egzemplioriumi B, egzempliorius B negali turėti ryšio su tokia pat role su tuo pačiu esybės A egzemplioriumi (jei A yra tėvas, o B sūnus, tai A negali būti B sūnus).
Pav. 14 Asimetrinis ribojimas
Pavyzdžiui, jei Tomas yra vyresnis Jono brolis (Tomas, Jonas), tuomet Jonas negali būti vyresnis Tomo brolis (Jonas, Tomas).
Pav. 15 Asimetrinio ribojimo pavyzdys
Asimetrinis ribojimas nusako nerefleksyvaus ribojimo egzistavimą.
Nesimetrinis ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Nesimetrinis“ (angl. Antisymmetric, ANS) kaip ir „Asimetrinis“ apribojimas neleidžia egzistuoti priešingai rolei tarp skirtingų esybės egzempliorių, tačiau priešingai negu „Nerefleksyvus“ apribojimas leidžia, kad ta pati esybė dalyvautų abiejose ryšio vaidmenyse. Šis apribojimas leidžia esybės egzemplioriui A turėti ryšį su tos pačios esybės A egzemplioriumi ir leidžia egzemplioriui A turėti ryšį su egzemplioriumi B, tačiau draudžia egzemplioriui B turėti ryšį su egzemplioriumi A.
Pav. 16 Nesimetrinis ribojimas
Pavyzdžiui, asmuo yra vyresnis ar tokio pat amžiaus kaip ir kitas asmuo.
Pav. 17 Nesimetrinio ribojimo pavyzdys
Neciklinis ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Neciklinis“ (angl. Acyclic, AC) nurodo, kad negali egzistuoti ciklų sąryšyje. Pavyzdžiui, jei yra duomenų kombinacija (A,B) ir (B,C), tuomet negalima duomenų kombinacija (C,A), t. y. jeigu esybės egzempliorius A turi ryšį su tos pačios esybės B egzemplioriumi ir egzempliorius B turi ryšį su tos pačios esybės C egzemplioriumi, egzemplioriaus C ryšys su A egzemplioriumi yra negalimas.
Pav. 18 Neciklinis ribojimas
Pavyzdžiui, asmuo A yra vyresnis už asmenį B, o asmuo B vyresnis už asmenį C, tuomet asmuo C negali būti vyresnis už asmenį A.
Pav. 19 Neciklinio ribojimo pavyzdys
Neciklinis ribojimas nusako egzistavimą asimetrinio ir nerefleksyvaus ribojimo.
Nerefleksyvus ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Nerefleksyvus“ (angl. Irreflexive, IR) reikalauja, kad tas pats objekto tipas nedalyvautų abiejuose ryšio vaidmenyse tuo pačiu metu. Nerefleksyvus apribojimas nusako, jog vieno vaidmens egzempliorius negali būti kito vaidmens egzempliorius vienu metu (A,A), t. y. esybės egzempliorius A negali turėti ryšio pats su savimi.
Pav. 20 Nerefleksyvus ribojimas
Pavyzdžiui, asmuo negali būti pats savo tėvas.
Pav. 21 Nerefleksyvaus ribojimo pavyzdys
Netranzityvus ribojimas
[redaguoti | redaguoti vikitekstą]Apribojimas „Netranzityvus” (angl. Intransitive, IT) nusako, kad esant duomenų kombinacijai (A,B) ir (B,C), negalima duomenų kombinacija (A,C), t. y. jeigu esybės egzempliorius A turi ryšį su tos pačios esybės B egzemplioriumi ir egzempliorius B turi ryšį su tos pačios esybės C egzemplioriumi, egzemplioriaus A ryšys su C egzemplioriumi yra negalimas.
Pav. 22 Netranzityvus ribojimas
Pavyzdžiui, jei asmuo A yra asmens B dėdė, tuomet jei asmuo B yra asmens C dėdė, tai asmuo A negali būti asmens C dėdė (jeigu Rimas yra Vyto dėdė (Rimas, Vytas), o Vytas yra Tado dėdė (Vytas, Tadas), tuomet Rimas negali būti Tado dėde (Rimas, Tadas)).
Pav. 23 Netranzityvaus ribojimo pavyzdys
Netranzityvus ribojimas nusako ne refleksyvaus ribojimo egzistavimą.
Lygybės ribojimas
[redaguoti | redaguoti vikitekstą]Lygybės ribojimas nustato sąryšį, kurio ribojamų vaidmenų ar vaidmenų sekų populiacija turi būti tokia pati.
Pav. 24 Lygybės ribojimas
Lygybės ribojimas nurodo, jog esybė1 atlieka vaidmenį sąryšyje su esybe2, jeigu tik esybė1 atlieka vaidmenį sąryšyje su esybe3.
Poaibio ribojimai
[redaguoti | redaguoti vikitekstą]Poaibio ribojimas, kaip ir lygybės ribojimas, suvaržo vaidmens ar vaidmenų sekos populiacijos sąryšį su kito vaidmens ar vaidmenų sekos populiacija. Naudojama, norint parodyti, jog kiekvienas vaidmens ar vaidmenų sekos populiacijos egzempliorius turi būti įtrauktas kitoje populiacijoje.
Pav. 25 Vaidmenų poaibio ribojimas
Pasikartojimo ribojimai
[redaguoti | redaguoti vikitekstą]Pasikartojimo ribojimas nusako kiek kartų kiekvienas egzempliorius pasitaikys vieno ar daugiau vaidmenų populiacijoje. Pasikartojimo ribojimas gali būti išreiškiamas kaip specifinė reikšmė, reikšmių intervalas arba mažiausia reikšmė.
Pav. 26 Pasikartojimo arba dažnumo ribojimai
Koncepcinės schemos projektavimo procedūra
[redaguoti | redaguoti vikitekstą]arba Conceptual Schema Design Procedure, nusako informacijos modeliavimo procesą, modeliuojant ORM.
Koncepcinio modelio sudarymo procedūra susideda iš septynių žingsnių:
1) Informacija apie taikomąją sritį transformuojama į elementariuosius faktus, bei patikrinamas faktų teisingumas;
2) Faktai perkeliami į modelį bei patikrinami galimi faktų variantai;
3) Tikrinami esybių tipai, kurie turėtų būti apibendrinti, bei pažymimi bet kokie aritmetiniai išvedimai (angl. Arithmetic derivations);
4) Pridedami unikalumo apribojimai, peržiūrimi fakto narių skaičiai;
5) Pridedami privalomo vaidmens apribojimai ir patikrinamos loginės išvestys (angl. logical derivations);
6) Pridedami reikšmės, aibių palyginimo (angl. set comparision) bei potipių apribojimai;
7) Pridedami kiti apribojimai ir atliekamas galutinis patikrinimas.
ORM modeliavimo priemonės
[redaguoti | redaguoti vikitekstą]NORMA (Neumont ORM Architect) – priemonė, palaikanti ORM2 notaciją. NORMA yra įskiepis (angl. plug-in) į MS Visual Studio 2005 platformą.
MS VISIO Enterprise Architects - palaiko ORM modeliavimą.