Databázové systémy

Transkript

Databázové systémy
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

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í...

Více

bakalářku

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...

Více

Příklad

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...

Více

Jak psát diplomové a jiné písemné práce

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...

Více

PROGRAMOVÁNÍ V SQL

PROGRAMOVÁNÍ V SQL Ostatní databázové objekty.............................................................................................55

Více

Databázové systémy I.

Databázové systémy I. DISTINCT - ve výsledku nebudou obsaženy duplicitní řádky, které mají stejné hodnoty ve

Více

Něco visí ve vzduchu. Správce vypadá, jako by skrýval

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...

Více