NOVINKA: Kurz kybernetickej bezpečnosti teraz už od 0 €. Staň sa žiadaným profesionálom. Zisti viac:
NOVINKA: Staň sa dátovým analytikom od 0 € a získaj istotu práce, lepší plat a nové kariérne možnosti. Viac informácií:

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áza

Databázy sú komplexné aplikácie, ktoré najčastejšie fungujú ako služby. Databázy na rozdiel od jednoduchých dátových súborov umožňujú 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áza vs. súbory

Databázu môžeme chápať ako nadstavbu k súborom a slúži 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 jednoduchom súbore dosahovali len ťažko.

Dáta zo súborov možno do databázy importovať a naopak dáta z databázy možno vyexportovať 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. Sú tu však navyše 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.

MySQL databáza - Úvod do dátovej analýzy a obchodného rozhodovania

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, vzory 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, ktorá ukladá rôzne bankové kódy, názvy bánk a ich SWIFT kód:

MySQL tabuľka - Úvod do dátovej analýzy a obchodného rozhodovania

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žstvá, 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. v 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 narušila 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ľúč. Je to 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 vymazať, 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í ku každému záznamu číselné ID o 1 vyššie, než je ID predchádzajúceho záznamu.

V 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 produkty, riadok s produkt_id 847) teda patria do záhradného náradia (tabuľka kategorie, riadok s kategoria_id 786). ID 786 bude potom pre hrable cudzí kľúč 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í iba 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, teda 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). Najprv si ukážme vizuálny databázový diagram:

Úvod do dátovej analýzy a obchodného rozhodovania

Tabuľky

Náš e-shop bude mať iba 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 vykonané zákazníkmi.
  • ProduktyObjednavky – 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 Zakaznici

Stĺpec Dátový typ Popis
ZakaznikID INT primárny kľúč
Meno VARCHAR meno zákazníka
Priezvisko VARCHAR priezvisko zákazníka
Email VARCHAR e-mailová adresa
Telefon VARCHAR telefónne číslo
Adresa VARCHAR poštová adresa

Tabuľka Produkty

Stĺpec Dátový typ Popis
ProduktID INT primárny kľúč
Nazov VARCHAR názov produktu
Popis TEXT popis produktu
Cena DECIMAL aktuálna cena produktu
SkladovaZasoba INT počet kusov na sklade

Tabuľka Objednavky

Stĺpec Dátový typ Popis
ObjednavkaID INT primárny kľúč
ZakaznikID INT cudzí kľúč na Zákazníci
DatumObjednavky DATETIME dátum a čas objednávky
Stav VARCHAR stav objednávky (napr. 'Nová', 'Vybavená')

Tabuľka ProduktyObjednavky

Stĺpec Dátový typ Popis
ProduktyObjed­navkyID INT primárny kľúč
ObjednavkaID INT cudzí 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

Vzťahy medzi tabuľkami

A návrh databázy dokončime definíciou vzťahov.

  • Medzi tabuľkami Zakaznici a Objednavky 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ĺpca ZakaznikID v tabuľke Objednavky, ktorý obsahuje ID konkrétneho zákazníka (primárny kľúč ZakaznikID v tabuľke Zakaznici).
  • Objednavky a Produkty 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šia prepájacia tabuľka ProduktyObjednavky, kde sú uložené primárne kľúče položiek, ktoré sa prepájajú (ObjednavkaID a ProduktID). 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.

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, Data 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.


 

Predchádzajúci článok
Dátové formáty XML a SQL
Všetky články v sekcii
Úvod do dátovej analýzy a obchodného rozhodovania
Preskočiť článok
(neodporúčame)
Data Lifecycle a metódy zberu dát
Článok pre vás napísal Jan Rypáček
Avatar
Užívateľské hodnotenie:
1 hlasov
Jan Rypáček
Aktivity