Databáze v geoinformatice I.
Mgr. Michal Jakl
ZS 2026
Obsah lekce
Praktické cvičení: Zprovoznění softwaru pro práci na cvičeních
1. Představení předmětu
„Mám nadrceno!“ vs. „Umím (o tom) přemýšlet“
1. Cíle a obsah
Podmínky pro absolvování předmětu
Semestrální úkol - FÁZE 1
Semestrální úkol - FÁZE 2
Semestrální úkol - speciální potřeby
Semestrální úkol - hodnocení
Závěrečný písemný test
2. Představení vyučujícího
strasidlov.cz
mjakl.cz
povestialegendy.cz
3. Představení studentů
4. Databáze obecně
Neorganizovaná data
Organizovaná data
„Kolik mám triček?“
„Který talíř je nejšpinavější?“
„Mám ještě v šuplíku dost místa?“
„Mám patery hnědé kalhoty, nebo jich mám méně?“
„Kde jsou moje ponožky?“
„Kolik děr má moje nejstarší košile?“
4. Co je to databáze?
4. Co je to databáze?
Databáze je organizovaný soubor strukturovaných informací neboli dat, které se obvykle ukládají v elektronické podobě v počítačovém systému. Databáze je obvykle řízena systémem pro správu databáze (DBMS – database management system). Data a systém DBMS společně s přidruženými aplikacemi se označují jako databázový systém, často zkráceně jako databáze.
Data v nejběžnějších typech současných databází jsou obvykle modelována jako řada tabulek složených z řádků a sloupců, což umožňuje efektivní zpracování a vytváření dotazů. Je tak zajištěn snadný přístup k datům, správa, úpravy, aktualizace, řízení a organizace dat. Většina databází používá k zadávání dat a vytváření dotazů dotazovací jazyk SQL (structured query language).
Zdroj: https://www.oracle.com/cz/database/what-is-database/
Data + metadata + SŘBD
Databáze (neboli datová základna, též databanka) je systém souborů s pevnou strukturou záznamů. Tyto soubory jsou mezi sebou navzájem propojeny pomocí klíčů. V širším smyslu jsou součástí databáze i softwarové prostředky, které umožňují manipulaci s uloženými daty a přístup k nim. Tento software se v české odborné literatuře nazývá systém řízení báze dat (SŘBD). Běžně se označením databáze – v závislosti na kontextu – myslí jak uložená data, tak i software (SŘBD).
Zdroj: https://cs.wikipedia.org/wiki/Datab%C3%A1ze
4. Databáze vs. soubor
Běžný soubor (TXT, Excel)
🐌 Pomalé hledání (musí se číst celý od začátku).
🔒 Problém se zápisem (jeden zapisuje, ostatní čekají).
🗑️ Zmatek v datech (do sloupce s věkem lze napsat "jahoda").
Relační databáze (SQL)
⚡ Extrémní rychlost (používá chytrou křížovou evidenci – indexy).
👥 Souběžnost (tisíce uživatelů čtou a zapisují ve stejnou chvíli).
🛡️ Integrita a vztahy (hlídá, že nesmažete rodiče, pokud existuje dítě).
🔑 Bezpečnost (přístup lze omezit i na jediný konkrétní sloupec).
💡 Zajímavost: Nejrozšířenější databáze světa (SQLite) je paradoxně jen jeden soubor. Přesto je to plnohodnotná databáze. Právě teď jich máte ve svém mobilu, prohlížeči nebo autě ukrytých několik desítek!
4. Databáze vs. tabulkový procesor
Tabulkový procesor (Excel)
🧑💻 Pro lidi: Skvělý pro rychlé vizualizace, grafy a ruční výpočty.
🥣 Vše v jednom: Mixuje dohromady data, vzorce i barvičky.
📉 Omezený objem: Nad 1 milion řádků Excel začíná padat.
🔗 Křehké vazby: Propojení tabulek (např. přes SVYHLEDAT) se snadno "rozbije".
Databáze (SQL)
🤖 Pro aplikace: Skrytý "motor", který pohání weby a programy na pozadí.
🧱 Čistota: Uchovává striktně jen data. Vzhled a výpočty řeší až aplikace.
📈 Obrovská data: Zpracuje miliardy záznamů a nezapotí se.
⛓️ Pevné vztahy (Cizí klíče): Nemůžete smazat fakturu, pokud je na ní navázaná platba.
💡 Zajímavost: Odhaduje se, že desítky procent firem po celém světě tajně řídí svůj byznys na sdíleném Excelu, o kterém si myslí, že je to databáze. Zjistí, že není, většinou až v den, kdy do něj chtějí zapisovat tři lidi najednou a celý soubor se nenávratně poškodí.
4. Databázová integrita
Databázová integrita (Základní mantinely)
🛡️ Hlídač smysluplnosti: Zaručuje, že data jsou přesná a platná (do věku nezadáte text, věk nebude záporný).
🔑 Entitní integrita: Každý záznam musí mít svůj unikátní identifikátor (Primární klíč). V databázi nesmí být dva absolutně totožní, k nerozeznání stejní studenti.
Referenční integrita (Vztahy mezi tabulkami)
⛓️ Zákaz "sirotků": Záznam v jedné tabulce nesmí odkazovat na něco, co už neexistuje.
❌ Při vkládání dat: Systém vás nenechá zapsat docházku studentovi, který vůbec neexistuje v databázi studentů.
🗑️ Při mazání dat: Nemůžete smazat předmět, dokud k němu existují termíny a docházky. (Systém buď zahlásí chybu, nebo vše promazává automaticky tzv. kaskádově).
💡 Zajímavost: Ztráta referenční integrity v IT by byla katastrofa. Kdyby banky nepoužívaly tyto "cizí klíče", mohly by vaše peníze při převodu odejít z vašeho účtu, ale "přistát" na účtu s ID, které už někdo smazal. Peníze by nenávratně zmizely v digitálním vzduchoprázdnu. Databáze díky integritě takovou transakci raději okamžitě stornuje.
4. Kdy ukládat do databáze
Výhody:
Nevýhody:
5. Historie vývoje databází
Herman Hollerith (1891):
"Nikdo vám to už nespočítá rychleji!"
5. Historie vývoje databází
Zdroj: https://www.oracle.com/cz/database/what-is-database/
Thomas Watson (IBM), 1943:
"Nemyslím si, že by na celosvětovém trhu byla poptávka po více než pěti počítačích."
6. Proč se zajímat o databáze?
💾 Z počítačů jsou "přesouvače": Počítače už dávno nedělají složitou matematiku. Zhruba 95 % dnešních aplikací (od TikToku po banky) v podstatě jen čte a zapisuje data z databáze.
🛢️ Nová ropa 21. století: Nejcennějším majetkem firem už není hardware, ale data. Kdo je umí efektivně uložit a bleskově v nich hledat, ten na trhu vyhrává.
📈 Exploze informací: Objem zpracovávaných dat se zhruba každý rok až dva zdvojnásobí. Bez databázových systémů bychom se v tom chaosu doslova utopili.
💰 Snová kariéra a byznys: Poptávka po lidech (znalost SQL) neustále roste a trh s databázemi má dnes hodnotu už přes 100 miliard USD.
💡 Zajímavost: Říká se, že 90 % všech dat, která kdy v historii lidstva vznikla, byla vytvořena za poslední 2 roky. Pokud byste chtěli stáhnout všechna data, která se na světě vyprodukují za jeden jediný rok, na běžné domácí Wi-Fi by vám to trvalo necelé 2 miliardy let. Bez špičkových databází se zkrátka lidstvo už neobejde.
6. Proč se zajímat o databáze?
6. Systém řízení databáze (SŘBD)
🌉 Prostředník (Most): SŘBD nejsou samotná data na disku, ale specializovaný software, který sedí mezi vámi (nebo vaší aplikací) a těmi uloženými daty.
🧹 Špinavá práce na pozadí: Vy (nebo programátor) jen napíšete "ukaž mi seznam studentů". SŘBD řeší zbytek – kde přesně na pevném disku jsou, jak je přečíst co nejrychleji a jak nezabrat celou paměť serveru.
🚦 Bezpečnostní semafor: Funguje jako nekompromisní hlídač. Řídí, kdo má k jakým datům přístup, tvoří zálohy a řídí "provoz", aby dva uživatelé ve stejnou mikrosekundu nepřepsali ten samý záznam.
🗄️ Kdo vládne trhu: Mezi ty nejznámější SŘBD patří MySQL, PostgreSQL, Oracle, nebo Microsoft SQL Server.
💡 Zajímavost: Jeden z nejznámějších SŘBD (Oracle) začal vznikat v roce 1977 s kódovým označením "Project Oracle". A kdo byl první klient? Americká zpravodajská služba CIA. Šlo o první komerční software svého druhu a z jeho tvůrce (Larryho Ellisona) udělal jednoho z nejbohatších lidí planety.
6. Databázový systém
🧩 Kompletní balíček: Když se řekne "databázový systém", nemyslí se tím už jen data samotná nebo jen software. Jde o celý živý organismus, který spolupracuje.
🧮 Základní rovnice: Databázový systém = Data + SŘBD (software) + Hardware (servery) + Aplikace + Lidé.
🧑💻 Lidský faktor: Součástí systému jsou i jeho uživatelé. Od Databázových administrátorů (DBA), kteří systém ladí a opravují, až po běžného uživatele (např. studenta klikajícího v IS).
🖥️ Železo (Hardware): Aby systém zvládal obrovský tlak, spoléhá na brutální hardware – specializované servery obvykle nacpané na doraz rychlou pamětí (RAM) a extrémně rychlými SSD disky.
Co by databázový systém měl umět?
Protože databázový systém musí dennodenně pracovat s opravdu početným skupenstvím perzistentních dat, tak na něj jsou kladeny jisté nároky, které by měl pro práci s daty snadno zvládat. Jako např.:
• podpora pro definice datového modelu (např. relační nebo logický)
• využití některého z jazyků (SQL, QBE atd.) vyšší úrovně pro manipulaci dat
• správu transakcí
• autentizaci uživatelů a autorizaci operací nad datami
• robustnost a zotavitelnost po chybách bez ztráty dat
6. Jak správně vybrat databázi?
🛠️ Nástroj, nikoliv cíl: Databáze nesmí být vybírána podle toho, co je zrovna "cool" nebo "moderní". Je to jen nástroj – přesné stanovení požadavků aplikace je absolutní základ.
⚖️ Umění kompromisu: Neexistuje dokonalá databáze. Vždy něco obětujete. Rychlost na úkor bezpečnosti, výkon na úkor peněz. Musíte znát své vnitřní (technické) i vnější (firemní) potřeby.
💸 Skrytá past peněz: Samotná databáze může být ke stažení zdarma (okamžitý náklad = 0). Ale platy expertů, údržba a provoz (dlouhodobé náklady) mohou firmu finančně zruinovat.
🔄 Přenositelnost (Vendor lock-in): Co když firma vyroste a budeme muset přejít na úplně jiný systém nebo jiný serverový hardware?
💡 Zajímavost: V IT existuje obávaný termín "Vendor lock-in" (uzamčení u dodavatele). Stává se to, když si firma špatně vybere databázi a napíše s ní aplikaci tak "napevno", že pozdější přechod na levnější/lepší řešení je nereálný. Známým příkladem byl Amazon – trvalo mu dlouhé roky a obrovské úsilí (tzv. kampaň Roll Your Own), než se dokázal odstřihnout od gigantických a drahých databází Oracle a přejít na svá vlastní (cloudová) řešení.
6. Licencování databází
⚖️ Komerční (Placené): Oracle, MS SQL. Jsou robustní, ale extrémně drahé.
🔓 Open-Source (Volné): PostgreSQL, MariaDB. Zdarma ke stažení, kód je veřejný.
🪤 Duální licence: Zdarma pro jednotlivce, pro firmy (nebo za expertní podporu) tvrdě placené (např. MySQL).
💻 Per-Core platby: Neplatíte za "jednu instalaci", ale astronomické částky za každé jádro procesoru v serveru.
☁️ Cloud (DBaaS): Moderní trend. Nekupujete licenci, databázi si jen "pronajímáte" a platíte přesně podle propáleného výkonu.
💡 Zajímavost: Licence Oracle pro jeden jediný průměrný server (16 jader) může firmu vyjít na více než 10 milionů Kč ročně. To je hlavní důvod obrovského útěku firem k open-source databázím.
6. Komerční vs. opensource modely
Komerční (Oracle, MS SQL Server)
📞 Garance a Podpora: Platíte si jistotu. Když se ve 3 ráno systém zhroutí, máte na drátě oficiální experty.
🚀 Krvavé inovace: Jako první na trh často přinášejí ty nejpokročilejší korporátní funkce.
📦 Černá skříňka: Uzavřený kód. Nevidíte dovnitř, musíte 100% důvěřovat výrobci.
Open-source (PostgreSQL, MariaDB)
🔓 Naprostá volnost: Kód je veřejný, chyby rychle opravuje celosvětová komunita. Můžete si ho upravit podle sebe.
💰 Žádné licence: Ušetříte miliony na poplatcích, platíte jen platy vlastním vývojářům a adminům.
⚠️ Chybí "přítel na telefonu": Nemáte garanci podpory. Když systém spadne, jste na to sami (nebo si musíte zaplatit drahou externí firmu).
💡 Zajímavost: Univerzitní projekt, do kterého nedává peníze žádná konkrétní korporace, přesto válcuje komerční giganty. Open-source databáze PostgreSQL je dnes i přes svůj akademický původ všeobecně považována za vůbec technologicky nejpokročilejší relační databázi na světě.
6. Nejlepší databázová platforma
Špatně položená otázka -> Vždy nás zajímá konkrétní nasazení
6. Trendy současného vývoje
☁️ Z vlastního železa do Cloudu: Konec vlastních serveroven. Databáze se pronajímají na pár kliknutí u Amazonu, Googlu či Microsoftu (DBaaS – Database as a Service).
📁 Vzestup NoSQL: Tabulky už na všechno nestačí. Pro obrovská nestrukturovaná data nebo sociální sítě se používají databáze dokumentové (MongoDB) či grafové (Neo4j).
🤖 Vektorové databáze (kvůli AI): Absolutní hit dneška. Ukládají texty jako číselné souřadnice (vektory). Díky tomu umělá inteligence (např. ChatGPT) dokáže chápat kontext a ne jen přesná slova.
⏸️ Serverless ("Bez serveru"): Databáze, která se automaticky "uspí", když na web nikdo nechodí. Firma pak neplatí vůbec nic a platí jen za konkrétní desetiny vteřiny při zátěži.
💡 Zajímavost: Když vám dnes Netflix doporučí film, nepoužije klasickou (tabulkovou) databázi. Na tu by byl výpočet "kdo má s kým podobný vkus" příliš pomalý. Místo toho používá grafové databáze, které umí najít vazby mezi stovkami milionů diváků a filmů doslova za zlomek vteřiny.
7. Architektury
📱 Jednovrstvá (Lokální): Aplikace i databáze běží pospolu na jednom stroji. Příkladem jsou mobilní aplikace, které si svá data drží uvnitř vašeho telefonu.
🖥️ Dvouvrstvá (Client-Server): Starší přístup. Uživatel (klient) se po síti připojuje přímo k databázovému serveru. Dnes se to kvůli bezpečnosti používá už jen u vnitrofiremních aplikací.
🌐 Třívrstvá (Webová): Dnešní absolutní standard. Uživatel klikne na webu -> Aplikace na serveru to zpracuje -> ta se teprve ptá Databáze. Uživatel k databázi napřímo vůbec nesmí.
🌍 Distribuovaná architektura: Databáze není jen na jednom počítači. Je "rozsekaná" na kousky (sharding) nebo zrcadlena napříč stovkami serverů po celém světě.
💡 Zajímavost: Proč se gigantické databáze (třeba u Googlu nebo Mety) "sekají" na kousky a distribuují po celém světě? Nejen kvůli tomu, abyste na fotku nečekali sekundu navíc, ale i kvůli právu. Distribuovaná architektura dnes zajišťuje, že data Evropanů leží fyzicky na serverech v Evropě a podléhají GDPR, zatímco zbytek světa leží jinde.
7. Paralelní přístup
🚦 Největší oříšek IT: Co se stane, když si dva zákazníci v e-shopu koupí poslední kus iPhonu v naprosto stejnou mikrosekundu? Databáze to musí spravedlivě vyřešit.
🔒 Zamykání (Locking): Jakmile první zákazník klikne na nákup, databáze konkrétní řádek s iPhonem "zamkne". Druhý zákazník je plynule odsunut do fronty a musí zlomek vteřiny počkat.
📦 Transakce (Všechno, nebo nic): Zápis do databáze nelze "seknout" napůl. Převod peněz (strhnutí z účtu A + připsání na účet B) se buď provede stoprocentně celý, nebo se stornuje jako by se nic nestalo.
👻 Ochrana před "Špinavým čtením": Zabraňuje tomu, aby systém vypsal jednomu uživateli data (např. zůstatek peněz), která zrovna někdo jiný upravuje a ještě je nepotvrdil.
💡 Zajímavost: Zamykání může způsobit legendární chybu zvanou Uváznutí (Deadlock). Představte si, že transakce A zamkne tabulku X a čeká na uvolnění tabulky Y. Transakce B ale mezitím zamkla tabulku Y a čeká na X. Obě transakce by na sebe čekaly až do konce vesmíru. Dnešní databáze to umí odhalit – obětují se a jednu z transakcí raději "zastřelí".
7. Transakce
📦 Logický balíček: Transakce není jen jeden SQL příkaz. Je to sada úkonů (např. strhni peníze, připiš peníze, ulož poplatek), se kterou se ale pracuje jako s jedním nedělitelným celkem.
Spolehlivá databáze musí splňovat vlastnosti ACID:
A (Atomicity - Nedělitelnost): Všechno, nebo nic. Buď se do puntíku provedou všechny kroky balíčku, nebo se databáze vrátí do původního stavu (Rollback). Nic napůl.
C (Consistency - Konzistence): Po dokončení transakce musí zůstat systém v "legálním" stavu (nesmí chybět žádné povinné vztahy a cizí klíče).
I (Isolation - Izolovanost): Přestože běží tisíce transakcí naráz, nesmí si "koukat pod ruce". Každá transakce běží ve vlastní bublině.
D (Durability - Trvalost): Jakmile systém nahlásí "Potvrzeno", je to vytesáno do kamene. I kdyby vzápětí vypadl proud v celé budově, po zapnutí tam ta data budou.
7. ☺ vs. ☹
Jak databáze řeší, když si dva lidé chtějí ve stejnou chvíli upravit stejný řádek?
Pesimistický přístup ("Pro jistotu to rovnou zamknu")
🔒 Databáze předpokládá, že ke konfliktu určitě dojde.
Jakmile si pan A otevře záznam pro úpravu, řádek se uzamkne. Pan B má smůlu a musí čekat (nebo smí jen číst), dokud pan A neuloží.
➕ Výhoda: 100% jistota, nevznikají kolize.
➖ Nevýhoda: Zdržuje to provoz, uživatelé na sebe stojí virtuální fronty.
Optimistický přístup ("Ono to nějak dopadne")
🕊️ Databáze věří, že uživatelé si do práce "nelezou". Nikomu nic nezamyká.
Pan A i pan B si otevřou záznam naráz. Databáze zasáhne až při uložení – zkontroluje "číslo verze". Kdo uloží první (A), vyhrál.
➕ Výhoda: Extrémní rychlost, žádné zámky, systém běží plynule.
➖ Nevýhoda: Pan B při uložení dostane chybu: "Data mezitím změnil někdo jiný", a musí svou práci dělat znovu.
💡 Zajímavost: Kde se co používá? Pesimistické zamykání potkáte v bance při převodu peněz nebo v rezervačním systému letenek, kde nesmí vzniknout ani milisekunda pochybností. Optimistické naopak vládne na webu – třeba při úpravě textu na Wikipedii nebo v redakčních systémech.
7. Výmaz vs. archivace
Zatímco záloha vás zachrání před průšvihem, archivace vás chrání před pomalou databází a kontrolou z finančáku.
Záloha (Backup) = Záchranný kruh
🚨 Účel: Bleskové obnovení provozu po havárii (hacker, omylem smazaná tabulka, shořelý disk).
🔄 S jakými daty pracuje: Kopíruje živá a aktuální data, se kterými lidé právě teď pracují.
⏱️ Životnost: Krátkodobá. Zálohy rotují – staré se neustále mažou a přepisují novějšími (např. držíme stav posledních 7 dnů).
Archivace = Historická knihovna
🏛️ Účel: Zákonné požadavky (např. účetnictví), prokazatelnost a pročištění systému.
🧹 S jakými daty pracuje: Bere stará a "mrtvá" data (např. uzavřený ročník předmětu) a odklidí je pryč na velmi levný a pomalý disk. V živé databázi se následně smažou, díky čemuž se systém enormně zrychlí.
⏱️ Životnost: Dlouhodobá (roky až desítky let). Soubory se jen čtou, nikdy se nepřepisují.
💡 Zajímavost: Když zaútočí zákeřný virus (tzv. ransomware), zašifruje systém tak potichu, že noční automatická Záloha vám pak může bohužel "pečlivě" zazálohovat už zcela zničená data. Proto velké firmy uplatňují svaté pravidlo zvané 3-2-1: Tři kopie dat, uložené na dvou různých typech médií, z čehož minimálně jedna kopie musí být fyzicky odpojená od internetu.
8. Filozofie databází – základní pojmy
JAK NA TO?
login je student@ujep.cz
heslo je student
ZALOŽENÍ PROSTORU PRO STUDENTA
Na doma
Založené vlastní databázové schéma ve sdílené PostgreSQL databázi!
Děkuji za pozornost a těším se příště!��Prostor pro zpětnou vazbu
mail@mjakl.cz
Tel. 608 544 839
Web: mjakl.cz