Databáze neboli datová základna (Data Base) je místo, kam se ukládají určitým způsobem organizované a strukturované údaje. Přístup k údajům uložených v databázi obstarává databázový systém, kterému se říká SŘBD - Systém Řízení Báze Dat (anglický termín DBMS - DataBase Management Systém). Běžně se označením databáze myslí jak uložená data, tak i software.
Důležité pojmy v souvislosti s databázemi
Data jsou údaje, které mají určitou vypovídací schopnost
Data mohou být určitým způsobem uspořádány (seřazeny, např. podle velikosti, chronologicky atd.) a jsou uživateli k dispozici v různých formách (tabulky, grafy, zvukové signály, grafická forma atd.). Data jsou obvykle rozdělena na dílčí údaje (atributy) o dané množině objektů, na základě nichž lze získat určitou informaci, která může vést k rozhodovacímu procesu.
Datové entity - objekty v databázi (tabulky, indexy, procesy, pohledy, atd.)
- textový typ - znakový řetězec, zpravidla do max. délky 255 znaků
- číselný typ - pro uložení celých a reálných čísel s pevnou i plovoucí desetinnou čárkou
- logický typ - pro uložení logické hodnoty Ano/Ne (True/False)
- datumový typ - pro uložení datumu nebo datumu a času
Atribut neboli tako položka je jednotlivý sloupec v tabulce (např. jméno, příjmení, adresa, rodné číslo)
Záznamem označujeme jednotlivý řádek v tabulce (např. Petr Novák; Palackého 65, Turnov; 8970612/3615)
Primární klíč je atribut, jehož hodnota je pro každý záznam jedinečná (vhodným primárním klíčem je např. rodné číslo, neboť to má každý občan České republiky jedinečné)
Cizí klíč slouží pro vyjádření vztahů (relací) mezi databázovými tabulkami. Umožňuje nám identifikovat, které záznamy z různých tabulek spolu navzájem souvisí.
Integrita databáze
Integrita databáze znamená, že data v ní uložená jsou konzistentní vůči definovaným pravidlům. Lze zadávat pouze data, která vyhovují předem definovaným kriteriím (např. musí respektovat datový typ nastavený pro daný sloupec tabulky, či další omezení hodnot přípustných pro daný sloupec). K zajištění integrity slouží integritní omezení. Jedná se o nástroje, které zabrání vložení nesprávných dat či ztrátě nebo poškození stávajících záznamů v průběhu práce s databází. Například je možné zajistit mazání dat, která již ztratila svůj význam - například smažeme-li uživatele, odstraní se i zbytek jeho záznamů v ostatních databázových tabulkách.
Druhy integritních omezení
- Entitní integritní omezení – povinné integritní omezení, které zajišťuje úplnost primárního klíče tabulky (zamezí uložení dat, jež by v těchto polích byla stejná jako v nějakém jiném řádku tabulky)
- Doménová integritní omezení – zajišťují dodržování datových typů/domén definovaných u sloupců databázové tabulky
- Referenční integritní omezení – zabývají se vztahy dvou tabulek, kde jejich relace je určena vazbou primárního a cizího klíče
- Aktivní referenční integrita – definuje činnosti, které databázový systém provede, pokud jsou porušena některá pravidla
Dodržování integritních omezení
V zásadě existují tři způsoby, jak zajistit dodržování integritních omezení.
1. Umístění jednoduchých mechanismů pro dodržování integritních omezení na straně databázového serveru
- jedná se o nejlepší způsob z hlediska ochrany dat- uživateli však obvykle přináší delší odezvu systému a nelze vždy zajistit jejich přenositenost na jiný databázový systém
2. Umístění ochranných mechanismů na straně klienta
- pro komfort a nezávislost na databázovém systému je nejlepší volbou- nutnost kontrolních mechanismů pro každou operaci může způsobit chyby u aplikací a v případě většího počtu aplikací je potřeba je opravit na více místech
3. Samostatné programové moduly na straně serveru
- v moderních databázových systémech jsou pro tento účel implementovány tzv. triggery = samostatné procedury, které lze spouštět automatizovaně před a po operacích manipulujících s daty- tento způsob umožňuje implementaci i složitých integritních omezení
- nevýhody opět přináší provádění na serveru i velmi omezená možnost přenesení na jiný databázový systém
Ideálním řešením je kombinace předchozích v závislosti na konkrétních podmínkách. Kontroly integritních omezení se zpravidla provádějí po každé provedené operaci, což snižuje nároky na server. Není nutno nijak zaznamenávat, které kontroly mají být provedeny později. Složitější integritní omezení však vždy nelze takto ověřit, proto je možné kontrolovat dodržení pravidel až po dokončení celé transakce.
Vztahy mezi tabulkami
Relace slouží ke svázání dat, která spolu souvisejí a jsou umístěny v různých databázových tabulkách. V zásadě rozlišujeme čtyři typy vztahů.
- mezi daty v tabulkách není žádná spojitost, proto nedefinujeme žádný vztah
- 1:1 (záznamu odpovídá právě jeden záznam v jiné databázové tabulce a naopak)
- 1:N (přiřazuje jednomu záznamu více záznamů z jiné tabulky)
- jedná se o nejpoužívanější typ relace, jelikož odpovídá mnoha situacím v reálném životě - M:N (umožňuje několika záznamům z jedné tabulky přiřadit několik záznamů z tabulky druhé)
- tento vztah bývá z praktických důvodů nejčastěji realizován kombinací dvou vztahů 1:N a 1:M, které ukazují do pomocné, tzv. vazební tabulky složené z kombinace obou použitých klíčů
Normální formy
Pod pojmem normalizace rozumíme proces zjednodušování a optimalizace navržených struktur databázových tabulek. Hlavním cílem je navrhnout databázové tabulky tak, aby obsahovaly minimální počet redundantních dat. Správnost navržení struktur lze ohodnotit některou z následujících normálních forem.
Nultá normální forma (0NF)
- tabulka obsahuje alespoň jeden sloupec (atribut), který může obsahovat více druhů hodnotPrvní normální forma (1NF)
- všechny sloupce tabulky nelze dále dělit na části nesoucí nějakou informaci -> prvky musí být atomické- jeden sloupec neobsahuje složené hodnoty.