12.
Základy relačních databází Když před desítkami let doktor E. F. Codd zavedl pojem relační databáze, pohlíželo se na tabulky jako na relace, se kterými se daly provádět různé operace. Z matematického hlediska to byl kartézský součin, selekce a projekce. Každá relační databáze vychází z těchto základů a musí mít v sobě zabudovánu podporu pro relační algebru, nad kterou se v jazyce SQL konstruují dotazy. Relační databáze se používají v různých firemních aplikacích, např. na správu objednávek, databázi zaměstnanců atd. Ještě hojnější využití relačních db najdeme u Internetových aplikací, ve spolupráci se skriptovacími jazyky PHP, Asp apod. Relační databáze je složená z řady tabulek, jejichž sloupce mohou být vázány na sloupce v ostatních souvisejících tabulkách, takto propojená datová pole jsou na sebe určitým způsobem závislá, mají mezi sebou nějaký logický vztah.
Hierarchický databázový model -Data jsou strukturována hierarchicky a obvykle se znázorňují v podobě obráceného stromu. Přičemž jedna z tabulek slouží jako tzv. kořen tohoto obráceného stromu a ostatní tabulky jako větve vycházející z kořene.
-Na obrázku vidíte, že nejvyšším prvkem jsou stromy, které se dělí na 2 základní druhy a každý druh má zase své podruhy a ty zase své podruhy, až se dostanete k jednotlivým instancím. Například u ovocných stromů lze uvést jabloň, u jehličnatých stromů smrk, u dřevin tis apod. Vztah v databázi je reprezentován termíny rodič a potomek. V tomto typu vztahu může být tabulka rodiče přidružena k jedné, nebo více tabulkám potomků, ale tabulka potomka může být přidružena pouze k jedné tabulce rodiče. Uživatel k záznamům přistupuje ve směru šipek od kořene až po listové prvky. V tomto případě k jednotlivým stromům. -Hierarchická databáze byla hojně využívaná zejména v době ukládání dat na magnetické pásky, zejména proto že přístup k datům byl pouze sekvenční. S příchodem magnetických médií a narůstajícím počtem redundantních dat se od používání hierarchického modelu značně upustilo.
Síťový databázový model -Síťová databáze byla vyvinuta hlavně jako pokus o vyřešení problémů hierarchické databáze. Struktura síťové databáze je vyjádřena v pojmech uzlů (někdy také označovaných jako záznamy) a množinových struktur.
-Uzel reprezentuje soubor záznamů a množinová struktura reprezentuje a zřizuje vztah v síťové databázi. Je to snadno pochopitelná konstrukce, která vytváří vztah mezi dvěma uzly tak, že jeden uzel je definován jako vlastník a druhý jako prvek (tato metoda je značným vylepšením vztahu rodič/potomek). Množinová struktura podporuje vztah 1: N, neboli jeden záznam v uzlu vlastník může být v relaci k jednomu, nebo více záznamům v uzlu člen. Na druhé straně, jeden záznam v uzlu člen je ve vztahu pouze k jednomu záznamu typu vlastník. Záznam v uzlu typu člen navíc nemůže existovat, aniž by byl ve vztahu k nějakému záznamu v odpovídajícím uzlu typu vlastník. -Výhodou síťové databáze je rychlý přístup k datům. Umožňuje uživatelům vytvářet dotazy, které jsou mnohem komplexnější než dotazy v hierarchickém modelu. Hlavní nevýhodou síťové databáze je, že uživatel musí znát strukturu databáze, aby mohl pracovat s množinovými strukturami.
Logický návrh databáze popisuje rozměry, tvary a systémy nutné pro databázi. Určuje informační a provozní potřeby, které si na systém kladete. Tím je myšlena sama fyzická implementace, kterou lze provést v zápětí.
Základy relačních databází -Základním konstruktorem relačních databází jsou relace (databázové tabulky), což jsou dvourozměrné struktury tvořené záhlavím a tělem, které slouží k přímému uložení dat do paměťového prostoru relační databáze. Jejich sloupce se nazývají atributy. Každý sloupec musí mít jedinečný název a určitý datový typ podle dat, která chceme ukládat. -Řádky nebo také záznamy. Oba pojmy jsou identické, jelikož jeden řádek reprezentuje jeden záznam. -Atributy mají určen svůj konkrétní datový typ a doménu, což je množina přípustných hodnot daného atributu. Řádek je řezem přes sloupce tabulky a slouží k vlastnímu uložení dat. Pojem „relační databáze“ souvisí s teorií množin. Každá konkrétní tabulka totiž realizuje podmnožinu kartézského součinu všech potenciálně možných dat všech sloupců – relaci. -Každý řádek by měl mít určitý jedinečný identifikátor, který jednoznačně určí příslušný záznam. Tento problém řeší klíče.
Kandidátní klíč: -Kandidátní klíč je atribut nebo skupina atributů, které jednoznačně identifikují záznam v relační tabulce. Kandidátní klíč se může stát primárním klíčem. Ty, které se primárním klíčem nestanou, jsou označovány jako alternativní klíče.
Primární klíč: -Primární klíč je minimální klíč. Je to jednoznačný identifikátor záznamu, řádku tabulky. Primárním klíčem může být jediný sloupec či kombinace více sloupců tak, aby byla zaručena jeho jednoznačnost. Pole klíče musí obsahovat hodnotu, to znamená, že se zde nesmí vyskytovat nedefinovaná prázdná hodnota NULL. Každý nový záznam dostává identifikátor odlišný od identifikátorů všech předchozích záznamů, obvykle se jedná o celočíselné řady a každý nový záznam dostává číslo vždy o jednotku vyšší (AUTO INCREMENT) než je číslo u posledního vloženého záznamu.
Cizí klíč: -Slouží pro vyjádření vztahů, relací, mezi databázovými tabulkami. Jedná se o pole či skupinu polí, která nám umožní identifikovat, které záznamy z různých tabulek spolu navzájem souvisí.
Referenční integrita: -Referenční integrita je nástroj databázového stroje, který pomáhá udržovat vztahy v relačně propojených databázových tabulkách. -Referenční integrita se definuje cizím klíčem, a to pro dvojici tabulek, nebo nad jednou tabulkou, která obsahuje na sobě závislá data (například stromové struktury). Tabulka, v niž je pravidlo uvedeno, se nazývá podřízená tabulka (používá se také anglický termín slave). Tabulka, jejíž jméno je v omezení uvedeno je nadřízená tabulka (master). Pravidlo referenční integrity vyžaduje, aby pro každý záznam v podřízené tabulce, pokud tento obsahuje data vztahující se k nadřízené tabulce, odpovídající záznam v nadřízené tabulce existoval. To znamená, že každý záznam v podřízené tabulce musí v cizím klíči obsahovat hodnoty odpovídající primárními klíči nějakého záznamu v nadřízené tabulce, nebo NULL. Referenční Integrita se projevuje například při přidání či změně záznamu v podřízené tabulce. Kontroluje se, zda stejná hodnota klíče existuje v nadřízené tabulce – porušení pravidla vyvolá chybu
Diagramy entit a vztahů – ER diagram Pro návrh a zápis vztahů mezi jednotlivými entitami naší databáze byl vytvořen model E-R diagramů. Tento model byl zaveden a poprvé použit panem Peterem Pin Shan Chenem v roce 1976. Mluvil o diagramech entit a vztahů (Entity Relationship Diagrams), který se brzy rozšířil a stal se obecně uznávaným standardem. Entity se v těchto diagramech popisují pomocí obdélníků, vztahy se znázorňují pomocí kosočtverců, popř. atributy se zobrazují pomocí elips (oválů) – potom ovšem mluvíme o ERA diagramu (Entity Relationship Atribut). E-R diagram je založen na jednoduchém pravidle spočívajícím ve splnění čtyř podmínek: 1. Fakta vyjádříme pomocí tabulek v 5 NF 2. Entity (vyjádřeny tabulkami) pojmenujeme výstižným podstatným jménem v jednotném čísle 3. Mezi entitami vytvoříme relace typu 1:N a výstižně je pojmenujeme slovesem nebo předložkou 4. Čteme-li slova označující první entitu, relaci od ní a druhou entitu ve směru od N k 1, pak musí takto sestavená věta dávat smysl. Splněním těchto pravidel získáme diagramem velice dokonalou analýzu problému. Příkladem může být zobrazený diagram mezi třemi entitami Clovek, Bydliste a Posta.
Jednoduchý E-R diagram Entita Clovek je dána tabulkou jednotlivých lidí v 5. NF s přímým přístupem podle unikátního rodného čísla. Entita Bydliste je opět zavedena tabulkou v 5. NF a představuje zde trvalé bydliště. Entita Posta představuje tabulku pošt v 5. NF s unikátním poštovním směrovacím číslem. Přitom v jednom trvalém bydlišti může bydlet několik lidí, ale jeden člověk má právě jednou trvalé bydliště. Proto je relace mezi entitou člověk a bydliště typu N:1 a velmi výstižně se dá charakterizovat slovesem „Má“.
Vícenásobné relace: Mezi dvěma entitami může být stanoveno několik různých relací. Vícenásobná relace mezi dvěma entitami je dovolena, pokud má každá z relací jiné jméno. Můžeme si uvést jako příklad z oblasti lodní dopravy. Lodě neustále plují z jednoho přístavu do druhého a navíc mají jeden z těchto přístavů jako svůj mateřský. Relace mezi entitami LOD a PRISTAV se týká příslušnosti lodí k mateřským přístavům. Relace mezi entitami PLAVBA a LOD popisuje spojení plaveb s příslušnou lodí.
Normální formy: -Normální formy tabulek se používají pro lepší návrhy databázových systémů. Obecně platí, že čím je tabulka ve vyšší normální formě, tím kvalitněji je tabulka navržena.
0. NF: Tabulka je v nulté normální formě právě tehdy, existuje-li alespoň jedno pole, které obsahuje více než jednu hodnotu.
1. NF: Tabulka je v první normální formě, jestliže lze do každého pole dosadit pouze jednoduchý datový typ (jsou dále nedělitelné).
2. NF: Tabulka je ve druhé normální formě, jestliže je v první a navíc platí, že existuje klíč a všechna neklíčová pole jsou funkcí celého klíče (a tedy ne jen jeho částí).
3. NF: Tabulka je ve třetí normální formě, jestliže každý neklíčový atribut není transitivně závislý na žádném klíči schématu (viz obrázek 1) neboli je-li ne druhé normální formě a zároveň neexistuje jediná závislost neklíčových sloupců tabulky.
4. NF: tabulka je ve čtvrté normální formě, pokud sloupce (atributy) v ní obsažené popisují pouze jeden fakt nebo jednu souvislost.
5. NF: Tabulka je v páté normální formě, pokud je ve čtvrté a není možné do ní přidat nový sloupec (skupinu sloupců) tak, aby se vlivem skrytých závislostí rozpadla na několik dílčích tabulek.