��������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
��������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
Oracle průvodce správou, využitím a programováním David Procházka Vydala Grada Publishing, a.s. U Průhonu 22, Praha 7 jako svou 3575. publikaci Odpovědná redaktorka Eva Grillová Sazba Eva Grillová Návrh a grafická úprava obálky Vojtěch Kočí Počet stran 168 První vydání, Praha 2009 © Grada Publishing, a.s., 2009 Cover Photo © fotobanka allphoto V knize použité názvy programových produktů, firem apod. mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Vytiskly Tiskárny Havlíčkův Brod, a.s. Husova ulice 1881, Havlíčkův Brod ISBN 978-80-247-2762-2 ISBN 978-80-247-6225-8
(tištěná verze) © Grada Publishing, a.s. 2009 (elektronická verze ve formátu PDF) © Grada Publishing, a.s. 2011
ORACLE
Obsah Úvod .........................................................................................11 O autorovi .................................................................................13 Poděkování ...............................................................................15 1. Data a databáze..................................................................17 1.1
Data a jejich zpracování .............................................................17 1.1.1 Informace, data a jejich význam ............................................................................... 17 1.1.2 Zpracování dat ......................................................................................................... 19
1.2
Databáze a databázové technologie ............................................22 1.2.1 1.2.2 1.2.3 1.2.4
1.3
Definice databáze ..................................................................................................... 22 Relační databáze ...................................................................................................... 23 Typy uživatelů databází ............................................................................................ 25 Uložení dat v počítači ................................................................................................ 26
Významné pojmy v oblasti databází ...........................................26
2. Relační model databáze .......................................................29 3. Databázový systém Oracle ..................................................33 3.1
Historie Oracle ..........................................................................34
3.2
Současná podoba Oracle .............................................................35
3.3
Ediční řady Oracle ......................................................................36
3.4
Další databázové systémy .........................................................37 3.4.1 3.4.2 3.4.3 3.4.4
Microsoft SQL Server ................................................................................................. 37 MySQL ..................................................................................................................... 38 PostgreSQL ............................................................................................................... 38 Firebird .................................................................................................................... 39
Obsah
5
6
ORACLE
3.5
Specifika a zákonitosti databáze Oracle ......................................40 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5
Databáze v podání Oracle ......................................................................................... 40 Jazyk SQL a jeho standardy ...................................................................................... 41 Další datové jazyky nad databází Oracle ................................................................... 41 Datové typy ............................................................................................................. 42 Databázové struktury ............................................................................................... 44
4. Stažení, instalace a nastavení ..............................................49 4.1
Bezplatná verze databázového serveru Oracle ...........................49
4.2
Stažení a instalace Oracle ..........................................................50 4.2.1 Stažení instalátoru a registrace ................................................................................. 50 4.2.2 Instalace krok za krokem ......................................................................................... 52
4.3
Nástroje pro správu databáze ....................................................53
4.4
První připojení k databázi ..........................................................55 4.4.1 Připojení přes databázovou homepage ...................................................................... 55 4.4.2 Připojení na SQL příkazový řádek ............................................................................. 56
4.5
Odinstalování Oracle..................................................................57
5. Dotazujeme se báze dat (jazyk SQL).....................................59 5.1
Příprava prostředí a uživatelů ....................................................60 5.1.1 Práce s uživateli ....................................................................................................... 60 5.1.2 Spouštění příkazů a skriptů ....................................................................................... 62 5.1.3 Testovací data .......................................................................................................... 63
5.2
Příkazy jazyka DDL (databázová struktura) ................................67 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7
5.3
Příkazy jazyka DML (dotazy nad databází) .................................79 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5
Obsah
Tabulky .................................................................................................................... 67 Pohledy.................................................................................................................... 72 Sekvence.................................................................................................................. 73 Indexy ..................................................................................................................... 74 Partitioning .............................................................................................................. 75 Triggery ................................................................................................................... 77 Uložené procedury a funkce...................................................................................... 78 Dotazování (příkaz SELECT) ...................................................................................... 80 Vložení dat (příkaz INSERT) ...................................................................................... 89 Změna dat (příkaz UPDATE)...................................................................................... 90 Vymazání dat (příkaz DELETE) .................................................................................. 90 Zobrazení struktury databáze (příkaz DESC) ............................................................. 90
ORACLE
5.4
Příkazy jazyka DCL (správa uživatelů a práv) .............................91 5.4.1 Vytvoření, modifikace a rušení uživatelů ................................................................... 91 5.4.2 Definice práv a přístupů ............................................................................................ 92
5.5
Řízení transakcí (TCC) ................................................................92 5.5.1 COMMIT ................................................................................................................... 92 5.5.2 ROLLBACK ................................................................................................................ 93 5.5.3 Využití bodů návratu (SAVEPOINT) ............................................................................ 93
5.6
Operátory .................................................................................93 5.6.1 5.6.2 5.6.3 5.6.4
5.7
Aritmetické operátory ............................................................................................... 93 Operátory porovnání ................................................................................................ 94 Logické operátory ..................................................................................................... 94 Operátor zřetězení ................................................................................................... 94
Funkce ......................................................................................95 5.7.1 5.7.2 5.7.3 5.7.4
Aritmetické a agregační funkce ................................................................................. 95 Funkce data a času ................................................................................................... 97 Funkce pro práci s řetězci .......................................................................................... 98 Převodní funkce ....................................................................................................... 99
6. Oracle Database Home Page ..............................................101 6.1
Správa objektů ........................................................................101 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6
6.2
Tabulky .................................................................................................................. 102 View ....................................................................................................................... 106 Indexy ................................................................................................................... 108 Sekvence................................................................................................................ 108 Procedury a funkce................................................................................................. 108 Triggery ................................................................................................................. 108
SQL příkazy a skripty ..............................................................109 6.2.1 Spouštění SQL příkazů ............................................................................................ 109 6.2.2 Bloky příkazů a SQL skripty .................................................................................... 110 6.2.3 Sestavení dotazu pomocí Query Builder ................................................................... 112
6.3
Nástroje databáze ...................................................................114 6.3.1 6.3.2 6.3.3 6.3.4
6.4
Export a import dat ................................................................................................ 114 Vygenerování struktury databáze............................................................................ 116 Reporting objektů databáze .................................................................................... 118 Odpadkový koš ...................................................................................................... 118
Administrace ...........................................................................119 6.4.1 Úložiště .................................................................................................................. 119 6.4.2 Paměť .................................................................................................................... 119
Obsah
7
8
ORACLE
6.4.3 Uživatelé ................................................................................................................ 119 6.4.4 Monitoring ............................................................................................................. 120 6.4.5 Další možnosti administrace .................................................................................... 120
6.5
Další nástroje pro práci s databází Oracle..................................120
7. Základy jazyka PL/SQL .....................................................123 7.1
Základní informace o PL/SQL ...................................................124 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5
7.2
Datové typy ............................................................................126 7.2.1 7.2.2 7.2.3 7.2.4
7.3
Sada znaků ............................................................................................................ 124 Komentáře ............................................................................................................. 124 Identifikátory ......................................................................................................... 125 Literály .................................................................................................................. 125 Symboly ................................................................................................................. 125 Standardní datové typy........................................................................................... 126 Uživatelsky definované datové typy ........................................................................ 128 Konverze datových typů ......................................................................................... 128 Práce s výrazy a operandy ...................................................................................... 129
Struktura, proměnné a konstanty .............................................130 7.3.1 Bloková struktura PL/SQL....................................................................................... 130 7.3.2 Proměnné a konstanty ............................................................................................ 130
7.4
Kurzory, atributy a řídící struktury ...........................................131 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5
Kurzory .................................................................................................................. 131 Atributy.................................................................................................................. 133 Řídící struktury ....................................................................................................... 133 PL/SQL tabulky ...................................................................................................... 134 Uživatelsky definované záznamy ............................................................................ 135
7.5
Procedury a funkce ..................................................................136
7.6
Triggery ..................................................................................137
7.7
Balíky .....................................................................................138
7.8
Ošetření chyb ..........................................................................139
8. Navrhujeme databázi.........................................................141 8.1
Základní zásady pro návrh databáze ........................................141
8.2
Nejčastější chyby .....................................................................142
8.3
Příprava aneb trochu teorie ......................................................144 8.3.1 Programování nechat stranou ................................................................................. 144
Obsah
ORACLE
8.3.2 8.3.3 8.3.4 8.3.5
8.4
Jak nakreslit návrh................................................................................................. 144 Datové typy ........................................................................................................... 145 Relace .................................................................................................................... 146 Získám snadno všechny informace?......................................................................... 146
Příklad návrhu databáze Evidence uchazečů ...............................147 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.4.6 8.4.7
Zadání ................................................................................................................... 147 Procesy ................................................................................................................. 147 Výsledná podoba aplikace ....................................................................................... 149 Požadavky na databázi .......................................................................................... 149 Rozvržení databázových tabulek ............................................................................. 150 Datové typy ........................................................................................................... 150 Sekvence a triggery ................................................................................................ 152
9. Bezpečnost dat ..................................................................153 A: Užitečné webové zdroje .......................................................157 B: Propojení Oracle a PHP ........................................................159 Závěrem .................................................................................163 Použitá literatura.....................................................................165 Rejstřík ...................................................................................167
Obsah
9
10
ORACLE
Obsah
11
Úvod
ORACLE
Úvod Do rukou se vám dostává publikace, která si klade za cíl seznámit čtenáře s databází Oracle, a to od základních informací, přes způsob, jak Oracle nainstalovat a zprovoznit, až po dotazovací jazyk PL/SQL a pokročilé techniky procedurálního programování nad databází Oracle. Databázový systém Oracle je bezesporu stálicí na poli ukládání a zpracování dat, je prověřený časem a jedná se o jeden z nejpropracovanějších systémů tohoto typu. Publikace na českém knižním trhu, které se zabývají problematikou databází a zejména databázovým systémem Oracle, jsou většinou velmi obsáhlé a tudíž i drahé. Tyto publikace obsahují velké procento informací, které v obecné rovině nevyužijete. Tyto informace jsou potřebné, pokud se hodláte v databázových systémech jednoznačně profilovat jako vývojář, databázový specialista, programátor, administrátor apod. Tato publikace nabízí z každého tohoto oboru podstatné minimum. Kniha je psána formou od jednoduchého ke složitějšímu, respektive od základů po specializované informace. Na své si tedy přijdou jak začátečníci, tak i pokročilí, kteří chtějí získat ucelenou představu o databázích a databázovém systému Oracle. Kniha je koncipována tak, aby neodradila začátečníky svojí složitostí a pokročilé svojí jednoduchostí. Jde zlatou střední cestou. Pro prezentaci informací kniha využívá srozumitelný jazyk, obrázky a náhledy obrazovek a výpisů databázového systému.
Úvod
12
ORACLE
Cílovou skupinou publikace jsou začátečníci v oblasti databázových systémů, administrátoři serverů a správci systémů, databázoví specialisté, programátoři a vývojáři informačních systémů, školitelé a školící společnosti a obecně všichni, kteří se o databázích chtějí dozvědět více.
Úvod
13
O autorovi
ORACLE
O autorovi David Procházka je vývojář specializovaných a průmyslových aplikací ve společnosti VÍTKOVICE ITS a.s., která spadá do skupiny VÍTKOVICE Machinery Group. V rámci své pracovní náplně používá databáze Oracle, MSSQL, Firebird a MySQL. Autor absolvoval řadu školení, je držitelem certifikátů a účastní se meetingů v oblasti databází a programování. Mimo tuto činnost je také autorem několika odborných publikací a stovek článků v IT magazínech a na internetu.
O autorovi
14
ORACLE
Název kapitoly
15
Poděkování
ORACLE
Poděkování Děkuji za podporu při tvorbě této publikace zejména své přítelkyni Evě, svojí rodině a panu Šimonu Kvíčalovi, který byl prvním člověkem, jenž mě s databázemi Oracle detailněji seznámil.
Poděkování
16
ORACLE
Název kapitoly
ORACLE
17
Data a databáze První kapitola je určena pro čtenáře, kteří mají obecné povědomí o významu pojmů data a databáze, ale neorientují se příliš v systému, kterým jsou data v počítači uchovávána a zpracovávána. Kapitola obsahuje úvod do databází a problematiky uložení dat tak, aby se jednotlivé vložené položky daly snadno vyhledávat.
1.1 Data a jejich zpracování Nejprve je nutné objasnit si, co je myšleno daty, s jakými daty v počítačové terminologii pracujeme, jak jsou data uložena a jak s nimi lze dále pracovat. Je také nutné se vysvětlit rozdíly mezi informacemi a daty. Již v úvodu se tedy dostáváme k rozdílům mezi uživatelským chápáním počítačů a skutečnou podstatou soudobých technologií.
1.1.1
Informace, data a jejich význam
Základem všech počítačových systémů jsou data. Možná si ani neuvědomujeme, jak jsou data zásadní pro chod veškerých počítačových systémů. Bez dat by nemohly fungovat počítače obecně. Operační systém počítače je tvořen daty, stejně jako veškeré aplikace.
1.1 Data a jejich zpracování
1. Data a databáze
1.
18
ORACLE*
Například internet je soustavou organizovaných dat. Nejprve si vysvětlíme rozdíly mezi informacemi a daty.
Informace Informace je výsledek vyhodnocení našich smyslů, organizace nebo zpracování dat. Nejde tedy o data jako taková. Informace dává smysl, umíme ji zpracovat a umíme ji celou nebo její část uložit do paměti. Informaci lze připodobnit k odstavci knihy. Přečteme-li jej, umíme jej dále zpracovat a dává nám smysl.
Data Začněme tím, že spojitá data nám dávají informaci. Budeme-li se ale bavit o datech nespojitých, separovaných a samostatně stojících, pak jde pouze o způsob, jakým může být informace zapsána. Opět lze využít jako přirovnání knihu. Nespojitá data jsou písmenka, ze kterých složením slov a vět vzniká odstavec, tedy informace.
Obr. 1.1: Knižní publikace nám reprezentuje jak data, tak ucelené informace
Obecný význam dat Jak bylo napsáno výše, význam dat není doceněn. Nelze vnímat data pouze jako stavební jednotky informací. Data jsou součástí každé činnosti počítače. V počítačové terminologii se data (ve formě jedniček a nul) posílají skrze zařízení a sběrnice pokaždé, když s počítačem provedeme jakoukoli akci. Vývojáři operačních systémů ukládali své zdrojové kódy jako datové soubory. Data jsou přítomna všude. Opustíme ale abstraktní svět jedniček, nul a obecně nepotřebných a neviditelných dat. V databázových systémech nás zajímají data konkrétní, která většinou s počítači jako takovými nesouvisí.
Význam dat v databázích V databázích a datových strukturách pracujeme s konkrétními daty. Nejčastěji se setkáváme s rozsáhlými evidencemi osob, majetku, výrobků, skladu apod., kde data konkretizují skutečnost. Takováto data se využívají v mnoha systémech, dovolují efektivní vyhledávání, výstupní sestavy, výpočetní funkce a další operace. Databázi, tak jak ji budeme dále prezentovat a využívat, si lze představit jako knihovnu, kde jsme schopni okamžitě zjistit, jaké knihy máme k dispozici, kde můžeme snadno a rychle vyhledávat dle nejrůznějších parametrů, kde lze definovat a dále ověřit, kdo si danou knihu půjčil a kdy ji vrátí, a databáze nás může sama informovat o vypršelé výpůjční lhůtě.
1. Data a databáze
ORACLE
19
Obr. 1.2: V počítačích se počítá ve dvojkové soustavě pomocí hodnot 0 a 1
Zpracování dat
V praktickém životě je často zapotřebí evidovat údaje. Například o skupině lidí (zaměstnanců, studentů, členů sportovního oddílu apod.), o zvířatech nebo rostlinách (evidence zoologické nebo botanické zahrady), o množině věcí (knihy ve veřejné knihovně, inventář firmy, materiál na skladě) nebo jevů (počasí, provedené lékařské výkony). Vést evidenci znamená udržovat o takových souborech objektů přehled a mít data vhodně uspořádána – tak, aby se v nich údaje dobře vyhledávaly a v případě potřeby opravovaly a doplňovaly.
Objekty, vlastnosti a atributy Objekty (lidi, zvířata, věci, jevy) obvykle popisujeme pomocí jejich vlastností (zaměstnanec firmy má jméno, adresu, funkci, plat; kniha v knihovně má název, autora, rok vydání, cenu). Při evidencích se pak předem rozhodneme, které vlastnosti potřebujeme sledovat. Vybrané vlastnosti budeme nazývat atributy, pojmenujeme si je a zvolíme nějakou formu evidence: na papír či do sešitu nalinkujeme tabulku, sloupce popíšeme názvy vybraných evidovaných vlastností a celou tabulku pojmenujeme typem evidovaných objektů.
Tabulková metoda evidence Tato metoda je patrně tou nejjednodušší, jakou si můžeme představit. V tabulce můžeme například vést evidenci dat o zaměstnancích. Zaměstnanci (objekty) jsou zapisováni v pořadí, jak byli do firmy přijati. Potřebujeme evidovat jejich atributy jméno, adresu, funkci, plat. Pojmenujeme tabulku Zaměstnanec. Při zvyšujícím se počtu evidovaných objektů se brzy objeví nevýhody této tabulkové formy. Má-li tabulka již desítky řádků, je vyhledávání zdlouhavé (hledat se musí postupně shora dolů). Při změnách hodnot údajů (slečna se provdá a změní jméno i adresu, úspěšný účetní dostane vyšší plat) se musí přepsat údaje v políčkách tabulky nebo celý řádek škrtnout a opsat znovu dolů. I při odchodu zaměstnanců vznikají vyškrtnuté řádky. Tabulka začne být brzy nepřehledná.
1.1 Data a jejich zpracování
1. Data a databáze
1.1.2
20
ORACLE
Obr. 1.3: Tabulková evidence má svou tradici
Kartotéková evidence dat Jiný přirozený způsob ruční evidence je kartotéka. Místo tabulky se vyrobí kartotékové listy, na každém je „formulář“ obsahující názvy evidovaných údajů. Každý objekt je zapsán na jednu evidenční kartu, všechny listy jsou umístěny do krabice nebo šuplíku. Výhodou je možnost ukládat listy v nějakém uspořádání (zaměstnance abecedně podle jména, knihy podle názvu nebo autora apod.) a toto uspořádání dodržovat při všech změnách i při přidávání a rušení karet. Vyhledávání podle jména, pokud je kartotéka takto setříděna a hledající zná abecedu, je rychlejší. Ovšem vyhledání zaměstnanců s bydlištěm v Opavě znamená opět systematické procházení celou kartotékou.
Obr. 1.4: Kartotéku známe z knihovny nebo od lékaře
1. Data a databáze
ORACLE
21
Agendové zpracování dat
1. Data a databáze
Přestože první počítače vznikly pro matematické a technické výpočty, velmi brzy se přirozeně začaly používat i pro úlohy zpracování dat. Od historických dob prvních počítačů až do dnešního dne se úlohy evidence dat programovaly v dostupných programovacích jazycích a na dostupných počítačích. Protože většinou nešlo o jediný program, ale o sadu programů, řešících konkrétní úlohy – agendy, říká se počátečním etapám úloh tohoto typu agendové zpracování dat. Později se vyvinula nová technologie zpracování dat, nazývaná databázovou. O ní pojednávají všechny následující kapitoly. Přes její výhody proti klasickému agendovému zpracování se však dodnes vyskytují nové implementace agendového typu.
Obr. 1.5: Agendové zpracování dat využívalo například děrné štítky
Původní agendy se zpracovávaly v dávkách – data se ručně zapisovala do formulářů a z formulářů se zaznamenávala na vstupní médium pro počítač – magnetickou pásku, štítek či disketu. Formou primárního zpracování se data načetla do počítače, přitom se prováděly vstupní kontroly formální a částečně i logické správnosti dat, případně se prováděly korekce dat. Data byla uložena na sekundární médium do vnější paměti počítače. Řadou sekundárních zpracování se pak nad daty prováděly potřebné výpočty, třídění, výběry, tisky sestav. Obvykle řešily aplikační programy jednotlivé úlohy, soubor programů pak tvořil ucelenou agendu. Agendy obvykle řešily menší evidenční úlohy – jedna pro evidenci zaměstnanců, jiná pro majetek firmy, další pro sklad materiálu apod.
1.2 Databáze a databázové technologie
22
ORACLE
1.2 Databáze a databázové technologie Zkušenosti získané při programování agend ukázaly, že všechny agendy používají jen několik málo datových typů a několik málo typů operací s daty. Aplikační programy realizující jednotlivé úlohy a agendy se liší tím, v jakém pořadí a s kterými údaji tyto operace provádějí. To vše vedlo k návrhu a vytvoření nových programových systémů s následujícími vlastnostmi:
definují seznam datových typů, které jsou v programovém systému použitelné; pro tyto typy dat vytváří programový systém fyzickou strukturu na disku a automaticky řeší všechny přístupy k datům; proti programovacím jazykům používají některé datové typy navíc (reálná čísla s pevně umístěnou desetinnou tečkou, datumové a časové údaje);
obsahují prostředky pro definování důležitých vlastností popisovaných objektů;
programový systém řeší způsob, jak zaznamenat vztahy mezi objekty;
obsahují soubor instrukcí, které nad definovanými daty provádějí jednotlivé operace; každá instrukce je vlastně mohutnou procedurou, v níž je řešen fyzický přístup k datům i realizace vlastní operace; jinak než prostřednictvím systému není možno s daty pracovat.
Takovým programovým systémům – vlastně programovacím jazykům vyšší úrovně, pracujícími s rozsáhlými datovými soubory – říkáme systémy řízení báze dat (SŘBD).
1.2.1
Definice databáze
Databáze je určitá uspořádaná množina informací (dat) uložená na paměťovém médiu. V širším slova smyslu jsou součástí databáze i softwarové prostředky, které umožňují manipulaci s uloženými daty a přístup k nim. Tento systém se v české odborné literatuře nazývá systém řízení báze dat (SŘBD). Běžně se označením databáze – v závislosti na kontextu – myslí jak uložená data, tak i software (SŘBD). Uspořádání databáze je hierarchické. Nejvýše je databáze, ta obsahuje tabulky, každá z těchto tabulek je pak složena z několika sloupců. A konečně data, která jsou ukládána v řádcích, kterým se říká záznamy. Jednotlivé položky záznamu se nazývají pole tabulky.
Aplikační úlohy Aplikační úlohou nad SŘBD nazýváme konkrétní program napsaný pomocí programových prostředků použitého SŘBD nad konkrétní databází, pro tuto úlohu vytvořenou. Aplikační úlohy nad společnou databází pak mohou tvořit ucelený systém, nazývaný databázovým nebo (automatizovaným) informačním systémem (IS) nad použitým SŘBD. V tomto pojetí tedy databázovým systémem rozumíme celek, řešící rozsáhlejší oblast, aplikační a naprogramovaný v jednom SŘBD s vhodně navrženými datovými strukturami tak, aby k nim měly všechny aplikační úlohy optimální přístup. Řeší uložení, uchování, zpracování a vyhledávání informací a umožňuje jejich formátování do uživatelsky přívětivého tvaru.
Oddělení databáze od aplikací Definování datových typů a operací nad daty není vše, čím se liší databázová technologie od klasického programování. Nejpodstatnější rozdíl spočívá v tom, že základní princip da-
1. Data a databáze
ORACLE
23
tabázové technologie je oddělení datových struktur od programů. Tuto vlastnost zabezpečuje v SŘBD možnost definovat datové a programové struktury samostatně a nezávisle na sobě. Struktury datových souborů jsou uloženy samostatně nebo jsou součástí datových souborů. Programy s nimi pracují tak, že si načtou strukturu dat a pak s datovým souborem mohou provádět potřebné operace. Při změně datové struktury není nutné měnit programy, při změně programů není nutné měnit datové struktury.
1.2.2
Relační databáze
1. Data a databáze
Relační databáze je úložiště dat, které odpovídá relačnímu modelu a zabývá se rychlým přístupem k uloženým datům a jejich organizací do definované struktury. V databázových systémech je umožněn paralelní přístup více uživatelů s možností ošetření přístupových práv. Základem relačních databází jsou databázové tabulky. V rámci tabulek rozlišujeme sloupce a řádky. Pro sloupec databázové tabulky volíme název tak, aby byl v rámci tabulky jednoznačný. Dále pro sloupec definujeme jeho datový typ, který určuje, jaká data zde budeme ukládat. Řádek tabulky slouží k vlastnímu uložení dat. Bývá také označován jako záznam.
Obr. 1.6: Relační databáze
Klíč Pod pojmem klíč rozumíme jednoznačný identifikátor záznamu, tedy řádku tabulky. Klíčem může být jediné pole či kombinace více polí tak, aby byla zaručena jednoznačnost. V praxi se často používají umělé klíče, což jsou číselné či písmenné identifikátory. Každý nový záznam dostává identifikátor o 1 větší než záznam předchozí. Dalším důležitým pojmem jsou nevlastní (cizí) klíče. Slouží pro vyjádření vztahů, relací mezi databázovými tabulkami. Jedná se o pole či skupinu polí, která nám umožní identifikovat, které záznamy z různých tabulek spolu souvisí.
1.2 Databáze a databázové technologie
24
ORACLE
Integrita a integritní omezení Integrita databáze znamená, že data v ní uložená jsou konzistentní. Lze zadávat jen data, která sem patří, a není možné, aby se ztratila data, která se ztratit nemají. K zajištění integrity slouží integritní omezení. Zamezí, aby došlo jakoukoli úpravou dat ke ztrátě či poškození stávajících záznamů. Dále lze tímto způsobem zajistit, že v databázi nejsou umístěna data, která tam nemají co dělat. Například smažeme-li uživatele, odstraní se i zbytek jeho záznamů v ostatních databázových tabulkách.
Druhy integritních omezení Rozeznáváme hned několik druhů integritních omezení. Entitní integritní omezení – povinné integritní omezení, které zajišťuje úplnost primárního klíče tabulky; zamezí uložení dat, která neobsahují všechna pole sdružená do klíče. Doménová integritní omezení – zajišťují dodržování datových typů definovaných u sloupců databázové tabulky. Referenční integritní omezení – zabývají se vztahy dvou tabulek, kde jejich relace je určena vazbou primárního a cizího klíče. Aktivní referenční integrita – definuje činnosti, které databázový systém provede, pokud hrozí porušení referenční integrity.
Vztahy mezi tabulkami Vztahy neboli relace slouží ke svázání dat, která spolu souvisejí a jsou umístěna v různých databázových tabulkách. V zásadě rozlišujeme čtyři typy vztahů. •
Mezi daty v tabulkách není žádná spojitost, proto nedefinujeme žádný vztah.
•
1:1 používáme, pokud záznamu odpovídá právě jeden záznamem v jiné databázové tabulce a naopak. Takovýto vztah se používá pouze ojediněle, protože není pádný důvod, proč takovéto záznamy neumístit do jedné databázové tabulky – jedno z mála využití je zpřehlednění rozsáhlých tabulek.
Obr. 1.7: Ukázka relace 1:1
•
1:N přiřazuje jednomu záznamu více záznamů z jiné tabulky, jedná se o nejpoužívanější typ relace, jelikož odpovídá mnoha situacím v reálném životě.
•
M:N je nejméně častým vztahem, umožňuje několika záznamům z jedné tabulky přiřadit několik záznamů z tabulky druhé; reálně je uskutečněn kombinací dvou dotazů 1:N, které ukazují do pomocné tabulky složené z kombinace použitých klíčů.
1. Data a databáze
ORACLE
25
Obr. 1.8: Ukázka relace 1:N
1.2.3
Typy uživatelů databází
Se SŘBD pracuje na různých úrovních několik typů uživatelů, dělících se podle způsobu komunikace s databází. Nezmiňujeme se zde samozřejmě o programátorech, kteří SŘBD vytvářejí. S těmi se většinou nesetká ani správce báze či aplikační programátor, stejně jako se programátor v C++ obvykle nesetká s autory překladače.
Správce nebo administrátor báze dat Profesionální analytik a systémový programátor, který rozhoduje o tom, která data a jak budou v bázi uložena. Určuje metody přístupu k datům, pokud je to nutné, modifikuje struktury dat, přiděluje přístupová práva k datům, rekonstruuje databázi v případě jejího poškození a podobně.
Aplikační programátor Profesionální programátor, který programuje aplikační úlohy nad definovanými datovými strukturami pomocí programových prostředků SŘBD. Nemusí znát strukturu celé databáze, stačí mu znalost struktur, se kterými bude pracovat a které mu zadá správce. Tak může nad jednou databází pracovat bez nutnosti vzájemné komunikace řada programátorů.
Příležitostný uživatel Jakýkoliv uživatel, který umí prostřednictvím dotazovacího jazyka formulovat svůj dotaz (takový, který databázový systém nemá sám zabudován ve svých aplikačních programech).
1.2 Databáze a databázové technologie
1. Data a databáze
Obr. 1.9: Ukázka relace M:N
26
ORACLE
Naivní uživatel Uživatel (obvykle neprogramátor), který prostřednictvím aplikačních programů pracuje s databází a používá tak databázi jako informační systém pro ukládání, zpracování a vyhledávání informací. Především pro tyto uživatele se databázové systémy vytvářejí.
1.2.4
Uložení dat v počítači
Na nejnižší úrovni jsou data fyzicky uložena na vnějších paměťových médiích. Pro operační systém je databáze soustavou souborů, které se neliší od jiných datových souborů. Operační systém poskytuje základní typy organizace dat, především sekvenční přístup. Aby se tyto jednoduché prostředky operačního systému daly využít pro realizaci podstatně složitějších organizací dat z konceptuální úrovně, je nutné vytvořit vhodný interní datový model, implementovaný v SŘBD. Některé SŘBD dokonce nepoužívají služeb operačního systému při ovládání souborů a řeší všechny přístupy na vnější paměť vlastními prostředky.
Obr. 1.10: Data se v databázích ukládají nejčastěji na pevný disk
1.3 Významné pojmy v oblasti databází Na konci první kapitoly je vhodné uvést v krátkosti pojmy již zmíněné a vysvětlit i další základní pojmy, se kterými se v oblasti databází setkáte a které svou obsáhlostí překračují rozměr této publikace. S jinými se zase setkáte dále v této publikaci. Informace – Informace je výsledek vyhodnocení našich smyslů, organizace nebo zpracování dat.
1. Data a databáze
ORACLE
27
Data – Způsob zápisu informace nebo její části na paměťové médium. Databáze – Databáze je určitá uspořádaná množina informací (dat) uložená na paměťovém médiu. Integrita – Integrita databáze znamená, že data v ní uložená jsou konzistentní. Objekt – Jde o množinu věcí, lidí, zvířat atd., kterou se databází snažíme popsat. Vlastnost – Vlastnost hmatatelného objektu – například barva vlasů, věk apod. Entita – Entitou rozumíme libovolnou existující osobu, zvíře, věc či jev (obecně objekt) reálného světa. Entita musí být rozlišitelná od ostatních entit a existovat nezávisle na nich. Atribut – Atribut je charakteristika, vlastnost entity, údaj o objektu. Atribut přiřadí každé entitě z množiny entit hodnotu z nějaké neprázdné množiny hodnot, nazvané doména atributu (obor hodnot atributu). Atribut je tedy zobrazení množiny entit do domény atributu. Je zadán svým názvem (identifikátorem) a datovým typem. Integritní omezení– Popsaná pravidla udržující integritu nad databází. Klíč – Pod pojmem klíč rozumíme jednoznačný identifikátor záznamu, řádku tabulky. Klíč je buď primární nebo cizí, společný s jinou tabulkou.
Datový typ – Popisuje vlastnosti atributu – například řetězec, číslo, datum apod. Relace – Definované spojení tabulek na základě klíče. Datový model – Jde o popis datových struktur databáze a vazeb mezi nimi. Zjednodušeně lze říci, že jde o mapu databáze. E-R diagram – E-R diagram má podobný význam jako vývojový diagram pro návrh algoritmu. Je určen pro návrh struktury databáze, pro popis hlavních vlastností dat v databázi uložených. SQL – Dotazovací jazyk nad databází.
1.3 Významné pojmy v oblasti databází
1. Data a databáze
Tabulka – Databázová tabulka obsahuje záznamy daných atributů ke konkrétnímu objektu. Lze si ji představit jako běžnou tabulku zaměstnanců a jejich osobních dat nebo tabulku publikací v knihovně.
28
ORACLE
Název kapitoly
ORACLE
29
2. Historicky prvním datovým modelem v databázové technologii byl model hierarchický a dále jeho zobecnění, model síťový. Jeho standard byl definován v roce 1970 a týkal se především implementace síťového SŘBD, příkazů pro definice dat, způsobu práce a příkazů pro manipulace s daty. Měl výhody i nevýhody. Výhodou byla především rychlost realizace vazeb mezi entitami, nevýhodou především nutnost profesionálního návrhu struktury databáze. Změny struktury databáze znamenaly velkou práci. Nový datový model – relační (RDM), založený na teoretických matematických základech, vznikl jen o málo později. Poprvé byl zveřejněn v roce 1971 v článku pracovníka firmy IBM, matematika Dr. Codda. V něm byl teoreticky definován relační model jako matematické zobecnění pojmu soubor pomocí pojmu matematické relace. Dr. Codd uvedl matematické definice pojmů entita a její typ, vazba a její typ, atribut a jeho hodnoty, struktura databáze. Zároveň definoval jazyk, pomocí něhož se vyhledávají informace a manipuluje se s daty v databázi. A konečně zavedl pojem funkčních závislostí mezi množinami atributů, které ovlivňují správnost struktur entit a definoval pravidla pro rozpoznání správné struktury databáze. Dále nadefinoval hlavičku datové tabulky a množinu entit (zobrazenou jako obsah tabulky, množinu jejích řádků), které se dosud používaly v konceptuálním modelu.
2. Relační model databáze
2. Relační model databáze
Relační model databáze
30
ORACLE
Relaci je výhodné znázorňovat jako dvojrozměrnou tabulku, kde každý řádek odpovídá jedné entitě a každý sloupec jednomu atributu. Jména atributů musí být v rámci relace navzájem různá. Často se tedy v relačním modelu místo pojmu relace používá pojem tabulka. Na rozdíl od matematických relací jsou databázové relace proměnné v čase. Aktualizace databáze, která umožňuje zachytit v databázi změny nastávající v reálném světě, spočívá ve změně aktuálních relací přidáváním nebo rušením prvků relací nebo změnou hodnot některých atributů. Z definice relace vyplývají tyto jejich tabulkové vlastnosti:
homogenita sloupců (hodnoty odpovídají příslušné doméně),
každý údaj (hodnota atributu ve sloupci) je atomickou položkou,
na pořadí řádků nezáleží (relace je množina),
na pořadí sloupců nezáleží (pojmenované atributy také tvoří množinu),
každý řádek tabulky je jednoznačně identifikovatelný hodnotami jednoho nebo několika atributů (primárního klíče).
Charakteristickou vlastností relačního modelu je realizace vazeb opět pomocí relací resp. tabulek. Již v konceptuálním modelu se některé entity nazývaly vazebními, pokud reprezentovaly vazbu mezi dvěma či více entitami. Relační model obecně realizuje vazbu pomocí relace, v níž každou entitu do vazby vstupující zastupuje její primární klíč. V některých případech (vazby 1:1, 1:M) však není nutné použít samostatnou vazební tabulku, ale doplnění tabulky na straně M o další atribut – cizí klíč.
Obr. 2.1: Relace mezi tabulkami
Celkově můžeme konstatovat, že vazba mezi relacemi se obecně dá vždy realizovat pomocí vazební tabulky. V některých případech je možné vazební tabulku sloučit s jednou z tabulek do vazby vstupujících a spojit dva totožné sloupce. Sloupce, které jsou nově připojené k původní tabulce, nazýváme cizí klíče. Tuto technologii s cizími klíči používáme, pokud již při datové analýze zjistíme, že některý typ vazby bude potřebný pro náš informační systém.
2. Relační model databáze
ORACLE
31
Velká výhoda relačního modelu je však také v tom, že i předem nepředpokládané vazby můžeme realizovat bez zásahu do původní struktury relací. Pokud se až později ukáže potřeba evidence nového, nepředpokládaného typu vazby mezi existujícími entitami, stačí definovat novou vazební relaci. Jejími atributy budou primární klíče provázaných relací, případně další atributy vazby. S novou relací se pak pracuje pomocí běžných příkazů práce s relacemi. Relační databáze je implementace modelů reálného světa, vytvořeného podle pravidel RMD. Relational DataBase Managment System je DMS, který by měl splňovat dvanáct pravidel, která publikoval pan Codd v článku, který vyšel roku 1985 v Computerworldu. Těchto dvanáct pravidel vychází z Coddovy teoretické práce na relačním modelu a vyjadřuje spíše ideální cíl, kterého by měl dosáhnout relační DBMS: 1. Pravidlo informace: Všechny informace v relační databázi se na logické úrovni reprezentují explicitně hodnotami v tabulkách. 2. Pravidlo zaručeného přístupu: Musí být zajištěno, aby úplně každý údaj v relační databázi byl logicky přístupný použitím názvu tabulky, hodnoty primárního klíče a názvu sloupce. 3. Systematické ošetření prázdných hodnot: Prázdné hodnoty (nikoliv nuly nebo prázdné řetězce) jsou systematicky plně podporovány RDBMS pro reprezentaci chybějících informací a neplatných informaci nezávisle na datovém typu. (Typicky řešeno hodnotou NULL). 4. Popis struktury založený na relačním modelu: Popis databáze se na logické úrovni reprezentuje stejně jako běžná data, tzn. v relacích, na které se mohou oprávnění uživatelé dotazovat stejně jako na jakoukoliv jinou relaci.
definici dat,
definici pohledu,
manipulaci s daty,
omezení integrity,
autorizaci,
vymezení transakce.
2. Relační model databáze
5. Pravidlo komplexního datového jazyka: Relační systémy mohou podporovat více jazyků a režimů přístupu, ale musí existovat minimálně jeden jazyk, jehož příkazy jsou vyjádřitelné nějakou dobře definovanou syntaxí jako řetězce znaků, který podporuje:
6. Aktualizace pohledu: Všechny aktualizovatelné pohledy je možno aktualizovat systémově. 7. Vysokoúrovňová manipulace s daty: Zpracování základní či odvozené relace se jako jediný operand aplikuje jak na vyhledávání, tak na vložení a změnu dat. 8. Fyzická datová nezávislost: Aplikace a terminály zůstávají logicky nedotčeny změnami v reprezentaci uložiště nebo přístupových metodách. 9. Logická datová nezávislost: Aplikace a terminály jsou logicky nedotčeny, pokud jsou v tabulkách provedeny změny v uchování informací.
2. Relační model databáze
32
ORACLE
10. Nezávislost integrity: Integritní omezení (viz dále) musí být definovatelné v datovém jazyku v databázi, nikoliv v aplikaci. 11. Distribuční nezávislost: Databázový jazyk musí být schopen manipulovat s daty umístěnými na jiném počítačovém systému. 12. Pravidlo nenarušení: Pokud je v systému více jazyků, žádný z nich nesmí mít možnost manipulovat s daty v rozporu s integritními omezeními. Prakticky žádný ze současných systémů nesplňuje všechna pravidla naprosto dokonale a spousta programátorů databázových aplikací nevyužívá možností databáze. (Týká se hlavně bodu 10).
2. Relační model databáze
ORACLE
33
3. Oracle je systém řízení báze dat (Oracle database management system – DBMS), moderní multiplatformní databázový systém s velice pokročilými možnostmi zpracování dat, vysokým výkonem a snadnou škálovatelností. Databázový systém Oracle je vyvíjen firmou Oracle Corporation. Oracle Corporation (Nasdaq: ORCL) je největší společností na světě, která dodává podnikový software firmám a organizacím všech velikostí. Tato společnost, jejíž roční obrat činí 10,2 miliardy USD, nabízí kromě podnikových aplikací a nástrojů na jejich vývoj také databázi, aplikační server a nástroje pro podnikovou spolupráci.
Obr. 3.1: Logo firmy Oracle
Česká pobočka společnosti Oracle byla založena v roce 1994 s cílem přiblížit produkty a služby Oracle také zákazníkům v České republice. Během velice krátké doby se společnosti Oracle Czech podařilo úspěšně uvést do České republiky řadu produktů a řešení založených na technologiích Oracle. Veškerá řešení společnosti Oracle jsou plně přizpůsobena podmínkám na českém trhu a odpovídají legislativě České republiky. V průběhu uplynulých deseti let nabyla česká pobočka mezinárodního významu.
3. Databázový systém Oracle
3. Databázový systém Oracle
Databázový systém Oracle
Toto je pouze náhled elektronické knihy. Zakoupení její plné verze je možné v elektronickém obchodě společnosti eReading.