Maturitní otázka č. 10
10. Databáze a jejich implementace v MySQL
1. Co je MySQL a kde se uplatňuje
MySQL je jeden z celosvětově nejpopulárnějších open-source systémů pro správu relačních databází (RDBMS). V současnosti je vyvíjen a podporován společností Oracle. Je známý svou obrovskou rychlostí, spolehlivostí a tím, že je k dispozici zdarma.
- Uplatnění: Své primární uplatnění nachází ve webových aplikacích. Je stěžejní součástí softwarového balíčku LAMP (Linux, Apache, MySQL, PHP). Většina populárních webových systémů jako jsou redakční systémy (WordPress, Joomla, Drupal), e-shopy, diskusní fóra a menší až střední podnikové informační systémy běží právě nad databází MySQL.
2. Databázový model v MySQL
V MySQL se uplatňuje výhradně Relační databázový model. Znamená to, že se všechna data fyzicky i logicky ukládají do tabulek skládajících se z řádků a sloupců, které propojujeme pomocí primárních a cizích klíčů za účelem dodržení referenční integrity (aby např. neexistovala objednávka přiřazená k neexistujícímu zákazníkovi). Přestože moderní verze MySQL umí okrajově ukládat i formát JSON (čímž se trochu dotýká NoSQL dokumentového modelu), jádro a hlavní síla systému zůstává striktně relační.
3. Architektura MySQL a jazyk
- Architektura Klient-Server: MySQL funguje na architektuře klient-server. "Server" (program mysqld) běží nepřetržitě na pozadí stroje (lokálního nebo na cloudu), spravuje fyzické přístupy na disk k datům a zajišťuje bezpečnost. "Klienti" (což může být příkazová řádka, grafický program jako phpMyAdmin nebo přímo program napsaný v PHP/Pythonu) se připojují k serveru přes síť, pošlou dotaz a server jim vrátí vyžádaná data.
- Používaný jazyk (SQL): Pro komunikaci mezi klientem a serverem se používá výhradně jazyk SQL (Structured Query Language). Tento jazyk se dělí na:
- - DDL (Data Definition Language): Příkazy definující strukturu databáze (CREATE TABLE, ALTER TABLE, DROP TABLE).
- - DML (Data Manipulation Language): Příkazy pro práci s daty (SELECT pro výběr, INSERT pro vložení, UPDATE pro úpravu, DELETE pro smazání).
4. Souvislost se souborovým systémem
Databázový systém (DBMS) neleží někde ve vzduchoprázdnu, ale v konečném důsledku musí využít běžný souborový systém operačního systému (např. NTFS ve Windows, ext4 v Linuxu). Rozdíl je v abstrakci.
Zatímco obyčejný uživatel by data ukládal do souboru zakaznici.txt a musel by sám programovat složité vyhledávání a řešit, co se stane, když soubor otevřou dva lidé naráz, SŘBD to dělá za něj. MySQL si na pevném disku vytvoří své vlastní binární soubory (např. využívající úložný engine InnoDB - soubory s koncovkou .ibd). Databázový server s těmito soubory manipuluje naprosto exkluzivně, udržuje nad nimi transakční logy a indexy pro rychlé vyhledávání. Programátor tak nikdy k datům nepřistupuje jako k souborům na disku, ale komunikuje výhradně abstraktně přes SQL dotazy. Souborový systém poskytuje úložný prostor pro bity a bajty, databázový systém tomuto prostoru dává logiku, formát a ochranu.
5. Základy práce v phpMyAdmin (Praktická část)
Závěrečná část je praktická ukázka v online grafickém prostředí phpMyAdmin, které slouží k vizuální správě MySQL databáze přes webový prohlížeč (odpadá nutnost psát příkazy do terminálu). Komisi je vhodné slovně popsat postup (a demonstrovat jej):
- Vytvoření databáze a tabulky: V levém panelu zvolíme "Nová". Databázi pojmenujeme např. "skola", zvolíme kódování utf8mb4_czech_ci (pro správné zobrazení české diakritiky). Následně vytvoříme tabulku "Zaci" o 3 sloupcích.
- Definice sloupců (struktura): První sloupec nazveme "id", typ INT, zaškrtneme A_I (Auto_Increment - samočíslování) a určíme jej jako Primární klíč (ikonka klíče). Druhý sloupec "jmeno", typ VARCHAR, délka např. 50. Třetí sloupec "vek", typ INT.
- Vkládání dat (INSERT): Přejdeme do záložky "Vložit" (Insert) v horním menu. ID nevyplňujeme (díky auto_increment se doplní samo), vyplníme jméno "Petr" a věk "18" a potvrdíme.
- Prohlížení dat (SELECT): Na záložce "Projít" (Browse) phpMyAdmin sám na pozadí spustí SQL dotaz "SELECT * FROM Zaci;" a zobrazí nám vložená data v přehledné mřížce.