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

MySQL databázy - Ú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, 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:

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ž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:

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

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
Email 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 Customers a Orders bude 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ĺpca CustomerID v tabuľke Orders, ktorý obsahuje ID konkrétneho zákazníka (primárny kľúč CustomerID v tabuľke Customers).
  • Orders a Products 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 OrderItems, kde sú uložené primárne kľúče položiek, ktoré sa prepájajú (OrderID a ProductID). 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.


 

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)
Dáta Lifecycle a metódy zberu dát
Článok pre vás napísal Jan Rypáček
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Jan Rypáček
Aktivity