Aplikace počítačů v provozu vozidel
9
2 Databázové systémy Rozvoj IS je spjatý s rozvojem výpočetní techniky, především počítačů. V počátcích se zpracovávaly velké objemy informací na jednom počítači, tomuto způsobu říkáme systém hromadného zpracování dat nebo agendové zpracování. Data se zapisovaly do připravených formulářů, dále se přepisovaly ručně na záznamové médium (děrné pásky, později diskety), pak se teprve na centrálním počítači primárně a sekundárně zpracovány. Výsledkem je vytištění výstupních sestav (většinou v papírové podobě) a zpětná distribuce k prvotnímu pořizovateli. Celková doba takovéhoto zpracování byla velmi dlouhá, proto nebylo možno zpracovávat dynamické informace. Typickým příkladem byly měsíční statistické sestavy (mzdy, uzávěrky). Programy pro zpracování byly jednoúčelové bez možnosti změn výstupů, realizované byly v nejjednodušších jazycích (Cobol a pod.). Pro odstranění těchto nevýhod bylo nutné oddělení dat od programu. Data jsou uložena v bázi dat (BD) a programy si z ní vybírají potřebné informace, této části se říká systém řízení báze dat (SŘBD). Počátky těchto systémů spadají do 60. let a proti předchozímu stavu přestavují kvalitativní skok. Tato změna byla umožněna přechodem od sálových počítačů k počítačům stolním a později osobním. Databázový systém vzniká spojením systému řízení báze dat a vlastní báze dat.
2.1 Základní pojmy Systém řízení báze dat je možno chápat jako soubor procedur a datových struktur, které zajišťují nezávislost databázových aplikací na fyzickém uspořádání paměťových struktur počítače. SŘBD podporuje tvorbu formulářů (vstupní a výstupní obrazovky, formuláře - Forms) pro zadávání dat, výstupních sestav (přehledy, uzávěrky - Reports) a aplikačních programů. Další pojmy se kterými operují databázové systémy jsou: Data jsou údaje, které jsou předem určeným způsobem uspořádány v různých formách (např. tabulky, grafy, akustické signály a pod.). Jsou to určitým způsobem uspořádané informace o popisovaných objektech v atributech. Z těchto dat můžeme získat požadované informace pro řídící procesy. Záznam (Record) je souhrn údajů o daném popisovaném objektu (atributu), které jsou uloženy v položkách (polích - Field). Jako příklad mohou sloužit informace o motorovém vozidle: Struktura záznamu je dána jednotlivými atributy: typ vozidla, modifikace typu, datum výroby, SPZ, příjmení majitele, jméno majitele. Data pak tvoří obsah jednotlivých položek záznamu pro konkrétní motorové vozidlo , např.: Škoda Felicie, LX, 10.1999, OVX 19 90, Novák, Josef. Datové typy (type) určují typ údaje v položce. Nejčastěji se používají typy:
Aplikace počítačů v provozu vozidel
10
Text - textový řetězec složený z alfanumerických znaků, Číslo - číselný údaj o předem stanovené max. délce a počtu desetinných míst, Logický typ - dvoustavová hodnota typu Ano/Ne, True/False apod., Datum - položka pro záznam datumu a času Memo - položka pro textové řetězce libovolné délky. Označení konkrétních typů se liší podle konkrétního databázového systému.
2.2 Architektura databází Centrální architektura U databázového systému tohoto typu je báze dat i systém řízení báze dat v centrálním počítači. Komunikaci s uživateli zprostředkovávají terminály na pracovištích. Po síti se přenášejí vstupní údaje z terminálu do centrálního počítače a tam se zpracovávají centrálním programem. Tím, že data se zpracovávají na centrálním počítači, kde může probíhat i více úloh, mohou mít odezvy na dotazy určité zpoždění.
Obr. 2.1: Centrální architektura.
Architektura file-server Tento typ architektury souvisí s rozšířením PC a lokálních sítí. Data v BD jsou umístěna na počítači pracujícím jako file-server a jsou sdílena pro jednotlivé aplikace a SŘBD na jednotlivých počítačích. Vzhledem k tomu, že k datům může přistupovat více aplikací, musí být zajištěna ochrana používaných záznamů. Komunikace probíhá podle následujícího postupu: uživatelský dotaz SŘBD zpracuje dotaz a odešle požadavek na DB, file-server odesílá bloky dat na lokální počítač, kde jsou data dále zpracovávána SŘBD výsledky se zpravidla uloží na PC, zobrazí na monitoru , ev, vytisknou jako sestava.
Aplikace počítačů v provozu vozidel
11
Obr. 2.2: Architektura file-server.
Architektura klient-server Tato architektura je umožněna rozvojem sítí LAN (lokálních sítí) spojující osobní počítače (PC) a databázový server, stejně jako v předchozím případě. Na PC běží aplikace, které předávají dotazy na datový server (většinou pomocí dotazovacího jazyka), který je zpracovává a potřebné výsledky předává zpět na PC. Proto je server nejvíce zatíženým počítačem. Průběh je následující: aplikace na PC připraví dotaz na data v podobě SQL a odešle jej na server, server zpracuje dotaz, výsledek dotazu je odeslán na PC, kde jej aplikace převede do výstupní podoby. Tato architektura snižuje požadavky na množství dat pohybujících se v síti, proto vyhovuje i v rozsáhlých aplikacích od renomovaných firem.
Obr. 2.3: Architektura klient-server. Architektura distribuovaných databází V tomto systému jsou data rozložena v několika počítačích. Navenek se tváří jako jediná veliká datadáze. Je charakterizovaná třemi vlastnostmi: Transparentnost - klientovi připadá, že data jsou zpracovávána na jediném serveru v síti, není specifikováno místo uložení dat, to řídí SŘBD. Autonomnost - s každou částí BD je možno pracovat samostatně , data jsou spojována dynamicky podle potřeby SŘBD.
Aplikace počítačů v provozu vozidel
12
Nezávislost na typu sítě - architektura podporuje různé typy sítí a jejich vzájemné propojení. Pro komunikaci se nejčastěji používá strukturovaný dotazovací jazyk SQL.
Obr. 2.4: Architektura distribuovaných databází.
2.3 Modely datových struktur Model dat je souhrn pravidel pro reprezentaci logické organizace dat v databázi. Rozeznáváme tři základní modely datových struktur - hierarchický, síťový a relační. Nejnovější a zároveň nejpoužívanější je relační model, který odstraňuje některé nedostatky ostatních modelů. Hierarchický model dat Data jsou organizována do stromové struktury. Každý záznam představuje uzel v této struktuře. Vzájemný vztah mezi záznamy můžeme označit jako rodič a potomek.
Obr. 2.5: Hierarchický model dat [Farana,1995]. Použití tohoto modelu je vhodné tam, kde i popisovaná skutečnost má obdobnou stromovou strukturu. Při pohybu v datech se pohybujeme směrem dolů (od rodiče k potomkovi), nahoru ( od potomka k rodiči) nebo na stejné úrovni (od potomka přes rodiče k potomkovi – sourozenci). Nevýhody tohoto hierarchického modelu: v některých případech nepřirozená organizace dat (zejména obtížné znázornění vztahu mezi více rodiči a více potomky),
Aplikace počítačů v provozu vozidel
13
složité operace vkládání a rušení záznamů. Síťový model dat Síťový model dat je v podstatě zobecněním hierarchického modelu dat, který doplňuje o mnohonásobné vztahy, které předchozí model přímou cestou neumožňoval. Tyto propojují záznamy různého či stejného typu, přičemž spojení může být realizováno na jeden nebo více záznamů.
Obr. 2.6: Schéma síťového modelu báze dat a její zobrazení pro dva záznamy [Farana,1995]. Nevýhodou síťové modelu databáze je zejména nepružnost a obtížná změna její struktury. Relační model dat Nejmladším modelem je model relační. V současnosti je tento model nejčastěji využíván u SŘBD. Pro tento model platí následující vlastnosti: 1. Databáze je chápana uživatelem jako množina relací a nic jiného. 2. V relačním SŘBD jsou k dispozici minimálně operace selekce, projekce a spojení (viz dále), aniž by se vyžadovaly explicitně předdefinované přístupové cesty pro jednotlivé relace. Systém řízení báze dat má definovánu mnoho pravidel, která umožňují jednoduchý přístup k jednotlivým údajů. Tato pravidla jsou přímo implementována v komerčních programech, které se používají při tvorbě aplikací pro informační systémy. Jako příklad může sloužit prostředí FoxPro, Visual FoxPro, Access a mnoho dalších. Proto při dalším popisu IS budeme vycházet právě z tohoto relačního modelu dat. Relační databázový model má jednoduchou strukturu. Data jsou organizována v tabulkách (v některých literaturách označovaných jako relace), které se skládají z řádků a sloupců. Všechny
14
Aplikace počítačů v provozu vozidel
operace s daty jsou prováděny na těchto tabulkách. Pro práci v tomto modelu je nezbytné, aby každá tabulka v databázi měla své jedinečné jméno. Záznam (Record) jako souhrn stanovaných údajů o daném objektu. V tabulce je reprezentován jedním řádkem. Sloupec tabulky definuje jednu položku (pole, Field) záznamu, musí mít svůj název a musí být určeného datového typu. Z popisu tabulkového vyjádření tohoto modelu vyplývají tyto vlastnosti: 1. Homogenita sloupců - v každém sloupci jsou všechny údaje stejného typu. 2. V tabulce neexistují dva stejné řádky, což je dáno přítomností primárního klíče, který popisuje konkrétní záznam a je pro daný záznam jedinečný. 3. Pořadí řádků je nevýznamné, protože jednotlivé řádky jsou identifikovatelné pomocí primárního klíče. 4. Pořadí sloupců (položek) je nevýznamné, protože sloupce jsou označeny názvem položky.
Obr. 2.7: Příklad tabulky relačního modelu dat.
2.4 Relační algebra Pro práci s tabulka v relační databázi je nutné definovat alespoň základní aparát, který nám umožní zpracovávat data z tabulek. K těmto činnostem slouží prostředek nazývaný relační algebra. Relační algebra je nejzákladnějším prostředkem pro práci s tabulkami. Mezi základní operace patří projekce, selekce a spojení. Tyto operace lze definovat takto: Projekce tabulky (relace) R s položkami A na množinu položek B, kde B A: -vytvoří tabulku s položkami B a záznamy, které vzniknou z původní tabulky R odstraněním položek A-B. Odstraněny jsou i eventuelně opakující se záznamy. -značení : R[B] Selekce tabulky R s položkami A podle logické podmínky
:
Aplikace počítačů v provozu vozidel
15
-vytvoří tabulku s týmiž položkami a ponechá ty záznamy z původní tabulky, které splňují logickou podmínku
. Podmínka
je logický výraz, jehož formule nad jednoduchými položkami tabulky mají
tvar:
a1 a2 kde: a1, a2
jména položek tabulky, konstanty nebo výrazy
logické operátory -
, , , ,
-značení: R( ) Spojení tabulek R a S s položkami A a B: -vytvoří minimalizovanou tabulku se schématem A B a se záznamy, jejichž projekce na A je z tabulky R a projekce na B je z tabulky S. -značení: R * S U spojení pracujeme s několika možnými případy. Nejčastější je spojení přes rovnost (přirozené spojení). Výsledná tabulka obsahuje jen ty záznamy z obou zdrojových tabulek, které se shodují v položkách, přes které se spojení provádí. Pokud některý záznam z jedné tabulky nemá odpovídající záznam v tabulce druhé, ve výsledné tabulce se neobjeví. Takový postup se nám však ve všech případech nehodí, proto je nutno používat další typy spojení, levé -polospojení a pravé -polospojení, které z určené tabulky (stojící v operaci jako levý či pravý argument) připojí všechny záznamy, bez ohledu na to, zda mají odpovídající záznam v druhé zdrojové tabulce. Použití polospojení je důležité tam, kde není programově zajištěna plná integrita dat, případně pokud nemáme jistotu, že nemůže být porušena. Příklad jednotlivých operací relační algebry si ukážeme na dvou tabulkách - OPRAVY a VOZIDLO. Tabulky OPRAVY a VOZIDLO jsou definované položkami podle obrázku Y.1. Tyto tabulky obsahují jednotlivé záznamy podle obrázku Obr. Y.2 a Obr. Y.3.
Obr. 2.7: Struktura tabulek příkladu.
Aplikace počítačů v provozu vozidel
16
Obr. 2.8: Tabulka OPRAVY.
Obr. 2.9: Tabulka Vozidlo. Na těchto tabulkách provedeme jednotlivé operace: a) Projekce tabulky OPRAVY položkami Dat_opravy, Zakázka. Výsledek je na Obr. 2.10.
Obr. 2.10: Projekce OPRAVY[Dat_opravy,Zakázka].
b) Selekce tabulky OPRAVY. Podmínka pro selekci je dána výrazem
Dat_opravy = 7.5.2000
Výsledná tabulka je na obrázku Obr. 2.11.
Obr. 2.11: Selekce OPRAVY[Dat_opravy = 7.5.2000]. c) Spojení tabulek OPRAVY a VOZIDLA. Spojení těchto tabulek se děje pomocí spojení přes rovnost položek OPRAVY.SPZ a VOZIDLA.SPZ (viz Obr. 2.12). Vznikne tabulka obsahující záznamy, jejichž struktura je dána souhrnem všech položek spojovaných tabulek. Takto vzniklá tabulky je ukázkou nejjednodušší formy spojení.
Obr. 2.12: Vazba položek při spojení.
Aplikace počítačů v provozu vozidel
17
Obr. 2.13: Spojení přes OPRAVY.SPZ = VOZIDLA.SPZ (zobrazeny jen některé položky tabulky). Z příkladu a předchozích definic je zřejmé, že operace projekce vybírá sloupce, operace selekce vybírá řádky (záznamy) a operace spojení provádí spojení dvou tabulek přes zvolenou položku nebo skupinu položek.
2.5 Dotazovací jazyky Dotazovací jazyky představují standardizovaný nástroj pro komunikaci mezi aplikacemi a bází dat.
2.5.1 QBE Rozhraní QBE (Query By Example, dotaz podle vzoru) je rozhraní pro tvorbu dotazů na data většinou formou grafické komunikace. Tento přístup nevyžaduje znalost struktury a syntaxe dotazovacího jazyka. Umožňuje realizovat dotazy v relačních databázích na základě kombinace pravidel relační algebry. Umožňuje také realizovat další operace, jako třídění, součty a pod. Některé aplikace umožňují i tvorbu složitých dotazů s logickými vazbami. Konkrétní podoby rozhraní jsou závislé na aplikaci a BD, ke které dotaz směřuje. Na následujících obrázcích jsou ukázky tvorby QBE v prostředí Microsoft Access pro základní relační operace projekci, selekci a spojení. Data jsou tvořena již známými tabulkami OPRAVY a VOZIDLO.
Obr. 2.14: Dotaz pro operaci projekce na tabulce OPRAVY. Operace podle Obr. 2.14 vytvoří tabulku odpovídající tabulce na Obr. Y.4. Operaci selekce na tabulce OPRAVY je realizovaná dotazem podle Obr. 2.10. Výsledek tvoří záznamy, kdy Dat_Opravy=7.5.2000 viz Obr. 2.11.
18
Aplikace počítačů v provozu vozidel
Obr. 2.15: Dotaz pro operaci selekce. Dotaz pro vytvoření tabulky realizující pravé polospojení tabulky OPRAVY a VOZIDLO podle položky SPZ je zobrazen na obrázku Obr. 2.16. Dotaz pro obdobné spojení spojené s projekcí pro vybrané položky z nové tabulky je na Obr. 2.17. Výsledkem tohoto dotazu je tabulka podle Obr. 2.13.
Obr. 2.16: Zadání dotazu pro realizaci operace spojení.
Obr. 2.17: Dotaz realizující operaci spojení a projekce. Ukázka jiného prostředí pro tvorbu QBE vidíte na obrázku Obr. 2.18.Jedná se o nástroj ve FoxPro 2.5.
Aplikace počítačů v provozu vozidel
19
Obr. 2.18: Návrh dotazu QBE v prostředí FOXPRO 2.5 (bez návaznosti na předchozí tabulky).
2.5.2 SQL Jazyk strukturovaných dotazů (SQL, Structured Query Language) vznikl na počátku sedmdesátých let jako standard pro komunikaci v oblasti databázových prostředí. Mezi základní vlastnosti můžeme zařadit [Farana. 1995]: Interaktivní dotazovací jazyk - uživatel zapíše příkazy SQL do interaktivního SQL programu, který najde potřebná data a zobrazí je na obrazovce. Databázový programovací jazyk - k použití při tvorbě databázové aplikace. Jazyk pro správu databází - správci databází využívají SQL pro definici datových struktur a kontrolu uložených dat. Klient/server jazyk - programy pro počítače používají SQL pro komunikaci v lokální počítačové síti (LAN) s databázovými stanicemi (database servers), kde jsou uložena sdílená data. Jazyk distribuované báze dat - systémy spravující distribuované databáze, používají SQL jako doplněk pro distribuci dat mezi několika spojenými počítačovými systémy. Komunikační jazyk SŘBD v LAN - v síti s několika různými SŘBD je SQL jedinou cestou pro jejich vzájemnou komunikaci. Sématika tohoto jazyka je odvozena na základě anglického jazyka. Vysoký úroveň strukturovanosti je podmínkou pro obsluhu databází a interaktivní práci s ní. Neobsahuje však příkazy nutné pro strukturovanou stavbu aplikačního programu (např. testy podmínek, skoky, cykly apod.). Proto je nutné používat tento jazyk ve spojení s programovacími jazyky nebo jako součást již naprogramované databázové aplikace (např. Access, Excel, FoxPro a další. Jazyk SQL má definován ANSI/ISO standard. Je sestavován formou ASCII textů v předem stanovené struktuře. Konkrétní SŘBD někdy ne zcela přesně tento standard dodržují, často jsou doplněny ještě další nadstandardní příkazy.
Aplikace počítačů v provozu vozidel
20
Následuje výběr příkazů tohoto jazyka: Definice datových struktur CREATE TABLE
vytvoření tabulky
DROP TABLE
zrušení tabulky
CREATE WIEV
přidání pohledu do SŘBD
DROP WIEV
odstranění pohledu
Získávání dat SELECT
výběr dat (položek) z databáze
Manipulace s daty (záznamy) INSERT
vložení záznamu do tabulky
DELETE
odstranění záznamu z tabulky
UPDATE
úprava obsahu existujícího záznamu
Agregované funkce COUNT()
počet záznamů
SUM()
součet hodnot za položku
MIN()
nejmenší hodnota ve sloupci tabulky (nejmenší z hodnot položky)
MAX()
největší hodnota ve sloupci tabulky (největší z hodnot stanovené položky určených záznamů)
AVG()
aritmetický průměr hodnot
V aplikacích je možné SQL vytvořit většinou třemi způsoby: Interaktivně - aplikace ve vestavěném rozhraní přijímá pokyny pro tvorbu jednotlivých částí struktury dotazu. Aplikace kontroluje správnost struktury a syntaxi. Přímým zápisem dotazu - uživatel přímo (pomocí vestavěného textového editoru) zaznamenává jednotlivé části dotazu. Tento přístup předpokládá detailní znalost struktury a syntaxe SQL. Aplikace tento dotaz realizuje. Programové sestavení - programové struktury aplikace sestavují jednotlivé části SQL na základě požadavků uživatelských programů. Uživatel aplikace nemůže přímo ovlivňovat obsah dotazu. Jsou mu dostupné pouze data získaná na jeho základě. Příklady dotazů SQL Jako příklad si uvedeme SQL dotazy pro realizaci základních relačních operací podle předchozího. Pro realizaci projekce na tabulce OPRAVY je možno definovat dotaz podle Obr. 2.19. Výsledkem je tabulka podle Obr. 2.10.
Obr. 2.19: Operace projekce na tabulce OPRAVY.
Aplikace počítačů v provozu vozidel
21
Pro realizace selekce na téže tabulce je dotaz již poněkud složitější viz (Obr. 2.20).
Obr. 2.20: Operace selekce na tabulce OPRAVY. Dotaz pro realizaci spojení a projekce na již známých tabulkách je na Obr. 2.21. Výsledek dotazu odpovídá Tabulce na Obr. 2.13.
Obr. 2.21: Dotaz pro realizace spojení a současně projekce na nové tabulce. Vytvořené dotazy na obrázcích 2.19 až 2.21 jsou výsledkem intrraktivní spolupráce uživatele s aplikací pro obsluhu databází. Na Obr. 2.22 je ukázka dotazu vytvořeného jinou aplikací (FoxPro 2.5).
Obr. 2.22: Zápis dotazu SQL v prostředí FoxPro.
22
Aplikace počítačů v provozu vozidel