Tuesday, June 21, 2011

SW: Konceptualny datovy model

Na data existuje viac urovni pohladu. Najvyssia uroven je uroven analytickych konceptov, kam patri aj konceptualna schema a teda konceptualny datovy model. Nizsia uroven pohladu je uroven implementacnych konceptov kam patri databazove schema. Ciastocne sem patri uloziste, ako mnozina suborov, hoci to viac zapada do fyzickej urovne pohladu.

Konceptualny pohlad sa zaobera modelovanim reality a nie je ovplyvnena buducimi prostriedkami riesenia (E-R model, Class diagram). Je najvyssou urovnoiu abstrakcie.

Logicky pohlad sa vztahuje ku konkretnemu datovemu modelu a pouziva jeho konstrukcne dotazovacie a manipulacne prostriedky. Modeluje entity ako struktury v konkretnom logickom modele. Konceptualny model tu dostava konkretnu podobu, ale efektivna implementacia nas stale netrapi. Patri sem relacny, objektovo-relacny a objektovy model.

Fyzicky pohlad sa pohybuje na nizsej urovni, ako logicky pohlad a jedna sa o fyzicke ulozenie dat. Patria sem sekvencne subory, indexy, clustery ... Programator je od tejto vrstvy odstieneny DBMS systemom. Jedna sa vlastne o implementaciu logickeho modelu v specifickych podmienkach tak, aby manipulacia nad datami bola rychla, zabezpecena a skalovatelna.

Konceptualne modelovanie sa objavilo v 70. rokoch ako prostriedok, ktory umoznoval spolocne chapanie objektov aplikacie uzivatelmi a programatormi. Integroval do seba rozne stupne pohladu. Vysledkom konceptualneho modelu je vstup pre navrh implementacie. Prikladom takehoto modelu moze byt E-R diagram, ako na obrazku vpravo.

Modrou farbou su oznacene entity a atributy entit. Cervenou farbou su vztahove typy a zelenou su integritne obmedzenia, identifikatory a nasobnosti ucasti.

Entita je objektom realneho sveta, ktory modelujeme.
Entitny typ popisuje skupinu objektov rovnakeho typu.
Slaby entitny typ je taky typ, ktoreho identifikujeme pomocou parcialneho kluca a kluca vlastnika.
ISA hierarchia je hierarchia entitnych typov. Identifikacny kluc vlastni len nadtyp, podtyp dedi atributy nadtypu.
Kardinalita znaci pomer vztahov 1:1, 1:N, M:N a parcialita znaci povinnost ucastnit sa vztahu - teda, ci entita musi alebo moze byt obsiahnuta vo vztahu.

Takze, v priklade ma entita Kino, atributy Adresa a Jmeno-v. Identifikator entity Kino je Nazev-k. Plati, ze instancia datoveho typu je jednoznacne urcena, ak existuje identifikator a ten existuje vzdy. Pokial nie je explicitne vybrany, tak identifikatorom su vsetky atributy. Kardinalita M:N v priklade hovori, ze v N kinach mozu hrat M filmov o nejakom case.

 Kardinalita one-to-many. N knih, alebo ziadne moze byt pozicanych jednemu studentovi. Ziadna kniha nemoze byt pozicana viac ako jednemu studentovi. Oba zapisy vyjadruju to iste.


Kardinalita one-to-one vyjadruje, ze 1 automobil ma 1 technicky preukaz. Kardinalita je to druhe cislo v zatvorke, to prve je parcialita a ta vyjadruje, ze obe entity musia vstupit do vztahu. Teda, nemoze existovat automobil, ktory nema technicak.

N pacientov ma M lekarov. Parcialita je 0, takze moze existovat niekto, kto nema ziadneho lekara a zaroven moze existovat lekar bez pacienta.

Slaby entitny typ je taky typ, ktory je spoluidentifikovany zvonku, vsetkymi identifikatormi entit, ktore vstupuju do vztahu. Identifikator automobilu v tomto pripade bude SPZ, Medzinarodny kod. Kardinalita slabeho ent. type je vzdy 1:1.

Identifikacna zavislost oznacuje zavislost entity na existencii urcujucej entity. Implikuje existencnu zavislost, co int. obm. zaistujuce existenciu identifikacneho vlastnika. V pripade pripojky musi existovat byt a pripojka ma identifikator Podlazi a Adresa.



Prienikovy entitny typ je zobrazeny vpravo. Vztah s kardinalitou M:N sa da jednoducho previest na dva vztahy s kradinalitou 1:N a zavednim slabeho prienikoveho entitneho typu, ktorym je v tomto pripade Program.











Rekurzivny binarny vztah je dalsia zaujimava ficura. Do rekurzivneho vztahu vstupuju entity rovnakeho typu. Zamestnanec je podriadeny jednemu alebo ziadnemu zamestnancovi a naopak, zamestnanec ma niekolko alebo ziadneho podriadenych. Je dolezite rozlisovat role v takychto zapeklitostiach ... alebo sa im vyhybat ;). A to sme mohli spravit tak, ze by sme pouzili ISA vztah a zamestnancov v ramci ISA vztahu rozdelili.


 ISA vztah rozsiruje relacny model o dedicnost. Osoba je nadradenou entitou od ktorej podriadene entity dedia ako atributy, tak aj vztahy a integritne obmedzenia. Podriadene entity su identifikovane vyhradne predkom a teda vsetky entity v hierarchii zdielaju jeden identifikator. A teda ako ucitel, tak student a zamestnanec je identifikovany rodnym cislom. V ISA vztahu musime vediet identifikovat covering a overlap constraint. Teda, moze byt osoba zaroven ucitelom aj studentom (overlap)? A musi byt osoba vzdy student/ucitel/zamestnanec (covering)?