35
Přednáška 3 1GIS2 Databáze – vývoj, vlastnosti, přístupy ke zpracování informací, databázové modely, základy SQL FŽP UJEP

Přednáška 3

  • Upload
    meda

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Přednáška 3. 1GIS2 Databáze – vývoj, vlastnosti, přístupy ke zpracování informací, databázové modely, základy SQL FŽP UJEP. Historie SŘBD. papírové kartotéky uspořádávání dat podle různých kritérií zatřiďování nových položek operace prováděl přímo člověk - PowerPoint PPT Presentation

Citation preview

Page 1: Přednáška 3

Přednáška 31GIS2Databáze – vývoj, vlastnosti, přístupy ke zpracování informací, databázové modely, základy SQL

FŽP UJEP

Page 2: Přednáška 3

Historie SŘBD

• papírové kartotéky• uspořádávání dat podle různých kritérií

• zatřiďování nových položek

• operace prováděl přímo člověk

• správa v mnoha ohledech podobná současným SŘBD (vytváření indexů, třídění,…)

• strojové zpracování dat• sčítání lidu v USA (1890)

• paměťovým médiem děrný štítek

• elektromechanické zpracování

• používáno masově do poloviny 20. Století

• počítačové zpracování dat• překotný vývoj IT od 50. let 20. století

• původně univerzální používání strojového kódu procesorů neefektivní

• požadavek na jazyk vyšší úrovně pro zpracování dat

Page 3: Přednáška 3

Historie SŘBD

• 50. léta• souborově orientované systémy• implementačně závislé na konkrétním účelu

• 1959:• konference zástupců firem, uživatelů a amerického ministerstva obrany• požadavek na univerzální databázový jazyk• publikovaná první verze jazyka COBOL• po mnoho dalších let nejrozšířenějším jazykem pro hromadné zpracování dat

• 1965:• první síťové SŘBD

• 1971:• první implementace hierarchických SŘBD – IMS (firma IBM, využití v programu Apollo)

• 70. léta• teoretické studie relačních SŘBD (E.F. Codd)• na data pohlíženo jako na tabulky

Page 4: Přednáška 3

• souborově orientované• data uložena sekvenčně na paměťovém médiu (páska, děrný štítek, ...)

• nutnost znát fyzický formát uložení dat

• složité prohledávání

• nemožnost vytváření vazeb mezi záznamy

• jednoduchost modelu na pochopení

• spousta času uživatelů padla na „jak to udělat“ místo „co udělat“

• síťově orientované• ukazatele mezi objekty v databázi

• jednoduché modelování vazeb N:M (např. autor x kniha)

• poměrně rychlé sekvenční vyhledávání

• u složitějších vztahu vysoká režie

• velká omezení v případě změn datové struktury – nutnost pracných změn

historické modely SŘBD

Page 5: Přednáška 3

• hierarchicky orientované• skládá se z rodičů a potomků. Rodič je vždy jen jeden, ale může mít více potomků. • vyznačují se velkou redundancí dat a obtížně se v nich vyhledává• jediné snadné vyhledávací úlohy jsou ve vertikálním směru• komplikovanost modelování vazeb N:M• nutnost pracných změn v případě změny struktury• relativně vhodné pro organizační nebo skladové aplikace

historické modely SŘBD

• relační modely• viz dále

Page 6: Přednáška 3

• objektově orientované modely • dědičnost, komunikace formou zpráv na úrovni objektů

• modely pro zpracování nestrukturovaných dat – vektorové modely• zpracování rozsáhlých textových dat, deduktivní databáze, znalostní systémy

....

výhledy do budoucna

Page 7: Přednáška 3

• v současnosti drtivě nejpoužívanější koncept• 1969 – F. E. Cobb přišel s konceptem databází založených na matematickém aparátu relačních

množin a predikátové logiky

• schéma relace – název, počet sloupců, názvy sloupců...

• v databázích relace = definice struktury tabulky

• relací je i výsledek dotazu, můžeme s ním dále pracovat (vnořené dotazy...)

• pokud jsou v různých tabulkách sloupce stejného typu, pak tyto sloupce mohou vytvářet vazby mezi jednotlivými tabulkami.

• tabulky se naplňují vlastním obsahem - konkrétními daty

• kolekce více tabulek, jejich funkčních vztahů, indexů a dalších součástí tvoří relační databázi

• relační model přináší celou řadu výhod, zejména mnohdy přirozenou reprezentaci zpracovávaných dat, možnost snadného definování a zpracování vazeb apod...

• relační model klade velký důraz na zachování integrity dat.

• zavádí pojmy referenční integrita, cizí klíč, primární klíč, normální tvar, ...

• s relačními databázemi je úzce spojen pojem SQL (Structured Query Language), neboli strukturovaný dotazovací jazyk. Jeho základní model je obecně použitelný pro většinu relačních databází. Od svého vzniku prošel několika revizemi a poskytovatelé databázových produktů jej obohatili o různá lokální rozšíření. Tato rozšíření ale nejsou vzájemně kompatibilní

Relační SŘBD

Page 8: Přednáška 3

Relační SŘBD

Page 9: Přednáška 3

SQL – Structured Query Language

•standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích

•předchůdce jazyk SEQUEL (70. léta, IBM)

•1986: první standard SQL-86

•SQL-92, SQL-99 (zatím poslední přijatý standard), SQL-MM, ...

•Příkazy pro manipulaci s daty

•příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DML – Data Manipulation Language („jazyk pro manipulaci s daty“).

•SELECT – vybírá data z databáze, umožňuje výběr podmnožiny a řazení dat.

•INSERT – vkládá do databáze nová data.

•UPDATE – mění data v databázi (editace).

•DELETE – odstraňuje data (záznamy) z databáze.

•EXPLAIN PLAN FOR, SHOW, ...

•Příkazy pro definici dat

•Těmito příkazy se vytvářejí struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDL – Data Definition Language („jazyk pro definici dat“).

•CREATE – vytváření nových objektů.

•ALTER – změny existujících objektů.

•DROP – odstraňování objektů.

Page 10: Přednáška 3

SQL – Structured Query Language

•Příkazy pro řízení dat

•Do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCL – Data Control Language („jazyk pro ovládání dat“), někdy také TCC – Transaction Control Commands („jazyk pro ovládání transakcí“).

•GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům.

•REVOKE – příkaz pro odnětí práv uživateli.

•BEGIN – zahájení transakce.

•COMMIT – potvrzení transakce.

•ROLLBACK – zrušení transakce, návrat do původního stavu.

•Ostatní příkazy

•Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze přidávat uživatele, nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je zavislá na databázovém systému. V některých dialektech jazyka SQL jsou přidány i příkazy pro kontrolu běhu, takže lze tyto dialekty zařadit i mezi programovací jazyky.

Výhody: •nezávislé na databázi

•vysoce standardizované

Page 11: Přednáška 3

SELECT

Základní tvar příkazu je

SELECT seznam sloupců FROM jméno tabulky

příkaz je možno upřesňovat zadáním filtrovacích podmínek (uvozených klíčovým slovem WHERE),

pořadím řazení (ORDER BY), vyžádat si odstranění duplicitních řádek (DISTINCT), propojit několik tabulek pomocí

množinového operátoru (JOIN).

Jednoduché dotazy:

SELECT id, název

FROM kniha

SELECT *

FROM autoři

SELECT název, adr_ulice, adr_číslo, email

FROM nakladatelství

Page 12: Přednáška 3

SELECT

Názvy všech nakladatelství, která jsou z Brna:

SELECT název

FROM nakladatelství

WHERE adr_psč >= 60000

AND adr_psč <= 64400

Název a e-mail všech nakladatelství, která mají svou webovskou stránku:

SELECT název, email

FROM nakladatelství

WHERE web_stránka IS NOT NULL

Příjmení všech autorů, jejichž křestní jména začínají na písmeno 'T', a kteří nemají žádný titul:

SELECT příjmení

FROM autoři

WHERE jméno LIKE 'T%'

AND titul IS NULL

Page 13: Přednáška 3

SELECT

SELECT název, adr_ulice, adr_číslo, adr_město, adr_psč

FROM nakladatelství

WHERE adr_psč >=60000

AND adr_psč <=64400

ORDER BY adr_ulice, adr_číslo

Nejčastěji jsou hodnoty tříděny vzestupně (ASC), od nejnižší po nejvyšší. Pokud bychom chtěli provést třídění sestupně (inverzní), použijeme třídění v následujícím tvaru:

ORDER BY dle čeho třídit DESC

Page 14: Přednáška 3

SELECT

Výpis z více tabulek

Chceme-li získat informace z více tabulek, musíme v dotazu uvést jejich přirozené spojení. V příkazu SELECT přirozené spojení zapisujeme v části WHERE, a to zápisem ve tvaru (za klíč dosadíme primární a cizí):

tabulka1.klíč = tabulka2.klíč

kde TABULKA1 a TABULKA2 jsou tabulky, které přirozeně spojujeme. Pokud spojujeme tři a více tabulek, nemůžeme napsat TABULKA1.KLÍČ = TABULKA2.KLÍČ = TABULKA3.KLÍČ, ale musíme tuto rovnosti zapsat po více částech. Tento postup lze aplikovat na libovolný počet tabulek, jak bude vidět z příkladů.

tabulka1.klíč = tabulka2.klíč AND tabulka2.klíč = tabulka3.klíč

Názvy všech knih, jejichž výtisky byly vydány v roce 1998:

SELECT názevFROM kniha, výtiskWHERE kniha.id = výtisk.kniha_id  AND rok_vydání = 1998

Kteří autoři napsali knihu "Jak publikovat články"?

SELECT příjmení, jménoFROM autoři, kniha, napsané_knihyWHERE kniha.id = napsané_knihy.kniha_id  AND napsané_knihy.autor_id = autoři.id  AND kniha.název LIKE 'Jak publikovat články'

Page 15: Přednáška 3

SELECT

Názvy všech knih, které napsal Alois Jirásek:

SELECT názevFROM kniha, autoři, napsané_knihyWHERE kniha.id = napsané_knihy.kniha_id  AND autoři.id = napsané_knihy.autor_id  AND jméno = 'Alois'  AND příjmení = 'Jirásek'

Názvy všech děl, která vydalo nakladatelství 'Iota':

SELECT kniha.názevFROM kniha, výtisk, nakladatelstvíWHERE kniha.id = výtisk.kniha_id  AND výtisk.nakladatel_id = nakladatelství.id  AND nakladatelství.název = 'Iota'

Ve kterých nakladatelstvích byla v roce 1996 vydána díla autora Robina Cooka?

SELECT nakladatelství.názevFROM nakladatelství, výtisk, kniha, napsané_knihy, autořiWHERE nakladatelství.id = výtisk.nakladatel_id  AND výtisk.kniha_id = kniha.id  AND kniha.id = napsané_knihy.kniha_id  AND napsané_knihy.autor_id = autoři.id  AND nakladatelství.rok_vydání = 1996  AND autoři.jméno = 'Robin'  AND autoři.příjmení = 'Cook'

Page 16: Přednáška 3

SELECT

Modifikátor DISTINCT - zamezí výstupu duplicitních řádků ve výsledku.

SELECT DISTINCT nakladatelství.názevFROM nakladatelství, výtisk, kniha, napsané_knihy, autořiWHERE nakladatelství.id = výtisk.nakladatel_id  AND výtisk.kniha_id = kniha.id  AND kniha.id = napsané_knihy.kniha_id  AND napsané_knihy.autor_id = autoři.id  AND nakladatelství.rok_vydání = 1996  AND autoři.jméno = 'Robin'  AND autoři.příjmení = 'Cook'

Modifikátor TOP – omezí počet řádků (záznamů) ve výsledku (u některých DB LIMIT)

SELECT TOP 5 příjmení, jménoFROM kniha, autoři, napsané_knihyWHERE kniha.id = napsané_knihy.kniha_id  AND napsané_knihy.autor_id = autoři.id  AND kniha.název = 'Jak publikovat články'ORDER BY příjmení, jméno

Modifikace záhlaví sloupců

jméno_sloupce AS alias_sloupce

SELECT kniha_id AS číslo,

název AS dílo

FROM kniha

Page 17: Přednáška 3

využití relačních SŘBD v GIS•k formulování atributových i prostorových dotazů se často používá standardizované SQL nebo jeho upravený dialekt – viz nápověda k ArcGIS

•veškerá výrazová logika použitá v SQL (priority operátorů, logické operátory) je plně využitelná při formulování dotazů v GIS

•atributová data mohou být propojována pomocí relací (číselníky, seznamy, externí data, ...) => úspora místa, dodržení tzv. normálních forem, možné kontroly integrity dat

•v případě že SŘBD má možnost ukládat přímo datové typy geometrie a má funkce pro práci s nimi, nemusíme rozlišovat mezi polohovými a popisnými daty a většinu vektorově orientovaných operací provádět přímo v relační databázi, pouze interpretaci výsledků je potom nutné zobrazovat v GIS sw

•Oracle Spatial, ArcSDE, PostgreSQL (+PostGIS), omezeně i MySQL

•standardy OGC Simple Feature Specification, SQL/MM Spatial

vyhledej kraj s nejmenším počtem sousedů

vyhledej všechny nemocnice do 30 km od ...

zobraz všechny lesy ležící v ústeckém kraji...

...

Page 18: Přednáška 3

ukázka využití relačních SŘBD v GISselect nazev,area,the_geom from okresy order by nazev limit 10

select nazev,

area,

area2d(the_geom) as rozloha,

astext(centroid(the_geom)) as stred,

astext(the_geom) as geometrie_citelne

from okresy

order by nazev limit 10

Page 19: Přednáška 3

ukázka využití relačních SŘBD v GISselect nazev,area,the_geom from okresy order by nazev limit 10

select nazev,

area,

area2d(the_geom) as rozloha,

astext(centroid(the_geom)) as stred,

astext(the_geom) as geometrie_citelne

from okresy

order by nazev limit 10

Page 20: Přednáška 3

ukázka využití relačních SŘBD v GIS

Page 21: Přednáška 3

ESRI Geodatabase

Page 22: Přednáška 3

Feature class je množina prvků shodného geometrického typu (bod, linie nebo polygon) a atributů vyjádřených ve shodném souřadnicovém systém. Například všechny restaurace ve městě mohou být uloženy v geodatabázi jako jeden feature class. Geometricky by byly restaurace na mapě reprezentovány jako bod, jehož souřadnice by byly vyjádřeny ve zvoleném souřadnicovém systému. V „neprostorové“ tabulce by pak byly pro každou restauraci uloženy informace o její otevírací době, kapacitě, atd. Prvkové třídy mohou v geodatabázi existovat jako samostatně stojící prvkové třídy, nebo mohou být součástí nějakého  feature dataset.

Feature dataset je kolekce prvkových tříd (feature classes). Všechny prvkové třídy v rámci jednoho feature dataset musí mít shodný souřadnicový systém. Feature dataset primárně slouží k uložení prvkových tříd, které mezi sebou mají topologické vztahy, jako například sousedství (přilehlost). Pro možnost definovat použití topologického pravidla mezi prvkovými třídami, musí být tyto třídy součástí jednoho feature dataset.

„Neprostorové“ tabulky obsahují atributová data, která mohou být asociována s prvkovými třídami. Tyto tabulky obsahují pouze atributová data, neobsahují geometrické popisy prvků – což je odlišuje od tzv. feature class tables, které obsahují alespoň jeden sloupec s geometrickým popisem prvků.

Page 23: Přednáška 3

Další prvky personal GDB

Domains - domény. Domény zabraňují chybám při vstupu dat do geodatabáze. Rovněž slouží ke kontrole hodnot atributů v existujících datech. Domény definují množinu přípustných hodnot, které lze do atributu vložit. Doména je definována buď výčtem hodnot (coded value domain) či rozsahem (range domain).

Topology - prostorové vztahy mezi prvky jsou definovány pomocí topologie (topology). Definování topologických pravidel je nezbytné, pokud například modelujeme povodí řek. Pak je žádoucí, aby na sebe jednotlivé prvky (vodní toky) této sítě navazovali apod, a tuto návaznost a jiné vlastnosti lze právě zajistit definováním odpovídajících topologických pravidel.

ArcGIS obsahuje přes 20 topologických pravidel, pomocí kterých je možné modelovat prostorové vztahy mezi prvky a „vynutit si“ tak jejich dodržení. Všechny prvkové třídy podílející se na geodatabase topology (jinými slovy – na prvky těchto prvkových tříd se vztahuje nějaké to topologické pravidlo) musí být obsaženy ve shodném feature dataset.

Page 24: Přednáška 3

Další prvky personal GDB

Geometric network - geometrická síť. Asi není obtížné představit si obrazně silniční síť například na území města Plzně. Pomocí geodatabáze můžeme tuto situaci modelovat. V takovém případě by náš model obsahoval bodové téma (křižovatky, …) a liniové téma (silnice) v podobě několika feature classes shromážděných společně v jednom feature dataset. Takováto geometrická síť nám pak umožní odpovědět na otázky jako:

•Jaká je nejkratší cesta z bodu A do bodu B (mezi dvěma křižovatkami)?

•Jak dlouhá je cesta z místa M1 do místa M2?

•a další.

… a další (raster data, relation ship classes)

Page 25: Přednáška 3

• Personal geodatabase je relační databáze, která ukládá geografická data.

• Rozlišujeme dva typy formátu ESRI geodatabase - personal a multiuser.

• Klíčovými komponentami personal geodatabase jsou – Feature class, Feature dataset a Nonspatial tables.

• V geodatabázi můžeme definovat topologii (topology) a vztahy mezi prvky (relationship).

• V geodatabázi mohou být vytvořeny dva typy rastrových objektů – raster dataset a raster catalog. Multiuser geodatabase přímo ukládá rastrová data, zatímco personal geodatabase se na rastry odkazuje.

Shrnutí

Page 26: Přednáška 3

Benefity plynoucí z používání GDB

• všechna data organizována v rámci jedné databáze (složky)

• každá feature class má definovaný souřadnicový systém

• subtypy a domény zajišťují integritu atributů

• topologie odhalí možné chyby v datech

Page 27: Přednáška 3

Benefity plynoucí z používání GDB• Centralizovaný management GIS dat

• Spojitá reprezentace prvků (žádné mozaiky)

• Pokročilá geometrie prvků

• Subtypy prvků

• Flexibilní topologie postavená na pravidlech

• Přesná editace dat

• Geometrické sítě

• Verzování

• Podpora UML

• XML výměna data

• „Přerušené“ editování

Page 28: Přednáška 3

Topologie

Topologie modeluje prostorové vztahy mezi prvky

• definuje platné prostorové vztahy v rámci jedné feature class nebo mezi více feature classes

• vytváří se prvky v rámci jedné feature class

Page 29: Přednáška 3

Časté chyby v topologii

!!Chyby v topologii vedou k chybným výsledkům analýz!!

Page 30: Přednáška 3

Ochrana vzájemných vztahů mezi prvky pomocí pravidel

ArcGIS obsahuje 20 topologických pravidel

Jak vybrat to správné topologické pravidlo??

Page 31: Přednáška 3

Chyby v topologii a jejich oprava

Page 32: Přednáška 3

Chyby v topologii a jejich oprava

Page 33: Přednáška 3

Subtypy a domény

Page 34: Přednáška 3

Subtypy a domény

Page 35: Přednáška 3

Subtypy a domény

Subtypy:

• kontrola přidaného prvku

• přiřazení defaultních hodnot

• urychlení editace

• kontrola dalšího chování prvku

Domény:

• prevence chyb ve vstupu dat

• kontrola atributů v již existujících datech