Maturitní otázka č. 9
9. Principy a využití databázových systémů
1. Co je databáze, složení, účel a použití
Databáze je systematicky organizovaná sbírka strukturovaných dat, která jsou uložena elektronicky v počítačovém systému. Umožňuje snadné vkládání, vyhledávání, aktualizaci a správu obrovského množství informací.
- Z čeho se skládá: Skládá se ze samotných fyzických dat (soubory na disku) a ze Systému Řízení Báze Dat (SŘBD / DBMS - např. MySQL, Oracle, MS SQL). SŘBD je software, který funguje jako prostředník mezi uživatelem (nebo aplikací) a samotnými daty.
- Proč se používá (Výhody): Oproti ukládání dat do textových souborů nebo běžného Excelu řeší databáze problémy s duplicitou dat (stejný údaj se zapisuje jen jednou), zajišťuje integritu a konzistenci (hlídá správnost dat), umožňuje souběžný přístup tisícům uživatelů najednou a poskytuje extrémně rychlé vyhledávání pomocí tzv. indexů.
2. Databázové modely
- Hierarchický model: Historicky nejstarší. Data jsou uspořádána ve stromové struktuře (jako složky na disku), vztahy typu rodič-potomek.
- Síťový model: Rozšíření hierarchického. Potomek může mít více rodičů (složité propletené sítě).
- Relační model: Dnes naprostý standard. Data jsou uložena v tabulkách, které jsou mezi sebou propojeny pomocí klíčů.
- Objektový model: Data se ukládají přímo jako objekty (ve smyslu OOP v programování).
- NoSQL modely (Dokumentové, Grafové): Moderní přístup pro Big Data. Např. MongoDB ukládá data jako JSON dokumenty místo striktních tabulek. Vhodné pro data, která nemají pevnou strukturu.
3. Relační databáze a základní pojmy
Relační databáze je postavena na matematické teorii množin a relací. Data jsou striktně organizována do logických celků – tabulek.
- Tabulka (Entita/Relace): Dvojrozměrná matice představující jeden konkrétní typ objektu reálného světa (např. tabulka ZAMĚSTNANCI).
- Sloupec (Atribut/Pole): Vlastnost dané entity (např. sloupec Jméno, Plat, Datum_narození). Každý sloupec má pevně definovaný datový typ (text, číslo, datum).
- Řádek (Záznam/N-tice): Představuje jeden konkrétní záznam dat v tabulce (jeden konkrétní zaměstnanec Karel Novák se všemi jeho údaji).
- Primární klíč (Primary Key / PK): Unikátní identifikátor každého řádku v tabulce. Nesmí se nikdy opakovat a nesmí být prázdný (NULL). Typicky jde o ID (číslo), Rodné číslo nebo SPZ auta.
- Cizí klíč (Foreign Key / FK): Sloupec v jedné tabulce, který odkazuje na primární klíč v JINÉ tabulce. Slouží k vytvoření vazby (relace) mezi tabulkami.
- Relace (Vztah): Vazba mezi daty ve dvou tabulkách. Typy vazeb jsou: 1:1 (např. Občan - Občanský průkaz), 1:N "Jedna ku N" (např. jedna Třída má mnoho Žáků) a M:N "M ku N" (např. mnoho studentů navštěvuje mnoho předmětů).
4. Model výpůjčního systému knihovny
Abychom efektivně ukládali data o čtenářích a knihách a věděli, kdo má co půjčené (vztah M:N - jeden čtenář si může půjčit více knih, jedna kniha může být půjčována více čtenářům v čase), musíme navrhnout tři tabulky. Třetí z nich je tzv. "Vazební tabulka", která rozkládá vazbu M:N na dvě vazby 1:N.
1) Tabulka CTENARI - id_ctenare (Primární klíč, např. číslo průkazky) - jmeno (text) - prijmeni (text) - email (text) 2) Tabulka KNIHY - id_knihy (Primární klíč, např. ISBN nebo interní ID) - nazev (text) - autor (text) - rok_vydani (číslo) 3) Tabulka VYPUJCKY (Vazební tabulka) - id_vypujcky (Primární klíč celé transakce) - id_ctenare (Cizí klíč, odkazuje na konkrétního čtenáře do tab. CTENARI) - id_knihy (Cizí klíč, odkazuje na konkrétní knihu do tab. KNIHY) - datum_od (datum půjčení) - datum_do (datum předpokládaného vrácení)
Logika vazeb: Pokud si Jan Novák (id_ctenare=1) půjčí knihu Harry Potter (id_knihy=50), do tabulky VYPUJCKY se vloží nový řádek s cizími klíči 1 a 50. Díky tomu databáze přesně ví, komu má poslat upomínku, a ušetřili jsme místo, protože jméno Jana Nováka nepíšeme přímo ke knize, ale je bezpečně uloženo v jeho vlastní tabulce.