1. Co je databáze - účel a využití databází na webu
  2. Typy databází
  3. SQL (SELECT, INSERT, UPDATE, DELETE)
  4. Propojení databáze s webovými stránkami
  5. Použití databáze pro ukládání uživatelských dat (např. formuláře, uživatelské účty)

Co je databáze - účel a využití databází na webu

  • Databáze (neboli datová základna, též databanka) je systém souborů s pevnou strukturou záznamů. Tyto soubory jsou mezi sebou navzájem propojeny pomocí klíčů. V širším smyslu jsou součástí databáze i softwarové prostředky, které umožňují manipulaci s uloženými daty a přístup k nim.
  • Umožňuje uložení dat, rychlé vyhledávání dat, udržování dat ve strukturované podobě.

  • Využití databáze na webových stránkách:
    • Ukládání uživatelských dat - uživatelské účty, hesla, profilové informace a historii aktivit.
    • E-commerce a produkty - ukládání informací o produktech, ceny, skladem.
    • Správa obsahu (CMS) - informace o článcích, komentáře, uživatelské příspěvky.
    • Analýza a reporting - analýza uživatelského chování, sledování výkonu webových stránek, pro generování reportů (Google Analytics).

Typy databází

  • Relační databáze

    • Jsou jedním z nejběžnějších typů databází a jsou postaveny na relačním modelu, což znamená, že data jsou organizována do tabulek.
    • Každá tabulka se skládá z řádků a sloupců, kde každý řádek představuje jednu entitu (např. uživatele, produkt) a každý sloupec představuje konkrétní atribut této entity (např. jméno, cena, adresa).
    • Jsou vhodné pro aplikace, kde je potřeba pevně strukturovaných a propojených dat, jako jsou například bankovní systémy nebo e-shopy.
    • Pro práci s těmito daty se používá jazyk SQL (Structured Query Language), který umožňuje provádět operace jako výběr (SELECT), vložení (INSERT), aktualizace (UPDATE) a mazání (DELETE).
    • Například: MySQL, PostgreSQL, SQLite, Microsoft SQL Server nebo Oracle. center
  • NoSQL databáze

    • Narozdíl od relační databáze používá jiné prostředky než tabulková schémata.
    • NoSQL databáze jsou flexibilnější a mohou uchovávat data v různých formátech, jako jsou klíč-hodnota páry, dokumenty (např. JSON), nebo grafy.
    • Používají se tam kde je potřeba flexibilita a škálovatelnost, například pro big data nebo aplikace, které pracují s nestrukturovanými daty (sociální média, webové aplikace).

    • MongoDB
      • Jedna z nejpopulárnějších NoSQL databází, která uchovává data ve formátu dokumentů (obvykle ve formátu JSON). Každý dokument je samostatný záznam a může mít různorodé struktury, což z ní činí velmi flexibilní nástroj pro aplikace, které nevyžadují rigidní schéma 400|center
      • JSON: Formát pro ukládání strukturovaných dat ve formě textových dokumentů, často používán v kombinaci s NoSQL databázemi. Formát je lehký, snadno čitelný pro člověka a efektivní pro přenos dat mezi servery a webovými aplikacemi.
      • { 
        	"_id": 1,
        	"name": "Marcel Novák",
        	"email": "[email protected]"
        }

SQL (SELECT, INSERT, UPDATE, DELETE)

  • SQL (Structured Query Language) je zkratka pro standardizovaný strukturovaný dotazovací jazyk, který je používán pro práci s daty v relačních databázích.

  • Základní příkazy v SQL:

    • SELECT – výběr dat z databáze:
      -- Vybere sloupce jmeno a email ze všech řádků v tabulce zakaznici
      SELECT jmeno, email FROM zakaznici; 
    • INSERT – vložení nového záznamu:
      INSERT INTO zakaznici (jmeno, email)
      VALUES ('Marcel Novak', '[email protected]');
    • UPDATE – úprava existujícího záznamu:
      UPDATE zakaznici
      SET email = '[email protected]'
      WHERE id = 1; -- Aktualizuje email s id=1
    • DELETE – smazání záznamu:
      DELETE FROM zakaznici
      WHERE id = 1; -- Smaže zákazníka s id=1

Propojení databáze s webovými stránkami

  • Samotná webová stránka obvykle obsahuje pouze zobrazení (HTML, CSS, JavaScript), ale data, jako například seznam produktů, uživatelské účty nebo komentáře, jsou uložena v databázi.

  • Propojení databáze s webovou stránkou umožňuje, aby web nebyl pouze statický, ale byl dynamickým a interaktivním. Frontend odesílá požadavky, backend zajišťuje jejich zpracování a komunikuje s databází, kde se data ukládají nebo načítají. Celý proces je potřeba správně zabezpečit, aby byla chráněna jak funkčnost systému, tak osobní údaje uživatelů. center

  • Z čeho se propojení skládá?

    • Frontend
      • Frontend je část webu, kterou vidí uživatel. Většinou je vytvořen pomocí HTML, CSS a JavaScriptu. Frontend odesílá požadavky na server a zobrazuje výsledky.
    • Backend
      • Backend je část běžící na serveru. Zpracovává logiku aplikace, přijímá požadavky z webu, komunikuje s databází a vrací odpovědi zpět. Mezi běžné jazyky backendu patří PHP, Node.js, Python (Django, Flask), Java (Spring) nebo C# (.NET).
    • Databáze
      • K ukládání dat.



  • Jak probíhá komunikace?

    1. Uživatel odešle požadavek (např. registrace).
    2. Server požadavek přijme a zpracuje.
    3. Server odešle dotaz do databáze (např. vložení nového uživatele).
    4. Databáze vrátí odpověď (potvrzení nebo chybu).
    5. Server odpověď zpracuje a odešle ji zpět na web.
    6. Web zobrazí výsledek uživateli.

Použití databáze pro ukládání uživatelských dat (např. formuláře, uživatelské účty)

  • Když uživatel pracuje s webovou stránkou, například odesílá formulář, registruje se nebo si prohlíží seznam článků, stránka odesílá požadavek na server. Tento server má přístup k databázi, provede potřebnou operaci (například uloží data nebo načte informace) a výsledek vrátí zpět na webovou stránku.
  • Příkladem je registrační formulář. Když uživatel zadá své jméno, e-mail a heslo a odešle formulář, server uloží tyto informace do tabulky v databázi, například do tabulky users. Každý uživatel tam má svůj vlastní záznam (řádek), který obsahuje všechny potřebné údaje.
  • Při ukládání citlivých údajů, jako je například heslo, není bezpečné ukládat je přímo. Místo toho se heslo zahashuje pomocí speciálních algoritmů (např. bcrypt), aby nebylo možné jej zpětně snadno zjistit.

  • Jednoduchý příklad registračního formuláře:

    <?php
    // Pokud byl formulář odeslán
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
        // Připojení k databázi
        $servername = "localhost";
        $username = "root";
        $password = "";
        $database = "my_database";
     
        $conn = new mysqli($servername, $username, $password, $database);
     
        // Kontrola připojení
        if ($conn->connect_error) {
            die("Připojení selhalo: " . $conn->connect_error);
        }
     
        // Získání a ošetření dat z formuláře
        $name = $conn->real_escape_string($_POST['name']);
        $email = $conn->real_escape_string($_POST['email']);
     
        // Vložení dat do databáze
        $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
     
        if ($conn->query($sql) === TRUE) {
            echo "Data byla úspěšně uložena!";
        } else {
            echo "Chyba: " . $conn->error;
        }
     
        $conn->close();
    }
    ?>
     
    <!-- HTML formulář -->
    <form method="POST">
      <label for="name">Jméno:</label>
      <input type="text" id="name" name="name" required><br>
     
      <label for="email">E-mail:</label>
      <input type="email" id="email" name="email" required><br>
     
      <button type="submit">Odeslat</button>
    </form>