pro uchování popisných dat se v GIS používá separátního datového modelu, který vychází ze standardních modelů uchování dat v digitální podobě.
Nejdříve trochu pojmů.
Databáze je sdílená kolekce logicky uspořádaných dat (a popisu těchto dat - metadat), která je navržena tak, aby splňovala potřeby uživatele.
Systém řízení báze dat (SŘBD, případně DataBase Management System - DBMS) je softwarový systém, který umožňuje definovat, vytvářet a udržovat databázi a který též poskytuje řízený přístup k této databázi.
Data Definition Language (DDL) je jazyk pro definování datových struktur a způsobu jejich přístupu k nim.
Data Manipulation Language (DML) je jazyk pro manipulaci s datovými strukturami.
Standard Query Language (SQL) je standardizovaný dotazovací jazyk pro práci s daty uloženými v databázi. Jeho součástí je jak DDL, tak i DML.
Ukázka syntaxe SQL:
SQL-DDL:
CREATE TABLE jméno_tabulky
(jméno_sloupce datový_typ [NULL | NOT NULL] [,...]);
INSERT INTO jméno_tabulky
VALUES (
SQL-DML:
SELECT [DISTINCT|ALL] {*|[sloupec_vyraz [AS nove_jmeno] [,...]}
FROM tabulka [alias] [,...]
[WHERE podminka]
[GROUP BY seznam_sl] [HAVING podminka]
[ORDER BY seznam_sl]
Více viz předmět KIV/DB2 (http://www-kiv.zcu.cz/~otta/vyuka/db2/), případně dokumentace k SQL k najití na WWW.
Typ (třída) entity je třída entit se stejnými charakteristikami, například krajská města. Lze si ji představit jako tabulku ().
Entita je individuální element reprezentující reálný objekt, například Plzeň, Karlovy Vary, Pardubice… . Představme si je jako řádky v té tabulce ().
Transakce je posloupnost operací nad objekty báze dat, která realizuje jednu ucelenou operaci z pohledu uživatele. Pro názornost uveďme jako příklad transakce převod peněz z jednoho bankovního účtu na druhý.
Zadání: převeďte z účtu X 5000 Kč na účet Y.
Postup A:
(i) | Zahaj transakci |
(ii) | Z účtu X odečti 5000 Kč |
(iii) | ----- |
(iv) | na účet Y přičti 5000 Kč |
(v) | Ukonči transakci |
Postup B:
(i) | Zahaj transakci |
(ii) | Na účet Y přičti 5000 Kč |
(iii) | ----- |
(iv) | Z účtu X odečti 5000 Kč |
(v) | Ukonči transakci |
Je zřejmé, že pokud by v bodě (iii) došlo k přerušení transakce - např. vypadne síť - pak v případě A tratí peníze klient, v případě B tratí banka.
Ani jeden případ není přípustný a proto se celá transakce eviduje a pokud v jejím průběhu dojde k problému (např. k jejímu přerušení), nedorazí příkaz (v) - ukonči transakci a dojde k tzv. "roll-back", tj. ke zrušení celé transakce, resp. její již uskutečněné části.
Dlouhá transakce je již pojem používaný hlavně ve spojení s geografickými daty. Jedná se o transakci, která je z hlediska strojového času velmi dlouhá, většinou proto, že je závislá na aktivitě člověka.
Zatímco převod peněz z banky do banky je většinou v systému záležitost milisekund (nepleťme si to ovšem s dobou, kterou si banka na provedení převodu vyžádá, pohybujeme se v oblasti IT, nikoliv úřednické ;o), pak například editace tvaru hranic města může zabrat minuty až hodiny.
I tak ale musí jít z hlediska ostatních uživatelů databáze o ucelenou operaci, což znamená, že v DB můžeme vidět pouze dva stavy, počáteční - tvar města před začátkem editace a koncový - tvar města po uložení editace. Všechny ostatní stavy jsou ukládány mimo databázi a žádný z uživatelů (kromě editujícího) je nevidí.
Možná spojení mezi entitami - vztahy (relace):