7. diel - Databázy a tabuľky
V minulej lekcii, Dátové formáty XML a SQL, sme sa venovali najrozšírenejším formátom pre dátovú analýzu - XML a SQL.
V tomto tutoriáli si predstavíme databázy. Zameriame sa na základnú štruktúru databázových tabuliek, ich kľúčové funkcie, ako sú primárne a cudzie kľúče, rôzne dátové typy a typy vzťahov medzi tabuľkami. Ďalej si ukážeme praktický príklad návrhu databázy pre e-shop.
Databázy
Databázy sú komplexné aplikácie, ktoré najčastejšie fungujú ako služby. Na rozdiel od obyčajných dátových súborov umožňujú databázy dáta nielen ukladať, ale aj:
- efektívne vyhľadávať,
- meniť databázovú štruktúru,
- kontrolovať správne vyplnenie dát,
- minimalizovať duplikáciu,
- bezpečný prístup viacerým používateľom súčasne,
- prístup pod menom a heslom,
- ďalšie funkcie.
Databázy vs. súbory
Databázy môžeme chápať ako nadstavbu k súborom a slúžia na pokročilejšiu prácu s dátami. Vďaka funkciám databázy môže napr. internetový obchod rýchlo nájsť používateľa podľa e-mailu alebo produkt podľa jeho ID, pretože databáza si drží dáta vždy zoradené a nové položky si rýchlo zaradí tam, kam patria. Tieto funkcie by sme pri obyčajnom súbore dosahovali len veľmi ťažko.
Dáta zo súborov je možné do databázy importovať a naopak dáta z databázy je možné exportovať do súborov.
Typy databáz
Podľa typu môžeme databázy rozdeliť na relačné (tabuľkové) a NoSQL (napr. grafové alebo objektové). Pre dátovú analýzu sú kľúčové relačné databázy, ktorým sa budeme venovať v tejto lekcii.
Relačné databázy
Relačné databázy ukladajú dáta vo forme tabuliek s riadkami a stĺpcami, ako to poznáme napr. z Excelu. Navyše sú tu definované vzťahy medzi jednotlivými tabuľkami (odtiaľ názov relačné). Patria medzi ne napríklad MySQL, MS-SQL, Oracle alebo PostgreSQL. Tým sa budeme podrobnejšie venovať v celom samostatnom kurze.
Prepojenie databáz s analytickými nástrojmi
Relačné databázy sú často prepojené s analytickými nástrojmi, ako sú Tableau, Microsoft Power BI alebo špecializované štatistické programy. Toto prepojenie umožňuje vizualizáciu a hlbšiu analýzu dát uložených v tabuľkách. Vďaka tomu je možné jednoducho identifikovať trendy, vzorce a anomálie, čo je kľúčové pre informované rozhodovanie.
Tabuľka
V relačných databázach sú tabuľky základnými štruktúrami na ukladanie dát. Každá tabuľka predstavuje konkrétny objekt alebo entitu, napríklad zákazníkov, produkty či objednávky. Tabuľky sú tvorené stĺpcami a riadkami. Táto štruktúra umožňuje efektívnu organizáciu a správu dát.
Nižšie vidíme databázovú tabuľku bank_code, ukladajúcu
rôzne bankové kódy, názvy bánk a ich SWIFT kód:

Stĺpce a dátové typy
Stĺpce predstavujú jednotlivé vlastnosti alebo charakteristiky ukladaných objektov. Každý stĺpec má jedinečný názov a je definovaný konkrétnym dátovým typom, ktorý určuje povahu ukladaných hodnôt. Medzi bežné dátové typy patria:
- textové typy (napr. mená, popisy),
- číselné typy (napr. množstvo, ceny),
- dátum a čas (napr. dátum narodenia, čas objednávky),
- logické typy (napr. pravda/nepravda).
Databáza potom sama stráži, aby sa do stĺpca nemohol uložiť iný typ. Napr. pri príklade vyššie by pri pokuse o uloženie textu do číselného kódu banky databáza vyvolala chybu a zabránila uloženiu celého riadka. Získavame tým istotu, že sa omylom neuloží chybná hodnota, ktorá by pokazila integritu dát. Správna voľba dátových typov pre stĺpce je kľúčová na zaistenie integrity a konzistencie dát.
Riadky (záznamy)
Riadky obsahujú konkrétne dáta objektov uložených v tabuľke. Každý riadok predstavuje jeden záznam a v jednotlivých stĺpcoch sú zapísané jeho atribúty.
V príklade vyššie jeden riadok definuje kódy pre Komerční banku, ďalší riadok pre ČSOB atď.
Kľúče v databázových tabuľkách
V relačných databázach sú kľúče zásadnými prvkami na zaistenie integrity a prepojenia dát medzi tabuľkami. Kľúčom je jeden alebo viac stĺpcov, ktorých hodnoty jednoznačne identifikujú záznamy v tabuľke alebo vytvárajú väzby medzi rôznymi tabuľkami. Použitie kľúčov umožňuje efektívnu organizáciu, vyhľadávanie a správu dát.
Primárne kľúče
Každá tabuľka má zvyčajne jeden primárny kľúč. To je stĺpec alebo kombinácia stĺpcov, ktoré jednoznačne identifikujú každý záznam v tabuľke. V databáze totiž môžeme mať typicky viacero Jánov Novákov, a keď chceme nejakého zmazať, musíme ich rozlíšiť. Hodnoty primárneho kľúča musia byť jedinečné a nesmú byť prázdne. Veľmi často sa používajú umelé primárne kľúče, keď databáza jednoducho priradí každému záznamu číselné ID o 1 vyššie, než je ID predchádzajúceho záznamu.
Na príklade vyššie vidíme, že na tento účel slúži stĺpec
bank_code_id. Definovanie primárneho kľúča zaisťuje integritu
dát a umožňuje efektívne vyhľadávanie a manipuláciu s dátami.
Cudzie kľúče
Cudzí kľúč je stĺpec alebo sada stĺpcov v jednej tabuľke, ktoré odkazujú na primárny kľúč v inej tabuľke. Tento odkaz vytvára vzťah medzi dvoma tabuľkami.
Uveďme si príklad. V praxi takto môže mať napr. produkt
uložené ID kategórie, do ktorej patrí. Hrable (tabuľka
products, riadok s product_id 847) teda
patria do záhradného náradia (tabuľka category, riadok s
category_id 786). ID 786 bude potom pre
hrable cudzím kľúčom do tabuľky kategórií. Databáza potom vďaka
nastaveniu cudzieho kľúča na úrovni tabuliek sama stráži, aby kategória s
ID 786 existovala a hrable nemohli patriť do neexistujúcej
kategórie.
Vzťahy medzi tabuľkami
V relačných databázach existujú tri základné typy vzťahov:
- Jedna k jednej (1:1): Každý záznam v prvej tabuľke zodpovedá presne jednému záznamu v druhej tabuľke a naopak. Tento typ vzťahu sa používa, keď je potrebné rozdeliť dáta do dvoch tabuliek z dôvodu bezpečnosti alebo pre lepšiu organizáciu. Príkladom môže byť napr. používateľ a nastavenie. Každý používateľ má jedno nastavenie, ale ide o dve samostatné tabuľky.
- Jedna k mnohým (1:N): Jeden záznam v prvej tabuľke môže byť spojený s viacerými záznamami v druhej tabuľke. Tento vzťah je najbežnejší a príkladom môže byť vzťah medzi zákazníkmi a ich objednávkami. Jeden zákazník má viac objednávok. Jedna objednávka však vždy patrí len jednému zákazníkovi.
- Mnoho k mnohým (M:N): Záznamy v jednej tabuľke môžu byť spojené s viacerými záznamami v druhej tabuľke a naopak. Príkladom môže byť vzťah medzi produktom a objednávkou, kde každý produkt môže patriť do viacerých objednávok a každá objednávka môže mať viac produktov. Tento vzťah sa implementuje pomocou tretej, konkrétne spojovacej tabuľky, ktorá v každom riadku obsahuje po jednom cudzom kľúči z oboch prepájaných tabuliek. Príklad si ukážeme nižšie.
Správne definovanie týchto vzťahov je kľúčové pre efektívny návrh databázy a zaistenie jej integrity.
Návrh databázy pre e-shop
Pre lepšie pochopenie štruktúry databázových tabuliek a ich vzájomných vzťahov si predstavme jednoduchý model databázy pre internetový obchod (e-shop). Najskôr si ukážme vizuálny databázový diagram:

Tabuľky
Náš e-shop bude mať len 4 databázové tabuľky:
Customers– Ukladá informácie o registrovaných zákazníkoch.Products– Obsahuje detaily o ponúkanom tovare.Orders– Zaznamenáva jednotlivé objednávky vytvorené zákazníkmi.OrderItems– Väzbová tabuľka, ktorá prepája objednávky s produktmi.
V praxi by sa do samostatných tabuliek dostala ešte minimálne adresa, ale pre zjednodušenie ju uložíme k zákazníkovi.
Stĺpce a dátové typy
Tabuľky budú mať nasledujúce stĺpce týchto typov:
Tabuľka Customers
| Stĺpec | Dátový typ | Popis |
|---|---|---|
| CustomerID | INT | primárny kľúč |
| FirstName | VARCHAR | meno zákazníka |
| LastName | VARCHAR | priezvisko zákazníka |
| VARCHAR | e-mailová adresa | |
| Phone | VARCHAR | telefónne číslo |
| Address | VARCHAR | poštová adresa |
Tabuľka Products
| Stĺpec | Dátový typ | Popis |
|---|---|---|
| ProductID | INT | primárny kľúč |
| Name | VARCHAR | názov produktu |
| Description | TEXT | popis produktu |
| Price | DECIMAL | aktuálna cena produktu |
| StockQuantity | INT | počet kusov na sklade |
Tabuľka Orders
| Stĺpec | Dátový typ | Popis |
|---|---|---|
| OrderID | INT | primárny kľúč |
| CustomerID | INT | cudzí kľúč na Customers |
| OrderDate | DATETIME | dátum a čas objednávky |
| Status | VARCHAR | stav objednávky (napr. 'Nová', 'Vybavená') |
Tabuľka OrderItems
| Stĺpec | Dátový typ | Popis |
|---|---|---|
| OrderItemID | INT | primárny kľúč |
| OrderID | INT | cudzí kľúč na Orders |
| ProductID | INT | cudzí kľúč na Products |
| Quantity | INT | počet objednaných kusov |
| Price | DECIMAL | cena za jednotku v čase objednávky |
Vzťahy medzi tabuľkami
A návrh databázy dokončíme definíciou vzťahov.
- Medzi tabuľkami
CustomersaOrdersbude klasický vzťah 1:N (jeden zákazník môže mať viac objednávok, jedna objednávka vždy patrí jednému zákazníkovi). Vzťah je realizovaný pomocou stĺpcaCustomerIDv tabuľkeOrders, ktorý obsahuje ID konkrétneho zákazníka (primárny kľúčCustomerIDv tabuľkeCustomers). OrdersaProductssú prepojené vzťahom M:N (jedna objednávka môže obsahovať viac produktov a jeden produkt môže patriť do viacerých objednávok). Je tu teda využitá ďalšia prepájacia tabuľkaOrderItems, kde sú uložené primárne kľúče položiek, ktoré sa prepájajú (OrderIDaProductID). Navyše tu máme množstvo a znovu cenu, pretože sa v objednávke môže líšiť od aktuálnej ceny produktu.
Tento model umožňuje efektívne ukladanie informácií o zákazníkoch, produktoch a ich objednávkach, pričom minimalizuje redundanciu dát a zaisťuje ich integritu.
Prácu s databázami si vyskúšame prakticky v špecializovanom kurze.
V ďalšej lekcii, Dáta Lifecycle a metódy zberu dát, sa zoznámime s procesom, ktorým dáta prechádzajú pri dátovej analýze, a priblížime si metódy zberu dát.
