Lekce 2 - 1 Přehled metodiky vývoje GIS aplikací (vytvořeno pro seminář na FIMU: Vybrané kapitoly z GIS, podzimní semestr) Lekce 4: Datové modely Úrovně datových modelů.................................................................................................................... 2 Entita ................................................................................................................................................... 4 Typ entity............................................................................................................................................. 4 Entity-relationship model (ERM)......................................................................................................... 4 Příklady ERD......................................................................................................................................... 5 Lekce 2 - 2 Úrovně datových modelů Datové modely jsou využity pro modelování reality. V rámci vývojového cyklu definují datový obsah datových úložišť - databází. Modely jsou vytvářeny ve dvou úrovních – konceptuální model a logický model. Konceptuální datový model obsahuje entity, atributy a jejich typy a vztahy mezi entitami. Logický datový model obsahuje tabulky, sloupce a jejich typy. Některé sloupce tvoří primární klíče (tyto jsou obvykle generované ze sekvence), cizí klíče, unikátní klíče a business klíče (speciální případ unikátního klíče, pomocí kterého je entita dostupná z okolí systému). Vazby mezi tabulkami jsou realizovány pomocí cizích klíčů a v diagramech znázorněny orientovanými asociacemi. Všechny prvky obou typů modelů mají své definice a jsou popsány. Oba modely jsou znázorněny jako diagramy tříd s atributy a se vztahy mezi třídami. Dále v tabulce jsou uvedeny vybrané prvky diagramu konceptuálního datového modelu (ERD). Objekt Definice / Použití Entitaclass Příklady Entita - atribut1 :typ atributu1 - atribut2 :typ atributu2 Entita popisuje datový objekt konceptuálního datového modelu. Obsahuje atributy a jejich typy. Vztah mezi entitamiclass Příklady Entita 1 Entita 2 1..* 1 Vztah mezi entitami je znázorněn obecnou asociací. Asociaci je přiřazena kardinalita vztahu. V případě potřeby je možné použít speciální typy asociací, jako jsou generalizace, agregace nebo kompozice. Kardinalita asociace je vyjádřena řetězcem, který určuje, kolik instancí entity může vstupovat do vztahu. Řetězec může nabývat následujících hodnot: „*“ nebo „0..“ – do vztahu vstupuje žádná, jedna nebo mnoho instancí „0 .. n“ – do vztahu vstupuje žádná, jedna nebo více instancí entity, ale maximálně n instancí „n“ – do vztahu vstupuje přesně n instancí „n .. *“ – do vztahu vstupuje n nebo více instancí Konceptuální datový model Entity datového modelu jsou modelovány třídami s atributy. Typy atributů jsou definovány explicitně modelovanými datovými typy (viz dále). Lekce 2 - 3 class Model tříd «třída» Objekt 1 - Atribut 1 :long - Atribut 2 :int - Atribut 3 :double - Atribut 4 :char «třída» Objekt 2 - Atribut 1 :long - Atribut 2 :long - Atribut 3 :long - Atribut 4 :long - Atribut 5 :long - Atribut 6 :long «třída» Objekt 3 - Atribut 1 :char - Atribut 2 :char - Atribut 3 :char 1 0..* 0..* 1..* Logický datový model Logický datový model je odvozen z konceptuálního datového modelu. Obsahuje tabulky a vazby mezi nimi, sloupce tabulek a omezení – primární klíč, not null hodnoty, unikátní hodnoty, a cizí klíče. Datové typy sloupců jsou převzaty z datových typů atributů entit. Datové typy Všechny atributy entit a dalších prvků datového modelu jsou striktně popsány datovými typy. Datový typ je prvek typu class, stereotypu dataType. Pravidla, která splňuje atribut daného datového typu, jsou popsána buď v popisu (notes) datového typu, nebo v dokumentech, které jsou připojeny k datovému typu (pomocí links nebo files). Příklad dokumentace datového typu Popis datového typu RodneCislo_T Typ DataType Lekce 2 - 4 Package Datove typy Popis Řetězec, délka 9 až 10 znaků, obsahuje pouze číslice. Formát a omezení String 10 simpleNNType, 9-10 Diagram datového typu RodneCislo_T class Datove typy «dataType» RodneCislo_T constraints {String 10} {simpleNNType, 9-10} notes Řetězec, délka 9 až 10 znaků, obsahuje pouze číslice. Kontrola podle popisu v připojeném souboru - příloha č. 2 Kontrola rodného čísla a evidenčního čísla Entita Entita je libovolný objekt (osoba, zvíře, věc či jev) reálného světa, který je zachycen v datovém modelu. Entita musí být rozlišitelná od ostatních entit a existovat nezávisle na nich. Typ entity Typem entity nazýváme množinu objektů stejného typu, charakterizovaných názvem typu a popsaných pomocí jejich vlastností – atributů. Jednotlivé entity nazýváme také výskyty nebo instancemi objektů entitního typu. Entity-relationship model (ERM) ERM se v softwarovém inženýrství používá pro abstraktní a konceptuální znázornění dat. Entityrelationship modelování je metoda datového modelování, která vytváří jeden z typů konceptuálních schémat či sémantických datových modelů systému (obvykle relační databáze) a požadavků na něj stylem shora dolů. Diagramy vytvořené pomocí této metody se nazývají entity-relationship diagramy, ER diagramy nebo také zkráceně pouze ERD. Konečnou podobu dostalo entity relationship modelování v práci Petera Chena z roku 1976 (Peter Chen (March 1976). "The Entity-Relationship Model - Toward a Unified View of Data". ACM Transactions on Database Systems 1 (1): 9-36). Více například na http://cs.wikipedia.org/wiki/Entity-relationship_model. Lekce 2 - 5 Příklady ERD Entity a vztahy cd Entity a vztahy entita 1 entita 1::podtyp 1 entita 1::podtyp 2 entita 4 entita 5 entita 6 1 vztah mezi entitou 1 a entitou 4 kadinality 1:n 1..* 0..1 vztah kardinality 1:1 nepovinný ze strany entity 4 1 1..* vztah kardinality m:n mezi podtypem 2 entity 1 a entitou 6 1..* Entita a atributy cd Entita a atributy Entita + nepovinný atribut 1: int + povinný atribut 2: char = not null Obecný model ploch cd Příklad 1 - obecný model ploch plocha hranice plochy definiční bod plochy lomená čára, která tvoří hranici jedné nebo dvou ploch +obsahuje 1 +leží v 1 +je tvořena 1..2 {ordered} +tvoří 1..* Lekce 2 - 6 Využití území cd Příklad 2 - využití území (landuse) plocha využití území definiční bod bloku území hranice využití území hranice využití území::hranice parcely hranice využití území::liniový prvek polohopisu hranice využití území::liniový prvek polohopisu::obvod budovy definiční bod bloku území::bodový popisný prvek definiční bod bloku území:: bodový popisný prvek:: definiční bod budovy 1 1 1..2 {ordered} 1..* Příklad konceptuálního modelu pro podporu investic – bez atributů class Konceptuální DM Typ ťarchy Budova Druh pozemku Infaštruktúra Kancelárie Katastrálne územie Kontakt na správce systému Kraj Nehnuteľnosť ObecOkres Parcela Areál Príloha Skupina štatistických údajov Typ infraštruktúryTyp ochranného pásma Typ prílohy Typ vlastnosti areálu Typ vybavenia budovy Typ štatistického údaja Vlastnosť areálu Vybavenie budovy Štatistický údaj 0..* 0..* 1..* 0..1 1..* 0..1 1..* 0..* 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..* 1..* 0..1 1..* 0..1 0..* 0..* 1..*0..1 1..* 0..1 1..*0..1 1..* 0..1 1..* 0..1 0..* 0..* 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 0..* 0..* Lekce 2 - 7 Příklad konceptuálního modelu pro podporu investic – bez atributů class Konceptuální DM s atributy entit Infaštruktúra - vzdialenosť :char - hodnota veličiny :char Typ infraštruktúry - kód :int - názov :char - veličina :char - jednotka :char Nehnuteľnosť - stav :int - poloha :char (centrum; širšie centrum; periféria) - vzdialenosť od obytnej zóny :char (do 50m; 50-300m;nad 300m) - zóna lokalizácie :char (mestská; vidiecka) - územný plán :char (áno; nie; plánovaný) - zóna v rámci ÚPD :char (priemyselná; zmiešaná; obytná; obchodná; rekreačná; poľnohospdárska; iná) - druh nehnuteľnosti :char (zelená lúka; zastavané územie; IP) - počet budov :int - počet pozemkov :int - celková nezastavaná plocha :int - nezastavaná plocha :int - zastavaná plocha :int - disponibilná plocha :int - možná expanzia plochy :int - vstupný objekt :boolean - oplotenie :boolean - druh vlastníctva :char (právnická osoba; fyzická osoba; súkromá osoba; SPP; mesto; štát; iné) - počet vlastníkov :int - typ vztahu :char (predaj; prenájom; oboje; iný) - typ :char (celé; čiastočné; oboje; iné) - cena pri predaji za m2 :int - cena pri predaji :int - ročná cena pri prenájme za m2 :int - ročná cena pri prenájme :int - definičný bod :point_geometry Katastrálne územie - kód :int - názov :char Obec - kód :int - názov :char Okres - kód :int - názov :char Kraj - kód :int - názov :char Kontakt na správce systému - zodpovedný za nehnuteľnosť :char - telefon/fax :char - mobil :char - e-mail :char - webové stránky :char Areál - typ areálu :char (pozemok; priemyselný areál; zariadenie cestovného ruchu) - parcelná čísla :char - bonita pôdy :int - územné rozhodnutie :boolean - štúdia EIA :boolean - vyňatie z pôdneho fondu :boolean - súčasné využitie :char - cena areálu predaj od :int - cena areálu predaj do :int - cena areálu prenájom od :int - cena areálu prenájom do :int - ostatné informácie :char Budova - adresa budovy :char - druh budovy :char (administratívna; výrobná hala; sklad; iná) - účel budovy :char (ľahký priemysel; ťažký primysel; sklady; obchodné priestory; iný) - dátum výstavby :date - dátum rekonštrukcie :date - počet podlaží :int - svetlá výška :int - základné rozmery (l x w x h) :char - obostavaný priestor :int - úžitková plocha :int - priemyselná plocha :int - skladová plocha :int - kancelárska plocha :int - obytná plocha :int - ostatné plochy :int - bremená/obmedzenia :char (záťažové obmedzenia; výrobné obmedzenia; hlukové obmedzenia; emisné obmedzenia; iné) - technický stav budovy :char (nová; veľmi dobrý; viditeľne poškodená; statické problémy; iné) - cena budovy predaj od :int - cena budovy predaj do :int - cena budovy prenájom od :int - cena budovy prenájom do :int - súčasné využitie :char - ostatné informácie :char Kancelárie - klasifikácia kancelárskych priestorov :char - plocha kancelárií :int - dostupnosť služieb :char - súčasné využitie :char - ostatné informácie :char Druh pozemku - kód :int - názov :char Parcela - ID v CSKN :int - skupinové číslo parcely :int - kmenové číslo parcely :int - podlomenie :int Príloha - príloha :BLOB Typ prílohy - kód :int - názov :char Typ vybavenia budovy - kód :int - názov :char - veličina :char - jednotka :char Vybavenie budovy - hodnota veličiny :char Typ ochranného pásma - kód :int - názov :char Typ ťarchy - kód :int - názov :char Typ vlastnosti areálu - kód :int - názov :char - veličina :char - jednotka :char Vlastnosť areálu - hodnota veličiny :char Skupina štatistických údajov - kód :int - názov :char Typ štatistického údaja - kód :int - názov :char - veličina :char - jednotka :char Štatistický údaj - hodnota veličiny :char 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..* 1..* 0..1 1..* 0..* 0..* 0..* 1..* 0..1 1..* 0..1 1..* 0..1 0..* 0..* 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 1..* 0..1 0..* 0..* 0..* 0..* 1..* 0..1 1..* 0..1 1..* 0..11..* 0..1 1..* 0..1