Ústav automatizace a informatiky Fakulta strojního inženýrství Vysoké učení technické v Brně Přednáška č. 6 z předmětu Zpracování informací Ing. Radek Poliščuk, Ph.D. Tato publikace vznikla jako součást projektu CZ.04.1.03/3.2.15.2/0285 Inovace VŠ oborů strojního zaměření, který je spolufinancován evropským sociálním fondem a státním rozpočtem České republiky 1/13
Shrnutí přednášky DBS umožňují uživatelům vykonávat jejich DML i DDL požadavky na data (vytváření, zápis, aktualizace, čtení výsledků, tvorbu výstupních sestav,...). Pro formulaci těchto požadavků na data se používá počítačový jazyk SQL. Výstupem funkce SELECT bývá zpravidla Dataset ve formě tabulky. Dataset může obsahovat vyfiltrovaná, agregovaná i skalárně upravená vstupní data. Teprve takto získané vysledky se používají jako zdroj dat pro následnou analýzu v daném informační systém. 2/13
DML - Data Modifikace dat v tabulkách je možná příkazy: Vkládání nových záznamů do existujících tabulek: INSERT INTO <tabulka> (<seznam naplňovaných sloupců>) VALUES (<seznam hodnot v daném pořadí>); Zrušení záznamů splňujících danou podmínku (o podmínkách více viz Select): DELETE FROM <tabulka> WHERE <podmínky pro výběr řádek> Úprava záznamů splňujících danou podmínku: UPDATE <tabulka> SET <sloupce> = <výrazy> WHERE <podmínky pro výběr řádek>; Výpis záznamů splňujících podmínky v zadaných klauzulích: SELECT sloupce FROM tabulky WHERE <filtrační podminky> GROUP BY <sloupce> Having <agregační podmínky> Order By <podminky> UNION <případný další dotaz>; 3/13
Obsah přednášky Přednáška 6 Další možnosti DBS RDBMS Microsoft Access Práce s relacemi v Accessu Tabulkové aliasy Slučovací dotazy SQL poddotazy Křížové dotazy Skriptování - VBA Import a export dat 4/13
Ve cvičeních se seznámíte... Microsoft Access = desktopová GUI aplikace pro přístup k datům (externí DBS a nebo Microsoft Jet Engine emulace souborového systému v MDB souboru) Tabulky: Objekty udržující data k určitému tématu ve formě záznamů. Dotazy: definice pro zobrazení a analýzu dat; zdroj záznamů pro formuláře, sestavy a datové stránky. Formuláře: GUI objekty k zadávání a správě dat. Sestavy: Definice pro zobrazení a tisk výsledků dotazů Stránky: sestavy pro přístup k datům prostřednictvím WWW Makra: sady akcí, kterými lze automatizovat často prováděné úlohy. Moduly: uživatelské podprogramy VBA. 5/13
Relace v Microsoft Access pole s odkazy na hodnoty unikátních klíčů dynamicky naplňovaná vyhledávací pole vazby v okně Relace + vnořené tabulky formuláře s podformuláři (průvodce...) tiskové sestavy přes více tabulek FAKTURA-daňový doklad číslo/var. symbol 200801 Vystavil: Příjemce: Šroubkař, s.r.o. Josef Novák Prostřední 2, 617 00 Brno Zadní 2, 616 24 Kocourkov IČ: 659035 IČ: 58848421 Způsob platby: Převodem Vystaveno: 1.2.2008 Číslo účtu: 5956351/5100 Splatnost: 1.3.2008 Položky: 1. Šroubek M6 1500ks á 0,80 Kč Celkem 1200,00 Kč +DPH 19% 2. Matka M10 800ks á 2,50 Kč Celkem 2000,00 Kč +DPH 19% Celkem: 3200,00 Kč Vystavil: Šroubkař DPH 19%: 608,00 Kč Podpis: + + + K úhradě: 3808,00 Kč Razítko: :-) Kontakty ID Jméno Adresa IČ Telefon Faktury ID Vystaveno Splatnost Platba Partner_ID 1:N Položky ID Faktura_ID Popis KS Cena_KS 6/13
Tabulkové aliasy Aliasy mohou být využity pro náhled na více záznamů v rámci jednoho řádku. SELECT column FROM table AS table_alias; Typické použití jsou situace, kdy se pravoúhlou tabulkou snažíme popsat nějakou složitější geometrickou strukturu např. strom: V prostředí MS Access se aliasy v relačním schématu vytvářejí automaticky (přípona _1,...), v SQL se toto uspořádání definuje právě tabulkovým aliasem. 7/13
Slučovací dotazy V situacích, kdy se z důvodu chybného návrhu a nebo z geografických důvodů části dat nacházejí ve více tabulkách (mohou mít i rozdílná fyzická pořadí a názvy), lze k získání celkového přehledu použít více dotazů sloučených spojkou UNION V případě různě pojmenovaných sloupců v jednotlivých tabulkách lze při slučování s výhodou použít sloupcové aliasy: Select 'Kniha',Titul as Název FROM knihy where Název like '%maska%' UNION Select 'CD', Album as Název FROM CD where Název like '%maska%' UNION Select 'DVD', Název FROM DVD where Název like '%maska%' UNION... 8/13
SQL poddotazy Při tvorbě výrazů v SQL dotazech můžeme místo odkazů na hodnoty ve fyzických sloupcích použít i odkazy na virtuální tabulky, vytvářené dynamicky pomocí tzv. vnořených SQL dotazů Příklad: SELECT jméno, plat FROM platy WHERE plat > (SELECT AVG(plat) FROM platy) 9/13
Křížové dotazy Pohled na data ve formě tabulky s pevným počtem sloupců nemusí vždy poskytnout optimální přehled o situaci => transformace datasetu křížovým dotazem: TRANSFORM Sum(Pivot.Ks) AS SumOfKs SELECT Produkt, Rok, Měsíc, Sum(Ks) AS Celkem FROM Ochody GROUP BY Produkt, Rok, Měsíc PIVOT Pobočka; V DBS je tvorba dynamických kontingenčních tabulek považována za nesystémovou, spolu s dalšími analytickými operacemi se prot provádí spíš v tabulkových editorech. 10/13
Skriptování Jazyk SQL je určen k vyjadřování požadavků na data logickou formou, zatímco tvorba GUI aplikací představuje spíš tvorbu procedurálního kódu => aplikace běžící nad DBS jsou buď psány v procedurálním jazyce a nebo jej uživateli k doplnění funkcí přímo poskytují (Microsoft Access Visual Basic for Applications): Tam kde v Accessu končí možnosti SQL a GUI, začíná VBA (tip pro začínající: http://www.uai.fme.vutbr.cz/~mseda/dbs02_bs.pdf od s.42) Podobně jako jazyk matlab umožňuje tvorbu uživatelských procedur, na rozdíl od něj však v principu neumožňuje vektorizaci; proměnné typu pole je navíc nutné deklarovat. Nejpoužívanějším prvkem VBA v Accessu je tzv. jmenný prostor DoCMD. RunSQL "SQL příkaz" OpenTable (jméno_tabulky [,acdataaccesspagebrowse acdataaccesspagedesign, DataMode]) OpenQuery (název_dotazu [,acdataaccesspagebrowse acdataaccesspagedesign, DataMode]) OpenForm (JmFormuláře, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenReport(JmSestavy, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenDataAccessPage (jméno [,acdataaccesspagebrowse acdataaccesspagedesign]) K manipulaci se záznamy tabulek a dotazů je ve VBA určena struktura Recordset rec=currentdb.openrecordset("tabulka") rec.edit operace(rec.sloupec) rec.update rec.movenext Rec.close...ukázky viz následující cvičení. 11/13
Import a export dat Přenos dat mezi DBS a dalšími aplikacemi může probíhat buď ve formě datasetů a nebo: binárních souborů (přímá kopie záznamů z tabulek, komprimované datasety, MDB,...) textových souborů pole v řádcích oddělená tabulátory (ASCII kód #09), řádky CR+LF (#13#10) comma separated values (pole dělená čárkami, texty v uvozovkách, řádky CRLF) formát XML XML hlavička <?...?> obsahuje informaci o způsobu kódování národních znaků soubor musí obsahovat kořenový element (např. <dataroot>), který obsahuje záznamy každý XML element může obsahovat Atributy (přiřazení v úvodním tagu) a svůj obsah a musí být ukončen buď už v úvodním tagu <xyz/> a nebo koncovým tagem </xyz> <?xml version="1.0" encoding="utf-8"?> <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2009-03-17t04:26:42"> <Faktura> <Fa_ID>1</Fa_ID> <Vystaveno>2009-03-17</Vystaveno> <Splatno>2009-03-31</Splatno> <Uhrada>Převodem</Uhrada> <Partner>1</Partner> <Položka> <Popis>pero</Popis> <JC>50</JC> <KS>1</KS> </Položka> </Faktura> </dataroot> 12/13
Import a export dat Cílem exportovaných dat pak nejčastěji bývají různé IS a aplikace pro analýzu dat: Tabulkové editory (Microsoft Excel, OpenOffice.org Sheet,...) přenos vybraných polí přes systémovou úschovnu import a export souborových dat (včetně MDB pozor na zamykání!!!) přímé napojení prostřednictvím ole-db (ODBC/JDBC, ADO...) a MS Query primární určení: interaktivní vzorce přes víc řádek, analýzy, jednoduché grafy (kontingenční tabulky, OLAP, malé soustavy rovnic, lineární regrese, úlohy co-když...) Výpočetní aplikace (Matlab, Octave, Mathcad, Maple, řešiče MKP, speciální aplikace) import a export souborových dat (Octave aktuálně umí jen CSV) přímé napojení prostřednictvím pluginů a knihoven primární určení: provádění složitých maticových analýz a grafických výstupů (rozsáhlé soustavy rovnic, filtrace a transformace dat, regresní/kovarianční analýzy, analýzy obrazu, aplikace výsledků do 3D modelů a jejich animace,...) 13/13