IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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 vs súbory

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.

Mysql databázy - Úvod do dátovej analýzy a obchodného rozhodovania - Ú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é ľ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:

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

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).
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á pre zaistenie integrity a konzistencie dát v databáze, ako aj pre efektívne ukladanie a spracovanie dát.

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.
Správne definovanie týchto vzťahov je kľúčové pre efektívny návrh databázy a zabezpečenie 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).

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.
V praxi by sa do samostatných tabuliek dostala ešte minimálne adresa, ale pre zjednodušenie ju uložíme k produktu.

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
Email VARCHAR Emailová adresa
Telefón 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 Cena produktu
SkladovaZasoba INT Počet kusov na sklade
Tabuľka 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á')
Tabuľka ProduktyObjednavky
Stĺpec Dátový typ Popis
ProduktyObjed­navkyID 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
Vzťahy medzi tabuľkami

A návrh databázy dokončíme 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 kokré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šie prepojovacie tabuľky 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.

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.


 

Predchádzajúci článok
Štruktúrované a neštruktúrované údaje
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