Databázové systémy
Transkript
Vyšší odborná škola informačních služeb, Praha 4, Pacovská 350/4 Databázové systémy Sylaby ke kurzu Helena Kučerová 2004 Obsah 1. Úvod..........................................................................................................................................3 2. Podstata databázové technologie ............................................................................................4 2.1 Definice databáze ..............................................................................................................4 2.2 Zpracování dat – jedna z nejdůležitějších oblastí využití počítačů....................................4 2.3 Obecná technologie vytváření informačního systému.......................................................5 3. Teoretická východiska a související obory .............................................................................16 3.1 Teorie systémů ................................................................................................................16 3.2 Teorie množin ..................................................................................................................16 3.3 Booleova algebra .............................................................................................................17 3.4 Teorie grafů......................................................................................................................18 3.5 Teorie podobnosti ............................................................................................................18 4. Databázová technologie .........................................................................................................19 4.1 Databáze jako množina dat .............................................................................................19 4.2 Databáze jako systém tvořený daty uspořádanými do struktury – datová základna.......20 4.2.1 Datové typy ...............................................................................................................20 4.2.2 Datové struktury........................................................................................................23 4.3 Databáze jako systém, v němž dochází k realizaci operací a procedur – SŘBD ...........34 4.4 Databáze jako model .......................................................................................................39 5. Databázový software ..............................................................................................................40 5.1 Databáze pro osobní počítače.........................................................................................41 5.2 Databáze pro minipočítače (servery)...............................................................................41 5.3 Nástroje pro vývoj databázových aplikací .......................................................................41 5.4 CASE ...............................................................................................................................41 5.5 Aplikace vytvořené na základě databázových systémů ..................................................41 5.6 Multidimenzionální (nerelační) databáze .........................................................................41 5.7 Tabulkové procesory (spreadsheety) ..............................................................................41 6. Relační databázové systémy..................................................................................................42 6.1 Relační model dat ............................................................................................................42 6.2 Definice relační databáze ................................................................................................45 6.3 Vyjádření vztahů v relačním modelu................................................................................48 6.4 Základní relační operace (relační algebra)......................................................................53 7. S Q L.......................................................................................................................................59 7.1 Základní terminologie.......................................................................................................61 7.2 Typy dat SQL dle normy SQL:1999 .................................................................................62 7.3 Základní příkazy a klauzule SQL .....................................................................................63 7.4 Dotazovací jazyk SQL......................................................................................................65 7.4.1 Projekce ....................................................................................................................66 7.4.2 Selekce .....................................................................................................................67 7.4.3 Spojování (joins) .......................................................................................................69 7.4.4 Výpočty v dotazech...................................................................................................72 7.4.5 Tvorba poddotazů.....................................................................................................74 7.4.6 Souhrnné příklady dotazů.........................................................................................76 7.5 Jazyk pro definici dat .......................................................................................................78 7.6 Jazyk pro manipulaci s daty.............................................................................................79 7.7 Dotazy k procvičení jazyka SQL ......................................................................................80 8. Vývojové trendy databázových systémů ................................................................................83 8.1 Překonávání souborové orientace databází ....................................................................83 8.2 Překonávání dvourozměrného modelu relačních databází .............................................87 8.3 Překonávání omezení na textovou reprezentaci reality...................................................91 8.4 Rozšiřování možností zpracování uložených dat ............................................................92 9. Práce s databázovým systémem Paradox .............................................................................94 10. Terminologický slovníček .....................................................................................................100 11. Doporučená literatura ...........................................................................................................107 2 1. Úvod Programy pro zpracování dat a databáze jsou povedeným pokusem, jak obrat nic netušícího člověka o 1500 marek za slib, že bude moci pomocí asi 300 snadno zapamatovatelných příkazů nahradit kartotéku a bude mít navzdory programu ještě čas si vzpomenout, co původně chtěl pomocí programu udělat. GRAF, Joachim: Murphyho počítačové zákony Tyto sylaby jsou zpracovány jako doprovodný materiál pro modul Databázové systémy, vyučovaný na Vyšší odborné škole informačních služeb. Základní učební cíle modulu jsou: 1) získání nezbytných teoretických základů pro navrhování, tvorbu a provoz bází dat, 2) osvojení způsobu práce s vybraným relačním databázovým systémem. Teoretické základy databázové technologie jsou prezentovány formou výkladu na přednáškách. Vzhledem k tomu, že studenti budou v budoucnu působit převážně jako vysoce kvalifikovaní uživatelé databázových systémů, jsou ve výkladu základní principy databázového modelu a funkce systému řízení báze dat představeny v přiměřené míře zjednodušení a v návaznosti na konkrétní typické aplikace v podnikové a informační praxi. Pozornost je zaměřena zejména na problematiku relačních databází. Nabyté teoretické vědomosti mají posloužit jako základ pro další sledování rychle se vyvíjejícího oboru a pro adaptaci na nové verze softwarových produktů. Výuka práce s relačním databázovým systémem probíhá formou praktického kurzu v počítačových učebnách VOŠIS. V jednotlivých lekcích studenti postupně absolvují všechny základní kroky od návrhu nové databáze přes její naplnění daty a tvorbu dotazů, formulářů a sestav až po jednoduché programování. Cílem této části výuky je získat nejen schopnost rutinního ovládání konkrétního programového produktu, ale i praktické zkušenosti, využitelné k řešení konkrétní agendy a k samostatnému vytváření vlastních databázových aplikací. Ve studijním plánu VOŠIS souvisí modul Databázové systémy zejména s obsahem modulů Informační technologie, Projektování informačních systémů, Programování. 3 2. Podstata databázové technologie Současné informační technologie umožňují uchovávat na jednom místě (například na disku počítače) ohromné množství informací. Tím vzrůstá potřeba najít způsob, jak tyto údaje organizovat, aby bylo možné je rychle vyhledávat. Zároveň s tím se vyvíjejí specializované programy, které jsou schopné s údaji určitým způsobem organizovanými (strukturovanými) pracovat. Systémům organizovaných dat, ke kterým je přístup zajištěn pomocí speciálního počítačového programu, říkáme databáze. 2.1 Definice databáze nejčastěji používané termíny: databáze (database), banka dat (data bank), báze dat (data base), databázový systém (database system – DBS) možná pojetí databáze: a) databáze jako úschovna (banka) dat (kap. 4.1, 4.2, 4.3): soubor (souhrn, množina) dat uložených v paměti počítače, logicky uspořádaných ve formě záznamů, které jsou navzájem v určitém vztahu a jsou přístupné s pomocí programového vybavení (databázového softwaru), určeného k ukládání, zpracování, vyhledávání a prezentaci velkých objemů dat b) databáze jako model (reprezentace) nějaké skutečnosti (kap. 4.4): datové zobrazení (model) řízených nebo zkoumaných objektů reálného světa Databáze je systém sloužící k modelování objektů a vztahů reálného světa (včetně abstraktních nebo fiktivních) prostřednictvím digitálních dat uspořádaných tak, aby se s nimi dalo efektivně manipulovat, tj. rychle vyhledat, načíst do paměti a provádět s nimi potřebné operace – zobrazení, přidání nových nebo aktualizace stávajících údajů, matematické výpočty, uspořádání do pohledů a sestav. Základními prvky databáze jsou data a program pro práci s nimi. Datový obsah tvoří množina jednotně strukturovaných dat uložených v paměti počítače nebo na záznamovém médiu, jež jsou navzájem v určitém vztahu a tvoří určitý celek z hlediska obsažených informací; data jsou přístupná výhradně pomocí speciálního programového vybavení – systému řízení báze dat. Na rozdíl od jiných souborů (např. texty, obrázky) uživatel nepracuje s databází jako s celkem, ale vybírá z ní data prostřednictvím dotazů. Podle typu obsažených dat se rozlišují databáze textové (mezi nimi lze dále vyčlenit databáze plnotextové, bibliografické, referenční, faktografické), numerické, obrazové, multimediální. Podle způsobu práce uživatele s daty se rozlišují databáze umožňující zápis dat (např. firemní transakční systémy, modul katalogizace knihovního systému) a databáze umožňující pouze vyhledávání a čtení dat (např. databáze v databázových centrech, OPAC, datové sklady).1 2.2 Zpracování dat – jedna z nejdůležitějších oblastí využití počítačů 1 4 Zdroj: TDKIV – terminologická databáze knihovnictví a informační vědy Nejvýznamnější aplikační oblasti počítačů: 1. zpracování textů 2. zábava, hry 3. zpracování velkých objemů dat 4. komunikace, networking 5. vědeckotechnické výpočty 6. počítačem podporované konstruování 7. počítačová grafika 8. tvorba aplikací (programy pro tvorbu programů – programovací jazyky, vývojářské nástroje), servis pro provoz aplikací (operační systémy, utility) Výhody a nevýhody počítačových systémů zpracování dat + úspora místa − náklady na pořízení vybavení + rychlost přístupu k datům − náklady na uložení dat + snadné úpravy dat − riziko snadného poškození dat + snadné kopírování dat − riziko snadného odcizení dat + možnost práce s týmiž daty pro více osob současně − nezbytnost zajistit ochranu dat při využívání v síti + uživatelsky příjemná práce s daty − podmínkou je kladný vztah k počítačům a základní znalost práce s nimi Vývojové etapy technologií zpracování dat: 1. před využitím počítačů tradiční metody 2. souborová technologie 3. databázová technologie 4. post-databázová technologie technologie využívající počítače Typy systémů z hlediska zpracování informací 1. databázové a informační uchování a vyhledání elementárních dat (faktů) a mechanická manipulace s nimi výsledek zpracování: materiál pro rozhodování (informace jako podklad pro vlastní rozhodnutí) 2. znalostní a expertní uchování a využívání nejen fakt, ale i explicitně vyjádřených znalostí, tj. "návodů" pro vyvozování nových faktů z faktů známých výsledek zpracování: rozhodnutí (informace jako výsledek rozhodovacího procesu) 2.3 Obecná technologie vytváření informačního systému řešené problémy: 5 • • uložení velkého množství dat (problém s prostorem) vyhledávání z velkého množství dat o organizace dat o vyhledávací algoritmy Řešení prostorového problému (při uložení velkého množství dat) 1. tradiční metody 1.1 redukce obsahu2 • vytváření zástupných seznamů s údaji reprezentujícími (popisujícími, identifikujícími) původní dokument: indexy, katalogy – např. celou knihu nahradí lístek s její bibliografickou citací • vytváření zhuštěných (kondenzovaných, komprimovaných) dokumentů (anotace, referát, resumé, výtah, digest, surogát) 1.2 redukce velikosti záznamového média • mikrografie 2. informační systémy vytvářené s pomocí počítače (automatizované) 2.1 redukce obsahu • automatické indexování a výtahy 2.2 redukce velikosti záznamového média • magnetická paměťová média • optické paměti • datová komprese Řešení problému organizace velkého množství dat organizace = třídění (uspořádání) za účelem vyhledávání posuzujeme: • rychlost přístupu k datům • možnost vyhledávat podle více hledisek a) zda vůbec lze b) zda lze použít v dotazu více hledisek současně • možnosti vyjádření vztahů mezi daty • možnosti aktualizace • úspornost v uložení dat (míru redundance) 2 Poznámka: tímto způsobem neredukujeme pouze místo potřebné k uložení, ale i čas potřebný k seznámení s obsahem. 6 1. tradiční metody3 postup: • data uložíme na nosič v uspořádání, v němž tvoří logické celky příklad: encyklopedické heslo, výpůjční lístek, kniha, bibliografická citace jedné knihy, záznam o ošetření pacienta, recept v kuchařce, popiska muzejního exponátu • mezi těmito datovými celky pak stanovíme vztahy jejich fyzickým sekvenčním seřazením (např. podle abecedy) příklad fyzického seřazení: abecední pořadí hesel v encyklopedii, výpůjční lístky podle data výpůjčky, knihy seřazené do skupin podle tématu, bibliografické citace řazené podle data vydání, seznam pacientů podle rodných čísel, recepty řazené podle skupin jídel (v rámci skupin podle abecedy), seznam muzejních exponátů podle přírůstkových čísel • vyhledávání podle více hledisek umožníme buď duplikací celých souborů nebo pomocí rejstříků (indexů) – tj. zvláštních doplňkových seznamů umožňujících podle kódů přímý přístup k jednotlivým datovým celkům příklad rejstříků: věcný rejstřík v knize, rejstřík autorů na závěr ročníku časopisu, abecední rejstřík jídel v kuchařce, chronologický rejstřík muzejních exponátů • přístup k datům realizujeme „ručně“, manuálním vyhledáváním 1.1 seznamy jednohlediskové (jednokriteriální) vyhledávání aktualizace je možná pouze přepsáním celého seznamu 1. 2. 3. 4. 5. 1.2 kartotéky jednohlediskové (jednokriteriální) vyhledávání snadnější aktualizace vrubové štítky aj. malá mechanizace – umožňují vícehlediskové vyhledávání 1.3 indexy (rejstříky, registry) pomocné seznamy tříděné podle jiného hlediska než základní soubor (seznam, kartotéka), obsahující odkaz na záznam v tomto souboru 1. 2. 3. 4. 5. vícehlediskové vyhledávání (možnost použít tolik hledisek, kolik je indexů) aktualizace indexů: stejná jako v případě seznamů (přepsáním) nedostatky: • redundance (kvůli přípravě na různé typy dotazů duplikujeme data) • problémy s aktualizací dat roztříštěných do více souborů 3 Poznámka: tyto tradiční postupy lze uplatnit i v prostředí počítačového systému (např. pomocí textového editoru) 7 2. informační systémy vytvářené s pomocí počítače4 (automatizované) postup: • data připravíme k uložení tak, aby tvořila logické celky • data uložíme na paměťová média počítače do předem definované logické struktury • zrychlení vyhledávání umožníme setříděním základního souboru nebo pomocí indexových souborů • vyhledávání podle více hledisek realizujeme pomocí počítačových programů – buď fyzickým přetříděním základního souboru nebo tvorbou indexových souborů5 • přístup k datům realizujeme prostřednictvím počítačových programů 2.1 souborové systémy • hierarchické • síťové 2.2 databázové systémy • relační • nerelační (objektově orientované, hypertextové) 2.3 systémy nastupující po databázích (umělá inteligence) • expertní systémy • neuronové sítě Nedostatky tradičních a souborových metod organizace dat 1. duplikace dat (redundance) → obtížná aktualizace tentýž údaj se vyskytuje na mnoha místech a jeho modifikace vyžaduje provádět příliš mnoho operací 2. dezintegrace dat → roztříštěnost do mnoha nepropojených souborů vede k obtížné orientaci a nekonzistenci 3. vyhledávání dat → vyhledávání lze realizovat pouze podle jednoho hlediska, složité dotazy se uskutečňují v několika po sobě následujících krocích 4. ochrana dat → buď zpřístupníme celý soubor s rizikem škod, nebo ho celý znepřístupníme 4 Členění souborových systémů na hierarchické a síťové a databázových systémů na relační a nerelační je spíše pomocné (ukazuje, která struktura dat byla v té které vývojové etapě nejobvyklejší – existují však i síťové nebo hierarchické databáze). Základním dělítkem je způsob práce s daty, nikoli jejich organizace. 5 Poznámka: teoreticky je možné vyhledávat údaje podle kteréhokoli elementu stanovené logické struktury i bez třídění a indexace, vyhledávání z nesetříděného souboru je však neefektivní. 8 Příklad tradiční a databázové technologie použité k organizaci dat, jež slouží k evidenci výpůjčních transakcí v knihovně účel: přehled o tom, 1. co má půjčené který čtenář 2. které knihy jsou půjčené a komu 3. které výpůjčky (co a komu) byly realizovány v určitém dni 1 čtenář si může půjčit více knih, 1 kniha může být (postupně) půjčena více čtenářům, v jednom dni lze realizovat více výpůjček. Možnosti řešení: 1) neorganizované údaje 2) organizované údaje • tradiční technologie • řešení s duplikací celých souborů • řešení s rejstříky (indexy) • databázová technologie • řešení jedním záznamem (souborem) pro všechny údaje • řešení rozdělením údajů do více propojených záznamů (souborů) 1) Neorganizované údaje Nelze rozpoznat význam dat ani vztahy mezi nimi – data nelze použít k zjištění požadovaných informací. Platí pro zpracování údajů s použitím i bez použití počítače. 9 2) Organizované údaje Tradiční technologie – kartotéky s evidencí výpůjčních lístků a) řešení s duplikací celých souborů6 1 kartotéka 1 kartotéka 1 kartotéka podle lhůt podle jmen čtenářů podle signatur (data výpůjček) (originál výpůjčního lístku) (1. kopie výpůjčního lístku) (2. kopie výpůjčního lístku) Skálová A526 A526 Novák Novák Bednář Bednář Bednář č. legitimace 14 A158 Jirásek: Psohlavci 12. 7. 2003 6 A247 A158 A102 A102 Tolkien: Hobit Novák č. legitimace 35 8. 7. 2003 3. 8. 2003 3. 8. 2003 12. 7. 2003 8. 7. 2003 8. 7. 2003 1. 4. 2003 Skálová č. legitimace 123 Tolstoj: Vojna a mír A526 Poznámka: Evidenční systém tohoto typu (se vztahy více – více) se v praxi zpravidla řeší „složkami“ (obálkami, deskami) pro opakující se identifikátory (klíče) záznamů (např. 1 složka pro každého čtenáře, 1 složka pro každou knihu, 1 složka pro každé datum). V rámci těchto složek se pak potřebné záznamy dohledávají ručně – složka se probere záznam po záznamu. 10 b) řešení s rejstříky (indexovými soubory) základní kartotéka řazená podle jmen čtenářů (všechny údaje o výpůjčce) Skálová Novák Novák Bednář index podle signatur index podle data výpůjček (pouze vyhledávací klíče a odkazy na základní soubor s kompletními údaji) klíč odkaz klíč odkaz A102 Bednář, Novák 1.4.2003 Skálová A158 Bednář 8.7.2003 Novák A247 Bednář 12.7.2003 Bednář A526 Novák, Skálová 3.8.2003 Bednář Bednář Bednář č. legitimace 14 A158 Jirásek: Psohlavci 12. 7. 2003 11 Databázová technologie – evidence výpůjček prostřednictvím záznamů organizovaných do tabulkové struktury a) řešení s jedním záznamem se všemi údaji Možnost různých pohledů (řazení a výběrů) – soubor lze rychle přetřídit např. podle jmen autorů nebo podle adresy čtenářů.7 Jméno Rodné číslo Číslo legitimace Bednář 751230/0235 14 Skálová 455325/0005 Bednář Adresa Telefon Signatura Autor Název Praha 6 202832564 123 Liberec IV 751230/0235 14 Bednář 751230/0235 Novák Novák A158 Jirásek Psohlavci 411352785 A526 Tolstoj Vojna a mír 1.4.2003 Praha 6 202832564 A247 Vian Pěna dní 3.8.2003 14 Praha 6 202832564 A102 Tolkien Hobit 3.8.2003 610723/0156 35 Praha 2 275824741 A526 Tolstoj Vojna a mír 8.7.2003 610723/0156 35 Praha 2 275824741 A102 Tolkien Hobit 8.7.2003 nedostatky: obtížné vyjadřování složitých jevů – např. čtenář, který má vypůjčeno více publikací nebo kniha, která byla půjčena více čtenářům – proveditelné pouze za cenu opakování údajů v záznamech (→ redundance, obtíže při aktualizaci) 7 V praxi se zpravidla při potřebě vyhledávat podle více hledisek základní soubor doplňuje indexovými soubory. 12 Datum 12.7.2003 b) řešení rozdělením údajů do více propojených záznamů možnost spojování (odkazů) údajů v různých souborech pro vyjádření složitých jevů, odstranění redundance údajů 1. evidence čtenářů (veškeré údaje o čtenáři) 2. evidence výpůjček (tam už stačí uvést jen datum, kód čtenáře – tj. číslo legitimace a kód knihy – tj. signaturu) 3. katalog knihovny (veškeré údaje o publikaci) Jméno Rodné číslo Adresa Telefon Číslo legitimace Bednář 751230/0235 Praha 6 202832564 14 Skálová 455325/0005 Liberec IV 411352785 123 Novák 610723/0156 Praha 2 275824741 35 Autor Název Signatura Signatura Datum Číslo legitimace Jirásek Psohlavci A158 A526 8.7.2003 35 Tolkien Hobit A102 A158 12.7.2003 14 Tolstoj Vojna a mír A526 A247 3.8.2003 14 Vian Pěna dní A247 A102 3.8.2003 14 A102 8.7.2003 35 A526 1.4.2003 123 Využití databázového modelu založeného na více logických souborech (např. tabulkách): 1. přebírání frekventovaných údajů z jedné tabulky do druhé, aniž by se musely pokaždé znovu zadávat z klávesnice (např. signatura knihy vkládaná do výpůjční evidence) 2. úspora místa – vkládání symbolu o několika znacích, k němuž existuje v druhé tabulce plný text (např. kód zastupující jméno čtenáře) 3. umožnění realizace vazeb 1 : N, N : M mezi daty bez zbytečné redundance 13 Řešení problému vyhledávání z velkého množství dat princip: porovnávání hodnoty vyhledávacího klíče s hodnotou v každém záznamu kritérium efektivnosti: počet záznamů, které musíme tímto způsobem otestovat (tj. doba potřebná k vyhledávání) Vyhledávací techniky a algoritmy 1. úplné vyhledávání sekvenční vyhledávání v nesetříděném souboru (lineární vyhledávání řetězců v textu) – vždy je nutné zpracovat všechna data 2. zkrácené vyhledávání v setříděném souboru poté, co najdeme hledanou hodnotu, lze zpracování ukončit typy třídění: a) abecedně, chronologicky, číselně b) podle pravděpodobnosti požadavku • sekvenční vyhledávání v setříděném souboru • intervalové vyhledávání v setříděném souboru tzv. blokový (řídký) index (např. v encyklopedii – první a poslední heslo na straně) nejprve (sekvenčně) prohledáváme setříděný seznam intervalů po nalezení potřebného intervalu sekvenčně prohledáme setříděné záznamy, jež jsou v něm obsaženy Příklad: hledáme heslo „alma mater“ • binární vyhledávání (binary search) půlení intervalu (rozdělení souboru vždy na polovinu) v setříděném souboru vyhledávanou hodnotu porovnáme s prostředním záznamem intervalu; jestliže >, postupujeme zpět, jestliže <, postupujeme vpřed Příklad: hledáme číslo 63 – hledanou hodnotu porovnáme s číslem 50, poté s číslem 75, poté s číslem 628, poté s číslem 69, poté s číslem 66, poté s číslem 64, skončíme na čísle 63. 8 Z pochopitelných důvodů zaokrouhlujeme při půlení intervalu vždy na celá čísla (přesnou polovinu intervalu 50 – 75 tvoří číslo 62,5, záznam s tímto číslem však neexistuje). 14 3. vyhledávání s použitím indexu dvoufázové vyhledávání (nejprve prohledáme index, pak primární soubor) index: Pomocný soubor strukturovaný a a tříděný podle jiného hlediska než základní (primární) soubor. Obsahuje záznamy o struktuře "klíč, adresa", kde klíč je hodnota (slovo, fráze, atribut) a adresa je ukazatel na místo uložení této hodnoty v základním souboru. Účelem indexového souboru je urychlit přístup k datům a tím zkrátit dobu vyhledávání. • indexovaný soubor: primární soubor není setříděn • index-sekvenční vyhledávání (ISAM – index–sequential access method): primární soubor je sekvenčně setříděn (zpravidla podle primárního klíče) Typy indexů a) strukturovaný – fulltextový 1. strukturovaný index klasický index relační databáze (s celými hodnotami položek)9 vyhledávaná jednotka: záznam složení: 1. hodnota pole 2. pořadové číslo záznamu v souboru 3. pořadové číslo pole v záznamu 2. fulltextový index index s rozdělením víceslovných výrazů na jednotlivá slova vyhledávaná jednotka: text (dokument), příp. jeho část složení: 1. slovo 2. pořadové číslo dokumentu v kolekci 3. pořadové číslo elementu dokumentu (je-li dokument členěn na elementy) 4. pořadí slova v rámci dokumentu (příp. v rámci elementu) b) index z 1 pole (elementu) – index z více polí (elementů) 1. index vytvořený z 1 pole databáze • víceslovné výrazy (fráze) • jednotlivá slova 2. index vytvořený z více polí databáze • složený index (původní položky zůstanou zachovány, třídí se kaskádovitě) • hodnoty různých polí (elementů) jsou umístěny do stejného pole indexového souboru 9 Poznámka: Strukturovaný index je zpravidla doplněn možností lineárně vyhledávat řetězce v rámci položek. 15 3. Teoretická východiska a související obory Databázová technologie je aplikovaná disciplína, která při stanovení vlastních specifických metod a pracovních postupů čerpá z mnoha teoretických zdrojů. To platí i pro terminologii oboru – většina databázových termínů má svůj původ právě v některé z výchozích teoretických disciplín. Následující přehled oborů, tvořících teoretické zázemí databázové technologie, je zaměřen na jejich aplikační oblasti v databázové praxi. 3.1 Teorie systémů → databáze jako systém, jehož prvky tvoří data uspořádaná do nějaké struktury systém: účelově definovaná množina prvků a vazeb mezi nimi, které společně určují vlastnosti celku systémová terminologie: prvek, subsystém, vztah (vazba), struktura, vstup, výstup, proces, zpětná vazba 3.2 Teorie množin Nástroj pro definování a popis prvků databáze Georg Cantor: „Množinou rozumíme každý soubor určitých dobře rozlišitelných objektů našeho nazírání nebo myšlení shrnutých v jeden celek." množinová terminologie: množina, doména, prvek, podmnožina, sjednocení, průnik, rozdíl, kartézský součin, systém množin, relace doména: zásobárna prvků pro množinu způsoby definice množiny (domény) • výčet prvků (enumerace) např. Petr, Pavel, Jana • logické vymezení, definice vzorcem, rozsahem např. A...Ž, a...ž; všechna celá čísla >1 • sémantické (obsahové) vymezení pojmenováním např. KNIHY, STUDENTI sjednocení množin 16 průnik množin databáze jako systém množin: Údaje stejného typu (např. o čtenářích – M1, o výpůjčkách – M2, o knihách – M3) tvoří navzájem propojené množiny, v jejichž rámci existují dva typy vztahů (vazeb): 1. vazby mezi prvky uvnitř každé ze zúčastněných množin – vztah atributů např. název knihy a cena knihy – 1 2. vazby mezi množinami – asociace a) vazby mezi celými množinami dat (např. knihy a výpůjčky) – 2a b) vazby mezi prvky různých množin, které jsou prvky systému (např. datum výpůjčky a jméno čtenáře) – 2b 3.3 Booleova algebra Nástroj pro operace s daty v databázi realizace funkční stránky databázového systému terminologie: výrok, konjunkce, disjunkce, negace, ekvivalence, implikace Schematické srovnání odpovídajících si symbolů a formulí Booleovy algebry (algebry výroků) a algebry (teorie) množin: Booleova algebra teorie množin p, g označení výroků A, B označení množin = ekvivalence = rovnost → implikace ⊃ inkluze ∧ konjunkce n průnik V disjunkce U sjednocení + – negace – ^ NOT doplněk * AND . , násobení, součin, průsek, průnik OR sčítání, součet, spojení, sjednocení odčítání, negace, rozdíl, doplněk 17 3.4 Teorie grafů Nástroj pro vytvoření a popis struktury databáze realizace strukturní stránky databázového systému Slovo graf má v matematice i v denním životě několik významů – v databázové terminologii se grafem obvykle rozumí struktura daná množinou uzlů a množinou hran a určitými vztahy mezi prvky těchto množin. terminologie: uzel, hrana, orientovaný graf, strom, síť vztahy: 1 : 1 jedna – jedna (one-to-one) 1 : N jedna – více, jeden k mnoha (one-to-many) N : 1 více – jedna (many-to-one) N : M více – více, mnohý k mnoha (many-to-many) 1 : 1 X 1 : N Y X Y N : 1 X N : M Y X Y 3.5 Teorie podobnosti Nástroj pro vytváření databázového modelu modelování: obor studující otázky racionálního zhotovení modelů splňujících podobnostní podmínky, což zaručuje, že experimentální výsledky lze přenést na skutečné provedení (dílo) terminologie: analogie, model, schéma 18 4. Databázová technologie Specifika práce s databází: Na rozdíl od jiných souborů (např. text, obrázek) nepracujeme s databázovým souborem jako s celkem, ale vybíráme z něj data prostřednictvím dotazů. 4.1 Databáze jako množina dat data: • vyjádření skutečností formálním způsobem tak, aby je bylo možno přenášet nebo zpracovat (např. počítačem) • číselné nebo jiné symbolicky vyjádřené (reprezentované) údaje a hodnoty nějakých entit nebo událostí • jakékoli fyzicky (materiálně) zaznamenané znalosti (vědomosti), poznatky, zkušenosti nebo výsledky pozorování procesů, projevů, činností a prvků reálného světa (reality) • surovina, z níž se tvoří informace informace: • sdělitelný poznatek, který má smysl a snižuje nejistotu • smysluplné interpretace dat a vztahů mezi nimi • data zpracovaná do formy využitelné pro rozhodování: a) vysvětlením, co znamenají b) uspořádáním (např. knihy v knihovně, telefonní čísla v seznamu) c) uvedením do kontextu (souvislostí, vztahů k jiným údajům) data versus informace déšť data Venku prší informace (má vždy sémantický charakter oznamovací věty) 19 4.2 Databáze jako systém tvořený daty uspořádanými do struktury – datová základna kategorie dat: 1. podle obsahu → DATOVÉ TYPY, datové formáty, abstraktní typy dat (text, čísla, datum...) data jako prvky systému (zajímají nás jejich vlastnosti) 2. podle vztahu k jiným datům → DATOVÉ STRUKTURY data jako vztahy mezi prvky systému (zajímá nás, jak se spojují s ostatními daty do větších celků) 4.2.1 Datové typy datový typ určuje 1. obsah • které znaky budeme moci vkládat 2. formu – formát (interní strukturu) • kolik znaků budeme moci vkládat • jak budou data uspořádána (ovlivňuje způsob, jak budeme moci data zpracovávat a zobrazovat) 3. funkce • co budeme moci s daty dělat 20 Zobrazení informací v počítači10: statická data od okamžiku zápisu (nebo změny) v databázi nemění svůj obsah – budeme-li stejný údaj víckrát za sebou číst / přehrávat / spouštět, dostaneme pokaždé stejný výsledek dynamická data informace jimi ovlivněná podléhá změně – např. budeme-li stejný změnový dotaz víckrát za sebou aplikovat, dostaneme různé výsledky 10 Zpracováno podle: JANDOŠ, Jaroslav. Technické prostředky informačních systémů. Praha : Vysoká škola ekonomická, 1994. Kap. 4 – Vyjádření informací v systému počítače, s. 23 a MERUNKA, Vojtěch. Objektový přístup v databázových systémech. Praha : Česká zemědělská univerzita, 2002, s. 16. 21 Datové typy nejčastěji používané v databázových systémech: a) „tradiční“, vestavěné datové typy databázový program s nimi umí pracovat vlastními prostředky 1. čísla • reálná (s pevnou řádovou čárkou, s pohyblivou řádovou čárkou) • celá • čas • datum • finanční (měnové) – zobrazují se 2 desetinná místa 2. texty (znakové řetězce – písmena, číslice, symboly) • pevného formátu (přesně stanovená délka) • volného formátu (určujeme pouze maximální délku, příp. vůbec neomezujeme)11 3. pointery (ukazatele) b) BLOB (binary large objects) Datový typ umožňující ukládat multimediální data přímo do databáze. Posloupnost bitů, jejíž význam databáze sama o sobě nezná a nedovede interpretovat (→ nelze s nimi provádět databázové operace, nelze podle nich vytvářet indexy, vyhledávat podle nich, porovnávat, třídit). Data jsou zpravidla uložena v separátním datovém souboru a ve vlastním záznamu databáze je na ně uložen pouze odkaz. 4. obrázky • statické (rastrové – bitmapové, vektorové) • pohyblivé (sekvence obrázků, animace, video) 5. zvuky 6. multimédia (digitální média, propojení různých datových typů mezi sebou – vazba zvuk – text – obraz) 1., 2., 3., 4. – časově nezávislé datové typy 5., 6. – časově závislé datové typy 11 Poznámka: Pokud se jedná o velikost přesahující 256 bajtů, patří takový datový typ do skupiny BLOB, resp CLOB (character large objects). 22 4.2.2 Datové struktury elementární typy struktur dat: celočíselná proměnná, reálná proměnná, komplexní proměnná, logická (Booleova) proměnná, textový řetězec, vektor, matice, n-rozměrný prostor, skupina struktur, záznam (věta), soubor, seznam, tabulka, fronta FIFO, zásobník (fronta LIFO), strom, síť, vztah Nejdůležitější datové struktury v databázi, jejich hierarchie a způsob identifikace databáze identifikace: jméno (název, alias), cesta (path) soubor (set, data set, file)12 množina vět; lineární, dynamická datová struktura, představovaná posloupností záznamů identifikace: jméno (název, alias), cesta (path) záznam (věta, record) soubor položek uspořádaných tak, aby s nimi mohl pracovat program; nejmenší datová jednotka, která může být vložena do databáze nebo vymazána z databáze identifikace: pořadí, klíč (identifikátor) pole (položka, atribut, field) množina hodnot, které se mohou v čase měnit; nejmenší datová jednotka, která může být aktualizována nebo vybrána z databáze; všechny hodnoty téhož pole jsou stejného datového typu neboli domény identifikace: jméno (název, tag), pořadí 12 Poznámka: Soubor (obecně: pojmenovaný datový celek, s kterým můžeme provádět operace) nemusí vždy obsahovat strukturované znakové údaje – existují i jiné typy souborů, jež ovšem nejsou v databázových systémech tak často používané: soubor s programem, soubor – obrázek, soubor – zvuk ad. 23 Záznam – pole – formát formát předem určené uspořádání údajů na nebo v nosiči údajů záznam formát = celkové uspořádání záznamu (tj. struktura věty – např. formát UNIMARC) a) pevný (fixní) b) proměnlivý (variabilní) pole a) formát = datový typ b) formát = způsob zobrazení uložených dat způsoby definování pole: • umístěním (pozicí, pořadím) v záznamu • funkcí v záznamu (např. primární klíč, cizí klíč) • pojmenováním • významem skládání datových struktur (z elementárních typů – např. ze záznamů): 1. lineární (sekvenční) struktura 2. stromová (hierarchická) struktura 3. síťová struktura 4. relační struktura 5. objektově orientovaná struktura společné pro všechny datové struktury: základní jednotkou dat je záznam (řeší vztahy atributů) rozdílné pro jednotlivé typy struktur: způsob vyjádření vztahů mezi záznamy, tj. asociací (pořadí záznamů, spojky, relace) . 24 1. Lineární (sekvenční) struktura Všechny záznamy stejného typu jsou ukládány sekvenčně (za sebou) do jednoho souboru. vztahy mezi záznamy: • mezi záznamy není žádný vzájemný vztah kromě posloupnosti jejich uložení (1 : 1 – každý záznam může mít max. 1 následující a 1 předcházející, příp. 1 nadřazený a 1 podřazený záznam) • trvalé (chceme-li vyjádřit jiné vztahy mezi záznamy, musíme celý soubor fyzicky přeuspořádat) • technická (fyzická) realizace: záznamy (resp. jejich pořadí) Příklad: VÝPŮJČKY Jméno Rodné číslo Číslo legitimace Adresa Bednář 750512/0235 14 Praha 6 Telefon Signatura Autor Název 202832564 A158 Jirásek Psohlavci Datum Jméno Rodné číslo Číslo legitimace 12. 7. 2003 Skálová 455325/0005 123 Adresa Telefon Signatura Autor Liberec IV 411352785 A526 Tolstoj Název Datum Jméno Rodné číslo Vojna a mír 1. 4. 2003 Bednář 750512/0235 Číslo legitimace Adresa Telefon Signatura 14 Praha 6 202832564 A247 Autor Název Datum Jméno Vian Pěna dní 3. 8. 2003 Bednář Rodné číslo Číslo legitimace Adresa Telefon 750512/0235 14 Praha 6 202832564 25 klady: + jednoduchost návrhu zápory: − nemožnost vyjádření vztahů 1 : N a N : M mezi záznamy (pouze za cenu redundance dat) − problémy s integritou dat − neexistuje způsob, jak přímo vyhledat určitý záznam (nutnost sekvenčního prohledávání – částečně řeší indexový soubor) − obtížnost změn struktury databáze užití: zálohy dat (sekvenční ukládání na magnetickou pásku) fulltextové systémy (doplněné indexovými soubory) 2. Stromová (hierarchická) struktura Struktura, ve které může být každý prvek (uzel struktury) spojen (přímo či nepřímo) s n prvky na kterékoli nižší úrovni, ale pouze s jedním prvkem na vyšší hierarchické úrovni. Nejvyšší prvek v hierarchii se nazývá kořen (root) stromové struktury a má pouze hierarchicky podřízené prvky. Jednotlivé datové struktury jsou umístěny na různých úrovních ležících podél větví, které vycházejí z kořene. Datovým strukturám na jednotlivých úrovních se říká uzly; pokud z uzlu nevychází další větev, říká se mu list (leaf). vztahy mezi záznamy: • 1 : N – jednosměrné (rodičovský vztah – synovský záznam obsahuje data, která doplňují rodičovský záznam) • trvalé – k podřazeným prvkům lze přistupovat pouze přes nadřazené prvky • technická (fyzická) realizace: záznamy s pointery a spojky 1. nejprve definujeme množiny údajů (typy záznamů) 2. definované množiny seřadíme podle nadřazenosti do hierarchických úrovní 3. vztahy mezi záznamy v bezprostředně následujících úrovních definujeme individuálně (tj. záznam po záznamu) – pevně je propojíme prostřednictvím pointerů 26 úroveň 0 (kořen) úroveň 1 (synové kořenového uzlu) úroveň 2 (synové uzlů 1. úrovně) úroveň 3 (synové uzlů 2. úrovně) klady: + možnost vyjádřit hierarchické vztahy (nadřazenost – podřazenost, celek – část, 1 : N) + rychlejší vyhledávání dat (neprohledává se celý soubor, ale jen příslušné větve) zápory: − nemožnost jednoduchého vyjádření vztahů N : M mezi záznamy (bez duplicit) − strukturu databáze je třeba předem pevně stanovit − obtížnost dodatečných změn struktury databáze užití: indexové soubory objektově orientovaná technologie 27 Příklad: Čísla uvedená v horní části záznamů představují jejich identifikátory, čísla v dolní části jsou pointery odkazující na záznamy v nižší úrovni. úroveň 0 (kořen) systém řízení báze dat o výpůjčkách 1 o čtenářích) 2 3 Bednář 750512/0235 Praha 6 14 Skálová 455325/0005 Liberec IV 123 Novák 751230/0156 Praha 2 35 2.3 2.4 2.1 úroveň 2 (datum úroveň 3 (údaje o knize) 28 2.2 2.1 2.2 2.3 2.4 12.7.2003 3.8.2003 1.4.2003 8.7.2003 3.1 výpůjčky) 3 1 úroveň 1 (údaje 2 3.2 3.3 3.4 3.5 3.6 3.1 3.2 3.3 3.4 3.5 3.6 Psohlavci Jirásek A158 Pěna dní Vian A247 Hobit Tolkien A102 Vojna a mír Tolstoj A526 Vojna a mír Tolstoj A526 Hobit Tolkien A102 3. Síťová struktura vztahy mezi záznamy: • 1 : N, N : 1, N : M (obousměrné) – každý prvek může být spojen libovolným způsobem se všemi ostatními prvky • trvalé (vazby definovány před vyhledáváním ve všech předpokládaných směrech) • technická (fyzická) realizace: záznamy s pointery a spojky 1. nejprve definujeme množiny údajů (typy záznamů) 2. pak postupně definujeme vztahy mezi prvky příslušných množin (individuálně, tj. záznam po záznamu) – bez omezení, stylem každý s každým klady: + flexibilita při vytváření vztahů 1 : N, N : 1 a N : M + rychlé vyhledávání (neprohledáváme celou bázi, ale sledujeme přímou cestu k danému prvku stanovenou definovanou vazbou – přímé skoky) + odstranění duplicity údajů zápory: − vzájemné vztahy mezi množinami se mohou stát velmi komplikovanými a obtížně se mapují − strukturu databáze je třeba předem pevně stanovit: jakmile je databáze vytvořena, každá změna na jiný systém množin vyžaduje vytvoření zcela nové struktury − umožňuje rychle zodpovídat pouze předem připravené dotazy, komplikované dotazy vyžadují provést více kroků užití: hypertext World Wide Web 29 Příklad: množina údajů o čtenářích Bednář 750512/0235 Praha 6 202832564 14 Skálová 455325/0005 Liberec IV 411352785 123 Novák 751230/0156 Praha 2 275824741 35 množina údajů o knihách Psohlavci Jirásek A158 12.7.2003 Pěna dní Vian A247 1.4.2003 Hobit Tolkien A102 3.8.2003 množina dat výpůjček 30 Vojna a mír Tolstoj A526 8.7.2003 Technická (fyzická) realizace stromových a síťových struktur a indexů záznam spojka pointer – ukazatel součást záznamu v podobě speciální položky (speciální datový typ), pevně spojující související prvky explicitní odkaz od jednoho záznamu ke druhému • jednosměrný • obousměrný (oba záznamy ukazují na sebe navzájem) ID záznamu ID záznamu obsah záznamu ID záznamu obsah záznamu pointer obsah záznamu pointer pointer 1 Bednář 750512/0235 Praha 6 202832564 14 3 2 3.8.2003 Hobit Tolkien A102 3 2 2 31 4. Relační struktura vztahy mezi záznamy: • data jsou organizována do uspořádaných n-tic • možnost vyjádřit všechny typy vztahů (1 : 1, 1 : N, N : 1, N : M) prostřednictvím stejných údajů v dvojici položek v souvisejících záznamech • technická (fyzická) realizace: relace klady: + flexibilita při vytváření vztahů mezi různými položkami (spojení není trvalé – vztahy definujeme až v okamžiku, kdy je potřebujeme např. k zodpovězení dotazu) + jednoduchost + změna struktury databáze spočívá v pouhém přidání nebo zrušení sloupce v tabulce a nijak neovlivní ostatní tabulky (→ přínos pro zachování integrity dat) + neprocedurálnost (určujeme, co chceme s daty dělat, nikoli, jak toho dosáhnout) zápory: - nároky na paměť a výkon počítače (pracuje se neprocedurálním způsobem s celými množinami dat) - neefektivní vyhledávání: bereme nejprve do úvahy celé množiny dat, z nichž pak vybíráme průnik 5. Objektově orientovaná struktura určité položky jsou shrnuty do jednoho objektu, který obsahuje data položek a navíc jsou mu definovány i funkce a způsoby, jak s těmito daty nakládat (odpovídá přibližně pojmu záznam) možnost práce s různými typy dat, i s nestrukturovanými vztahy mezi objekty: přímé vazby obdobné vazbám v síťové struktuře 32 Kritéria pro srovnávání efektivnosti datových struktur 1. Jak odpovídají reálným objektům, jež znázorňují (možnost vyjádřit mezi záznamy vztahy 1 : 1, 1 : N, N : 1, N : M) 2. Jak obtížný je jejich návrh 3. Jak snadno se dají provádět změny v uspořádání dat 4. Jak se provádí vyhledávání dat (rychlost přístupu k datům, vícekriteriální vyhledávání) 5. Jaká je míra redundance ukládaných dat struktura vyjadřované vztahy snadnost návrhu snadnost změn lineární (sekvenční) 1:1 + - - - stromová (hierarchická) 1:N - - + - M:N - - + + M:N + + - - síťová relační efektivnost redundance vyhledávání dat Nevýhoda lineárních, stromových a síťových struktur • procedurálnost aby systém provedl požadovanou operaci s daty, je třeba mu přesně určit procedury, kterými to má realizovat • trvalost vztahů vztahy mezi záznamy nelze v průběhu aktualizace obsahu databáze ani v průběhu vyhledávání měnit 33 4.3 Databáze jako systém, v němž dochází k realizaci operací a procedur – SŘBD souborová technologie: • program pro zpracování dat obsahuje i jejich popis (těsná závislost programů a dat) • při změně v datech a požadavcích na výstupy je třeba provést změnu v programu • soubory nejsou navzájem propojeny, práci s daty obsaženými ve více souborech zajišťuje program PROGRAM1 + DATA1 = SYSTÉM1 PROGRAM2 + DATA2 = SYSTÉM2 PROGRAM3 + DATA3 = SYSTÉM3 databázová technologie: • data a jejich popis jsou uloženy odděleně od aplikačních programů (fyzická i logická nezávislost dat na programu) • přístup k datům je realizován prostřednictvím SŘBD • soubory s daty tvoří propojený celek organizovaný podle určitého modelu (hierarchického, síťového, relačního), práci s daty ve více souborech zajišťují buď ukazatele (pointery) nebo cizí klíče + DATA1 = SYSTÉM1 PROGRAM + DATA2 = SYSTÉM2 + DATA3 = SYSTÉM3 vnitřní struktura databázového systému každá databáze se skládá ze dvou částí: DATA báze dat (databáze) data base (database) 34 + PROGRAM systém řízení báze dat - SŘBD data base management system - DBMS báze dat (databáze) uspořádaná množina dat ve formě záznamů, které jsou navzájem v určitém vztahu a jsou přístupné s pomocí systému řízení báze dat uživatelé databáze k ní mohou přistupovat (pracovat s ní) dvěma způsoby13: • operace čtení (předchází výběr – SELECT) • operace zápisu (INSERT, UPDATE, DELETE) systém řízení báze dat – SŘBD • programový systém umožňující vytvoření, údržbu a použití báze dat • řídicí systém databáze, který sídlí mezi vlastní fyzickou vrstvou (daty) a uživatelem. Díky této vrstvě nemusí uživatel při práci s databází vědět naprosto nic o její skutečné fyzické podobě a způsobu, jakým jsou data uložena a udržována. DATA SŘBD databázová aplikace uživatel databázová aplikace (database application) program, který umožňuje uživatelům přístup k datům v databázi prostřednictvím formulářů pro zadávání dat, formulářů pro zadávání dotazů a sestav (někdy též název celého komplexu programu a dat) základní složky SŘBD: • databázový stroj (database engine) • jazyky pro práci s daty • jazyk pro definici dat (data definition language) • jazyk pro manipulaci s daty (data manipulation language) • jazyk pro řízení přístupu uživatelů k datům (data control language) • datový slovník (data dictionary – metadata) 13 Oba způsoby lze samozřejmě kombinovat – například nejprve potřebný záznam vyhledáme (SELECT), pak ho změníme (UPDATE), pak vyhledáme všechny související záznamy (např. dětské záznamy ve vztahu referenční integrity) a aktualizujeme je, aby odpovídaly rodičovskému záznamu. 35 funkce SŘBD základní funkce: přenášení (načítání) dat z místa jejich uložení (např. z pevného disku) do místa jejich zpracování (operační paměť) a zpět. Podmínkou efektivnosti této procedury je strukturování dat v místě jejich uložení (např. na záznamy a položky). 1. definování a redefinování dat v databázi (data definition) – organizace datových souborů (vytváření a změny datových struktur) 2. vytváření obsahu databáze – aktualizace datových souborů (vkládání dat, změny, aktualizace dat) 3. výběr a výstup (prezentování, zobrazování, prohlížení) dat z databáze (data display) 4. tvorba vstupních formulářů (obrazovek, pohledů) a výstupních sestav 5. kontrola integrity dat (data integrity) – poskytuje metodu nebo metody pro definování a zajištění správnosti dat 6. kontrola přístupových práv (určuje, kdo a jak může přistupovat k datům) 7. zpravidla obsahuje i programovací jazyk pro vytváření vlastních aplikací databázový stroj (databázový motor, databázové jádro, database engine) část SŘBD, která ukládá data a manipuluje s nimi podle příkazů zadávaných databázovou aplikací datový slovník • soubor, který definuje základní organizaci databáze (slouží jako referenční příručka k databázi) – podmínka přístupu SŘBD k databázi (někdy je zpřístupněn i uživateli, zpravidla však pouze ke čtení) • neobsahuje aktuální data z databáze, pouze informace nutné pro její správu (metadata) obsahuje: • seznam všech souborů v databázi • počet záznamů v každém souboru • jména a typy všech položek • údaje o integritních omezeních • jména uživatelů a evidenci udělených práv a oprávnění • kontrolní informace (např. kdo je autorem určitého objektu) 36 ovladač (driver) program, který ovládá zařízení připojené k počítači, komponentu nebo software (např. databázový program) funkce: překladač mezi zařízeními, komponentami či softwarem a programy, které je používají vlastní příkazy tohoto zařízení nebo programu vlastní příkazy tohoto programu nějaký program jiné zařízení nebo program driver překlad specifických příkazů programu do příkazů druhého zařízení nebo programu typy rozhraní pro přístup k datům v databázi: • API – knihovna funkcí zpravidla specifická pro každý konkrétní SŘBD • ODBC driver (standard firmy Microsoft) • OLE DB (standard firmy Microsoft) • JDBC – rozhraní pro přístup k datům z prostředí Javy • BDE – standard firmy Borland (rozhraní včetně databázového stroje) 37 Typy SŘBD podle způsobu práce s daty 1. souborové program (aplikace) manipuluje přímo se soubory dat při víceuživatelském přístupu není možnost koordinace program 1 program 3 data program 2 2. klient/server oddělení SŘBD a databázové aplikace: program (aplikace) komunikuje s procesem (serverem), který obhospodařuje databázi a manipuluje s daty úloha serveru: • manipulace s daty (podle požadavků klientských programů) • koordinace víceuživatelského přístupu program 1 server program 2 program 3 38 data 4.4 Databáze jako model skutečný svět konceptuální model (schéma) databáze Dvě aplikace metody modelování při tvorbě databáze: 1. Nejprve modelujeme nějakou skutečnost (realitu) prostřednictvím dat (definujeme data) 2. Pak modelujeme data a vztahy mezi nimi prostřednictvím databázového modelu (schématu) konceptuální model (schéma): obsahuje sémantický (obsahový) model dat většinou se vytváří intuitivním způsobem, při kterém se snažíme za použití abstrakce zachytit ty skutečnosti, které jsou důležité pro náš systém: • existující informační elementy • důležité typy objektů • identifikační atributy • důležité typy vztahů technika pro vyjádření konceptuálního schématu: ERA model (diagram) všímá si pouze tří skutečností: 1. které objekty nás zajímají – ENTITA (objekt) 2. jaké jsou vztahy mezi těmito objekty – RELACE (vztah) 3. jaké vlastnosti objektů, resp. vztahů potřebujeme znát – ATRIBUT (vlastnost) ATRIBUT ATRIBUT ENTITA ATRIBUT VZTAH ATRIBUT ATRIBUT ATRIBUT ENTITA typy databází dle modelu dat: lineární (sekvenční), hierarchické (stromové), síťové, relační, objektově orientované 39 5. Databázový software Podrobnější verze přehledu spolu s odkazy na další informace na Internetu je k dispozici na adrese: http://info.sks.cz/users/ku/soft.htm Základní kategorie softwarových produktů: • Operační systémy speciální typy programovacího jazyka – jazyky pro komunikaci uživatele s počítačem, nezbytné pro činnost počítače a jeho spojení s perifériemi • Nadstavby nad operačním systémem – manažery, MS Windows 3.1, 3.11 • Programovací jazyky program: sled instrukcí (příkazů), které doslova krok po kroku přikazují, co právě dělat jazyk 3. generace (3GL) – univerzální programovací jazyk, který může být použit pro tvorbu jakéhokoli typu aplikace (Basic, Cobol, Pascal, C++, Java aj.) jazyk 4. generace (4GL) – programovací jazyk navržený speciálně pro tvorbu určitého typu aplikací, například databázových (dBASE, SQL aj.) • Aplikační software • textové editory, DTP • databáze • tabulkové procesory • CAD systémy • počítačová grafika • komunikační software • diagnostické, testovací, komprimační, antivirové programy • Počítačové hry • Počítačové viry databázové systémy: přechodný typ mezi programovacím jazykem a aplikačním softwarem Velikost světového trhu pro nové databázové licence v roce1999: 8 miliard USD Odhad pro rok 2004: 12,7 miliard USD Nejvýznamnější firmy z hlediska prodeje nových databázových licencí a jejich podíl na trhu v roce 1999 Oracle 31% IBM 30% Microsoft 13% Informix 4% Sybase 3% Ostatní 19% zdroj: Dataquest 40 5.1 Databáze pro osobní počítače „malé" databáze, desktop databases, databáze pro koncové uživatele dBASE, Clipper, FileMaker Pro, FoxPro, 4th Dimension, Lotus Approach, Magic, micro CDS/ISIS, MS Access, MySQL, Paradox, PC Fand, Pervasive.SQL, REDAP, TOPAZ, WinBase602 5.2 Databáze pro minipočítače (servery) „velké" databáze, profesionální RDBMS, SQL servery – zpravidla pro operační systém UNIX a Windows NT ADABAS D, DB2, FOCUS, INFORMIX, INGRES, InterBase, Microsoft SQL Sever, ORACLE, PROGRESS, Recital, SQLBase, Sybase, Unify 5.3 Nástroje pro vývoj databázových aplikací vývojářské nástroje – základem je vždy nějaký programovací jazyk Delphi, Optima++, PowerBuilder, SQL Windows, Visual Basic 5.4 CASE nástroje na podporu práce při vývoji informačních systémů, jejichž základem je databáze informací o vytvářeném programovém systému Power Designer, case/4/0, Oracle Designer/2000, Softmodel CASE, Systems Engineer, Rational Rose 5.5 Aplikace vytvořené na základě databázových systémů automatizované knihovnické systémy: ALEPH, MAKS, TINLIB, Lanius, SMARTLIB, BIBIS, AK (automatizovaná knihovna) podnikové informační systémy: SAP R/3, BAAN IV, MEDIA EIS, NAVISION geografické informační systémy 5.6 Multidimenzionální (nerelační) databáze - plnotextové, hypertextové, objektově orientované TOPIC, TexPro, ByllBase, WAIS, TOPIC, ArtBase, Gemstone, Versant 5.7 Tabulkové procesory (spreadsheety) Quattro Pro, Lotus 123, Excel, Calc602 41 6. Relační databázové systémy 6.1 Relační model dat Vznik relace kartézským součinem nad doménami: množina (doména) jmen množina (doména) rodných čísel Bednář 650519/0235 Skálová 726219/0165 Novák 855125/0005 Kratochvíl 815904/0002 760723/0156 množina vztahů mezi množinami (doménami) jmen a rodných čísel Bednář 650519/0235 Skálová 726219/0165 Novák 855125/0005 Kratochvíl 815904/0002 760723/0156 relace (podmnožina kartézského součinu) relační tabulka (relace + záhlaví, schéma) ČTENÁŘI Jméno Rodné číslo Bednář 650519/0235 Bednář 650519/0235 Skálová 855125/0005 Skálová 855125/0005 Novák 760723/0156 Novák 760723/0156 Pravidla pro tabulkovou prezentaci relace (zjednodušení variety vztahů zkoumaných teorií relací na binární relace) 1. každý řádek odpovídá jedné n-tici relace 2. pořadí řádků je nevýznamné 3. žádné dva řádky nejsou stejné (tabulka neobsahuje duplicitní řádky) 4. pořadí sloupců je nevýznamné 5. význam každého sloupce je určen jménem atributu 6. žádné dva názvy sloupců (atributy) nejsou stejné 7. hodnoty ve sloupcích jsou atomické (skalární – nelze je dále rozkládat) 42 Relace názvy atributů relace název relace VÝPŮJČKY n-tice relace (řádky) jméno rodné číslo Bednář 650519/0235 adresa datum Praha 2 18.6.2003 Skálová 455325/0005 Liberec IV 25.6.2003 Novák Praha 6 13.7.2003 760723/0156 atributy (sloupce) záhlaví (schéma) relace tělo relace (instance) hodnoty atributu DATUM Terminologie teorie množin teorie relací „teorie“ relačních databází (SQL) terminologie producentů RDBMS množina entit relace tabulka tabulka, soubor entity set relation table table, file entita n-tice relace řádek záznam, věta entity tuple row record atribut atribut relace sloupec pole attribute attribute column field doména atributu datová hodnota,údaj domain value datová hodnota, údaj datová hodnota, údaj value value 43 Vyjádření vztahů mezi daty v síťovém a relačním modelu – shody a rozdíly V obou případech se pracuje s množinami záznamů, jež jsou stejného typu (jsou definovány na stejných doménách). V síťovém modelu nejsou fyzicky definovány záznamy příslušející do stejné množiny (kromě toho, že mají stejnou strukturu, tj. jde o záznamy stejného typu), v relační struktuře je fyzicky realizována souvislost záznamů jednoho typu do speciální struktury – tabulky. V síťovém modelu je propojení definováno mezi záznamy (odkaz – pointer obsahuje identifikátor souvisejícího záznamu), v relačním modelu je propojení definováno mezi položkami („odkaz“ obsahuje hodnotu některé z položek souvisejícího záznamu). V síťovém modelu je propojení záznamů definováno explicitně předem a trvale prostřednictvím pointerů, v relačním modelu je propojení prostřednictvím položek se stejnými hodnotami definováno ad hoc ve chvíli, kdy je potřebujeme. Vztah domén a relací doména rodných čísel doména telefonních čísel doména názvů doména adres doména cen relace se záznamy o čtenářích relace se záznamy o knihách doména jmen doména čísel legitimací doména signatur relace se záznamy o výpůjčkách 44 doména dat výpůjček a dat vrácení 6.2 Definice relační databáze Edgar F. Codd: Relační SŘBD je takový systém, který má 2 vlastnosti: 1. databáze je uživatelem chápána jako množina relací (a nic jiného) 2. jsou k dispozici minimálně operace selekce, projekce a spojení, aniž by se vyžadovaly explicitně předdefinované přístupové cesty pro realizaci těchto operací relační databáze = schéma + integritní omezení prostředky dosažení a udržení správnosti dat v databázi: • aktualizace dat (editace) přidávání nových záznamů, úpravy ve stávajících záznamech, rušení neaktuálních záznamů provádí se manuálně (nelze automatizovat) • definice integritních omezení kontrolu a realizaci (např. vytvoření tabulky KEYVIOL, zákaz vložení nesprávného údaje) můžeme svěřit programu (lze automatizovat) integrita • (z latiny) celistvost, neporušenost, nedotknutelnost; bezúhonnost, čestnost • stav, při němž data uložená v systému odpovídají vlastnostem objektů reálného světa • vztah DATA – REÁLNÉ OBJEKTY konzistence • (z latiny) spojitost, soudržnost, tuhost; v logice synonymum bezespornosti • stav, při němž si data uložená v systému vzájemně neodporují • vztah DATA – DATA integritní omezení (integrity constraints, integrity rules, business rules) • tvrzení (pravidla) omezující hodnoty v n-ticích relací • pravidla, jejichž dodržování sleduje databázový program účel: dosažení a udržení správnosti a konzistence dat v relacích 45 Typy integritních omezení a) podle toho, jaké části databázového modelu se týkají • integritní omezení pro vztahy • integritní omezení pro entity • doménová • entitní • referenční b) podle toho, jak ovlivňují údaje v tabulkách • zpětně (např. primární klíč, referenční integrita, změna typu pole) • pouze pro nově přidávané údaje (např. číselník) 1. integritní omezení pro vztahy (kardinalita vztahu, cardinality ratio, relationship degree) 1 : 1, 1 : N, N : 1, N : M 2. integritní omezení pro entity 2.1 doménová integrita (domain integrity): každá hodnota každého z atributů relace musí být z množiny hodnot (domény) pro daný atribut přípustných: a) definice domény jako množiny hodnot (může být využito více atributy) b) specifikace povolených hodnot pro daný atribut • • • • • • • typ pole (datový typ) povinné zadání položky, neprázdná hodnota (NOT NULL) jedinečnost hodnot v rámci sloupce (UNIQUE) rozsah hodnot – minimální, maximální hodnota (CHECK) implicitní (standardní) hodnota (DEFAULT) maska pro vkládání seznam přípustných hodnot (table lookup, číselník) 2.2 entitní integrita (entity integrity): každá relace musí mít určen tzv. primární klíč – jeden nebo více atributů, jejichž hodnoty jednoznačně identifikují každý z řádků relace primární klíč (primary key) – množina atributů relace, která má tyto vlastnosti: 1. je jednoznačná, tzn. v relaci neexistuje druhá n-tice, která by pro tuto množinu atributů měla stejné hodnoty 2. je minimální, tzn. žádný atribut není možné vypustit, aniž by se porušilo pravidlo 1 (žádná z jejích podmnožin nemá tuto vlastnost) 2.3 referenční integrita (referential integrity): cizí klíč (foreign key) – vytváří logické vazby mezi relacemi pomocí mechanismu odkazu na primární klíč související relace 46 Doména jako množina přípustných hodnot atributu datová hodnota (údaj, value) nejmenší jednotka v relační struktuře, chápaná jako atomická neboli skalární (systémem je považovaná v logickém smyslu za jedinou hodnotu a není jeho prostřednictvím dále rozložitelná) doména množina atomických datových hodnot stejného typu, tedy hodnot, které vykazují významovou příbuznost a/nebo popisují nějakou vlastnost objektu reálného světa. doména atribut pole (sloupec) příklad hodnoty {A...Ž, a...ž, -} velká a malá písmena a spojovník, první písmeno velké, max. 60 znaků {0...9,/} Příjmení Sanchezová-Vicariová Jméno Aranxta Telefon 0043/1268451 Pořadí na žebříčku WTA 15 Plat 150 860,00 Svobodná? ANO číslice a lomítko {„1“... „1000“, NULL} kladná celá čísla od 1 do 1 000, nepovinné vyplnění {„5 000,00“... „99 999,99“} kladná desetinná čísla od 5 000,00 do 99 999,99 {ANO, NE} pouze jedna z výše uvedených hodnot definice výčtem nebo vzorcem definice pojmenováním definice příkladem vztah doména – atribut – pole (sloupec) 1 doména = 1 atribut (např. Plat) 1 doména = více atributů (např. Příjmení, Jméno) Atribut definuje všechny přípustné hodnoty, pole (sloupec) obsahuje jen ty hodnoty, které potřebujeme zaznamenat. funkce atributu: • informační (uložení informace) • identifikační (jednoznačná identifikace výskytů entity) • relační (popis vztahu mezi entitami) 47 6.3 Vyjádření vztahů v relačním modelu Řešení s jednou tabulkou (flat file) umožňuje vyjádřit pouze vztahy hodnot typu 1 : 1. Snahy o vyjádření vztahů 1 : N či N : M uvnitř jedné tabulky vedou vždy k redundanci (nadbytečnosti) dat. Příklad: Vyjádření vztahu typu 1 : N mezi údaji o vydavateli a o knize – 1 vydavatel může vydat více knih, jedna kniha může mít jen jednoho vydavatele. a) opakování záznamu KNIHY Kód vydavatele Název vydavatele ISBN Název knihy Autor 11 Torst 80-85639-12-2 Abeceda Nezval 22 Československý spisovatel 80-202-0262-5 Havran Poe 33 Odeon 80-207-0155-9 Kvílení Ginsberg 33 Odeon 80-207-0232-6 Mapa času Milosz Název 1. knihy Název 2. knihy b) přidání dalších polí do záznamu KNIHY Kód vydavatele Název vydavatele ISBN 1. knihy ISBN 2. knihy 11 Torst 80-85639-12-2 Abeceda 22 Československý spisovatel 80-202-0262-5 Havran 33 Odeon 80-207-0155-9 80-207-0232-6 Kvílení Mapa času c) definice multiatributů umožňují pouze některé systémy – např. CDS/ISIS, WinBase602, TINMAN KNIHY Kód vydavatele Název vydavatele ISBN Název knihy Autor 11 Torst 80-85639-12-2 Abeceda Nezval 22 Československý spisovatel 80-202-0262-5 Havran Poe 33 Odeon 80-207-0155-9 Kvílení Ginsberg 80-207-0232-6 Mapa času d) rozdělení hodnot do více tabulek propojení vzájemně souvisejících hodnot v různých tabulkách prostřednictvím nezbytné minimální duplicity – společného atributu 48 Milosz 1. Vztahy 1 : N Kód vydavatele Název vydavatele ISBN 1 Autor Název knihy N VYDAVATEL KNIHY vydal 1 vydavatel může vydat více knih. 1 kniha může mít jen jednoho vydavatele. VYDAVATEL (Kód vydavatele, Název vydavatele) KNIHY (ISBN, Autor, Název knihy) a) vytvoření nové relace původní entity (relace) ponecháme beze změny – pro vyjádření vztahu je vytvořena nová relace obsahující atributy, jež jsou shodné s primárními klíči entit, které jsou ve vztahu 1:N VYDAVATEL 1:1 PŘEHLED KNIHY VYDAVATEL (Kód vydavatele∗, Název vydavatele) PŘEHLED (Kód vydavatele, ISBN) KNIHY (ISBN∗, Autor, Název knihy) VYDAVATEL Kód vydavatele 11 Československý spisovatel Odeon 22 33 PŘEHLED Název vydavatele Torst Kód vydavatele 11 ISBN 80-85639-12-2 22 80-202-0262-5 33 80-207-0155-9 33 80-207-0232-6 KNIHY 80-85639-12-2 Nezval Název knihy Abeceda 80-202-0262-5 Poe Havran 80-207-0155-9 Ginsberg Kvílení 80-207-0232-6 Milosz Mapa času ISBN Autor 49 b) zavedení cizího klíče pro vyjádření vztahu je v obou relacích zaveden společný atribut, který je v relaci na straně 1 klíčový (primární klíč) a v relaci na straně N neklíčový (cizí klíč) 1 : N VYDAVATEL KNIHY primární klíč VYDAVATEL ( Kód vydavatele∗ , Název vydavatele) KNIHY (ISBN∗, Autor, Název knihy, Kód vydavatele ) cizí klíč VYDAVATEL KNIHY 50 Název vydavatele Kód vydavatele 11 Torst 22 Československý spisovatel 33 Odeon ISBN Autor Název knihy Kód vydavatele 80-85639-12-2 Nezval Abeceda 11 80-202-0262-5 Poe Havran 22 80-207-0155-9 Ginsberg Kvílení 33 80-207-0232-6 Milosz Mapa času 33 2. Vztahy N : M Příklad: Vyjádření vztahu typu N : M mezi údaji o čtenáři a o knize – 1 čtenář si může vypůjčit více knih, jedna kniha může být půjčena více čtenářům. Jméno Číslo legitimace N ČTENÁŘI Signatura si půjčili Autor Název M KNIHY Datum výpůjčky 1 čtenář může mít půjčeno více knih. 1 kniha může být půjčena více čtenářům. ČTENÁŘI (Číslo legitimace, Jméno) KNIHY (Signatura, Autor, Název) Vytvoření nové relace a zavedení cizího klíče pro vyjádření vztahu je vytvořena nová relace, jejímž primárním klíčem bude klíč složený z primárních klíčů entit, jež jsou ve vztahu N:1 1:N ČTENÁŘI VÝPŮJČKY KNIHY ČTENÁŘI (Číslo legitimace∗, Jméno) VÝPŮJČKY (Číslo legitimace∗, Signatura∗, Datum výpůjčky) KNIHY (Signatura∗, Autor, Název) 51 Normalizace Úprava logického modelu databáze s cílem omezit redundanci a dekomponovat složité relace na dvojrozměrné tabulky s atomickými hodnotami polí. cíl: • odstranit redundanci dat v databázi • zabránit tzv. aktualizačním anomáliím (např. abychom při zrušení záznamu o výpůjčce nepřišli o údaje o knize) proces dekompozice dat do podmnožin pro jednotlivé tabulky • kontrola, zda jsou pole správně seskupena do tabulek v jedné tabulce mají být jen pole, která navzájem souvisejí a tvoří jeden dále nerozložitelný celek • definování klíčových polí • odstranění duplicitních, vícenásobných a opakujících se hodnot 1. normální forma (1NF) • multizávislost • každá položka záznamu databáze musí obsahovat pouze jeden údaj (hodnotu) příslušného typu – všechny hodnoty položek jsou jednoduché – nedělitelné (atomické, skalární) 2. normální forma (2NF) • funkční závislost • tabulky obsahují pouze taková neklíčová pole, která jsou závislá na celém primárním klíči (záznam neobsahuje položky významově nezávislé na primárním klíči) 3. normální forma (3NF) • tranzitivní závislost • žádná neklíčová položka tabulky nesmí být závislá na jiné neklíčové položce 52 6.4 Základní relační operace (relační algebra) a) klasické množinové operace u množinových operací (kromě kartézského součinu) se předpokládá, že obě tabulky, které do operace vstupují jako operandy, mají tyto vlastnosti: • jsou stejného stupně, tj. mají stejný počet sloupců • každý i-tý sloupec z obou tabulek je definován na stejné doméně (tj. položky jsou v obou tabulkách definovány ve stejném pořadí a jako položky stejného typu) sjednocení: vytvoří novou tabulku, která obsahuje všechny řádky obou výchozích tabulek průnik: vytvoří tabulku, která bude obsahovat pouze totožné řádky z obou relací množinový rozdíl: vytvoří tabulku, ve které budou všechny řádky první vstupní tabulky kromě těch, které se vyskytují i v druhé tabulce symetrický rozdíl: vytvoří tabulku, ve které budou všechny řádky obou tabulek s výjimkou těch, které se vyskytují v obou tabulkách kartézský součin: vytvoří novou tabulku tak, že spojuje řádky z obou tabulek systémem každý s každým. Počet sloupců výsledné tabulky je součet počtu sloupců obou vstupních tabulek. Počet řádků je součin počtu řádků obou vstupních tabulek. b) speciální relační operace projekce: výběr určitého pole v řádcích tabulky (výběr sloupců tabulky) – vertikální podmnožina selekce (restrikce): výběr určité věty z tabulky na základě stanovené podmínky (výběr řádků tabulky) – horizontální podmnožina 53 spojení, spojování – joins: propojení tabulek, které obsahují alespoň jednu stejnou položku (resp. mají alespoň po jedné položce založené na stejné doméně) výsledek zřetězení řádek dvou množin dat provedeného podle jednoho nebo více zadaných pravidel Příklad spojení: Seznam čtenářů knihovny a seznam měst, v nichž tito čtenáři bydlí (spojovací položkou je kód města) tzv. přirozené spojení (natural join) – spojovací položka se ve výsledné tabulce vyskytuje jen jednou 54 (všeobecné) spojení (join): spojení založené na libovolném typu vztahu mezi hodnotami propojovacích položek ekvivalentní spojení (equi-join): spojení založené na shodě hodnot v propojovacích položkách spojení nerovností (non-equi-join): spojení založené na nerovnosti hodnot v propojovacích položkách Příklad spojení nerovností: Seznam čtenářů knihovny a seznam měst, v nichž tito čtenáři nebydlí (spojovací položkou je kód města) 55 vnitřní spojení (inner join, exkluzívní spojení): spojení, v němž jsou záznamy ze dvou tabulek kombinovány a přidávány k výsledkům dotazu pouze tehdy, když k záznamům z první tabulky existují odpovídající záznamy v tabulce druhé vnější spojení (outer join, inkluzívní spojení): spojení, kdy je každý odpovídající záznam ze dvou tabulek kombinován do jednoho záznamu ve výsledku dotazu. Není-li k záznamu z tabulky, která poskytuje všechny své záznamy, nalezen odpovídající záznam ve druhé tabulce, je přesto zahrnut do výsledků dotazu s prázdnými poli v místech, kde nebyl nalezen odpovídající záznam ve druhé tabulce. samospojení (self–join, recursive join): spojení, v němž jsou záznamy z tabulky kombinovány s jinými záznamy z téže tabulky 56 Princip výběru z relační databáze • vytváříme KOPIE částí tabulek, s nimi pak provádíme množinové operace • výsledkem je KOPIE vyhledaných dat, která má opět strukturu relační tabulky → paměťové nároky relačních databází jsou vyšší ve srovnání se souborovými (procedurálními) systémy výhoda: jednoduchost (pro níže uvedených 5 operací není třeba konstruovat složité programy) nevýhoda: nehospodárnost (nároky na paměť a na čas) Postup: 1. Určení relace – zadání názvu tabulky (relace), z níž chceme vyhledávat “Vyber z tabulky, která se jmenuje... 2. Určení propojení v případě, že chceme vyhledávat z více tabulek (relací) – spojení ...a je propojena s další tabulkou sloupcem, který se jmenuje... → podmnožina kartézského součinu řádků tabulek (vytvoření nové tabulky obsahující kopie celých souvisejících řádků) 3. Určení atributu – zadání názvů polí (atributů), které chceme vyhledat – projekce ...sloupec, který se jmenuje... → množina vybraných sloupců (kopie celých vybraných sloupců) 4. Určení n-tice – zadání vyhledávacího klíče pro záznam (řádek, n-tici) nebo množinu záznamů, které chceme vyhledat – selekce ...a řádek, který obsahuje...” → množina vybraných řádků (kopie celých vybraných řádků) 5. Průnik množin získaných projekcí a selekcí (příp. spojením) → množina vybraných dat 57 Příklad: Dotaz: Kolik stojí kniha od Karla Čapka vydaná v roce 1962? Řešení14: Určení relace: KNIHY Určení atributů: CENA V KČ, AUTOR, ROK VYDÁNÍ Určení n-tic: AUTOR = Čapek, Karel (záznamy č. 2, 4) AND ROK VYDÁNÍ = 1962 (záznamy č. 2, 5, 8) KNIHY ČÍSLO ZÁZNAMU AUTOR NÁZEV CENA V KČ ROK VYDÁNÍ 1 Novák, J. Praha v noci 150,- 1984 2 Čapek, Karel RUR 32,- 1962 3 Hrabal, B. Pábitelé 25,- 1967 4 Čapek, Karel Loupežník 31,- 1958 5 Apollinaire Kaligramy 32,- 1962 6 Hartwigová, J. Apollinaire 48,- 1967 7 Orwell, George 1984 32,- 1991 8 Olbracht, Ivan Nikola Šuhaj loupežník 25,- 1962 Odpověď: Cena publikace obsažené v tabulce KNIHY, kterou napsal Karel Čapek a která byla publikována v roce 1962, činí 32,- Kč ODPOVĚĎ 14 ČÍSLO ZÁZNAMU CENA V KČ 1 32,- Poznámka: Pro zrychlení přístupu k datům (konkrétně při určování n-tic prostřednictvím vyhledávacích klíčů) se v praxi zpravidla využívá indexových souborů. 58 7. S Q L SQL Structured Query Language – strukturovaný dotazovací jazyk Specializovaný programovací jazyk určený k práci s daty (tzv. jazyk 4. generace – 4GL) – umožňuje realizovat všechny operace s daty (přístup k datům, správu a organizování dat, manipulaci s daty). Používá se především v relačních databázích. vlastnosti: • neprocedurálnost (deklarativnost) nezávislost na fyzické organizaci dat; pomocí SQL popíšeme, jaká data chceme v databázi najít, ale nikoli, jak to má počítač provést (na rozdíl od C, Cobolu, Pascalu aj. procedurálních jazyků)15 • relační úplnost SQL lze použít ke všem operacím s daty – založení databáze, definování struktury tabulek, stanovení integritních omezení, vkládání dat do databáze, výběr dat z databáze, zobrazení dat • neobsahuje prostředky pro formátování výstupů, pouze pro definici jejich obsahu (obrazovkové formuláře, tiskové sestavy, uživatelská menu) oblasti použití SQL při práci s daty: • přímé použití pro interaktivní práci s daty (SQL→ SŘBD) • vkládání SQL do aplikačních programů, např. do PHP skriptů (aplikační program → SŘBD) • komunikační nástroj v aplikacích klient/server SQL server správa a provoz databáze vykonávání programů v jazyce SQL a vracení jejich výsledků klientskému programu SQL klient formulace dotazu nebo příkazu pro manipulaci s daty v jazyce SQL odeslání dotazu nebo příkazu SQL serveru SQL servery: • Informix Dynamic Server • Microsoft SQL Server • Oracle • Sybase SQL Server • WinBase602 • PostgreSQL • MySQL 15 Přes tuto neprocedurální povahu SQL už existují i jeho procedurální rozšíření, např. Transact SQL či Oracle PL/SQL. 59 Historie standardizace SQL: 60 1974-75 IBM ve vývojovém středisku v San José vyvinula 1. verzi SQL (tehdy pod názvem SEQUEL – Structured English Query Language) jako součást prototypových relačních databázových systémů System R a SEQUEL-XRM. 1986 Schválena americká norma ANSI X3.135 (ANSI SQL) 1987 ISO přijala v nezměněné podobě ANSI SQL jako ISO/IEC 9075 (SQL86) 1989 Vydán dodatek ISO/IEC 9075 „Integrity Enhancement Feature“, umožňující definovat integritní omezení (SQL89) 1992 Schválena norma ISO/IEC 9075:1992 (SQL92, SQL2) od 1992 Příprava SQL3 (objektová orientace) 1999 Schválena norma ISO/IEC 9075 SQL:1999 (podmnožina SQL3) od 2000 Příprava SQL4 (nahrazuje SQL3) 7.1 Základní terminologie Objekty, s nimiž pracuje SQL: tabulka (table), řádek (row), sloupec (column) struktura SQL příkazu: klíčové sloveso příkaz klauzule klíčové slovo jméno objektu výraz kvalifikátor konstanta proměnná operand operátor jména sloupců vestavěné funkce klíčové sloveso: označuje činnost, kterou daný příkaz provádí (např. SELECT) klauzule: blíže specifikuje činnost nebo data, s nimiž příkaz pracuje (např. DISTINCT) klíčové slovo: slovo, kterým klauzule začíná (např. FROM) jméno objektu: jméno tabulky nebo sloupce kvalifikátor: jednoznačná specifikace objektu (zpravidla jménem tabulky – např. KNIHY.Autor) výraz: hodnotu výrazu musí SQL spočítat, pak ji umístí do tabulky výsledků operand: část výrazu obsahující data, s kterými se má pracovat • konstanta: její hodnota se objeví v každém řádku tabulky výsledků • proměnná: symbol, který může nabývat různých hodnot • jména sloupců (polí, položek, atributů) – jméno tabulky.jméno sloupce • vestavěné funkce (agregáty) operátor: symbol označující operace, které je nutno provést s danými operandy • aritmetické • logické • relační 61 7.2 Typy dat SQL dle normy SQL:1999 [ ] n x y ekvivalentní zkrácené názvy počet znaků počet desetinných míst (precision) délka – počet celých míst (scale) Znaková data (string types – řetězce znaků) CHARACTER, [CHAR] (n) řetězec libovolných znaků o délce 1 – 255 (určujeme přesný počet znaků) CHARACTER VARYING, pole znaků proměnné délky [VARCHAR], [CHAR VARYING] (n) (určujeme maximální počet znaků) Numerická data (numeric types – čísla) • přesná (exact numeric types) NUMERIC (x,y) reálné číslo DECIMAL, [DEC] (x,y) desetinné číslo s pevnou řádovou čárkou (binárně kódované desítkové číslo) INTEGER , [INT] celé číslo včetně znaménka (8 bajtů) SMALLINT celé číslo včetně znaménka (4 bajty) • přibližná (approximate numeric types) FLOAT (x) číslo v pohyblivé řádové čárce (8 bajtů) REAL číslo v pohyblivé řádové čárce (4 bajty) DOUBLE PRECISION číslo v pohyblivé řádové čárce s dvojnásobnou přesností Datové a časové údaje (datetime types) DATE TIME TIMESTAMP kalendářní datum denní čas časový okamžik, „časové razítko“ (datumočasová hodnota) Intervalové údaje (interval type) INTERVAL Ostatní datové typy BOOLEAN BLOB 62 časový interval logické hodnoty true/false/unknown rozsáhlý binární datový objekt (např.obrázek) 7.3 Základní příkazy a klauzule SQL DDL – data definition language – jazyk pro definici dat definice tabulek CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEX vytvoření tabulky změna struktury tabulky zrušení (smazání) tabulky definování indexu zrušení (smazání) indexu definice pohledů – views, náhledy, virtuální tabulky (VDL – view definition language) CREATE VIEW DROP VIEW vytvoření pohledu zrušení pohledu systémový katalog CREATE SCHEMA umožňuje získat informace o relačním schématu databáze, o indexech atd. Obvykle obsahuje seznamy tabulek, položek a indexových souborů. DML – data manipulation language – jazyk pro manipulaci s daty vkládání dat do tabulky INSERT INTO vkládání celých řádků aktualizační příkazy DELETE FROM rušení celých řádků UPDATE změna hodnoty sloupců příkazy pro výběr dat SELECT DCL – data control language – jazyk pro řízení dat COMMIT ROLLBACK ukončení aktuální transakce návrat všech dat v databázi do stavu před začátkem transakce 63 Struktura a schéma propojení tabulek používaných v příkladech a dotazech G:\KU\DAS\PDOXWIN\SQL\KNIHOVNA.SQL KNIHY TRIDENI CTENARI VYPUJCKY VYDAVAT Signatura, Nazev, Autor1, Autor2, Cena, Misto_vydani, Kod_vydavatele, Rok_vydani, Kod_zanru Kod_zanru, Slovni_vyjadreni Cislo_legitimace, Jmeno, Adresa, Rodne_cislo, Telefon Cislo_legitimace, Datum_vypujcky, Datum_vracení, Signatura Kod_vydavatele, Nazev_vydavatelstvi G:\KU\DAS\PDOXWIN\SQL\HITY.SQL TITULY FIRMY INTER ZANRY 64 Nazev_titulu, Hodnoceni, Cena_1_nosice, Kod_firmy, Kod_interpreta, Kod_zanru, Prodej_v_1_tydnu, Prodej_v_2_tydnu, Prodej_v_3_tydnu, Prodej_v_4_tydnu Plny_nazev_firmy, Kod_firmy Jmeno_solisty_skupiny, Kod_interpreta, Typ (M=muž, Ž=žena, S=skupina) Nazev_zanru, Kod_zanru 7.4 Dotazovací jazyk SQL výběrový blok: SELECT výčet atributů (vyber hodnoty sloupců) povinné FROM výčet relací (z řádků tabulek) povinné WHERE výběrové podmínky (ve kterých platí) nepovinné Složky dotazovacího jazyka SQL 1. příkazy SELECT + klauzule (FROM, WHERE, ORDER BY), klíčová slova (DISTINCT, *) 2. aritmetické operátory + - / 3. agregační operátory COUNT, MIN, MAX, SUM, AVG, GROUP BY 4. logické operátory OR, AND, NOT 5. relační operátory = > * < <> LIKE, BETWEEN, IN, IS NULL 6. znaky pro maskování % _ pořadí jednotlivých klauzulí příkazu SELECT: DISTINCT FROM WHERE GROUP BY HAVING ORDER BY pořadí vyhodnocování aritmetických a logických operátorů: závorky násobení, dělení sčítání, odčítání NOT AND OR ; symbol pro ukončení příkazu výsledek dotazu: tabulka výsledků 65 7.4.1 Projekce SELECT <sloupec> FROM <tabulka> SELECT Jmeno FROM Ctenari; SELECT Ctenari.Jmeno FROM Ctenari; Vyberte všechny hodnoty pole Jmeno z tabulky Ctenari. SELECT Nazev,Cena FROM Knihy; SELECT Knihy.Nazev,Knihy.Cena FROM Knihy; Vypište obsah sloupců Nazev a Cena z tabulky Knihy. Poznámka: Při dotazování do jedné tabulky nebo když nehrozí, že dojde k záměně, lze zpravidla uvádět pouze jména položek, není nutné doplňovat jméno tabulky. ∗ výběr všech sloupců (polí) z tabulky SELECT ∗ FROM Ctenari; SELECT Ctenari.∗ FROM Ctenari; SELECT Cislo_legitimace,Jmeno,Adresa,Rodne_cislo,Telefon FROM Ctenari; SELECT Ctenari.Cislo_legitimace,Ctenari.Jmeno,Ctenari.Adresa, Ctenari.Rodne_cislo,Ctenari.Telefon FROM Ctenari; Vyberte všechny údaje z tabulky Ctenari. AS – přejmenování položky v tabulce odpovědi (lze i vynechat) SELECT Cena_1_nosice AS Cena FROM Tituly; SELECT Cena_1_nosice Cena FROM Tituly; Vyberte všechny údaje o ceně 1 nosiče z tabulky Tituly a sloupec pojmenujte Cena. DISTINCT – vyloučení duplicit (+setřídění) SELECT DISTINCT <sloupec> FROM <tabulka> SELECT DISTINCT Jmeno FROM Ctenari; Vypište všechna jména čtenářů z tabulky Ctenari – pokud se v databázi vyskytuje více čtenářů se stejným jménem, uveďte toto jméno jen jednou. SELECT DISTINCT Cena FROM Knihy; Vyberte všechny hodnoty, kterých nabývá položka Cena v tabulce Knihy – každou hodnotu uveďte pouze jednou. SELECT DISTINCT Rok_vydani,Misto_vydani,Cena FROM Knihy; Vypište údaje o roku vydání, místu vydání a ceně publikací uvedených v tabulce knihy – pokud v jednom roce vyšlo v jednom městě více knih se stejnou cenou, uveďte daný záznam jen jednou. 66 7.4.2 Selekce SELECT <sloupec> FROM <tabulka> WHERE <podmínka> SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE Adresa='Praha'; Vypište jména a čísla legitimací čtenářů, kteří bydlí v Praze. typy selekce: • porovnávací relační operátory: = > < >= <= <> SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE Adresa<>'Praha'; Vypište jména a čísla legitimací čtenářů, kteří nebydlí v Praze. • určování rozsahu BETWEEN SELECT Cena FROM Knihy WHERE Rok_vydani BETWEEN '1962' AND '1965'; Vyberte všechny ceny publikací vydaných v letech 1962 – 1965. • výčet IN ( ) SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE Adresa IN ('Praha 1','Praha 3','Praha 5'); Vypište jména a čísla legitimací čtenářů, kteří bydlí v Praze 1, Praze 3 nebo v Praze 5. • porovnání se vzorem (maskování, přibližné dotazy) LIKE Symbolické znaky – (podtržítko) maska právě pro 1 znak % maska pro libovolný počet znaků (včetně žádného) SELECT ∗ FROM Ctenari WHERE Adresa LIKE '%Praha%'; Vyberte všechny čtenáře z Prahy (tj. ty, kdo mají v poli Adresa uvedeny hodnoty Praha 1, Praha 8, Praha, Praha – Košíře, Dejvice – Praha 6, Václavské nám. – Praha 1 apod.) SELECT Kod_interpreta FROM Inter WHERE Kod_interpreta NOT LIKE '2_'; Vyberte všechny dvoumístné kódy interpretů kromě těch, které mají na 1. místě číslici 2 (a na druhém místě mají jakýkoli znak). 67 logické operátory pro kombinaci podmínek výběru AND OR NOT SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE Adresa='Praha' OR Cislo_legitimace>=150; Vypište jména a čísla legitimací čtenářů, kteří bydlí v Praze nebo mají přiděleno číslo legitimace 150 a vyšší. SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE Adresa='Praha' AND Cislo_legitimace>=150; Vypište jména a čísla legitimací čtenářů, kteří bydlí v Praze a mají přiděleno číslo legitimace 150 a vyšší. SELECT Jmeno,Cislo_legitimace FROM Ctenari WHERE NOT Cislo_legitimace=150; Vypište jména a čísla legitimací čtenářů, kteří nemají přiděleno číslo legitimace 150. SELECT * FROM Knihy WHERE (Autor1 LIKE 'Čapek%' OR Autor2 LIKE 'Čapek%') AND NOT Nazev='Krakatit'; Najděte všechny knihy od Čapka kromě Krakatitu. • vyhledávání nevyplněných (nezadaných) hodnot IS NULL – nevyplněná hodnota IS NOT NULL – vyplněná hodnota SELECT Signatura FROM Vypujcky WHERE Datum_vraceni IS NULL; Vyberte z tabulky Vypujcky signatury všech knih, které jsou toho času půjčené (tj. nemají vyplněno pole Datum vrácení). ORDER BY uspořádání (setřídění) výsledků dotazu standardně se položky třídí vzestupně (ASC) DESC setřídění sestupně a) SELECT ∗ FROM Knihy WHERE Cena>100 ORDER BY Cena; b) SELECT ∗ FROM Knihy WHERE Cena<100 ORDER BY Cena; Vyberte knihy v ceně a) nad 100 Kč, b) do 100 Kč a tabulky odpovědi setřiďte podle ceny. SELECT ∗ FROM Knihy WHERE NOT Rok_vydani='1980' ORDER BY Autor1,Autor2; SELECT ∗ FROM Knihy WHERE Rok_vydani<>'1980' ORDER BY Autor1,Autor2; Připravte k vytištění celé záznamy všech knih, které byly vydány kdykoli kromě roku 1980, setříděné podle jmen autorů (v případě stejného jména 1. autora se dále třídí podle jména 2. autora). SELECT DISTINCT Cena_1_nosice FROM Tituly ORDER BY Cena_1_nosice DESC; Seřaďte do tabulky podle velikosti od nejvyšších po nejnižší všechny ceny, za něž je možno koupit desky z tabulky Tituly. 68 7.4.3 Spojování (join) podmínka spojení (slučovací podmínka): <tabulka1.sloupec> operátor spojení <tabulka2.sloupec> operátor spojení (join-operátor): libovolný z relačních operátorů vyjadřující požadovaný vztah hodnot atributů spojení tj. = < > <= >= Do tabulky výsledků se umístí pouze ty řádky tabulky výsledků ze všech možných kombinací řádků obou tabulek, ve kterých hodnota uvedených sloupců (polí) odpovídá zadanému požadavku vztahu definovanému operátorem. Počet relací, které lze spojit, není omezen. Poznámka: Při použití SELECT se spojením je nutné v klauzuli uvést jako prefix jméno tabulky u těch sloupců, které se se stejným názvem vyskytují ve více spojovaných tabulkách. Propojovací pole musí být kompatibilní, tj. stejného datového typu a významově srovnatelné. a) spojení podle SQL89 SELECT <sloupec> FROM <tabulka1, tabulka2> WHERE <podmínka spojení> Příklad: SELECT Jmeno, Nazev, Datum_vypujcky FROM Ctenari, Vypujcky, Knihy WHERE Ctenari.Cislo_legitimace = Vypujcky.Cislo_legitimace AND Vypujcky.Signatura = Knihy.Signatura AND Ctenari.Cislo_legitimace = '14' AND Datum_vraceni IS NULL; podmínky spojení podmínky výběru Najděte jméno čtenáře, který má legitimaci číslo 14, a vyhledejte názvy a datum výpůjčky u všech publikací, které má tento čtenář půjčené. 69 b) spojení podle SQL92 SELECT <sloupec> FROM <tabulka1> JOIN <tabulka2> ON <podmínka spojení> Příklad: SELECT Jmeno, Nazev, Datum_vypujcky FROM Ctenari JOIN Vypujcky ON Ctenari.Cislo_legitimace = Vypujcky.Cislo_legitimace JOIN Knihy ON Vypujcky.Signatura = Knihy.Signatura WHERE Ctenari.Cislo_legitimace = '14' podmínky spojení podmínky výběru AND Datum_vraceni IS NULL; Najděte jméno čtenáře, který má legitimaci číslo 14, a vyhledejte názvy a datum výpůjčky u všech publikací, které má tento čtenář půjčené. Vnější spojení LEFT (OUTER) JOIN RIGHT (OUTER) JOIN FULL (OUTER) JOIN SELECT Jmeno,Datum_vypujcky FROM Ctenari LEFT JOIN Vypujcky ON Ctenari.Cislo_legitimace=Vypujcky.Cislo_legitimace WHERE Adresa=“Praha“ AND Datum_vraceni IS NULL Vypište jména čtenářů, kteří mají jako bydliště uvedeno „Praha“. Mají-li tito čtenáři půjčené nějaké knihy, vypište též datum jejich půjčení. 70 Spojování (joins) v Paradoxu 1. Pro každou tabulku je nutné v klauzuli FROM vytvořit ALIAS (alternativní název – libovolný řetězec znaků). Příklad: FROM Tituly TT 2. U každého pole v klauzuli SELECT se uvede jako prefix alias tabulky, jejíž je součástí. Příklad: SELECT TT.Nazev_titulu 3. V podmínkách spojení i v podmínkách výběru se uvede u každého pole jako prefix alias tabulky, jíž je součástí. Příklad: WHERE TT.Kod_interpreta<>'02' JOIN Tituly TT ON TT.Kod_interpreta=II.Kod_interpreta SELECT TT.Nazev_titulu,II.Jmeno_solisty_skupiny, TT.Cena_1_nosice*(TT.Prodej_v_1_tydnu+TT.Prodej_v_2_tydnu+ TT.Prodej_v_3_tydnu+TT.Prodej_v_4_tydnu) FROM Tituly TT,Inter II WHERE TT.Kod_interpreta=II.Kod_interpreta; Vyberte z tabulky Tituly všechny názvy titulů a vypočítejte k nim zisk, který plyne z jejich prodeje v 1. – 4. týdnu. Z tabulky Inter doplňte k jednotlivým titulům jejich interprety. SELECT COUNT(VY.signatura) AS pocet_vypujcek,KN.autor1 FROM KNIHY KN JOIN Vypujcky VY ON KN.Signatura=VY.Signatura GROUP BY KN.autor1 ORDER BY pocet_vypujcek DESC; Kolik výpůjček je zaznamenáno u knih jednotlivých autorů? 71 7.4.4 Výpočty v dotazech Výpočty lze provádět jak jako součást projekce, tak jako součást operace selekce. Výpočty na řádku + - ∗ / ( ) prostředky pro konstrukci vypočítaných polí SELECT Nazev,Cena∗1.05 FROM Knihy; Vyhledejte všechny názvy publikací, uvedených v tabulce KNIHY a ke každé publikaci uveďte její cenu s 5% DPH. SELECT Nazev,Cena∗1.05 FROM Knihy WHERE Cena∗1.05>250; Vyhledejte všechny názvy publikací, uvedených v tabulce KNIHY, jejichž cena s 5% DPH převyšuje 250 Kč, a ke každé publikaci uveďte její cenu s 5% DPH. SELECT Jmeno + “ (RČ: “+Rodne_cislo+“)“ AS Seznam FROM Ctenari; Vytvořte seznam všech čtenářů, v němž uvedete v jedné položce jméno každého z nich doplněné v závorce rodným číslem uvedeným zkratkou RČ. Poznámka: ve verzi 9 Paradoxu nelze pro alfanumerické položky aritmetické operátory použít (místo + se používá ||) Výpočty za sloupce (agregační dotazy) SUM ( ) součet hodnot polí ve sloupci AVG ( ) aritmetický průměr hodnot polí ve sloupci MIN ( ) minimální hodnota ve sloupci MAX ( ) maximální hodnota ve sloupci COUNT ( ) počet hodnot ve sloupci (včetně duplicitních) COUNT (DISTINCT) počet unikátních hodnot ve sloupci GROUP BY setřídění do skupin pro výpočet agregovaných hodnot HAVING výběr z vypočítaných souhrnů podle zadané podmínky 72 SELECT SUM(Cena) FROM Knihy; Vypočítejte celkovou cenu všech knih uvedených v tabulce Knihy. SELECT SUM(Cena*1.05) FROM Knihy; Vypočítejte celkovou cenu všech knih uvedených v tabulce Knihy s 5% DPH. SELECT AVG(Cena_1_nosice) FROM Tituly; Vypočítejte průměrnou cenu jedné desky z tabulky Tituly. SELECT MIN(Cena_1_nosice),MAX(Cena_1_nosice) FROM Tituly; Zjistěte, kolik stojí nejlacinější a nejdražší deska z tabulky Tituly. SELECT COUNT(*) FROM Vypujcky; Kolik je v databázi záznamů o uskutečněných výpůjčkách? SELECT COUNT(DISTINCT Cislo_legitimace) FROM Vypujcky; Kolik čtenářů si půjčilo knihy? SELECT COUNT(DISTINCT Signatura) FROM Vypujcky; Kolik knih bylo půjčeno? SELECT COUNT(Kod_zanru),Kod_zanru FROM Tituly GROUP BY Kod_zanru; Kolik záznamů je zařazeno do jednotlivých žánrových skupin tabulky Tituly? SELECT AVG(Cena),Rok_vydani FROM Knihy JOIN Trideni ON Knihy.Kod_zanru=Trideni.Kod_zanru WHERE Slovni_vyjadreni=″odborná literatura″ GROUP BY Rok_vydani; Vypočítejte průměrnou cenu vydaných knih spadajících do kategorie odborná literatura v jednotlivých letech. SELECT COUNT(V.Signatura),K.Nazev FROM Knihy K JOIN Vypujcky V ON K.Signatura=V.Signatura GROUP BY K.Nazev HAVING COUNT(V.Signatura)>10; Najděte knihy, které byly půjčené více než 10x. 73 7.4.5 Tvorba poddotazů Poddotazy jsou též označovány jako subdotazy či jako strukturované, vnitřní, vnořené, hnízděné (nested) dotazy. vnější dotaz schéma: vnitřní dotaz SELECT FROM WHERE (SELECT FROM WHERE) a) porovnávání s jedinečnou (skalární) hodnotou Výsledkem poddotazu uvedeného v závorce bude jediná hodnota – s touto hodnotou se pak porovnává výsledek první části dotazu uvedené před závorkou. Používané relační operátory: = < > <= >= SELECT * FROM Knihy WHERE Rok_vydani= (SELECT Rok_vydani FROM Knihy WHERE Nazev=“Neuromancer“ AND Autor1 LIKE “Gibson%”); Najděte knihy vydané ve stejném roce jako „Neuromancer“ Williama Gibsona16. b) porovnávání s množinou hodnot Výsledkem poddotazu uvedeného v závorce bude více hodnot – s touto množinou hodnot se pak porovnává výsledek první části dotazu uvedené před závorkou. Používaný relační operátor: IN SELECT DISTINCT K.* FROM Knihy K JOIN Vypujcky V ON K.Signatura=V.Signatura JOIN Ctenari C ON C.Cislo_legitimace=V.Cislo_legitimace WHERE C.Cislo_legitimace IN (SELECT C.Cislo_legitimace FROM Ctenari C JOIN Vypujcky V ON C.Cislo_legitimace=V.Cislo_legitimace JOIN Knihy K ON K.Signatura=V.Signatura WHERE K.Nazev=“Neuromancer“ AND K.Autor1 LIKE “Gibson%”); Které další knihy si půjčili čtenáři, kteří měli vypůjčeného Gibsonova Neuromancera? 16 Poznámka: V tomto příkladu předpokládáme, že tato publikace vyšla pouze jednou – výsledkem poddotazu tedy bude jeden letopočet. 74 SELECT DISTINCT K.* FROM Knihy K JOIN Trideni T ON K.Kod_zanru=T.Kod_zanru JOIN Vypujcky V ON K.Signatura=V.Signatura JOIN Ctenari C ON C.Cislo_legitimace=V.Cislo_legitimace WHERE T.Slovni_vyjadreni="scifi" AND K.Signatura NOT IN (SELECT K.Signatura FROM Ctenari C JOIN Vypujcky V ON C.Cislo_legitimace=V.Cislo_legitimace JOIN Knihy K ON K.Signatura=V.Signatura JOIN Trideni T ON K.Kod_zanru=T.Kod_zanru WHERE C.Jmeno="Skálová"); Které knihy žánru scifi ještě neměla půjčené čtenářka Skálová? Alternativní řešení k dotazům s vnořenou podmínkou – rekurzívní spojení tabulek SELECT K2.* FROM Knihy K1 JOIN Knihy K2 ON K1.Rok_vydani=K2.Rok_vydani WHERE K1.Autor1 LIKE “Gibson%” AND K1.Nazev=“Neuromancer“; Najděte knihy vydané ve stejném roce jako „Neuromancer“ Williama Gibsona. Komentář: Program načte do paměti 2x kopii stejné tabulky – pro rozlišení se přidělí každé z nich alternativní název (alias). K1.Rok_vydani = K2.Rok_vydani KNIHY K1 KNIHY K2 Tabulka K1 se použije k výběru roku vydání Gibsonova Neuromancera, tabulka K2 se použije k výběru údajů o knihách, které vyšly v daném roce. 75 7.4.6 Souhrnné příklady dotazů Všechny uváděné varianty dotazů jsou rovnocenné a vytvoří stejnou tabulku odpovědi. Zjistěte ceny knih, které napsal Čapek a byly vydány v letech 1962 – 1965. a) SELECT Cena FROM Knihy WHERE (Autor1='Čapek' OR Autor2='Čapek') AND Rok_vydani>='1962' AND Rok_vydani<='1965'; b) SELECT Cena FROM Knihy WHERE (Autor1='Čapek' OR Autor2='Čapek') AND Rok_vydani BETWEEN '1962' AND '1965'; c) SELECT Cena FROM Knihy WHERE (Autor1='Čapek' OR Autor2='Čapek') AND Rok_vydani IN ('1962','1963','1964','1965'); d) SELECT Cena FROM Knihy WHERE (Autor1='Čapek' OR Autor2='Čapek') AND (Rok_vydani='1962' OR Rok_vydani='1963' OR Rok_vydani='1964' OR Rok_vydani='1965'); Spočítejte, kolik je v tabulce Knihy zapsáno publikací, které mají vyplněnou cenu a nestojí 80,- Kč. a)SELECT COUNT(Signatura) FROM Knihy WHERE Cena<>80 AND Cena IS NOT NULL; b)SELECT COUNT(∗) FROM Knihy WHERE NOT Cena=80 AND Cena IS NOT NULL; c)SELECT COUNT(Cena) FROM Knihy WHERE Cena IS NOT NULL AND NOT Cena=80; 76 Vyberte z tabulky Tituly všechny nahrávky, které nebyly hodnoceny nejvyšším počtem hvězdiček (5) a přitom jejich prodej ve 2. – 3. týdnu přesáhl 10.000 kusů, a seřaďte je podle počtu prodaných kusů v těchto dvou týdnech. a) SELECT Nazev_titulu,Hodnoceni,Prodej_v_2_tydnu+ Prodej_v_3_tydnu AS Celkem FROM Tituly WHERE Hodnoceni<>5 AND Prodej_v_2_tydnu+Prodej_v_3_tydnu>10000 ORDER BY Celkem DESC; b) SELECT Nazev_titulu,Hodnoceni,Prodej_v_2_tydnu+ Prodej_v_3_tydnu FROM Tituly WHERE NOT Hodnoceni=5 AND Prodej_v_2_tydnu+Prodej_v_3_tydnu>10000 ORDER BY Prodej_v_2_tydnu+Prodej_v_3_tydnu DESC; c) SELECT Nazev_titulu,Hodnoceni,Prodej_v_2_tydnu+ Prodej_v_3_tydnu FROM Tituly WHERE Prodej_v_2_tydnu+Prodej_v_3_tydnu>10000 AND NOT Hodnoceni=5 ORDER BY Prodej_v_2_tydnu+Prodej_v_3_tydnu DESC; Vyberte z tabulky Tituly všechny názvy titulů zařazených do žánrové kategorie „opera“ a vypočítejte k nim zisk, který plyne z jejich prodeje v 1. – 4. týdnu. Z tabulky Inter doplňte k jednotlivým titulům jejich interprety a z tabulky Firmy doplňte názvy vydavatelských firem. a)SELECT Nazev_titulu,Jmeno_solisty_skupiny,Plny_nazev_firmy, Cena_1_nosice∗(Prodej_v_1_tydnu+Prodej_v_2_tydnu+ Prodej_v_3_tydnu+Prodej_v_4_tydnu) FROM Tituly,Zanry,Inter,Firmy WHERE Tituly.Kod_zanru=Zanry.Kod_zanru AND Tituly.Kod_interpreta=Inter.Kod_interpreta AND Tituly.Kod_firmy=Firmy.Kod_firmy AND Nazev_zanru='opera'; b)SELECT Nazev_titulu,Jmeno_solisty_skupiny,Plny_nazev_firmy, Cena_1_nosice∗(Prodej_v_1_tydnu+Prodej_v_2_tydnu+ Prodej_v_3_tydnu+ Prodej_v_4_tydnu) FROM Tituly JOIN Inter ON Tituly.Kod_interpreta=Inter.Kod_interpreta JOIN Firmy ON Tituly.Kod_firmy=Firmy.Kod_firmy JOIN Zanry ON Tituly.Kod_zanru=Zanry.Kod_zanru WHERE Nazev_zanru='opera'; 77 7.5 Jazyk pro definici dat CREATE TABLE <název tabulky> (<pole1 datový typ(délka)>,<pole2 datový typ(délka)>, PRIMARY KEY (<pole>)) CREATE TABLE CD (Nazev VARCHAR(50),Hodnoceni SMALLINT,Cena MONEY,PRIMARY KEY (Nazev)); Vytvoří tabulku s názvem CD, v níž bude obsažena znaková položka Nazev o maximální délce 50 znaků, číselná položka Hodnoceni a měnová položka Cena. Primárním klíčem bude pole Nazev. ALTER TABLE <název tabulky> ADD <pole1 datový typ(délka)>,<pole2 datový typ(délka)> ALTER TABLE CD ADD Datum_vydani DATE; Doplní do struktury tabulky CD položku Datum_vydani (datový typ datum). CREATE INDEX <název indexu> ON <název tabulky> (<pole1>,<pole2>) CREATE INDEX Hodnoceni_Cena ON CD (Hodnoceni,Cena); Vytvoří sekundární indexový soubor pro tabulku CD, založený na položkách Hodnoceni a Cena. DROP INDEX <název tabulky>.<název indexu> DROP INDEX CD.Hodnoceni_Cena; Smaže sekundární indexový soubor Hodnoceni_Cena pro tabulku CD. DROP TABLE <název tabulky> DROP TABLE CD; Smaže tabulku CD. Příkaz zároveň smaže i všechny indexové soubory související s tabulkou. 78 7.6 Jazyk pro manipulaci s daty INSERT INTO <název tabulky> (<pole1>,<pole2>) VALUES (“<hodnota pole1>”,”<hodnota pole2>”) INSERT INTO CD (Nazev,Hodnoceni) VALUES (“Rusalka”,5); Vloží do tabulky CD nový řádek, v němž bude v položce Nazev hodnota Rusalka a v položce Hodnoceni číslo 5. UPDATE <název tabulky> SET <název pole> = <hodnota pole> WHERE <podmínka> UPDATE CD SET Hodnoceni=4,Cena=520 WHERE Nazev=“Rusalka”; Změní hodnocení titulu Rusalka z původní hodnoty na číslo 4 a doplní cenu tohoto titulu ve výši 520 Kč. UPDATE <název tabulky> SET <název pole> = <vzorec pro výpočet hodnoty pole> WHERE <podmínka> UPDATE CD SET Cena=Cena*1.1 WHERE Cena IS NOT NULL; Zvýší o 10% cenu všech titulů, které mají tuto položku vyplněnou. DELETE FROM <název tabulky> WHERE <podmínka> DELETE FROM CD WHERE Cena IS NULL; Smaže z tabulky CD všechny záznamy, které nemají vyplněnou položku Cena. 79 7.7 Dotazy k procvičení jazyka SQL Řešení jednotlivých dotazů najdete v souborech DOTAZ1.SQL – DOTAZ28.SQL v příslušných pracovních adresářích. • v dotazech do více tabulek je třeba uvádět název pole s aliasem tabulky (např. KN.Signatura) • jména polí, která obsahují mezery a diakritiku, se uvádějí v uvozovkách nebo v apostrofech (např. SELECT "Příjmení") • hodnota znakových položek a položek typu datum se uvádí v uvozovkách nebo v apostrofech (např. JMENO='Novák') • formát datových údajů: "MM/DD/RRRR" nebo "MM/DD/RR" • podmínkou fungování ORDER BY je uvedení příslušných polí v požadavku na projekci (za příkazem SELECT) 1. Jednoduché dotazy KNIHOVNA 1. Sestavte seznamy všech knih dané knihovny (vždy pouze uvedená pole) setříděné: a) podle autorů, uvnitř podle názvů b) podle roku vydání – od nejvyšších hodnot k nejnižším c) podle třídících kódů, uvnitř podle názvů 2. Najděte záznam čtenáře Pospíšila. 3. Vyhledejte bydliště čtenářky Skálové. 4. Najděte jména a adresu všech čtenářů, kteří mají telefon. 5. Sestavte seznam čtenářů (Jméno, Adresa), jejichž příjmení začíná na písmeno 'S'. Seznam bude řazen podle místa bydliště, v případě stejného místa dále podle jmen čtenářů. 6. Připravte k vytištění celé záznamy všech knih, které byly vydány před rokem 1980, setříděné podle jmen autorů. 7. Vyberte všechna data půjčení a čísla legitimací u výpůjček, které byly uskutečněny po 1.5.1998. 8. Najděte signatury všech knih, které byly zapůjčeny o prázdninách 1998. 9. Najděte autory a názvy všech knih vydaných před rokem 1992 nebo v roce 1992. Ke každému vyhledanému záznamu vypočítejte cenu dané publikace sníženou o 15%. 10.Vypočítejte průměrnou cenu všech knih vydaných před rokem 1992 nebo v roce 1992 a průměrnou cenu, které by tyto knihy dosáhly, kdybychom jejich cenu snížili o 5%. 11.Vypočítejte souhrnné hodnoty požadované v předchozím dotazu pro skupiny knih vydaných v jednom městě. Navíc spočítejte, kolik knih bylo v každém městě v uvedeném období vydáno. 80 HITY 12.Seřaďte do tabulky podle velikosti všechny ceny, za něž je možno koupit desky z tabulky Tituly. 13.Sestavte žebříček nejprodávanějších titulů v 1. – 3. týdnu (tj. na prvním místě bude titul, kterého se prodalo nejvíce kusů), který bude obsahovat názvy titulů, údaje o výši prodeje v jednotlivých týdnech a údaj o celkovém počtu prodaných nosičů v 1.3. týdnu. 14.Vypočítejte průměrnou cenu titulů z tabulky Tituly, rozdělenou do skupin podle výše hodnocení a dále vyberte nejnižší a nejvyšší cenu, která se v každé skupině titulů vyskytuje. 2. Složitější dotazy KNIHOVNA 15.Vyhledejte všechny záznamy o výpůjčkách uskutečněných na dobu přesahující 20 dní. 16.Proveďte přecenění vašeho skladu knih: cenu každého titulu vydaného v nakladatelstvích Atlantis a Odeon snižte na polovinu původní ceny (tj. původní cenu vydělte dvěma). Vytvořte nabídkový seznam zlevněných knih, kde kromě původní ceny uveďte i cenu po zlevnění, název titulu, jméno prvního autora a plný název žánru příslušné publikace. Tabulku odpovědi setřiďte podle názvů titulů. 17.Kolik je v databázi publikací vydaných nakladatelstvím Mladá fronta, zařazených do žánrové kategorie romány nebo poezie, jež byly vydány před rokem 1990 a stojí 50 Kč a méně? 18.Zjistěte cenu nejdražší knihy poezie, kterou vydalo nakladatelství Odeon nebo Československý spisovatel v letech 1980 – 1985. 19.Vypočítejte průměrnou cenu publikací, které byly vydány v jednotlivých nakladatelstvích do roku 1991 včetně a které spadají do žánrové kategorie životopisy nebo memoáry. 20.Vyberte jména a adresy čtenářů, kteří mají půjčené (tj. dosud nevrátili) knihy, jejichž autorem je A. Warhol nebo které o Warholovi pojednávají (předpokládáme, že takové knihy budou mít uvedeno jeho jméno v názvu). Jméno a adresu každého čtenáře uveďte pouze jednou, i když má vypůjčeno více daných titulů. Tabulku odpovědi setřiďte abecedně podle jmen čtenářů. 21.Jaké je zastoupení jednotlivých žánrových kategorií v databázi (uveďte počet titulů zařazených do jednotlivých kategorií) a jaká je průměrná cena jednoho titulu v jednotlivých kategoriích? Do tabulky odpovědi uveďte název žánru, počet titulů a průměrnou cenu jednoho titulu v dané kategorii a tabulku setřiďte podle názvů žánru. 81 HITY 22.Kolik titulů z kategorie dance nebo pop, kterých se celkem (tj. v 1. – 4. týdnu) prodalo méně než 15.000 kusů, bylo ohodnoceno třemi a více hvězdičkami? 23.Jaké je zastoupení jednotlivých vydavatelských firem v databázi titulů (uveďte počet titulů vydaných jednotlivými firmami) a jaké je průměrné hodnocení jimi vydaných titulů? Tabulku odpovědi setřiďte abecedně podle názvů firem. 24.Najděte všechny desky, které vydal B. Dylan. V tabulce odpovědi k nim uveďte následující údaje: název, prodejní cena, zisk z prodeje desky (tj. násobek ceny a počtu prodaných nosičů za 1. – 4. týden), slovní vyjádření žánru. 25.Kolik titulů vydaných firmou Virgin, které jsou zařazeny do kategorie rock, přineslo v 4. týdnu zisk (tj. násobek ceny a počtu prodaných nosičů) nad 500.000? 26.Najděte všechny tituly vydané firmou Virgin, které jsou zařazeny do kategorie rock. U každého titulu uveďte název a vypočítejte pro něj zisk ze 4. týdnu prodeje (tj. násobek ceny a počtu prodaných nosičů). 27.Kterých titulů z kategorie rock se v 2. nebo 3. týdnu prodalo méně než 8000 kusů? Tabulku odpovědi setřiďte podle názvů titulů a uveďte do ní název titulu, název vydavatelské firmy a jméno interpreta, příp. skupiny. 28.Vytvořte podklad pro nabídkový leták zlevněných desek: cenu každého titulu, kterého se v 3. a 4. týdnu prodalo celkově méně než 20.000, snižte na třetinu původní ceny. V nabídkovém seznamu uveďte kromě původní ceny i cenu po zlevnění, název titulu a název vydavatelské firmy. Tabulku odpovědi setřiďte podle vydavatelských firem a uvnitř podle názvů titulů. 82 8. Vývojové trendy databázových systémů Hnacím motorem vývoje databázových systémů v současnosti není výzkumná sféra, ale sféra byznysu (obchod, bankovnictví, pojišťovnictví, telekomunikace), která má k dispozici velké objemy dat a zadává požadavky na vývoj práce s nimi (a zároveň financuje nákladné projekty). 8.1 Překonávání souborové orientace databází → architektura klient/server, distribuované databáze řešené problémy: víceuživatelský přístup k datům v počítačových sítích, zajištění konzistence distribuovaných zdrojů dat platforma: kombinace HW a SW, na níž je SŘBD provozován architektury (platformy): 1. host/terminal (sdílení času) 2. file-server (sdílení zdrojů) 3. klient/server 4. peer-to-peer 1. host/terminal 2. file-server 3. klient/server 4. peer-to-peer HOST SERVER SERVER PRACOVNÍ STANICE TERMINÁL PRACOVNÍ STANICE PRACOVNÍ STANICE PRACOVNÍ STANICE označuje procesní zpracování 1. – 3. asymetrický vztah 4. symetrický vztah 83 podstata modelu klient/server zpracovávané aplikace (programy) jsou rozděleny na dva procesy: jeden z nich je provozován na stanici – u klienta, druhý na serveru procesy spolu navzájem komunikují (zpravidla v jazyce SQL) klient (front-end, předřazený) • program (softwarový proces), který požaduje služby (obvykle prostřednictvím sítě) od jiného softwarového procesu funkce databázového klienta: a) komunikace s uživatelem, vyhodnocení jeho požadavků, komunikace se serverem výsledek: příkaz jazyka SQL b) prezentace dat: obstarává operace nad daty vybranými z databáze včetně uživatelského interface (rozhraní) výsledek: prezentace dat server (back-end, pozadí) • program (softwarový proces), který po spuštění na daném počítači očekává požadavky klientů a který poskytuje služby (obvykle prostřednictvím sítě) jako odezvu na požadavek klienta databázový server = výkonný databázový systém s úsporným způsobem uložení a prezentace dat funkce databázového serveru: a) komunikace s klientem výsledek: informace o výsledku operace b) správa, údržba a zabezpečení databáze: zabezpečuje vlastní realizaci operací s centrálně vedenými sdílenými daty a zodpovídá za udržení konzistence a integrity databáze výsledek: data vyhovující předaným výběrovým kritériím 84 Rozvoj architektury klient/server vícevrstvá architektura: např. databázový server – aplikační server – klient ve funkci WWW serveru – WWW klient databázový klient: „thin client“ – tenký, hubený klient pouze prezentační vrstva, aplikační vrstvu a SŘBD spravuje server „fat client“ – tlustý klient aplikační a prezentační vrstva, server spravuje pouze SŘBD middleware komponenty systémového softwaru, ležící mezi aplikačními programy na jedné straně a operačním systémem, databázovými systémy a sítí na straně druhé (např. rozhraní pro přístup k datům) klady: + rozdělení práce mezi klientský systém a databázový server → a) nižší nároky na pracovní stanici než u systému file-server (většinu zpracování provádí server) b) snížená zátěž sítě (nepřenášejí se celé soubory, ale jen výsledky práce s nimi) c) relativní nezávislost platformy serveru a pracovní stanice (různé typy HW, operačních systémů, aplikačního software) + udržení integrity dat (uživatel nemá přístup k „ostrým“ datům) + možnost transakčního zpracování zápory: - zvýšené personální náklady na obsluhu a údržbu databázového serveru - zvýšené náklady na HW (výkonný server) - vyšší cena SW - složitější architektura systému 85 Kategorie databázových systémů dle logické a fyzické struktury databáze 1. centralizované logická i fyzická centralizace (1 schéma, 1 místo uložení) 2. decentralizované 2.1 distribuované logická centralizace, fyzická decentralizace a) data jsou rozdělena a umístěna do různých uzlů sítě b) data jsou plně duplicitní c) data jsou částečně duplicitní 2.2 logicky decentralizované logická decentralizace, fyzická centralizace nebo decentralizace důvod pro vytváření distribuovaných systémů: potřeba odlehčit jednotlivým hostitelským počítačům sítě a rozložit jejich individuální zátěž pokud možno rovnoměrně po celé síti 86 8.2 Překonávání dvourozměrného modelu relačních databází → multidimenzionální databáze: • plnotextové databáze • hypertextové databáze • objektové databáze • objektově relační databáze • datové sklady (data warehouse) řešené problémy: přiblížení konceptuálního modelu reálnému světu, použití přirozeného jazyka • Plnotextové databáze principy, na nichž mohou být založeny textové databáze: 1) dvoudimenzionální struktura tabulková organizace textů → RELAČNÍ DATABÁZE úroveň objektů (do vztahu dáváme abstraktní objekty definované v analytické fázi, nikoli texty, které je popisují) dvourozměrná struktura – sloupce, řádky + schéma strukturovaný text (struktura věty – pole), indexy pro zpracování v relační databázi se hodí skutečnosti, které lze strukturovat, počítat a vystačíme u nich se vztahy 1 : 1, 1 : N (např. agenda obchodu se zeleninou – opakující se objednávky, dodávky, faktury) 2) multidimenzionální struktura prohledávání plných textů → PLNOTEXTOVÉ DATABÁZE úroveň textů (do vztahu dáváme přímo části textů – bez předchozí analýzy) lineární organizace textů (struktura) – kolekce, dokumenty, elementy, slova + profil (DTD) automaticky vytvářený index obsahující záznamy o výskytu každého jednotlivého slova vyjádřené vztahy: slovo – text (dokument) slovo – další slova v textu (dokumentu) slovo – další slova z jazyka cíl plnotextových databází: a) použití přirozeného jazyka ve funkci databázového (vyhledávacího) jazyka (tj. zejména ve funkci selekčního a dotazovacího jazyka) b) odstranění informační analýzy (přístup k informacím bez anotací aj. komprimovaných textů) 87 řešené problémy: 1. vstup dat (→ OCR) 2. použití přirozeného jazyka → a) speciální slovníky (indexy) • gramatické (morfologické) → lematizátor, derivátor • synonymické (tezaury) b) umělá inteligence (porozumění přirozenému jazyku) hypertextové vazby → HYPERTEXTOVÉ DATABÁZE úroveň objektů (do vztahu dáváme abstraktní objekty, nikoli texty, které je popisují) vícerozměrná struktura – síť uzlů a vazeb mezi nimi hypertextová vazba (hyperlink, spoj) Spojuje jednotlivé uzly a reprezentuje jejich sémantickou závislost (může nabývat podoby hierarchické, asociativní nebo lineární). Umožňuje navigaci v síti uzlů a vazeb – odkazů mezi nimi. typy: referenční, organizační, vazby klíčových slov hypertextový uzel typy uzlů: hypertextové, typované, semistrukturované, složené Uzel obsahuje: textové informace (např. malý úsek encyklopedie), obrazové informace, zvukový záznam, video, animovanou sekvenci, zdrojový text programu. hypertextový odkaz (tlačítko) signalizuje existenci vazby mezi dvěma uzly nápadná značka (button) v čitelném textu; jestliže uživatel umístí kurzor na značku, může ji určitým příkazem aktivovat – tj. vyvolat její obsah – např. přeskočit do jiného dokumentu podle logické souvislosti. Aktivací uzlu může být spuštěn jiný aplikační program, expertní systém, tabulkový procesor, lze se propojit telekomunikační linkou na vzdálenou databázi. 88 • Objektové databáze objekt • nedělitelná sebeidentifikovatelná entita (tj. můžeme se jí zeptat, co je zač) obsahující data, jejich identifikaci a možnosti svého použití (přípustných operací) • samostatná jednotka, která je schopna zpracovávat zprávy, přijaté od ostatních objektů, a sama zprávy dalším objektům odesílat • obsahuje lokální datové struktury a lokální procedury, které jediné zabezpečují přístup k datům – data jsou zapouzdřena možnosti popisu objektu: Příklad: nákladní auto 1. CO MÁ kola, brzdy, motor, volant, karosérie atd. 2. CO DĚLÁ jede, stojí, zatáčí, převáží, vykládá, tankuje CO MÁ CO DĚLÁ Data (atributy a vlastnosti) Metody (procedury a funkce) popisují STAV objektu vyjadřují ZMĚNU STAVU objektu důvody pro zavádění objektově orientovaného přístupu do databází: obohacení sémantiky (obsahu) zpracovávaných dat omezení relačních databází: • položku tabulky (atribut relace) tvoří vždy pouze jedna nedělitelná hodnota • přestože v tabulkách lze uchovávat veškeré známé datové typy (čísla, písmena, dlouhý text, obrázky, zvuky), nelze pole typu BLOB prakticky použít pro vyhledávání, protože relační algebra s něčím takovým nepočítá (text nebo obrázek lze těžko vyhledávat podle kritéria rovnosti nebo nerovnosti) Principy objektově orientovaného přístupu objekt zapouzdření zpráva sebeidentifikace dědičnost třídy polymorfismus Messages and Message Passing (zprávy a jejich předávání) Objekt DATA METODY Objekt Zpráva DATA METODY princip klient/server (objekty si posílají zprávy) 89 • Datový sklad (data warehouse) Databáze optimalizovaná pro dotazy, analýzy dat a tvorbu sestav. Vytváří se přenosem, transformací a často též agregací primárních dat z provozních systémů a z externích zdrojů a jejich integrováním do jednotné datové základny. Struktura datového skladu je založena zpravidla na dvou typech objektů – tabulkách faktů a tabulkách dimenzí (např. čas, místo), z nichž lze vytvářet vícerozměrné objekty (kostky). Uložená data lze využívat prostřednictvím dotazování, reportingu, OLAP (on-line analytické zpracování), dolování dat, vizualizace dat. vznik: přenos a transformace dat z primárních a externích zdrojů struktura • tabulky faktů • tabulky dimenzí (např. čas, místo) → vícerozměrné objekty (kostky) OLAP – online analytical processing přímé analytické zpracování dat – nadstavba nad databází usnadňující manažerské rozhodování 90 Transakční databáze databáze optimalizovaná pro provádění jednoduchých operací (rezervace, objednávky, prodej, dodávky) vznik: přímé zadávání údajů struktura: dvojrozměrné normalizované relační tabulky OLTP – online transaction processing přímé transakční zpracování dat 8.3 Překonávání omezení na textovou reprezentaci reality → multimediální databáze: • obrazové databáze • zvukové databáze • multimediální databáze • virtuální realita řešené problémy: digitalizace dat, komprese dat, rychlost zpracování (→ dosažení „reálného" času), způsob vyhledávání virtuální realita vymodelování představy reálného trojrozměrného světa v počítači; uživatel pak po napojení na tento počítač pomocí speciálních přístrojů může manipulovat s umělými (virtuálními) předměty v tomto počítačovém modelu. 91 8.4 Rozšiřování možností zpracování uložených dat → využití umělé inteligence řešené problémy: transformace dat na informace, případně na znalosti • expertní systémy • neuronové sítě • data mining (dolování dat), KDD – knowledge discovery in databases (objevování znalostí v databázích) umělá inteligence: 1. Mezioborová vědní disciplína na pomezí kognitivních věd, kybernetiky a počítačové vědy, která zkoumá a modeluje inteligenci s cílem vyvinout software a hardware, který bude při řešení úloh používat postupy považované za projev lidské inteligence. 2. Vlastnost uměle vytvořených systémů, vykazující analogické rysy jako lidská inteligence. hlavní odvětví umělé inteligence: 1. expertní (nebo znalostní) systémy a softwarové nástroje pro jejich vytváření 2. systémy pro zpracování přirozeného jazyka 3. systémy analyzující a podporující smyslové vjemy (vidění, analýzu mluvené řeči a hmatových počitků) 4. neuronové sítě Expertní systém Počítačová aplikace nebo systém simulující poznávací a rozhodovací činnost experta při řešení složitých úloh s cílem dosáhnout ve zvolené problémové oblasti kvality rozhodování na úrovni experta. Základní součásti tvoří báze znalostí, báze dat (faktů) k řešeným případům a řídící mechanismus (inferenční neboli odvozovací stroj, rozhodovací jádro), tj. program pro práci s těmito bázemi využívající technik umělé inteligence. Tyto součásti obvykle doplňuje modul pro komunikaci s uživatelem a vysvětlovací modul. Obecně použitelný řídící mechanismus bez báze dat a báze znalostí se nazývá prázdný expertní systém (pouzdro, shell). Z hlediska charakteru řešených úloh se rozlišují systémy diagnostické, plánovací a hybridní; z hlediska reprezentace znalostí se rozlišují systémy založené na pravidlech, na rámcích a na logickém programování. 92 základní součásti • báze znalostí = informace (data) + heuristika, procedury řešení • báze dat (faktů) k řešeným případům • řídící mechanismus (inferenční neboli odvozovací stroj, rozhodovací jádro) program pro práci s bázemi znalostí a dat využívající technik umělé inteligence • modul pro komunikaci s uživatelem • vysvětlovací modul principy: • dialogový postup konzultace problému s uživatelem (v některých expertních systémech nahrazeno přímým měřením údajů na reálných objektech nebo jejich vyhledáváním v bázích dat) • dodatečné přizpůsobení systému dodávaným informacím Data mining (dolování dat) Technologie vyhledávání, modelování a prezentace předem neznámých informací, příp. znalostí a vztahů mezi daty v rozsáhlých databázích a datových skladech. Analýzy se odvozují přímo z obsahu dat, nikoli na základě hypotéz či dotazů uživatele. Využívají se techniky umělé inteligence (neuronové sítě, rozpoznávání, samoučící se algoritmy), jež mohou být kombinovány s technikami statistického a matematického modelování (klasifikační pravidla nebo stromy, regrese, shluková analýza) a s nástroji OLAP (on-line analytické zpracování). 93 9. Práce s databázovým systémem Paradox Paradox® je relační databázový systém firmy Corel, který patří do skupiny tzv. „malých“, stolních databází optimalizovaných pro provoz na osobních počítačích nebo pro úlohu uživatelské části systémů klient/server. Na počítačové síti VOŠIS je v současné době instalována verze Paradox® 9. Prostředky Paradoxu vám umožní • vytvořit databázovou tabulku (založit novou databázi) • vkládat data do tabulky • vybírat data z databáze • tvořit obrazovkové formuláře pro zobrazení a vkládání dat • tvořit výstupní sestavy pro zobrazení a tisk dat • vytvářet vlastní aplikace pomocí programovacího jazyka ObjectPAL Práce s programem probíhá stylem obvyklým v prostředí Windows: • • • • sledujte „informační bubliny“ při přejíždění myší přes objekt sledujte stavový řádek (levý dolní roh) nápověda je k dispozici po stisku klávesy F1 možnosti práce s objekty ukáže pravé tlačítko myši (příp. stisk klávesy F6) Typy souborů v Paradoxu: .db .mb .fsl .rsl .qbe .sql .val .dm .px .x .y datový soubor datový soubor obsahující memo a další BLOB pole obrazovkový formulář (pro vstup) formulář pro výstup (výstupní sestavu) uložený dotaz (metoda QBE) uložený dotaz v jazyce SQL údaje o kontrolách vstupu, číselnících a referenční integritě datový model primární indexový soubor sekundární indexový soubor další část sekundárního indexového souboru pdxwin32.exe SŘBD (systém řízení báze dat) Paradoxu BDE Paradox database engine (jádro SŘBD) Organizace dat v Paradoxu: • datové soubory (db, mb) a k nim příslušné pomocné soubory jsou ukládány do tzv. pracovního adresáře (working directory :WORK:) • dočasné soubory (např. tabulky odpovědi) jsou ukládány do tzv. soukromého adresáře (private directory :PRIV:) 94 Pokyny k vytváření databázových tabulek 1) Tvořte malé tabulky obsahující pouze nezbytně nutná pole U každé položky zdůvodněte, k čemu ji potřebujete – měli byste dostat kladnou odpověď alespoň na jednu z následujících otázek: • bude se podle ní vyhledávat? • bude se podle ní třídit? • bude se používat ve výpočtech? • bude sloužit jako identifikátor (primární klíč) záznamů? • potřebujeme ji mít k dispozici pro zobrazení ve formuláři nebo v sestavě? 2) V každém poli může být jen jedna datová jednotka (údaje v položkách už se dále nestrukturují) Pokud tomu tak není, upravte stávající tabulku: a) rozdělením pole do více různých polí v rámci tabulky (např. Jméno a Příjmení čtenáře) b) rozdělením pole do více různých polí ve dvou různých tabulkách (např. Název knihy a Datum výpůjčky) 3) Nevkládejte údaje, které lze vypočítat 4) V jedné tabulce mají být jen pole, jež mají vzájemnou souvislost 5) Kromě propojovacích polí by tabulky neměly obsahovat žádné duplicitní údaje 6) Vyplatí se rozmyslet si předem datový typ – dodatečné změny nejsou vždy realizovatelné 7) Pro pojmenování tabulek a položek volte pokud možno jednoslovné názvy, u víceslovných názvů nahraďte mezery podtržítky – NIKDY nepoužívejte diakritiku Primární klíč v Paradoxu: ∗ klíčové pole nesmí mít 2x stejný obsah ∗ klíčové pole může 1x zůstat nevyplněno ∗ ve struktuře tabulky jsou klíčová pole na prvním místě ∗ tabulka se automaticky setřídí podle klíčových hodnot ∗ definování primárního klíče způsobí vytvoření indexového souboru s příponou .px ∗ v případě dodatečného definování primárního klíče budou záznamy s duplicitními hodnotami v klíčovém poli přemístěny do dočasné tabulky Keyviol.db Využití sekundárního indexu: • zrychlení přístupu k datům (zrychlení vyhledávání) • setřídění tabulky • umožnění propojení dvojice tabulek • zadávání rozsahu při filtrování tabulek • kontrola unikátnosti (jedinečnosti) zadávaných hodnot 95 Působnost integritních omezení na data, která již jsou vložená v tabulce VŽDY • primární klíč → záznamy s duplicitními hodnotami v klíčovém poli budou přemístěny do dočasné tabulky Keyviol.db • referenční integrita → záznamy z dětské tabulky, které nemají odpovídající hodnotu v klíčové položce rodičovské tabulky, budou přemístěny do dočasné tabulky Keyviol.db • změna typu položky VOLITELNÉ • zkrácení délky položky Varování při restrukturalizaci (restructure warning) a) oříznout všechny (trim all fields) → případné nadbytečné znaky v položkách se smažou b) neořezávat žádné (trim no fields) → záznamy s položkami přesahujícími stanovenou délku budou přemístěny do dočasné tabulky Problems.db • povinná položka (required), minimum, maximum Varování při restrukturalizaci (restructure warning) a) aplikovat na existující data (apply to existing data) → záznamy s položkami, jejichž hodnoty nevyhovují stanoveným kontrolám vstupu (validity checks), budou přemístěny do dočasné tabulky Keyviol.db b) ne (do not apply) → beze změny • implicitní hodnota (default) Varování při restrukturalizaci (restructure warning) a) aplikovat na existující data (apply to existing data) → doplnění implicitní hodnoty do prázdných položek b) ne (do not apply) → beze změny NIKDY • maska (picture) • číselník (table lookup) 96 Vazba Číselník (Table Lookup) • pole společné oběma tabulkám (propojovací) musí být stejného typu • definujeme pro kontrolovanou tabulku • ve struktuře tabulky, podle které kontrolujeme, musí být kontrolovaná položka jako první Propojování tabulek pro referenční integritu, obrazovkové formuláře a sestavy Když propojujete dvě tabulky, žádáte Paradox, aby vyhodnotil hodnotu v hlavní tabulce (tabulce, z níž se propojuje) a vyhledal všechny shodné hodnoty v detailní tabulce (tabulce, do níž se propojuje). To znamená, že detailní tabulka musí být indexována podle položky použité k propojení, jinak by vyhledávání trvalo neúměrně dlouho. Detailní tabulka může mít buď primární index (klíč) nebo udržovaný sekundární index podle spojovací položky. Referenční integrita • pole společné pro rodičovskou a dětskou tabulku (propojovací) musí být stejného typu • definujeme pro dětskou tabulku Rodičovská tabulka • propojovací pole musí být klíčové • propojovací pole musí být na prvním místě ve struktuře Dětská tabulka • musí být klíčovaná • propojovací pole může být umístěno kdekoli v tabulce (podle tohoto pole se vytvoří primární nebo sekundární index) Podmínky propojení tabulek v datovém modelu: 1. propojovací pole (stejný typ a délka) 2. pro propojovací pole v dětské tabulce musí být definován udržovaný sekundární index nebo primární klíč Limity: • 1 dětská tabulka nemůže mít více rodičovských • při nastavení vazby 1 : 1 se dětská tabulka automaticky nastaví jen pro čtení (nutno ručně opravit) 97 Užití obrazovkového formuláře (form, view – pohled, náhled, virtuální – fiktivní relace) usnadnění vstupu dat • doplnění „holých dat“ z tabulky o komentáře, vysvětlivky, ozdoby • vytvoření seznamu vkládaných hodnot, zaškrtávací políčka • rozmístění položek na obrazovce, tak aby to odpovídalo předloze, z níž se pořizují data • rozdělení na více stránek kombinace dat z více tabulek • možnost vyjádřit prakticky libovolné vztahy mezi daty (1 : 1, 1 : N, N : 1) podle použitého datového modelu ochrana dat • ochrana některých položek z tabulky před nekvalifikovaným či neautorizovaným uživatelem (Pouze pro čtení, příp. nezařazení položky do formuláře) zpracování dat • možnost už na vstupu vytvářet odvozené hodnoty – vypočítané položky • tvorba grafů (vizualizace dat) • spouštění uložených procedur a programů • programování prostřednictvím jazyka ObjectPAL 98 Metody vyhledávání v Paradoxu • výběr dat ze setříděného souboru • výběr dat vyhledáváním v tabulce • výběr dat filtrováním • výběr dat metodou QBE (query by example – dotaz příkladem) • výběr dat pomocí jazyka SQL QBE – Query By Example interaktivní dotaz do připraveného pohledu (formulář s připravenými názvy tabulek a položek) typy dotazů 1. výběrové (informační, zjišťovací) kladou otázky týkající se dat uložených v tabulkách a vracejí výsledek dotazu beze změny dat křížový dotaz: zvláštní typ výběrového dotazu – výsledná virtuální tabulka má záhlaví ve sloupcích i v řádcích 2. s výpočtem nových hodnot – CALC vytvářejí virtuální hodnoty vypočítané z dat uložených v tabulkách • výpočty z hodnot jednotlivých řádků (kalkulace, aritmetické funkce) • výpočty z hodnot sloupců (agregace, statistické dotazy) 3. změnové (akční, výkonné, editovací, modifikační) upravují nebo kopírují data v tabulkách • aktualizační (změny hodnot v položkách) – CHANGETO • odstraňovací (odstraňují řádky) – DELETE • přidávací (přidávají řádky) – INSERT vypočítané pole: pole definované v dotazu, které zobrazuje výsledek výrazu místo uložených dat. Hodnota je vypočtena znovu při každé změně hodnoty ve výrazu (platí pro dotazy i pro formuláře) 99 10. Terminologický slovníček adresa slovo (údaj) použité k identifikaci paměťového místa nebo paměťové oblasti alias alternativní jméno; pojmenované spojení na zdroj dat (např. na konkrétní databázi) atribut pojmenovaná vlastnost nebo charakteristika entity; funkce, která každému objektu daného typu přiřazuje určitý údaj – charakteristiku back end (back-end) viz server báze dat viz databáze BCD – binary coded decimal binárně, dvojkově kódované desítkové číslo BDE – Borland Database Engine databázové jádro využívané v Paradoxu a dBASE v podobě knihoven pro jazyk C BLOB (binary large object) označení pro datové typy umožňující ukládat multimediální data přímo do databáze cizí klíč (foreign key) prostředek realizace logické vazby mezi relacemi (entitami); primární klíč nadřazené (rodičovské) relace umístěný v podřazené (dětské) relaci data jakékoli fyzicky (materiálně) zaznamenané znalosti (vědomosti), poznatky, zkušenosti nebo výsledky pozorování procesů, projevů, činností a prvků reálného světa, tak aby je bylo možné přenášet nebo zpracovat data dictionary (DD), též datový slovník, slovník dat • slovník dat (katalog dat, systémová encyklopedie); místo, kde jsou uloženy informace o objektech zpracovávaných v databázi • modul SŘBD, ve kterém jsou organizovány veškeré definice dat data mart – datové tržiště speciální účelový datový sklad, který je zaměřen na jeden určitý strategický nebo provozní problém data mining – „těžba dat" vyhledávání znalostí v rozsáhlých databázích data warehouse – „datový velkosklad" shromažďěné velké objemy dat, které jsou k dispozici pro vyhodnocování database engine viz databázový stroj databáze (database, DB) • systém pro práci se strukturovanými daty; strukturované údaje umístěné v paměti, z níž jsou vybírány (do níž jsou vkládány) v souhlase s jejich datovou strukturou • datový obsah databázového systému • dohodnutým způsobem strukturovaná množina dat, nad kterou systém programů pro řízení báze dat umožňuje uživateli bez znalosti implementačních podrobností vyhledávání a aktualizaci dat databázový stroj (database engine) jádro SŘBD – ta část SŘBD, která ukládá data a manipuluje s nimi podle příkazů zadávaných databázovou aplikací 100 databázový systém konkrétní báze dat, schéma báze dat a příslušný systém řízení báze dat datová hodnota viz hodnota datová nezávislost vlastnost poskytovaná systémem řízení báze dat, která umožňuje zpracování údajů nezávisle na způsobu jejich uložení a příslušných přístupových cestách datová struktura uspořádání datových položek strukturovaného údaje datová (údajová) položka nejmenší jednotka pojmenovaných údajů v daném kontextu dále nedělitelná, která má význam ve schématu nebo subschématu datová základna strukturovaná množina dat v databázovém systému datový agregát (strukturovaný údaj) pojmenovaná skupina datových položek datový element viz datová (údajová) položka datový objekt popis konkrétní entity nebo entitního vztahu vyjádřený údaji s určitou datovou strukturou (datový záznam, datová množina atd.) datový slovník viz data dictionary datový typ (typ dat) určení obsahu a formy (struktury) dat v položce DBA – Database Administration správa databáze DBMS – Database Management System – viz SŘBD DDE – Dynamic Data Exchange podmnožina OLE; starší a méně výkonný způsob výměny dat mezi aplikacemi (není přímo založen na objektové technologii) DDL – Data Definition Language jazyk pro popis dat (údajů) a jejich struktury dědičnost (inheritance) mechanismus umožňující tvorbu nových objektů (resp. tříd) na základě objektů již existujících DML – Data Manipulation Language jazyk pro manipulaci s daty (údaji); množina příkazů, kterou uživatel používá k vytváření svých požadavků na databázi DLL – Dynamic Linked Library DLL je základem hlavního konceptu Windows a označuje knihovny funkcí, které jsou obecně přístupné jakékoli aplikaci Windows. Tyto funkce mohou být sdíleny více aplikacemi a jsou do paměti zaváděny (a z ní odstraňovány) podle potřeby. doména prostor hodnot, popisujících určitý soubor instancí; množina přípustných hodnot atributu; množina použitá v kartézském součinu doménová integrita specifikace povolených hodnot pro daný atribut dotaz (query) otázka týkající se dat uložených v tabulkách nebo požadavek na vykonání určité akce s daty 101 dotazovací jazyk manipulační jazyk určený k vyhledávání informace, dovolující uživateli komunikovat s bází dat driver (ovladač) program, který ovládá zařízení připojené k počítači, komponentu nebo software (např. databázový program) entita (lat.) • něco jsoucího, existujícího • označení blíže neurčeného útvaru ať již skutečného, nebo pouze domnělého či předpokládaného • objekt (abstraktní nebo konkrétní), o kterém je v bázi dat uložena informace • osoba, věc, pojem, který nás zajímá (o kterém chceme zaznamenávat data) ERD – Entity-Relationship Diagram entitně-relační diagram (též ERA, E-R model) – diagram znázorňující datové jednotky (entity) uložené v počítači a popisující vztahy mezi nimi esenciální model viz konceptuální model event viz událost event-driven označení pro prostředí nebo aplikaci, jehož chování je ovlivněno především událostmi přicházejícími zvenčí nebo od systémových prostředků; takovým prostředím jsou např. MS Windows export převedení datového souboru z interního formátu do formátu využitelného externím programem (např. z databázové tabulky do HTML) filtr sada kritérií aplikovaná na záznamy pro zobrazení podmnožiny záznamů nebo pro seřazení záznamů formát (při zpracování údajů) předem určené uspořádání údajů na nebo v nosiči údajů front end (front-end) viz klient graf určitý útvar (rovinný, prostorový), znázorňující vztahy (vazby, relace) mezi prvky množiny hierarchická struktura (báze dat) pojmenovaná struktura vyjadřující hierarchické vztahy mezi typy/položkami záznamů hierarchický model (báze dat) model zobrazení reality pomocí souborů s hierarchickou strukturou typů záznamů hodnota konkrétní hodnota dané struktury (item, group) nebo atributu ID – identifikátor (identifier) zpravidla číselný kód identifikující nějakou entitu; prostředky (zpravidla dokumenty nebo průkazy) sloužící k identifikaci totožnosti osob IDAPI – Integrated Database Application Programming Interface jednotné softwarové rozhraní pro přístup k datům, uloženým v různých formátech na různých platformách, vyvinuté firmou Borland identifikační klíč (též identifikátor) viz též primární klíč atribut (skupina atributů), jehož hodnota slouží k identifikaci konkrétní entity import převedení datového souboru jiného formátu na žádaný formát určitého programu (např. HTML soubor je možno importovat do databázového programu) 102 index seznam tvořený záznamy o struktuře „klíč, adresa“, kde klíč je hodnota atributu a adresa ukazatel na číslo záznamu v databázi informace sdělitelný fakt, poznatek o objektivní realitě, který má pro příjemce smysl (hodnotu) informační systém systém umožňující komunikaci a zpracování informací instance konkretizovaná hodnota typu, popř. proměnné, přesněji výskyt určitého typu integrita stav, při němž data uložená v systému odpovídají vlastnostem objektů reálného světa integritní omezení (integrity constraints) pravidla přijímaná za účelem dosažení a udržení správnosti a konzistence dat v relacích interní model (báze dat) popis fyzické realizace konceptuálního, popř. logického schématu interoperabilita schopnost elektronických a softwarových komponent vyrobených různými výrobci navzájem komunikovat jazyk pro manipulaci s údaji viz DML jazyk pro popis dat viz DDL jméno, též název (name), někdy též identifikátor sekvence jednoho nebo více znaků, které jednoznačně identifikují soubor, proměnnou nebo jinou entitu (např. databázovou položku) kandidát klíče atribut nebo kombinace atributů, jež jednoznačně identifikují každou instanci (výskyt) entitního typu klíč identifikátor (resp. skupina identifikátorů) se speciálním významem; viz též cizí klíč, identifikační klíč, kandidát klíče, primární klíč, složený klíč klient (front-end) softwarový proces, který požaduje služby od jiného softwarového procesu (serveru) knihovna (library) označení pro kolekci navzájem souvisejících programových nebo datových souborů (v programování označení pro soubor předem připravených rutin/funkcí, které lze používat/volat v novém programu) kód • soubor pravidel pro převádění jednoho jazyka do jiného jazyka • transformace údajů nebo jejich označení jiným způsobem podle předem stanoveného souboru pravidel konceptuální model (schéma), též esenciální model implementačně nezávislý model systému (na rozdíl od technologického modelu); systém typů objektů a typů vztahů mezi nimi, který popisuje část reálného světa konzistence stav, při němž si data uložená v systému vzájemně neodporují lineární struktura struktura s jedinou grupou tvořící záznam literál hodnota, která se použije přesně v té podobě, jak je zapsána 103 lock viz zámek logické schéma popis struktury báze dat menu (též nabídka) objekt s nabídkou akcí pro danou situaci middleware komponenty systémového softwaru, ležící mezi aplikačními programy na jedné straně a operačním systémem, databázovými systémy a sítí na straně druhé (např. ODBC rozhraní) množina přesně vymezený soubor prvků model zjednodušené zobrazení systému, zavedeného na objektu; popis nějakého předmětu metodou analogie multiatribut atribut (položka), který může obsahovat v jednom záznamu více než jednu hodnotu normalizace úprava logického modelu databáze s cílem omezit redundanci a dekomponovat složité relace na dvojrozměrné tabulky s atomickými hodnotami polí objekt rozpoznatelný prvek reálného světa, popřípadě formalizovaná konstrukce, zobrazující prvek reálného světa; velmi blízké tomuto pojmu jsou pojmy individuum a entita ODBC – Open Database Connectivity definice jednotného přístupu k databázovým souborům pro několik platforem (v současné době existuje reálná podpora pro Windows a Macintosh). Programátor má k dispozici soubor funkcí, pomocí kterých může pracovat s různými databázovými typy. Ty pak jsou obsluhovány pomocí jednotlivých SŘBD, specifických pro různé datové typy. OLAP – online analytical processing přímé analytické zpracování dat – nadstavba nad databází usnadňující manažerské rozhodování OLE – Object Linking and Embedding technologie pro práci s objekty (dokument, obrázek...) ve Windows, která umožňuje spolupráci více aplikací nad složenými dokumenty a sdílení dat OLTP – online transaction processing přímé transakční zpracování dat online dokumentace dokumentace programu, dostupná přímo v prostředí programu online help pomocný text (nápověda) přímo dostupný při činnosti programu operační systém speciální typ programovacího jazyka – jazyk pro komunikaci uživatele s počítačem, nezbytný pro činnost počítače a jeho spojení s perifériemi ovladač viz driver pole • proměnná obsahující konečný počet prvků, které mají společný název a datový typ • datová struktura, v relačních databázích obsah sloupce tabulky primární klíč (primary key) pole nebo kombinace polí, jejichž hodnoty jednoznačně identifikují jednotlivé řádky tabulky program posloupnost instrukcí, které počítač postupně vykonává, a provádí tak určitou činnost 104 QBE – Query By Example dotaz příkladem query viz dotaz redundance vícenásobný, nadbytečný výskyt dat – duplicitní, nepotřebná nebo zbytečně rozsáhlá data referenční integrita soubor pravidel zajišťující konzistenci relačně svázaných tabulek relace • pojmenovaný vztah mezi dvěma objekty, resp. typy • pojmenovaná dvojrozměrná tabulka s daty, složená z množiny pojmenovaných sloupců a libovolného počtu nepojmenovaných řádků relační algebra jazyk pro manipulaci s daty, který disponuje množinou operátorů pro manipulaci s jedním nebo dvěma soubory relační databáze databáze založená na relačním modelu relační model model zobrazení reality pomocí relací replikace způsob sdílení dat mezi několika servery, které si mezi sebou předávají nově vložená nebo změněná data runtime sada služeb, které jsou programu k dispozici za běhu server (back-end) softwarový proces, který poskytuje služby jako odezvu na požadavek klienta; proces, který skutečně fyzicky manipuluje s databázovými soubory schéma grafické znázornění struktury a vztahů určitého jevu nebo procesu schéma relace (též záhlaví) obsahuje jméno relace a jména atributů v relaci; na rozdíl od obsahu (těla, instance) relace je v čase neměnné síťová struktura (báze dat) na úrovni typů je to graf, ve kterém uzly reprezentují typy struktur, hrany typy vztahů mezi nimi; na úrovni hodnot je to graf, ve kterém uzly reprezentují hodnoty struktur, hrany vztahy mezi nimi síťový model (báze dat) model zobrazení reality pomocí souborů se síťovou strukturou záznamů slovník dat viz data dictionary složený klíč (composite key) klíč obsahující více než jeden atribut soubor pojmenovaná kolekce (množina) dat nebo informací, určitým způsobem uspořádaná, mající definovanou délku, datum a čas vzniku; téměř všechny informace v počítači musí být uloženy v souborech správce báze dat osoba nebo skupina osob odpovědná za návrh, vývoj, činnost, zabezpečení, údržbu a použití báze dat SŘBD – systém řízení báze dat programový systém umožňující vytvoření, údržbu a použití báze dat 105 struktura množina prvků, jejich vlastností a vazeb; víceméně stálé vzájemné uspořádání složek systému strukturované údaje (strukturovaná data) údaje uspořádané v nějaké datové struktuře systém takový soubor prvků a vazeb mezi nimi, který může být považován za jeden celek; jednota struktury a funkce tabulka databázový objekt, do něhož se ukládají data transakce elementární, dále nedělitelná operace s daty (řada dílčích operací, z nichž musí být provedeny buď všechny nebo žádná) trigger zvláštní případ uložené procedury; aktivuje se automaticky při vyvolání specifických událostí na serveru třída množina objektů se společnými typovými charakteristikami typ zobecněná charakteristika objektu, obvykle pomocí predikátů, atributů, vlastností viz též datový typ událost (event) akce rozpoznaná objektem (např. klepnutí myší, stisk tlačítka), pro kterou existuje předem definovaná odezva ukazatel (pointer) typ atributu, umožňující přímé propojení záznamů ve dvou různých souborech (tabulkách) formou odkazu vazba (relationship), též vztah spojení mezi prvky nebo jejich množinami věta viz záznam zámek (lock) logické uzamčení (např. databázových souborů) záznam (record) implementace objektu (entity) v databázovém systému prostřednictvím datové struktury představované řádky členěnými do položek (atributů) žurnál speciální datový soubor, který obsahuje posloupnost všech aktualizací provedených v databázi 106 11. Doporučená literatura 1. Základní literatura Paradox: 1. BIOW, Lisa. Help! Paradox for Windows. Brno : Unis Publishing, 1994. 1048 s. ISBN 1-56276-039-4 2. MIKAN, Pavel. Paradox pro Windows 5.0 CZ. Praha : Vysoká škola ekonomická, 1997. 350 s. ISBN 80-7079-009-1 3. MIKAN, Pavel a KUČEROVÁ, Helena. Paradox 9 : Vybrané kapitoly I. Praha : Vysoká škola ekonomická, 2000. 320 s. ISBN 80-245-0118-X 4. MIKAN, Pavel a KUČEROVÁ, Helena. Paradox 9 : Vybrané kapitoly II. Praha : Vysoká škola ekonomická, 2001. 238 s. ISBN 80-245-0250-X SQL: 5. CHUDĚJOVÁ, Eva. SQL – Strukturovaný dotazovací jazyk a jeho implementace v databázovém systému PROGRESS. Praha : Vysoká škola ekonomická, 1993. 222 s. Teorie: 6. GREGOR, Jiří, CHLAPEK, Dušan a CHUDĚJOVÁ, Eva aj. Datová základna. Praha : Vysoká škola ekonomická, 1991. 196 s. Kapitola 1. Data a informace, s. 11-13; Kapitola 2. Základy teorie struktur dat, s. 14-31; Kapitola 3. Logické struktury dat, s. 32-68; Část II. Projekce datové základny – návrh struktury dat, s. 145193. 7. HOFFER, Jeffrey A., PRESCOTT, Mary B. a MC FADDEN, Fred R. Modern Database Management. 6 ed. Upper Saddle River : Prentice Hall, 2002. 638 s. ISBN 0-13-033969-5 8. KROHA, Petr. Databáze dnes a zítra. Softwarové noviny (ISSN 1210-8472).1995, roč. 6, č. 9 (září), s. 18-35 9. POKORNÝ, Jaroslav. Databázové systémy a jejich použití v informačních systémech. Praha : Academia, 1992. 313 s. ISBN 80-200-0177-8 10. POKORNÝ, Jaroslav a HALAŠKA, Ivan. Databázové systémy : Vybrané kapitoly a cvičení. 2. přeprac. vyd. Praha : Karolinum, 1998. 160 s. ISBN 80-718-687-2 11. RIORDAN, Rebecca M. Vytváříme relační databázové aplikace. Praha : Computer Press, 2000. 280 s. ISBN 80-7226-360-9 107 2. Doplňující a rozšiřující literatura 12. BÍLA, Jiří a KRÁL, František. Databázové a znalostní systémy. 1. vyd. Praha : Vydavatelství ČVUT, 1999. 125 s. Lit. 50. ISBN 80-01-01925 13. CODD, Edgar F. A relational model of data for large shared data banks. [Relační model pro velké sdílené databanky.] Communications of the ACM. 1970, roč. 13, č. 6, s. 377-387. 14. ČSN ISO/IEC 2382-17 (36 9001) Informační technologie – Slovník – Část 17: Databáze. Praha : Český normalizační institut, 1999. 49 s. 15. ČSN ISO/IEC 9075-1 (36 9178) Informační technologie – Databázové jazyky – SQL –Část 1: Základní rámec (SQL/Základní rámec). Praha : Český normalizační institut, 2001. 16. LOUŽECKÝ, Jan. Odysseové informačních technologií [Databázové systémy]. Softwarové noviny (ISSN 1210-8472). 1994, roč. 5, č. 3 (březen), s. 18-21. 17. MERUNKA, Vojtěch. Objektově orientované databáze. Softwarové noviny (ISSN 1210-8472). 1995, roč. 6, č. 9 (září), s. 36-40. 18. NOSEK, Petr. Jak uživatel k architektuře klient/server přišel. Softwarové noviny (ISSN 1210 8472). 1994, roč. 5, č. 3 (březen), s. 22-31. 19. Orientace ve světě informatiky. Praha : Management Press, 1998. 391 s. Kapitola 2 Jak připravit a uchovávat data, s. 67-138. 20. POKORNÝ, Jan. Učíme se SQL. Praha : Plus, 1993. 566 s. 21. POKORNÝ, Jaroslav. Databáze : proč tolik technologií? Softwarové noviny (ISSN 12108472). 1998, roč. 8, č. 5 (květen), s. 104-107. 22. POKORNÝ, Jaroslav. Databázová abeceda. 1. vyd. Veletiny : Science, 1998. 238 s. ISBN 80-86083-02-2 23. POKORNÝ, Jaroslav. Dotazovací jazyky. Praha : Karolinum, 2002. 255 s. ISBN 80-246-0497-3 24. SALEMI, Joe. Databáze klient/server : Průvodce. Brno : Unis Publishing, 1993. 260 s. 25. SOKOLOWSKY, P., POKORNÝ, J. a PETERKA, J. Distribuované databázové systémy. Praha : Academia, 1992. 26. ŠIMŮNEK, Milan. SQL : Kompletní kapesní průvodce. Praha : Grada, l999. 247 s. 27. ŠKULTÉTY, Miroslav. Pět malých databázových serverů pro NT : Minidatabáze z pohledu začátečníka. Softwarové noviny (ISSN 1210-8472). 1999, roč. 10, č. 9 (září), s. 44-52. 28. ŠKULTÉTY, Miroslav, ŘÍHA, Antonín, ZÍKA, Tomáš a KOPECKÝ, Michal. Krásné nové servery : Pět výkonných databázových serverů pro Windows NT. Softwarové noviny (ISSN 12108472). 2000, roč. 11, č. 2 (únor), s. 46-59. 29. TELNAROVÁ, Zdeňka, LUKASOVÁ, Alena a MATULA, Petr. Úvod do databází. Ostrava : Ostravská univerzita, 1999. 123 s. ISBN 80-7042-784-1 30. VIRIUS, Miroslav. OOP pro netrpělivé. Softwarové noviny (ISSN 1210-8472). 1995, roč. 6, č. 1 (leden), s. 32-37. Pro doplnění nejnovějších poznatků z rychle se rozvíjejícího oboru je vhodné sledovat především články z časopisů. Doporučené tituly: Softwarové noviny, Chip, Computerworld, PC World. Dalším zdrojem aktuálních informací jsou webovské stránky renomovaných databázových firem. 108
Podobné dokumenty
Strukturované metodologie
6. Spojte entity vztahy, pokud tyto existují. Popište slovně vztahy mezi
entitami z obou stran.
7a. Prověřte seznam atributů a určete, zda některé z nich potřebují být
identifikovány prostřednictví...
bakalářku
Otázka, na niž práce hledá odpověď, se ptá, zda je principielně možné, aby stroje
(třeba až někdy v budoucnu) disponovaly něčím, co bychom bez výhrad byli schopni
přijmout jako opravdové, úplné, sk...
Příklad
toto místo opět k dispozici pro opětovné vložení či aktualizace. Halda je
hromada prostoru, který je využíván náhodně.
Clustrově uspořádaná tabulka pomocí indexu B*Tree – mnoho tabulek
může být fyz...
Jak psát diplomové a jiné písemné práce
nebo podle názvu (podle názvu nap . anonymní díla, jako jsou sborníky,
a díla s více než t emi autory). Vzor anotačního záznamu autorského
katalogu uvádí P íloha 8.
Základní způsob vyhledávaní knih...
PROGRAMOVÁNÍ V SQL
Ostatní databázové objekty.............................................................................................55
Databázové systémy I.
DISTINCT - ve výsledku nebudou obsaženy duplicitní řádky, které mají stejné hodnoty ve
Něco visí ve vzduchu. Správce vypadá, jako by skrýval
mít všichni hráči ukončeny své fáze úklidu, aby mohl být útok správně proveden.
Upozornění ke kartám peněz, akcí a bodů:
Karty peněz a akční karty může hráč během hry využít mnohokrát. Pokládá sice...