PROCESOR RELAČNÍ ALGEBRY

Rozměr: px
Začít zobrazení ze stránky:

Download "PROCESOR RELAČNÍ ALGEBRY"

Transkript

1 Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Databázové a informační systémy PROCESOR RELAČNÍ ALGEBRY Petr Lukáš (luk194) Ostrava

2 OBSAH Zadání úlohy... 3 Rozbor zadání... 3 Jazyk SQL... 3 Vlastnosti jazyka SQL... 4 Příkaz SELECT rozbor syntaxe... 4 Výběr seznamu sloupců... 5 Seznam zdrojových tabulek... 5 Omezující podmínka... 7 Seskupení a agregační funkce... 7 Podmínka skupiny... 8 Setřízení... 8 Další možnosti příkazu select... 9 Omezení duplicit... 9 Výběr prvních n záznamů... 9 Množinové operace... 9 Relační algebra... 9 Operátory RA Množinové operátory Způspoby zápisu relační algeby Lineární zápis (materiály VŠB teorie zpracování dat) Stromové zobrazení relační algebry Převod jazyka SQL na relační algebru Rozdíly SQL oproti RA Převod na RA Příklady převodu Implementace překladače Lexikální analýza Syntaktická analýza Překlad na relační algebru Vizualizace metodou Paint Lineární zápis Výsledek implementace Závěr Literatura /23

3 ZADÁNÍ ÚLOHY Naimplementujte procesor, který převede SQL dotaz na výraz relační algebry. Zaměřte se pouze na některé základní rysy SQL. Implementaci otestujte. ROZBOR ZADÁNÍ Tato úloha spadá jak do kategorie databázových systémů, tak do kategorie programovacích jazyků a překladačů. Cílem je sestrojit program překladač, který bude umět přeložit SQL dotaz na zápis v jazyce relační algebry a případně vymezit takové podmínky, za jakých bude výsledek dosažitelný a správný. Abychom mohli implementaci provést, je nutné nejprve rozebrat oba jazyky relační algebru (RA) a Structured Query Language (SQL), popsat rozdíly mezi nimi a poté navrhnout, naimplementovat a otestovat algoritmus převodu. JAZYK SQL Jako obvykle, na úvod trochu historie. První implementace vznikla v laboratořích světoznámé firmy IBM na začátku 70. let a postarali se o ni Andrew Richardson, Donald C. Messerly a Raymond F. Boyce. Původně byl jazyk pojmenován SEQUEL nebo SEQL jako zkratka Structured English QUEry Language. Vzhledem k tomu, že název SEQUEL byla registrovaná obchodní značka, změnil se název na SQL Structured Query Language, který je používán dodnes. Cílem jazyka bylo, a stále samozřejmě je, poskytnout standardizovaný způsob přístupu k datům uloženým v databázi. Jazyk SQL není závislý na jazyce, ve kterém je implementovaná samotná aplikace, je to velmi mocný a přitom jednoduchý jazyk. Syntaxe vychází z přirozené formulace vět v angličtině, avšak jako všechny programovací jazyky, i tento má svou strukturu danou přesně definovanou gramatikou. Jak již bylo řečeno, sám o sobě nám SQL nestačí, slouží pouze jako jakási mezivrstva mezi daty a aplikací. Visual Basic Delphi C++ Java SQL Databáze Jedná se o jazyk deklarativní, to znamená, že popisujeme, co chceme, ale nezajímá nás, jak se daná operace provede. Toto je jeden z důležitých rysů, kterým se odlišuje od relační algebry. Rozdíly v principech obou jazyků budou vysvětleny později. V 80. letech začal vývoj tohoto nástroje nabírat na rychlosti. Na scéně se objevuje např. Oracle a díky konkurenci jednotlivé implementace přicházejí s novými možnostmi. Proto je nutno stanovit přesná pravidla. V roce 1987 ISO a ANSI publikují počáteční standard SQL, v roce 1989 ISO publikuje dodatek Integrity Enhancement Feature a začíná se hovořit o SQL89. V roce 1992 dochází k první úpravě tohoto ISO standardu, který je pak znám jako SQL2 nebo SQL92. 3/23

4 V současné době používá SQL drtivá většina databázových systému. Jedná se např. o již zmiňovaný Oracle, dále MySQL, MS SQL, MS Access a další. Konkrétní nástroje si SQL přizpůsobují svým účelům, avšak myšlenka a základní principy syntaxe zůstávají stejné. VLASTNOSTI JAZYKA SQL Jak již bylo uvedeno, SQL pracuje s relační databází. Relační databáze je množina tabulek, kde každá tabulka charakterizuje nějakou entitu. V typické relační databázi se můžeme setkat s tabulkami např. Zaměstnanci, Faktury, Sklad, Položka atd. Sloupce v tabulkách určují vlastnosti, tzn. např. u Zaměstnance můžeme evidovat jeho jméno, příjmení, rodné číslo a další. Řádky relační databáze pak charakterizují konkrétní objekt, přesně řečeno instanci entity, řádek se z pravidla označuje jako záznam. V rámci databázových technologií rozdělujeme jazyky pro práci s daty na tři kategorie: - Jazyky pro dotazování (DQL Data Query Language) - Jazyky pro definici dat (DDL Data Definition Language) - Jazyky pro manipulaci s daty (DML Data Manipulation Language) Jazyky pro dotazování jsou pro tuto práci nejdůležitější. Ve spojitosti s SQL se jedná přímo o příkaz SELECT. Dotaz znamená, že se žádáme databázi o data podle určitých kritérií. Například potřebujeme zjistit údaje o platu nějakého konkrétního zaměstnance, nebo si potřebujeme vyjet tržby za daný měsíc. Jazyk pro definici dat slouží k nadefinování struktury databáze. Tím se rozumí definice entitních typů a jejich atributů. Zjednodušeně řečeno, potřebujeme vytvořit tabulky a nadefinovat jim sloupce. Definicí dat se také rozumí odstranění tabulek (ne obsahu, ale celých tabulek) nebo úprava sloupců. Jazyky pro manipulaci dat mění obsah tabulek. Jedná se zpravidla o operace vložení řádků a úprava nebo odstranění řádků. SQL pokrývá všechny tři uvedené kategorie, ale pro převod dotazu SQL na RA se budeme dále zabývat pouze jazyky pro dotazování. Důležité je také poznamenat, že jazyk SQL není Case-sensitive, tzn. nerozlišuje velikost písmen, pokud samozřejmě nejde přímo o textový řetězec. Je dobrým zvykem psát veškerá klíčová slova velkými písmeny. O jazyce SQL bylo napsáno mnoho knih a tato práce neslouží jako učebnice SQL. Pro naše potřeby bude nutné popsat pouze funkci příkazu SELECT a hlavně vystihnout všechny možnosti zápisu, které podporuje, protože na základě takových informací pak bude sestavena gramatika SQL, to znamená přesný způsob zápisu. PŘÍKAZ SELECT ROZBOR SYNTAXE Příkaz SELECT je vstupní bránou ke všem datům, které chceme z databáze získat. Základní syntaxe příkazu vypadá takto: SELECT seznam sloupců FROM seznam tabulek a popis vazeb mezi nimi WHERE omezující podmínka, podle které vybíráme řádky GROUP BY seznam sloupců, podle kterých vytváříme skupiny HAVING podmínka seskupených záznamů ORDER BY seznam sloupců, podle kterých chceme vybrané záznamy setřídit 4/23

5 VÝBĚR SEZNAMU SLOUPCŮ Za klíčovým slovem SELECT následuje seznam sloupců, které chceme dotazem vybrat. Položky oddělujeme čárkami. Pokud chceme vybrat všechny možné sloupce, stačí napsat *. Kromě názvů samotných sloupců se v této části mohou objevit i výrazy a agregační funkce. Vybíráme-li z více tabulek a dojde ke shodě názvu sloupců, můžeme sloupec přesně specifikovat jako tabulka.sloupec. Pokud chceme vybrat všechny sloupce pouze z určité tabulky, stačí napsat tabulka.*. Vybraný sloupec nebo výraz můžeme pro přehlednost přejmenovat tak, že za něj uvedeme alias. Za SELECTem se tedy může objevit například něco takového: SELECT Zamestnanec.Jmeno, Prijmeni, PocetKusu1 + PocetKusu2 kusy, Vyrobek.Jmeno, Seznam.* První vybraný sloupec bude představovat jméno zaměstnance, bylo nutné uvést i název tabulky, protože vidíme, že existuje i tabulka Vyrobek, která má také atribut Jmeno. Systém by pak nevěděl, ze které tabulky by měl sloupec vzít. Následuje sloupec příjmení a matematický výraz pro sečtení hodnot ze sloupců PocetKusu1 a PocetKusu2, výsledek pak bude přejmenován na kusy. Následuje jméno výrobku a všechny sloupce z tabulky seznam. Co přesně atributy znamenají a co bude v příkazu následovat dále, momentálně není důležité, je však jisté, že výstup bude vypadat nějak takto: Zamestnanec.Jmeno Prijmeni kusy Vyrobek.Jmeno Seznam.Cislo Seznam.Nazev Seznam.Poznamka Petr Lukáš 10 Hrnek 1 Položka 1 Poznámka Jan Novák 12 Reproduktor 3 Položka 3 Jakub Novotný 5 Světo 5 Položka 5 SEZNAM ZDROJOVÝCH TABULEK Další části SQL dotazu je seznam zdrojových tabulek. V některých systémech, jako např. Oracle je tato část dotazu povinná. Naproti tomu např. v MS SQL Serveru může SELECT existovat i bez FROM. V této části dotazu uvedeme kromě samotných tabulek také to, jak mají být tabulky spojeny. Spojení dvou tabulek znamená vytvoření jedné univerzální tabulky, která obsahuje sloupce z levé i pravé strany, jedná se tedy o binární operaci. Představme si například takovou situaci. Existuje tabulka Projekt, u které evidujeme číslo projektu, název projektu a zodpovědnou osobu. CisloProjektu Nazev Osoba 1 Jeřáb Martin 2 Výtah Michal Dále existuje tabulka Polozka, která uchovává informace o čísle položky, čísle projektu, do kterého patří, název položky a počet kusů. CisloPolozky CisloProjektu Nazev Kusu 1 1 Rameno Lano Kabina Tlačítko 15 5/23

6 Spojením vznikne takováto univerzální tabulka : Projekt.CisloProjektu Projekt.Nazev Osoba CisloPolozky Polozka.CisloProjektu Polozka.Nazev Kusu Jak je vidět, spojená tabulka obsahuje sloupce z obou zdrojových tabulek. To, jakým způsobem budou zkombinovány řádky určuje typ spojení. Jaké možnosti tedy máme? 1. Kartézský součin Pokud jednotlivé názvy tabulek oddělíme čárkami, pak dojde ke kartézskému součinu, to znamená, že řádky z jedné a z druhé tabulky se prokombinují všemi možnými způsoby. Teoreticky tedy pokud v jedné tabulce je a záznamů a v druhé b záznamů, pak spojená tabulka bude mít celkem a x b záznamů. V SQL se kartézský součin může provést i nad více než dvěma tabulkami. 2. Vnitřní spojení Zápis vnitřního spojení vypadá takto: FROM Tabulka1 INNER JOIN Tabulka2 ON Podmínka spojení Klíčové slovo INNER lze v zápisu vynechat. Funkci vnitřního spojení si můžeme představit tak, že se provede nejprve kartézský součin a poté se na vybrané záznamy aplikuje podmínka spojení. Typický příklad celého SQL dotazu na výše uvedený příklad s projekty by mohl vypadat takto: SELECT Polozka.Nazev NazevPolozky, Projekt.Nazev NazevProjektu FROM Polozka INNER JOIN Projekt ON Polozka.CisloProjektu = Projekt.CisloProjektu 3. Vnější levé spojení Syntaxe vnějšího levého spojení vypadá následovně: FROM Tabulka1 LEFT OUTER JOIN Tabulka2 ON Podmínka spojení OUTER lze podobně jako INNER vynechat. Levé spojení zajišťuje, že budou záznamy z levé tabulky za každých okolností vybrány alespoň jednou i v případě, že se nenajdou odpovídající záznamy v pravé tabulce. 4. Vnější pravé spojení Pravé vnější spojení se píše podobně jako levé: FROM Tabulka1 RIGHT OUTER JOIN Tabulka2 ON Podmínka spojení Princip spojení je naprosto stejný jako u levého s tím, že budou vybrány všechny záznamy z pravé tabulky. Místo názvů tabulek se může vyskytnout další spojení. Spojení tak lze do sebe libovolně zanořit a zkombinovat, vzniká tím celý výraz spojení, ve kterém můžeme používat kulaté závorky. Místo tabulky jako takové se může vyskytnout rovnou celý poddotaz. Tabulky lze podobně jako sloupce přejmenovat tak, že za ně uvedeme alias. Složitější SQL dotaz pak vypadá třeba takto: SELECT * FROM (Tab1 LEFT JOIN Tab2 ON Tab1.id = Tab2.id) INNER JOIN (Tab3, Tab4) ON (Tab4.id = Tab2.id) RIGHT OUTER JOIN (SELECT pole FROM Tab5) q ON (Tab4.pole = q.pole) Co by takový dotaz logicky znamenal by bylo asi složité odhadnout, avšak vzhledem ke konstrukci parseru SQL je důležité, že i něco takového se může v zápisu objevit. 6/23

7 OMEZUJÍCÍ PODMÍNKA Omezující podmínka následuje za seznamem tabulek a spojení. Podmínka může a nemusí být v dotazu obsažená. Pokud podmínku neuvedeme, pak vybíráme všechny možné řádky, které vznikly spojením tabulek. Podmínkou se rozumí výraz, který vrací pravdivostní hodnotu. Výrazy lze mezi sebou kombinovat pomocí logických spojek AND a OR, přičemž AND má vyšší prioritu, než OR. Možné je používat také unární logický operátor NOT. Samotné logické členy jsou pak tvořeny relačním operátory >, <, >=, <=, =, <>. Pro práci s řetězci se používá navíc operátor LIKE. Kromě toho ale v jazyce SQL existují některé speciální konstrukce: 1. a BETWEEN b AND c říká, že hodnota výrazu a musí být mezi hodnotami výrazů c a d. 2. a Ѳ ANY (vnořený dotaz) Ѳ je relační operátor a vnořený dotaz musí obsahovat pouze jeden sloupec. Operátor Ѳ se aplikuje na všechny hodnoty, které vrátí poddotaz a pokud podmínka alespoň v jednom případě vyhoví, vrátí celý výraz pravdivou hodnotu. 3. a Ѳ ALL(vnořený dotaz) jde o podobný případ jako v předchozím bodě, s tím rozdílem, že podmínka musí vyhovět pro všechny hodnoty, které vnořený dotaz vrátí. 4. a IS NULL Vrátí pravdivou hodnotu, pokud výraz a nabývá hodnoty null. Zbytek výrazu pak tvoří klasické matematické operace sčítání, odčítání, násobení a dělení (+ - * /) s možností použití unárních operátoru + a. Prioritu operátorů lze měnit pomocí kulatých závorek. Samotnými hodnotami jsou pak buď číselné konstanty (desetinná čísla používají znak. jako oddělovač), textové řetězce, které začínají a končí apostrofem. Zdvojením apostrofu získáme přímo řetězec se znakem apostrof. Jazyk SQL umožňuje použít jako hodnotu také vnořený dotaz. Zde však musí být splněna podmínka, že dotaz vrací přesně jeden sloupec a přesně jeden záznam. To znamená jedinou hodnotu. Následuje ukázka, jak může výraz v jazyce SQL vypadat: NOT(a > b) AND x < (SELECT pole FROM tabulka WHERE id = 4) OR c IN (SELECT pole FROM tabulka2) AND NOT e BETWEEN 1 AND 4+8 SESKUPENÍ A AGREGAČNÍ FUNKCE Po uvedení omezující podmínky následuje v SQL dotazu seznam polí, podle kterých má být provedeno seskupení. Seskupení se obvykle váže k použití agregací, jinými slovy souhrnů. Podle seskupujících polí se vytváří skupiny, pro které se následně počítají hodnoty agregačních funkcí. Seskupovat je možné také podle celých výrazů. Obecně platí, že v seskupení musí být minimálně všechny výrazy z části SELECT, kde nejsou použity agregace. SQL disponuje celkem 5-ti agregačními funkcemi: 1. MIN - Minimum 2. MAX - Maximum 3. AVG - Průměr 7/23

8 4. SUM - Součet 5. COUNT - Počet Dotaz s použitím agregací pak může vypadat například takto: SELECT Login, Jmeno, Prijmeni, SUM(Plat) FROM Zamestnanec z LEFT JOIN Uvazek u ON z.idzam = u.idzam GROUP BY Login, Jmeno, Prijmeni Při zpracování uvedeného dotazu se po sestavení zdroje dat z tabulek Zamestnanec a Uvazek vytvoří skupiny, tzn. z řádků, kde se Login, Jméno a Příjmení shodují se stane jeden řádek a odpovídající platy se sečtou. Je nutné uvědomit si, že agregační funkce se do sebe nesmí zanořit. Pokud před argument agregační funkce uvedeme klíčové slovo DISTINCT, pak se před výpočtem souhrnu omezí duplicitní hodnoty. Pokud bychom například uvedli místo SUM(plat) SUM(DISTINCT plat), pak v případě, že dva výskyty platu ve skupině budou nabývat stejné hodnoty, započítá se hodnota pouze jednou. PODMÍNKA SKUPINY Podmínka skupiny má podobný význam jako omezující podmínka WHERE s rozdílem, že omezení se aplikuje až po výpočtu agregací. Jinými slovy, pokud bychom chtěli ve výše uvedeném příkladu vybrat zaměstnance s celkovým platem větším než určitá hodnota, nemohli bychom toto omezení vložit do WHERE, protože v momentě, kdy se zpracovává WHERE ještě nebyly zpracován GROUP BY a agregační funkce. Správný zápis by vypadal: SELECT Login, Jmeno, Prijmeni, SUM(Plat) FROM Zamestnanec z LEFT JOIN Uvazek u ON z.idzam = u.idzam GROUP BY Login, Jmeno, Prijmeni HAVING SUM(Plat) > 2000 SETŘÍZENÍ Výsledné hodnoty se před předáním tazateli, tzn. například nám, pokud jsme se ptali, mohou setřídit. Na konci SQL dotazu se může objevit klauzule ORDER BY, za kterou následuje seznam polí z tabulek nebo výrazů, podle kterých chceme třídit. Třízení je standardně vzestupné, pokud chceme provést sestupné třízení, zapíšeme za příslušný sloupec DESC (descending sestupné). Jak bylo uvedeno, třízení se může provádět podle více atributů pokud bude hodnota jednoho shodná, pak se třídí podle dalšího. Například: SELECT Login, Jmeno, Prijmeni, SUM(Plat) FROM Zamestnanec z LEFT JOIN Uvazek u ON z.idzam = u.idzam GROUP BY Login, Jmeno, Prijmeni HAVING SUM(Plat) > 2000 ORDER BY Prijmeni, Jmeno Nad celým výsledkem se provede setřízení podle příjmení, pokud by náhodou dva zaměstnanci měli stejné příjmení, pak budou setřízeni podle jména. 8/23

9 DALŠÍ MOŽNOSTI PŘÍKAZU SELECT OMEZENÍ DUPLICIT Jazyk SQL pracuje na rozdíl od relační algebry s multimnožinami, resp. s uspořádanými poli záznamů, protože je možné používat setřízení. Relační algebra pracuje pouze s množinami, kde na pořadí nezáleží a nemohou se objevit duplicitní záznamy, protože v tu chvíli by šlo o stejný prvek množiny. Proto je v SQL implementovaná možnost omezit duplicitní záznamy tak, že za klíčové slovo SELECT uvedeme DISTINCT nebo UNIQUE. VÝBĚR PRVNÍCH N ZÁZNAMŮ V určitých případech je potřeba zobrazit pouze prvních n vybraných záznamů. V jazyce SQL je možnost, jak toto omezení provést za klíčové slovo SELECT napíšeme TOP n, kde n značí počet záznamů, které dotaz vrátí. MNOŽINOVÉ OPERACE SQL jazyk umožňuje používání celkem tří množinových operátorů. Tyto operátory provádějí množinové operace nad záznamy, ne nad sloupci. Jedná se o binární operátory, které pracují se dvěma poddotazy. Opět je možné regulovat pořadí a prioritu pomocí kulatých závorek. 1. UNION Sjednocení 2. EXCEPT Rozdíl 3. INTERSECT Průnik Průnik má vyšší prioritu než sjednocení a rozdíl. Podmínkou použití množinových operátorů je, že oba poddotazy musí vracet stejný počet sloupců. V opačném případě by nebylo možné množinové operace provést. Příklad množinové operace: SELECT a, b FROM tabulka1 UNION SELECT c, d FROM tabulka2 Tento SQL dotaz provede nejprve výběr atributů a a b z tabulky tabulka1, pak výběr c a d z tabulky tabulka2 a poté vybrané množiny záznamů sjednotí. Nastává zde problém, protože SQL nepracuje s množinami ale s multimnožinami. Množinové operátory automaticky vypouštějí duplicitu. Pokud bychom chtěli duplicitu zanechat, pak za množinový operátor uvedeme klíčové slovo ALL. Jestliže jsou v dotazu použity množinové operátory, může se setřízení (ORDER BY) vyskytovat až za výrazem všech množinových operací (Setřízení lze aplikovat pouze na výslednou vybranou multimnožinu). Tolik prozatím k SQL dotazům, pojďme se podívat na relační algebru. RELAČNÍ ALGEBRA Dle definice je relační algebra dotazovací jazyk pracující s celými relacemi, operátory RA se aplikují na relace, výsledkem jsou opět relace. Pro operace, a \ musí být relační schémata shodná. 9/23

10 V 70. letech definoval E.F. Codd relační algebru jako základ dotazovacích jazyků. Implementace SQL ale probíhala částečně odděleně, takže postupně docházelo rozdílům v principech obou jazyků. Jazyk relační algebry je spíše teoretický prostředek a pro dotazování nad SŘBD se nevyužívá. Slouží však jako mezistupeň mezi SQL dotazem a samotným prováděním výběru dat z databáze. Relační algebra totiž na rozdíl od SQL přesně definuje kroky, které vedou k dosažení výsledku. Za určitých okolností lze kroky relační algebry podle přesných pravidel zaměnit tak, aby byla výsledná relace stejná. Na tomto principu pak SŘBD provádí optimalizaci dotazů. Za základě výrazu relační algebry se sestaví fyzický plán, podle kterého dojde k samotnému výběru dat. Jakými operátory relační algebra disponuje? Podle původního návrhu E.F. Codda, obsahovala relační algebra celkem 8 operátorů sjednocení, průnik, rozdíl, kartézský součin, selekce, projekce, spojení a rozdělení. Pro účely této práce jsou popsány operátory, které budou využity při překladu z SQL. OPERÁTORY RA MNOŽINOVÉ OPERÁTORY Relační algebra nám nabízí celkem 3 binární množinové operátory, podobně jako SQL. 1. Sjednocení (R S) Je možné sjednotit záznamy relací, které mají shodné schéma. Tzn. počty atributů musí být na obou stranách stejné. 2. Průnik (R S) Pro průnik platí stejné pravidlo jako pro sjednocení. 3. Rozdíl (R \ S) Opět musí platit, že počty atributů na obou stranách jsou stejné. Podobně jako v SQL, i zde máme možnost spojovat tabulky. 4. Kartézský součin (R x S) Kartézským součinem relace R se stupněm m a relace S se stupněm n je relace R x S stupně m + n. Všechny prvky relace R se spojí se všemi prvky relace S. 5. Vnitřní spojení (R S) Vnitřní spojení funguje obdobně jako u SQL. Lze si představit, že se nejprve provede kartézský součin a na výslednou relaci se aplikuje selekce podle určité podmínky. Speciálním případem vnitřního spojení je tzv. přirozené spojení, kde se jako spojovací podmínka považuje rovnost hodnot stejně pojmenovaných atributů obou relací. 6. Vnější levé spojení (R S) Opět obdoba LEFT OUTER JOIN z SQL. Funguje podobně jako vnitřní spojení s rozdílem, že budou vybrány všechny záznamy z levé tabulky i v případě, že k nim nebude existovat připojitelný záznam z pravé tabulky. 7. Vnější pravé spojení (R S) Opírá se o stejnou logiku jako levé spojení, pouze je prohozeno pořadí relací. 10/23

11 Dalšími operátory jsou 8. Selekce () Selekce znamená omezení prvků relace podle určité podmínky. Z hlediska pohledu na tabulku se jedná o výběr řádků. 9. Projekce () Projekce znamená omezení atributů relace. Výčtem uvedeme, které atributy relace chceme dále používat. Jedná se o výběr sloupců. 10. Přejmenování () Bez přejmenování se neobejdeme, pokud potřebujeme vybírat data z jedné tabulky vícekrát. Minimálně jednu z tabulek musíme přejmenovat, abychom byli schopni rozlišit, ze které tabulky chceme získat data při zadání názvu atributu. 11. Agregace Některé publikace uvádějí možnost používání agregací. U agregace je nutné uvést podle kterých atributů se provede seskupení a pro které atributy nebo výrazy se souhrny spočítají. Možné je používat opět agregační funkce MIN, MAX, AVG, SUM a COUNT. ZPŮSPOBY ZÁPISU RELAČNÍ ALGEBY Výraz relační algebry lze zapsat více způsoby, obecně lze tvary zápisu rozlišit na lineární a stromový. LINEÁRNÍ ZÁPIS (MATERIÁLY VŠB TEORIE ZPRACOVÁNÍ DAT) Sjednocení: Průnik: Rozdíl: Kartézský součin: Projekce: Selekce: Spojení: Přirozené spojení: R S R S R \ S R x S R[seznam atributů oddělených čárkami] R(podmínka) R[spojovací podmínka]s R[*]S Uvedený způsob zápisu je sice jednoduchý, ale ve složitějších případech výrazů velice nepřehledný. STROMOVÉ ZOBRAZENÍ RELAČNÍ ALGEBRY Výraz v relační algebře je zobrazen jako graf strom, kde kořen stromu je výsledná relace a listy představují zdrojové tabulky. Každý uzel stromu představuje jednu dílčí operaci. Stromové zobrazení je velice přehledný způsob zápisu, ze kterého lze pohodlně zjistit, které operace se v jakém pořadí provedou a co je zdrojem dotazu. 11/23

12 Na obrázku je uveden příklad stromu relační algebry. PŘEVOD JAZYKA SQL NA RELAČNÍ ALGEBRU ROZDÍLY SQL OPROTI RA Před samotným převodem je potřeba si říct, ve kterých bodech se principiálně liší SQL od relační algebry. Relační algebra podle definice pracuje s množinami hodnot. To znamená, že hodnoty nejsou nijak uspořádané a nemohou se vyskytovat vícekrát. Naproti tomu SQL umožňuje použití setřízení a ve výsledné tabulce, kterou dotaz vrátí, se klidně mohou vyskytovat duplicitní záznamy. Pokud bychom se tedy drželi původní definice RA, pak by bylo možné zpracovat pouze SQL dotazy s klauzulí UNIQUE nebo DISTINCT, kde není použito řazení. Pro účely této práce se tedy dívejme na relační algebru jako na jazyk, který pracuje s uspořádanými multimnožinami stejně jako SQL. Množinové operátory nebudou odstraňovat duplicity a zavedeme novou operaci UNIQUE, která z multimnožiny duplicity vypustí. Aby bylo možné SQL dotaz přeložit je dále nutné zavést ještě další operace ORDER, která setřídí multimnožinu podle daných klíčů, a TOP, která vybere pouze prvních n záznamů. PŘEVOD NA RA Ačkoli bylo řečeno, že SQL je deklarativní jazyk, ve skutečnosti popisuje algoritmus, aniž bychom si to uvědomovali. Systém pak zadaný dotaz sice zoptimalizuje, ale z pohledu na výsledek můžeme říct, jaká je posloupnost zpracování jednotlivých částí SQL dotazu. 1. Nejprve je nutné spojit koncové tabulky. Ve stromu RA jde o listy. a. Kartézský součin jak v SQL, tak v RA existuje operace kartézského součinu. Jediným problémem je, že v SQL můžeme za sebe napsat libovolný počet tabulek (nebo už spojených relací), kdežto RA pracuje pouze s binární operací kartézského součinu. Takovýto součin, ve kterém se vyskytuje více než 2 relace, lze jednoduše rozložit na binární operace. Například FROM A, B, C, D lze převést na takovýto zápis v relační algebře. 12/23

13 b. Vnitřní, levé a pravé vnější spojení v tomto ohledu pracují oba jazyky se stejnými operacemi. Důležitým faktem je, že v zápisu RA se nemůže objevit přirozené spojení, dokud nemáme informace o struktuře všech tabulek, tzn. dokud nemáme k dispozici systémový katalog. I když je uvedena podmínka spojení, nemůžeme určit, zda obsahuje všechny atributy z levé i pravé tabulky. Jelikož v SQL lze pomocí závorek upravovat způsoby spojení, popř. používat vnořené poddotazy, není problém vytvořit ekvivalentní strom operací RA. 2. Aplikace omezující podmínky (WHERE) Poté, co je spojením vytvořena jedna univerzální tabulka, je možné aplikovat omezující podmínku (WHERE). V terminologii RA se jedná o selekci. Pokud tedy SQL dotaz obsahuje WHERE, převede se podmínka z WHERE do selekce. 3. Výpočet agregací Před výpočtem agregací je vhodné provést projekci na atributy, které budeme dále využívat. Jedná se o atributy nebo výrazy, podle nichž se provádí seskupení, nebo o výrazy, které vstupují do agregačních funkcí. Vezměme v úvahu následující příklad: SELECT a, SUM(b) + COUNT(b) + AVG(c) FROM tabulka GROUP BY a Nejprve se provede spojení všech zdrojových relací. V tomto případě jde pouze o tabulku tabulka. Než nad touto multimnožinou provedeme agregace, je vhodné nejprve vybrat pouze potřebné atributy. Vybereme tedy atribut a, protože podle něj se bude provádět seskupení. Dále vybereme atributy (výrazy) b a c, které vstupují do agregačních funkcí. Jak již bylo uvedeno výše, agregační funkce do sebe nesmí být zanořeny. Po provedení projekce potřebných atributů dojde k vytvoření skupin a výpočtu agregací. Pro úplnost by bylo vhodné počítat i s možností, že součástí výrazu v agregační funkci může být DISTINCT. 4. Aplikace omezující podmínky pro skupiny (HAVING) Máme-li vypočtené agregace (souhrny), pak můžeme opět provést selekci s tím, že se v této chvíli můžeme odvolávat na výrazy, které vznikly výpočtem souhrnu. Nesmíme zapomenout na to, že HAVING může obsahovat i agregační funkce, které nejsou v části SELECT. Při výpočtu agregací tedy nesmíme tyto funkce vynechat. 5. Výběr polí (výrazů) Až v tomto momentu proběhne samotná projekce, tzn. výběr potřebných atributů nebo výrazů, které jsou definovány za klíčovým slovem SELECT. 6. Setřízení Nakonec je možné výslednou multimnožinu setřídit podle klíčů. Pro zjednodušení předpokládám, že se třízení bude provádět podle atributů, které byly vybrány projekcí. Třízení by se sice mohlo provést ještě před samotnou projekcí, to by ale nebylo možné v případě použití množinových operátorů, kde se ORDER BY provádí až nakonec. 7. UNIQUE a TOP Přímo za SELECTem může následovat UNIQUE (DISTINCT) nebo TOP n. Na vypočtenou setřízenou multimnožinu aplikujeme DISTINCT nebo TOP n, pokud je dotaz obsahuje. 13/23

14 Algoritmus převodu jednoduchého dotazu je tedy popsán. Zbývá vyřešit množinové operace. Zde však relační algebra nabízí shodné možnosti jako SQL. Pouze nesmíme opomenout, že pokud za UNION, INTERSECT nebo EXCEPT neuvedeme klíčové slovo ALL, pak dojde k odstranění duplicit. Je tedy nutné (v případě, že ALL není zadáno) odstranit duplicity pomocí UNIQUE. PŘÍKLADY PŘEVODU 1. Jednoduchý dotaz SELECT a, b, c FROM tabulka WHERE a > b Příklad demonstruje velmi jednoduchý dotaz. Nejprve vybereme z tabulky tabulka všechny záznamy. Poté provedeme selekci těch záznamů, kde a > b. Nakonec vybereme pouze sloupce a, b a c. 2. Spojení tabulek SELECT DISTINCT a, b, c FROM tabulka1 t1 LEFT JOIN tabulka2 t2 ON t1.id = t2.id WHERE a > b Předchozí příklad je rozšířen o spojení tabulek, které jsou předtím přejmenovány. Na výsledek je navíc aplikováno omezení duplicit 14/23

15 3. Složitější dotaz SELECT DISTINCT a, b, c FROM tabulka1 t1 LEFT JOIN tabulka2 t2 ON t1.id = t2.id, (SELECT id, MAX(x) FROM tabulka3 GROUP BY id) WHERE a > b Ukázka vnořeného poddotazu s agregací a připojení pomocí kartézského součinu. Nejprve je nutné zpracovat poddotaz a levou relaci kartézského součinu, pak dojde k samotné operaci, následuje opět selekce, projekce a omezení duplicit. 4. Množinové operace SELECT a FROM TabA UNION ALL SELECT b FROM TabB EXCEPT ALL SELECT c FROM TabC Poslední ukázka nejprve se provádí projekce nad relacemi TabA, TabB a TabC. Nakonec se aplikují množinové operace sjednocení a rozdíl. IMPLEMENTACE PŘEKLADAČE Konečně se dostáváme k implementaci samotného překladače. Z teorie překladačů je známo, že překlad probíhá v několika fázích, z nichž první je lexikální analýza, následuje analýza syntaxe, sestavení syntaktického stromu a nakonec samotný překlad stromu SQL na strom RA. Pro implementaci jsem zvolil jazyk C#, což je moderní plně objektově orientovaný jazyk, který na bázi.net poskytuje značný komfort při práci. Překladač byl implementován ručně metodou rekurzivního sestupu. 15/23

16 LEXIKÁLNÍ ANALÝZA Lexikální analýza rozdělí vstupní soubor na posloupnost tzv. tokenů, čili symbolů. Jeden dílčí symbol označuje jeden nedělitelný koncový element (slovo) jazyka. Jedná se například o veškeré operátory, identifikátory, klíčová slova, závorky apod. Během této fáze se vyloučí jakékoli bílé znaky, komentáře a upraví se escapesekvence v textových řetězcích. O tuto proceduru se stará třída SQLScanner, která obsahuje metody pro práci s textem. Výstupem je tedy seznam tokenů. Typ tokenu je popsán následujícím výčtem. KEYWORD, IDENTIFIER, COMMA, DOT, LEFT_BRACKET, RIGHT_BRACKET, ASTERISK, PLUS, MINUS, SLASH, STRING_CONSTANT, NUMERIC_CONSTANT, NO_EQUALS, EQUALS, MORE_THAN, LESS_THAN, MORE_OR_EQUALS, LESS_OR_EQUALS, EOF, UNDEFINED Během této fáze může dojít k chybě Scanneru, pokud narazí na neidentifikovatelné slovo. Je generovaná výjimka typu SQLScannerException, která informuje, na které pozici byla neidentifikovatelá sekvence nalezena. SYNTAKTICKÁ ANALÝZA Po lexikální analýze následuje analýza syntaxe. Tu zajišťuje třída SQLParser, která má jako vstup sekvenci tokenů z lexikální analýzy. Syntaktická analýza jednak kontroluje syntaxi zadaného dotazu a jednak generuje syntaktický strom. Tento strom pak slouží jako podklad pro překlad na strom relační algebry. Během syntaktické analýzy opět může dojít k chybě, která je způsobena nekorektní formulací dotazu. Jedná se např. o nesprávné využití klíčového slova nebo operátoru. Je generována výjimka SQLParserException, která podobně jako SQLScannerException informuje o místu v souboru, kde byla nalezena chyba. Syntaktická analýza je řízena gramatikou, která je uvedena v příloze. Přestože pro účely této úlohy není nezbytně nutné parsovat např. matematické výrazy, je zde tato funkce implementována jednak kvůli rozšiřitelnosti a jednak kvůli úplnosti překladače. PŘEKLAD NA RELAČNÍ ALGEBRU Jakmile proběhne syntaktická analýza a je sestaven syntaktický strom, následuje překlad na relační algebru. Vzhledem k tomu, že není k dispozici systémový katalog, není možné kontrolovat správnost SQL dotazu na použité tabulky a jejich sloupce. Dále se v SQL dotazu nesmí objevit požadavek na všechny sloupce z jedné tabulky nebo všech tabulek, tzn. * nebo table.*, protože opět není možné zjistit, o které sloupce má vlastně jít. Algoritmus převodu na RA byl již popsán výše. Zde bych věnoval několik vět vnitřní struktuře RA a vizualizaci RA stromu. Jak během syntaktické analýzy, tak při vytváření výrazu relační algebry je generován strom. Každý typ uzlu je reprezentován vlastní třídou, ve velké míře zde byla využita dědičnost. Třídní diagram pro strom SQL i RA naleznete v příloze. Veškeré třídy pro strom RA pak implementují metody jednak pro generování stromového zobrazení a jednak pro generování lineárního zápisu. VIZUALIZACE METODOU PAINT Klíčovou metodou je metoda Paint, která má dva výstupní parametry bitmapu a bod napojení. public void Paint(out Bitmap bitmap, out Point junction); 16/23

17 Metoda vykreslí na bitmapu vykreslí obsah uzlu, doplní potřebné symboly, znaky nebo matematické výrazy. Nakonec celou bitmapu vrátí. Kromě toho vrátí také bod napojení, ke kterému pak směřují spojnice z nadřazených uzlů. Celá procedura samozřejmě probíhá rekurzivně. Metodu musí implementovat všechny uzly, jelikož dědí ze společného předka RANode. Pro zobrazení jednotlivých operací RA ve stromu jsou použity následující symboly Selekce Projekce Pravé vnější spojení Přejmenování relace Agregace Kartézský součin Omezení duplicit Vnitřní spojení Výběr prvních n záznamů Levé vnější spojení Množinové operace (sjednocení, průnik a rozdíl) LINEÁRNÍ ZÁPIS O lineární přepis se stará metoda ToRAString, která funguje na podobném principu jako metoda pro vykreslování. Lineární zápis operací selekce, projekce, vnitřní spojení tabulek a množinové operace byl popsán výše. Jelikož RA strom pracuje i s jinými operátory, bylo nutné vytvořit ekvivalentní zápisy. Levé vnější spojení R[* podmínka]s Pravé vnější spojení R[podmínka *]S Agregace R{seskupující atributy G agregační funkce} Přejmenování R<RENAME alias> Omezení duplicit R<UNIQUE> Výběr prvních n záznamů R<TOP n> 17/23

18 VÝSLEDEK IMPLEMENTACE Jako produkt celé úlohy vznikla aplikace s grafickým uživatelským rozhraním, která je spustitelná pod systémem Microsoft Windows na platformě.net. Ovládání aplikace je intuitivní a snadné. V horní části se nachází textové pole, kam je možno zadat SQL dotaz. Po kliknutí na tlačítko Convert to RA nebo stisknutím klávesy F5 proběhne samotný překlad. Výsledky jsou dva stromové a lineární zobrazení. Mezi těmito zobrazeními se lze přepínat pomocí záložek. V případě, že při překladu byly objeveny nějaké nejasnosti v zadaném dotazu, zobrazí se panel s chybovým hlášením a kurzor se přemístí do textového pole s SQL dotazem na místo, kde chyba pravděpodobně vznikla. Strom relační algebry je možné exportovat tlačítkem Save tree image a SQL dotaz lze načíst pomocí Load SQL. ZÁVĚR Výsledná aplikace je schopna zanalyzovat jakýkoli zadaný SQL dotaz, který vyhovuje gramatice uvedené níže. Jelikož během překladu není k dispozici systémový katalog, není možné provést typovou kontrolu nad výrazy a není možné určit, zda identifikátory v dotazu skutečně existují. Na dotazy, které jsou součástí výrazů, se neaplikuje další rekurzivní rozklad. Produkt může kromě studijních účelů sloužit také jako vizualizace provádění dotazu. Ze zobrazeného stromu lze snadněji zjistit, co má dotaz provádět. Výsledný program by bylo možné rozšířit na jednoduchý dotazovací nástroj, který by prováděl dotazování nad definovanými tabulkami a v rámci rozloženého výrazu RA by pak bylo možné dotazy optimalizovat. Tyto možnosti však daleko překračují rozsah projektu a celková implementace by zabrala mnohem více času. 18/23

19 LITERATURA Jana Šarmanová, R. F. (n.d.). Relační datový model. Retrieved from Barborka: Parsing Expression Grammar. (n.d.). Retrieved from Wikipedia: Relational Algebra. (n.d.). Retrieved from Wikipedia: 19/23

20 PŘÍLOHA 1 POUŽITÁ GRAMATIKA JAZYKA SQL Syntaktická analýza se řídí následující gramatikou. <QUERY> <ORDERBYEXPRESSIONS> <ORDERBYEXPRESSIONS1> <ORDERBYITEM> <EXPRESSION> <DISJ> <DISJ1> <CONJ> <CONJ1> <NOT> <REL> <SUM> <SUM1> <FACTOR> <FACTOR1> <TERM> <VALUE> <UNION> [ ORDER BY <ORDERBYEXPRESSIONS>] <ORDERBYITEM> <ORDERBYEXPRESSIONS1>, <ORDERBYITEM> <ORDERBYEXPRESSIONS1> e <EXPRESSION> [ DESC ASC ] <DISJ> <CONJ> <DISJ1> OR <CONJ> <DISJ1> e <NOT> <CONJ1> AND <NOT> <CONJ1> e NOT <NOT> <REL> <SUM> IN <NESTEDSELECT> <SUM> BETWEEN <SUM> AND <SUM> <SUM> IS NULL <SUM> = ( ALL ANY ) <NESTEDSELECT> <SUM> = <SUM> <SUM> <> ( ALL ANY ) <NESTEDSELECT> <SUM> <> <SUM> <SUM> > ( ALL ANY ) <NESTEDSELECT> <SUM> > <SUM> <SUM> < ( ALL ANY ) <NESTEDSELECT> <SUM> < <SUM> <SUM> >= ( ALL ANY ) <NESTEDSELECT> <SUM> >= <SUM> <SUM> <= ( ALL ANY ) <NESTEDSELECT> <SUM> <= <SUM> <SUM> <FACTOR> <SUM1> + <FACTOR> <SUM1> - <FACTOR> <SUM1> e <TERM> <FACTOR1> * <TERM> <FACTOR1> / <TERM> <FACTOR1> e [ + - NOT ] <NESTEDSELECT> [ + - NOT ] ( <EXPRESSION> ) [ + - NOT ] <VALUE> <IDENTIFIER>. <IDENTIFIER> <IDENTIFIER> ( <EXPRESSIONS> ) <IDENTIFIER> <STRINGCONSTANT>

21 <NUMERICCONSTANT> <UNION> <UNION1> <INTERSECT> <INTERSECT1> <INTERSECT> <UNION1> UNION <INTERSECT> <UNION1> EXCEPT <INTERSECT> <UNION1> e <QUERYELEMENT> <INTERSECT1> INTERSECT <QUERYELEMENT> <INTERSECT1> e <QUERYELEMENT> ( <UNION> ) <SELECT> <SELECT> SELECT [ DISTINCT TOP <NUMERICCONSTANT>] <FIELDS> [ FROM <TABLES> [ WHERE <EXPRESSION>] [ GROUP BY <EXPRESSIONS> [ HAVING <EXPRESSION>]]] <FIELDS> <FIELDS1> <FIELD> <FIELDS1>, <FIELD> <FIELDS1> e <FIELD> <IDENTIFIER>. * * <EXPRESSION> [<IDENTIFIER>] <TABLES> <TABLES1> <JOINS> <JOINS1> <JOIN> <TABLE> <EXPRESSIONS> <EXPRESSIONS1> <JOINS> <TABLES1>, <JOINS> <TABLES1> e <TABLE> <JOINS1> <JOIN> <JOINS1> e LEFT [ OUTER ] JOIN <JOINS> ON <EXPRESSION> RIGHT [ OUTER ] JOIN <JOINS> ON <EXPRESSION> [ INNER ] JOIN <JOINS> ON <EXPRESSION> <NESTEDSELECT> [<IDENTIFIER>] ( <TABLES> ) [<IDENTIFIER>] <IDENTIFIER> [<IDENTIFIER>] <EXPRESSION> <EXPRESSIONS1>, <EXPRESSION> <EXPRESSIONS1> e <NESTEDSELECT> ( <UNION> )

22 PŘÍLOHA 2 TŘÍDNÍ DIAGRAM SYNTAKTICKÉHO STROMU SQL

23 PŘÍLOHA 3 TŘÍDNÍ DIAGRAM STROMU RA

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření

Více

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza Databáze SQL SELECT David Hoksza http://siret.cz/hoksza Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL Structured Query Language (SQL) SQL napodobuje jednoduché anglické

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

Informační systémy ve zdravotnictví. 6. cvičení

Informační systémy ve zdravotnictví. 6. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 6. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování Relace

Více

KIV/ZIS cvičení 5. Tomáš Potužák

KIV/ZIS cvičení 5. Tomáš Potužák KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 5 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování K čemu se používají

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek 5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška Databázové systémy Datová integrita + základy relační algebry 4.přednáška Datová integrita Datová integrita = popisuje pravidla, pomocí nichž hotový db. systém zajistí, že skutečná fyzická data v něm uložená

Více

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev Úvod do databází Modelování v řízení Ing. Petr Kalčev Co je databáze? Množina záznamů a souborů, které jsou organizovány za určitým účelem. Jaké má mít přínosy? Rychlost Spolehlivost Přesnost Bezpečnost

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 4 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Klauzule příkazu

Více

Informační systémy ve zdravotnictví. 10. cvičení

Informační systémy ve zdravotnictví. 10. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 10. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování K čemu

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 8 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Entita Entitní typ

Více

6. blok část C Množinové operátory

6. blok část C Množinové operátory 6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.

Více

KIV/ZIS - SELECT, opakování

KIV/ZIS - SELECT, opakování KIV/ZIS - SELECT, opakování soubor 4_databaze.accdb (lze použít ten z minula) http://home.zcu.cz/~krauz/zis/4_databaze.accdb minule: SELECT FROM WHERE ORDER BY SELECT sloupce jaké sloupce chceme vybrat

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

Databáze I. Přednáška 6

Databáze I. Přednáška 6 Databáze I Přednáška 6 SQL aritmetika v dotazech SQL lze přímo uvádět aritmetické výrazy násobení, dělení, sčítání, odčítání příklad z minulé přednášky: zdvojnásobení platu všem zaměstnancům UPDATE ZAMESTNANEC

Více

Informační systémy ve zdravotnictví. 8. cvičení

Informační systémy ve zdravotnictví. 8. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 8. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování Klauzule

Více

Databázové systémy I

Databázové systémy I Databázové systémy I Přednáška č. 8 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz Skupinové a souhrnné dotazy opakování Obsah Pohledy syntaxe použití význam Vnořené

Více

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR): Mezi příkazy pro manipulaci s daty (DML) patří : 1. SELECT 2. ALTER 3. DELETE 4. REVOKE Jaké vlastnosti má identifikující relace: 1. Je relace, která se využívá pouze v případě modelovaní odvozených entit

Více

Databázové systémy Cvičení 5.3

Databázové systémy Cvičení 5.3 Databázové systémy Cvičení 5.3 SQL jako jazyk pro manipulaci s daty SQL jako jazyk pro manipulaci s daty Aktualizace dat v SQL úprava záznamů v relacích (tabulkách) vložení záznamu INSERT INTO oprava záznamu

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Databázové systémy Cvičení 5

Databázové systémy Cvičení 5 Databázové systémy Cvičení 5 Dotazy v jazyce SQL SQL jako jazyk pro manipulaci s daty Aktualizace dat v SQL úprava záznamů v relacích (tabulkách) vložení záznamu INSERT INTO oprava záznamu UPDATE vymazání

Více

Úvod do databázových systémů 3. cvičení

Úvod do databázových systémů 3. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů 3. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2012 Klauzule příkazu Klauzule

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux B0M33BDT Technologie pro velká data Supercvičení SQL, Python, Linux Sergej Stamenov, Jan Hučín 18. 10. 2017 Osnova cvičení Linux SQL Python 2 SQL pro uživatele aneb co potřebuje znát a umět bigdatový uživatel:

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

RELAČNÍ DATABÁZOVÉ SYSTÉMY

RELAČNÍ DATABÁZOVÉ SYSTÉMY RELAČNÍ DATABÁZOVÉ SYSTÉMY VÝPIS KONTROLNÍCH OTÁZEK S ODPOVĚDMI: Základní pojmy databázové technologie: 1. Uveďte základní aspekty pro vymezení jednotlivých přístupů ke zpracování hromadných dat: Pro vymezení

Více

Dotazy tvorba nových polí (vypočítané pole)

Dotazy tvorba nových polí (vypočítané pole) Téma 2.4 Dotazy tvorba nových polí (vypočítané pole) Pomocí dotazu lze také vytvářet nová pole, která mají vazbu na již existující pole v databázi. Vznikne tedy nový sloupec, který se počítá podle vzorce.

Více

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 Jazyk SQL 1 Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky XMW4 / IW4 Pokročilé SELECT dotazy Štefan Pataky TOP, OFFSET-FETCH Konverze datových typů Logické funkce Práce s řetězci Poddotazy a množinové dotazy SQL Windowing Agenda TOP TOP omezení počtu vrácených

Více

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty

Více

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi. Databáze Základní pojmy Pojem databáze označuje obecně souhrn informací, údajů, dat o nějakých objektech. Úkolem databáze je hlídat dodržení všech omezení a dále poskytovat data při operacích. Objekty

Více

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky Úterý 26. února Microsoft Access Databáze je seskupení většího množství údajů, které mají určitou logiku a lze je určitým způsobem vyhodnocovat, zpracovávat a analyzovat Access je jedním z programů určených

Více

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např. 2 přednáška 2 října 2012 10:32 Souborově orientované uchování dat Slabý HW Není možné uchovávat "velká data" - maximálně řádově jednotky MB Na každou úlohu samostatná aplikace, která má samostatná data

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Databázové systémy Cvičení 5.2

Databázové systémy Cvičení 5.2 Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako

Více

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení Microsoft Access Databáze je seskupení většího množství údajů, které mají určitou logiku a lze je určitým způsobem vyhodnocovat, zpracovávat a analyzovat Access je jedním z programů určených pro zpracování

Více

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný DJ2 rekurze v SQL slajdy k přednášce NDBI001 Jaroslav Pokorný 1 Obsah 1. Úvod 2. Tvorba rekurzívních dotazů 3. Počítaní v rekurzi 4. Rekurzívní vyhledávání 5. Logické hierarchie 6. Zastavení rekurze 7.

Více

Základní přehled SQL příkazů

Základní přehled SQL příkazů Základní přehled SQL příkazů SELECT Základní použití Příkaz SELECT slouží k získání dat z tabulky nebo pohledu v požadované podobě. Získání všech řádků a sloupců z tabulky SELECT * FROM Person.Contact

Více

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT david@wug.cz @gesvindr Logické zpracování dotazu Jazyk T-SQL je deklarativní Popisujeme,

Více

Databázové systémy Tomáš Skopal

Databázové systémy Tomáš Skopal Databázové systémy Tomáš Skopal - SQL * úvod * dotazování SELECT Osnova přednášky úvod do SQL dotazování v SQL příkaz SELECT třídění množinové operace 2 SQL 3 structured query language standardní jazyk

Více

RELAČNÍ DATABÁZE ACCESS

RELAČNÍ DATABÁZE ACCESS RELAČNÍ DATABÁZE ACCESS 1. Úvod... 2 2. Základní pojmy... 3 3. Vytvoření databáze... 5 4. Základní objekty databáze... 6 5. Návrhové zobrazení tabulky... 7 6. Vytváření tabulek... 7 6.1. Vytvoření tabulky

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Jazyk SQL databáze SQLite. připravil ing. petr polách

Jazyk SQL databáze SQLite. připravil ing. petr polách Jazyk SQL databáze SQLite připravil ing. petr polách SQL - úvod Structured Query Language (strukturovaný dotazovací jazyk 70. léta min. století) Standardizovaný dotazovací jazyk používaný pro práci s daty

Více

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Základy informatiky. 08 Databázové systémy. Daniela Szturcová Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

Databázové systémy. Dotazovací jazyk SQL - II

Databázové systémy. Dotazovací jazyk SQL - II Databázové systémy Dotazovací jazyk SQL - II SELECT I SELECT FROM WHERE GROUP BY HAVING

Více

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databáze Základní seznámení s MySQL

Více

Databáze I. Přednáška 2

Databáze I. Přednáška 2 Databáze I Přednáška 2 Transformace E-R modelu do relačního modelu (speciality) zaměříme se na dva případy z předmětu Analýza a modelování dat reprezentace entitního podtypu hierarchie ISA reprezentace

Více

Analýza a modelování dat 3. přednáška. Helena Palovská

Analýza a modelování dat 3. přednáška. Helena Palovská Analýza a modelování dat 3. přednáška Helena Palovská Historie databázových modelů Relační model dat Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM

Více

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL) SQL strukturovaný dotazovací jazyk Structured Query Language (SQL) SQL - historie 1974-75 - IBM - 1.prototyp - SEQUEL od 1979 - do praxe - ORACLE (1979) IBM - SQL/DS (1981), DB/2 (1983) postupně přijímán

Více

Dotazování v relačním modelu a SQL

Dotazování v relačním modelu a SQL Databázové systémy Dotazování v relačním modelu a SQL Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/YDATA: Přednáška II. 14. říjen, 2016 1 / 35 Opakování Relační

Více

6. blok část B Vnořené dotazy

6. blok část B Vnořené dotazy 6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování

Více

KIV/ZIS cvičení 6. Tomáš Potužák

KIV/ZIS cvičení 6. Tomáš Potužák KIV/ZIS cvičení 6 Tomáš Potužák Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Slučování záznamů do skupin (1) Chceme zjistit informace obsažené ve více záznamech najednou Klauzule GROUP

Více

5. blok Souhrnné a skupinové dotazy

5. blok Souhrnné a skupinové dotazy 5. blok Souhrnné a skupinové dotazy Studijní cíl Tento blok je věnován základům při vytváření souhrnných a skupinových dotazů s využitím agregačních funkcí SUM(), AVG(), MIN(), MAX() a COUNT() a klauzulí

Více

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT -SELECT Informační a znalostní systémy 1 - Structured Query Language norma pro dotazování nad relačními databáze díky přenositelnosti- rozmach relačních databází zahrnuje jak dotazování na data, tak změny

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

Databázové systémy a SQL

Databázové systémy a SQL Databázové systémy a SQL Lekce 2 Daniel Klimeš Autor, Název akce 1 Operátory a funkce +,- Sčítání, odečítání *,/ Násobení, dělení =, , >=,

Více

12. blok Pokročilé konstrukce SQL dotazů - část II

12. blok Pokročilé konstrukce SQL dotazů - část II 12. blok Pokročilé konstrukce SQL dotazů - část II Studijní cíl Tento blok je věnován pokročilým konstrukcím SQL dotazů, které umožní psát efektivní kód. Pozornost je věnována vytváření pohledů v rámci

Více

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Databáze MS-Access Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Obsah Principy a možnosti databází. Uložení dat v databázi, formáty dat, pole, záznamy, tabulky, vazby mezi záznamy. Objekty databáze

Více

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 06 Databázové systémy Kačmařík/Szturcová/Děrgel/Rapant Problém zpracování dat důvodem je potřeba zpracovat velké množství dat, evidovat údaje o nějaké skutečnosti: o skupině lidí (zaměstnanců,

Více

Jazyk S Q L základy, příkazy pro práci s daty

Jazyk S Q L základy, příkazy pro práci s daty Jazyk S Q L základy, příkazy pro práci s daty Základní pojmy jazyk množina řetězců nad abecedou gramatika popisuje syntaxi výrazů jazyka pravidla, jak vytvářet platné řetězce jazyka. dotazovací jazyk je

Více

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý Autor: Mgr. Dana Kaprálová VZORCE A VÝPOČTY Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

Základní vzorce a funkce v tabulkovém procesoru

Základní vzorce a funkce v tabulkovém procesoru Základní vzorce a funkce v tabulkovém procesoru Na tabulkovém programu je asi nejzajímavější práce se vzorci a funkcemi. Když jednou nastavíte, jak se mají dané údaje zpracovávat (některé buňky sečíst,

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

Materializované pohledy

Materializované pohledy Materializované pohledy Pavel Baroš, 2010 Obsah Materializované pohledy Co přináší? Řešení ostatních DBS syntaxe a semantika pro: Oracle, MS SQL, DB2 ostatní Možné řešení pro PostgreSQL PostgreSQL 2 Materializované

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12 Jazyk SQL 2 Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ M.Valenta (FIT ČVUT) Jazyk

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 1. Teorie normálních forem Pojem normálních forem se používá ve spojitosti s dobře navrženými tabulkami. Správně vytvořené tabulky splňují 4 základní normální formy, které

Více

4. blok část A Logické operátory

4. blok část A Logické operátory 4. blok část A Logické operátory Studijní cíl Tento blok je věnován představení logických operátorů AND, OR, NOT v jazyce SQL a práce s nimi. Doba nutná k nastudování 1-2 hodiny Průvodce studiem Při studiu

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

Kapitola 4: SQL. Základní struktura

Kapitola 4: SQL. Základní struktura - 4.1 - Kapitola 4: SQL Základní struktura Množinové operace Souhrnné funkce Nulové hodnoty Vnořené poddotazy (Nested sub-queries) Odvozené relace Pohledy Modifikace databáze Spojené relace Jazyk definice

Více

Databázové systémy. Ing. Radek Holý

Databázové systémy. Ing. Radek Holý Databázové systémy Ing. Radek Holý holy@cvut.cz Literatura: Skripta: Jeřábek, Kaliková, Krčál, Krčálová, Kalika: Databázové systémy pro dopravní aplikace Vydavatelství ČVUT, 09/2010 Co je relační databáze?

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23 Stručný obsah 1. Stručný úvod do relačních databází 13 2. Platforma 10g 23 3. Instalace, první přihlášení, start a zastavení databázového serveru 33 4. Nástroje pro administraci a práci s daty 69 5. Úvod

Více

Analýza a modelování dat. Přednáška 9

Analýza a modelování dat. Přednáška 9 Analýza a modelování dat Přednáška 9 Další dotazování nad kostkou Rozšíření SQL99 rozšíření SQL99 (minulá přednáška): seskupovací operátory za GROUP BY CUBE statistiky dle řezů ROLLUP statistiky dle rolování

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou: Relační databáze Pojem databáze, druhy databází Databází se myslí uložiště dat. V době začátků využívání databází byly tyto členěny hlavně hierarchicky, případně síťově (rozšíření hierarchického modelu).

Více

Analýza a modelování dat. Přednáška 8

Analýza a modelování dat. Přednáška 8 Analýza a modelování dat Přednáška 8 OLAP, datová kostka, dotazování nad kostkou Motivace většina DB relační zaznamenání vztahů pomocí logicky provázaných tabulek jakou mají velmi často vztahy povahu vztah

Více

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

DUM 12 téma: Příkazy pro tvorbu databáze

DUM 12 téma: Příkazy pro tvorbu databáze DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován. Instalace Produkt se neinstaluje. Stačí soubor uložit na libovolné místo na Vašem počítací (klikněte pravým tlačítkem a dejte 'uložit cíl jako ), pak jen spustit. Požadavky na software Produkt je odzkoušen

Více

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev Úvod do MS Access Modelování v řízení Ing. Petr Kalčev Postup při tvorbě aplikace Vytvoření tabulek Vytvoření relací Vytvoření dotazů Vytvoření formulářů Vytvoření sestav Tabulky Slouží k definování polí,

Více

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází Tiskové sestavy Tiskové sestavy se v aplikaci Access používají na finální tisk informací z databáze. Tisknout se dají všechny objekty, které jsme si vytvořili, ale tiskové sestavy slouží k tisku záznamů

Více

Databáze I. 1. přednáška. Helena Palovská

Databáze I. 1. přednáška. Helena Palovská Databáze I 1. přednáška Helena Palovská palovska@vse.cz Co je databáze Mnoho dat Organizovaných používá se model uspořádání Řízený přístup k datům přijímá požadavky v jazyce modelu umožňuje sdílení dat

Více

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Instalace Microsoft SQL Serveru 2 Dotazovací jazyk SQL 3 Příkaz SELECT

Více

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) Marketingová komunikace Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) 2. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Minulé soustředění úvod

Více

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo

Více

DATA CUBE. Mgr. Jiří Helmich

DATA CUBE. Mgr. Jiří Helmich DATA CUBE Mgr. Jiří Helmich Analytické kroky formulace dotazu analýza extrakce dat vizualizace Motivace n-sloupcová tabulka v Excelu vs. sloupcový graf Dimensionality reduction n dimenzí data obecně uspořádána

Více

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Dotazovací jazyky I. Datová krychle. Soběslav Benda Dotazovací jazyky I Datová krychle Soběslav Benda Obsah Úvod do problematiky Varianty přístupu uživatelů ke zdrojům dat OLTP vs. OLAP Datová analýza Motivace Vytvoření křížové tabulky Datová krychle Teorie

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze250312.accdb. SQL dotazy. budeme probírat pouze SELECT

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze250312.accdb. SQL dotazy. budeme probírat pouze SELECT KIV/ZIS - SQL dotazy stáhnout soubor ZIS- 04_TestovaciDatabaze250312.accdb SQL dotazy textové příkazy pro získání nebo manipulaci s daty SELECT - výběr/výpis INSERT - vložení UPDATE - úprava DELETE - smazání

Více

MS Access Dotazy SQL

MS Access Dotazy SQL MS Access Dotazy SQL Dotaz SELECT Michal Nykl Materiály pro cvičení KIV/ZIS 2012 Červeně značené výsledky odpovídají souboru cv4_testovacidatabaze250312.accdb Dotaz SELECT - struktura SELECT [ DISTINCT

Více