4. diel - Databázy a tabuľky Nové
V predchádzajúcej lekcii, Štruktúrované a neštruktúrované údaje , sme sa zoznámili s rozdielmi medzi štruktúrovanými a neštruktúrovanými dátami a možnosťami ich kombinácie.
V tomto tutoriále 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, proces normalizácie a rôzne typy vzťahov medzi tabuľkami. Ďalej si ukážeme praktický príklad návrhu databázy pre e-shop a prehľad populárnych nástrojov pre prácu s databázami.
Databáza
Databázy sú komplexné aplikácie, ktoré najčastejšie fungujú ako služby. Na rozdiel od jednoduchých dátových súborov databázy dáta umožňujú 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 užívateľom súčasne
- prístup pod menom a heslom
- a ďalšie funkcie.
Databáza môžeme chápať ako nadstavbu nad súbormi a slúži na pokročilejšiu prácu s dátami. Môžeme do nej dáta zo súborov aj naimportovať alebo sa do nej dáta posielajú cez programovací jazyk. Môžete takto napr. dostať prístup do databázy e-shopu, kam sa noví používatelia vkladajú cez registračný formulár. Vďaka funkciám databázy nájde internetový obchod rýchlo užívateľa podľa emailu alebo produkt podľa jeho ID, pretože databáza si drží dáta vždy zoradené a nové položky si rýchlo zaradia tam, kam patria. Týchto funkcií by sme pri jednoduchom súbore len ťažko dosahovali.
Naopak databáza nie je vhodná v prípade, keď chceme niekomu poslať len určité dáta, v tom prípade ich z databázy prvýkrát vyexportujeme do súboru.
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 v tejto lekcii venovať.
Relačná databáza
Relačné databázy ukladajú dáta vo forme tabuliek s riadkami a stĺpcami, ako to poznáme napr. z Excelu. Sú tu však navyše definované vzťahy medzi jednotlivými tabuľkami (od toho názov relačný). Patria medzi ne napríklad MySQL, MS-SQL, Oracle alebo PostgreSQL. Budeme sa im potom 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é ľahko 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 pre ukladanie dát. Každá tabuľka predstavuje konkrétny objekt alebo entitu, napríklad zákazníkov, produkty alebo 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 (atribúty) a dátové typy
Stĺpce, nazývané niekedy aj atribúty, 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) a
- logické typy (napr. pravda/nepravda).
Riadky (záznamy)
Riadky, nazývané aj záznamy, obsahujú konkrétne údaje pre jednotlivé inštancie objektov definovaných v tabuľke. Každý riadok predstavuje jeden záznam s hodnotami pre každý stĺpec tabuľky. V príklade vyššie jeden riadok definuje kódy by Komerční banku, ďalší riadok pre ČSOB atď. Táto organizácia umožňuje efektívne ukladanie a vyhľadávanie informácií v databáze.
Kľúče v databázových tabuľkách
V relačných databázach sú kľúče zásadnými prvkami pre zaistenie integrity a prepojenie 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 viac 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, kedy databáza jednoducho priradí ku
každému záznamu číselné ID o 1 vyššie, než je ID záznamu
predchádzajúceho. Pri 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
Cudzie 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 a zaisťuje referenčnú integritu dát. Cudzie kľúče umožňujú prepojenie informácií naprieč rôznymi tabuľkami, čo uľahčuje komplexné otázky a analýzy.
Uveďme si príklad. V praxi takto môže mať napr. produkt uložené
ID kategórie, do ktorej patrí. Hrable (tabuľka
produkty
, riadok s produkt_id
847
) patria
do záhradného náradia (tabuľka kategorie
, riadok s
kategorie_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 medzi tabuľkami:
- Jedna ku 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. užívateľ a nastavenie. Každý uží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 produkt a objednávka, 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, 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.
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).
Tabuľky
Náš e-shop bude mať len 4 databázové tabuľky:
Zakaznici
: Ukladá informácie o registrovaných zákazníkoch.Produkty
: Obsahuje detaily o ponúkanom tovare.Objednavky
: Zaznamenáva jednotlivé objednávky uskutočnené zákazníkmi.PolozkyObjednavek
: Väzobná tabuľka, spájajúca objednávky s produktmi.
Stĺpce a dátové typy
Tabuľky budú mať nasledujúce stĺpce týchto typov:
Tabuľka Zakaznici
Stĺpec | Dátový typ | Popis |
---|---|---|
ZakaznikID | ITN | Primárny kľúč |
Meno | VARCHAR | Meno zákazníka |
Priezvisko | VARCHAR | Priezvisko zákazníka |
VARCHAR | Emailová adresa | |
Telefón | VARCHAR | Telefónne číslo |
Adresa | VARCHAR | Poštová adresa |
Produkty
Stĺpec | Dátový typ | Popis |
---|---|---|
ProduktID | INT | Primárny kľúč |
Nazov | VARCHAR | Názov produktu |
Popis | TEXT | Popis produktu |
Cena | DECIMAL | Cena produktu |
SkladovaZasoba | INT | Počet kusov na sklade |
Objednavky
Stĺpec | Dátový typ | Popis |
---|---|---|
ObjednávkaID | INT | Primárny kľúč |
ZakaznikID | INT | Cudzie kľúč na Zákazníci |
DátumObjednávky | DATETIME | Dátum a čas objednávky |
Stav | VARCHAR | Stav objednávky (napr. 'Nová', 'Vybavená') |
ProduktyObjednavky
Stĺpec | Dátový typ | Popis |
---|---|---|
ProduktyObjednavkyID | INT | Primárny kľúč |
ObjednávkaID | INT | Cudzie kľúč na Objednávky |
ProduktID | INT | Cudzí kľúč na Produkty |
Mnozstvo | INT | Počet objednaných kusov |
Cena | DECIMAL | Cena za jednotku v čase objednávky |
A návrh databázy dokončíme definíciou vzťahov.
- Medzi tabuľkami
Zakaznici
aObjednavky
bude klasický vzťah 1:N (jeden zákazník môže mať viac objednávok, jedna objednávka patrí vždy jednému zákazníkovi). Vzťah je realizovaný pomocou stĺpcaZakaznikID
v tabuľkeObjednavky
, ktorý obsahuje ID kokrétneho zákazníka (primárny kľúčZakaznikID
v tabuľkeZakaznici
). Objednavky
aProdukty
sú 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šie prepojovacie tabuľkyProduktyObjednavky
, kde sú uložené primárne kľúče položiek, ktoré sa prepájajú (ObjednavkaID
aProduktId
). Navyše tu máme množstvo a znovu cenu, pretože sa na objednávke môže líšiť od aktuálnej ceny produktu.
Nástroje pre prácu s databázami
Pre prácu s databázami existujú špecializované nástroje, ktoré uľahčujú ich návrh, správu a analýzu. Pre návrh databázových schém je možné využiť napríklad nástroje ako SqlDBM alebo Dbdesigner.net, ktoré umožňujú vizuálnu tvorbu databázových štruktúr. Pre správu databáz a prácu s dátami sú k dispozícii nástroje ako ManageEngine Applications Manager, DbVisualizer alebo Site24x7. Výber vhodných nástrojov závisí od konkrétnych potrieb projektu a používaného databázového systému.
Optimalizácia a zabezpečenie databázových tabuliek
Pre zabezpečenie efektívnej práce s dátami je dôležité dbať na optimalizáciu a zabezpečenie databázových tabuliek. Optimalizácia zahŕňa techniky ako správne indexovanie a efektívne nastavenie dátových typov. Zabezpečenie dát sa zameriava na implementáciu prístupových práv a používanie obmedzení (constraints) pre zaistenie integrity a konzistencie dát.
V ďalšej lekcii, Dáta Lifecycle a metódy zberu dát , sa zoznámime s procesom, ktorým prechádzajú dáta pri dátovej analýze, a priblížime si metódu zberu dát.