NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Lekce 4 - Databáze a tabulky Nové

V předchozí lekci, Strukturovaná a nestrukturovaná data, jsme se seznámili s rozdíly mezi strukturovanými a nestrukturovanými daty a možnostmi jejich kombinace.

V tomto tutoriálu si představíme databáze. Zaměříme se na základní strukturu databázových tabulek, jejich klíčové funkce, jako jsou primární a cizí klíče, různé datové typy a typy vztahů mezi tabulkami. Dále si ukážeme praktický příklad návrhu databáze pro e-shop.

Databáze

Databáze jsou komplexní aplikace, které nejčastěji fungují jako služby. Na rozdíl od prostých datových souborů databáze data umožňují nejen ukládat, ale také:

  • efektivně vyhledávat
  • měnit databázovou strukturu
  • kontrolovat správné vyplnění dat
  • minimalizovat duplikaci
  • bezpečný přístup více uživatelům současně
  • přístup pod jménem a heslem
  • a další funkce.

Databáze vs. soubory

Databáze můžeme chápat jako nástavbu nad soubory a slouží pro pokročilejší práci s daty. Díky funkcím databáze najde např. internetový obchod rychle uživatele podle emailu nebo produkt podle jeho ID, protože databáze si drží data vždy seřazená a nové položky si rychle zařadí tam, kam patří. Těchto funkcí bychom u prostého souboru jen těžko dosahovali.

Data ze souborů lze do databáze importovat a naopak data z databáze lze vyexportovat do souborů.

Typy databází

Podle typu můžeme databáze rozdělit na relační (tabulkové) a NoSQL (např. grafové nebo objektové). Pro datovou analýzu jsou klíčové relační databáze, kterým se budeme v této lekci věnovat.

Relační databáze

Relační databáze ukládají data ve formě tabulek s řádky a sloupci, jako to známe např. z Excelu. Jsou zde ovšem navíc definovány vztahy mezi jednotlivými tabulkami (od toho název relační). Patří mezi ně například MySQL, MS-SQL, Oracle nebo PostgreSQL. Budeme se jim poté podrobněji věnovat v celém samostatném kurzu.

Mysql databáze - Úvod do datové analýzy a obchodního rozhodování

Propojení databází s analytickými nástroji

Relační databáze jsou často propojeny s analytickými nástroji, jako jsou Tableau, Microsoft Power BI nebo specializované statistické programy. Toto propojení umožňuje vizualizaci a hlubší analýzu dat uložených v tabulkách. Díky tomu je možné snadno identifikovat trendy, vzorce a anomálie, což je klíčové pro informované rozhodování.

Tabulka

V relačních databázích jsou tabulky základními strukturami pro ukládání dat. Každá tabulka představuje konkrétní objekt nebo entitu, například zákazníky, produkty či objednávky. Tabulky jsou tvořeny sloupci a řádky. Tato struktura umožňuje efektivní organizaci a správu dat.

Níže vidíme databázovou tabulku bank_code ukládající různé bankovní kódy, názvy bank a jejich SWIFT kód:

Mysql tabulka - Úvod do datové analýzy a obchodního rozhodování

Sloupce a datové typy

Sloupce představují jednotlivé vlastnosti nebo charakteristiky ukládaných objektů. Každý sloupec má jedinečný název a je definován konkrétním datovým typem, který určuje povahu ukládaných hodnot. Mezi běžné datové typy patří:

  • textové typy (např. jména, popisy),
  • číselné typy (např. množství, ceny),
  • datum a čas (např. datum narození, čas objednávky) a
  • logické typy (např. pravda/nepravda).

Databáze pak sama hlídá, aby se do sloupce nemohl uložit jiný typ. Např. u příkladu výše by při pokusu o uložení textu do číselného kódu banky databáze vyvolala chybu a zabránila uložení celého řádku. Získáváme tím jistotu, že se omylem neuloží chybná hodnota, která by pokazila integritu dat. Správná volba datových typů pro sloupce je klíčová pro zajištění integrity a konzistence dat.

Řádky (záznamy)

Řádky obsahují konkrétní data objektů uložených v tabulce. Každý řádek představuje jeden záznam a v jednotlivých sloupcích jsou zapsané jeho atributy.

V příkladu výše jeden řádek definuje kódy pro Komerční banku, další řádek pro ČSOB atd.

Klíče v databázových tabulkách

V relačních databázích jsou klíče zásadními prvky pro zajištění integrity a propojení dat mezi tabulkami. Klíčem je jeden nebo více sloupců, jejichž hodnoty jednoznačně identifikují záznamy v tabulce nebo vytvářejí vazby mezi různými tabulkami. Použití klíčů umožňuje efektivní organizaci, vyhledávání a správu dat.

Primární klíče

Každá tabulka má obvykle jeden primární klíč. To je sloupec nebo kombinace sloupců, které jednoznačně identifikují každý záznam v tabulce. V databázi totiž můžeme mít typicky více Janů Nováků a když chceme nějakého smazat, musíme je rozlišit. Hodnoty primárního klíče musí být jedinečné a nesmí být prázdné. Velmi často se používají umělé primární klíče, kdy databáze jednoduše přiřadí ke každému záznamu číselné ID o 1 vyšší, než je ID záznamu předchozího.

U příkladu výše vidíme, že k tomuto účelu slouží sloupec bank_code_id. Definování primárního klíče zajišťuje integritu dat a umožňuje efektivní vyhledávání a manipulaci s daty.

Cizí klíče

Cizí klíč je sloupec nebo sada sloupců v jedné tabulce, které odkazují na primární klíč v jiné tabulce. Tento odkaz vytváří vztah mezi dvěma tabulkami.

Uveďme si příklad. V praxi takto může mít např. produkt uložené ID kategorie, do které patří. Tedy hrábě (tabulka produkty, řádek s produkt_id 847) patří do zahradního nářadí (tabulka kategorie, řádek s kategorie_id 786). ID 786 bude potom pro hrábě cizím klíčem do tabulky kategorií. Databáze pak díky nastavení cizího klíče na úrovni tabulek sama hlídá, aby kategorie s ID 786 existovala a hrábě nemohly patřit do neexistující kategorie.

Vztahy mezi tabulkami

V relačních databázích existují tři základní typy vztahů:

  • Jedna ku jedné (1:1): Každý záznam v první tabulce odpovídá přesně jednomu záznamu ve druhé tabulce a naopak. Tento typ vztahu se používá, když je potřeba rozdělit data do dvou tabulek z důvodu bezpečnosti nebo pro lepší organizaci. Příkladem může být např. uživatel a nastavení. Každý uživatel má jedno nastavení, ale jedná se o dvě samostatné tabulky.
  • Jedna ku mnoha (1:N): Jeden záznam v první tabulce může být spojen s více záznamy ve druhé tabulce. Tento vztah je nejběžnější a příkladem může být vztah mezi zákazníky a jejich objednávkami. Jeden zákazník má více objednávek. Jedna objednávka však vždy patří jen jednomu zákakzníkovi.
  • Mnoho ku mnoha (M:N): Záznamy v jedné tabulce mohou být spojeny s více záznamy v druhé tabulce a naopak. Příkladem může být vztah mezi produktem a objednávkou, kde každý produkt může patřit do více objednávek a každá objednávka může mít více produktů. Tento vztah se implementuje pomocí třetí, spojovací tabulky, která v každém řádku obsahuje po jednom cizím klíči z obou propojovaných tabulek. Příklad si ukážeme níže.

Správné definování těchto vztahů je klíčové pro efektivní návrh databáze a zajištění její integrity.

Návrh databáze pro e-shop

Pro lepší pochopení struktury databázových tabulek a jejich vzájemných vztahů si představme jednoduchý model databáze pro internetový obchod (e-shop).

Tabulky

Náš e-shop bude mít jen 4 databázové tabulky:

  • Zakaznici: Ukládá informace o registrovaných zákaznících.
  • Produkty: Obsahuje detaily o nabízeném zboží.
  • Objednavky: Zaznamenává jednotlivé objednávky provedené zákazníky.
  • ProduktyObjednavky: Vazební tabulka, propojující objednávky s produkty.

V praxi by se do samostatných tabulek dostala ještě minimálně adresa, ale pro zjednodušení ji uložíme k produktu.

Sloupce a datové typy

Tabulky budou mít následující sloupce těchto typů:

Tabulka Zakaznici

Sloupec Datový typ Popis
ZakaznikID ITN Primární klíč
Jmeno VARCHAR Jméno zákazníka
Prijmeni VARCHAR Příjmení zákazníka
Email VARCHAR Emailová adresa
Telefon VARCHAR Telefonní číslo
Adresa VARCHAR Poštovní adresa

Tabulka Produkty

Sloupec Datový typ Popis
ProduktID INT Primární klíč
Nazev VARCHAR Název produktu
Popis TEXT Popis produktu
Cena DECIMAL Aktuální cena produktu
SkladovaZasoba INT Počet kusů na skladě

Tabulka Objednavky

Sloupec Datový typ Popis
ObjednavkaID INT Primární klíč
ZakaznikID INT Cizí klíč na Zákazníci
DatumObjednavky DATETIME Datum a čas objednávky
Stav VARCHAR Stav objednávky (např. 'Nová', 'Vyřízená')

Tabulka ProduktyObjednavky

Sloupec Datový typ Popis
ProduktyObjed­navkyID INT Primární klíč
ObjednavkaID INT Cizí klíč na Objednávky
ProduktID INT Cizí klíč na Produkty
Mnozstvi INT Počet objednaných kusů
Cena DECIMAL Cena za jednotku v době objednávky

Vztahy mezi tabulkami

A návrh databáze dokončeme definicí vztahů.

  • Mezi tabulkami Zakaznici a Objednavky bude klasický vztah 1:N (jeden zákazník může mít více objednávek, jedna objednávka patří vždy jednomu zákazníkovi). Vztah je realizován pomocí sloupce ZakaznikID v tabulce Objednavky, který obsahuje ID kokrétního zákazníka (primární klíč ZakaznikID v tabulce Zakaznici).
  • Objednavky a Produkty jsou propojeny vztahem M:N (jedna objednávka může obsahovat více produktů a jeden produkt může patřit do více objednávek). Je zde tedy využito další propojovací tabulky ProduktyObjednavky, kde jsou uložené primární klíče položek, které se propojují (ObjednavkaID a ProduktId). Navíc zde máme množství a znovu cenu, protože se na objednávce může lišit od aktuální ceny produktu.

Tento model umožňuje efektivní ukládání informací o zákaznících, produktech a jejich objednávkách, přičemž minimalizuje redundanci dat a zajišťuje jejich integritu.

Práci s databázemi si vyzkoušíme prakticky ve specializovaném kurzu.

V další lekci, Data Lifecycle a metody sběru dat, se seznámíme s procesem, kterým procházejí data při datové analýze, a přiblížíme si metodu sběru dat.


 

Předchozí článek
Strukturovaná a nestrukturovaná data
Všechny články v sekci
Úvod do datové analýzy a obchodního rozhodování
Přeskočit článek
(nedoporučujeme)
Data Lifecycle a metody sběru dat
Článek pro vás napsal Jan Rypáček
Avatar
Uživatelské hodnocení:
1 hlasů
Jan Rypáček
Aktivity