Zatím jsme pracovali s jednou tabulkou. Jenže skutečná síla databáze je v tom, že data rozdělíte do více tabulek, které se propojí. Právě tahle „párovost" dala databázím jméno – říká se jim relační, od slova relace (vztah). A dotaz, který tabulky spojí dohromady, se jmenuje JOIN.
Proč vůbec víc tabulek
Představte si, že u každého produktu uložíme kategorii jako text přímo do tabulky produkty. U stovky produktů byste slovo „Příslušenství" napsali klidně padesátkrát. A když ho budete chtít přejmenovat, musíte opravit všech padesát řádků – a stačí jeden překlep a máte v datech zmatek.
Lepší je kategorie uložit jednou do vlastní tabulky a v produktech se na ni jen odkázat číslem:
| id | nazev |
|---|---|
| 1 | Příslušenství |
| 2 | Monitory |
| id | nazev | kategorie_id |
|---|---|---|
| 1 | Klávesnice | 1 |
| 2 | Monitor 24" | 2 |
Propojení přes id
Sloupec kategorie_id v produktech ukazuje na id v tabulce kategorií. Klávesnice má kategorie_id = 1, což je „Příslušenství". Tomuhle odkazu se říká cizí klíč – je to ta nitka, která obě tabulky spojuje. Kategorii pak přejmenujete na jednom jediném místě a projeví se u všech produktů.
JOIN – spojení tabulek v jednom dotazu
Když chcete vypsat produkty rovnou s názvem kategorie (ne jen s číslem), spojíte obě tabulky příkazem JOIN a řeknete, podle čeho se mají spárovat:
SELECT produkty.nazev, produkty.cena, kategorie.nazev
FROM produkty
JOIN kategorie ON produkty.kategorie_id = kategorie.id;
Klíčová je část ON produkty.kategorie_id = kategorie.id – přesně ta říká, které řádky k sobě patří. Výsledek spojí data z obou tabulek do jedné:
| produkt | cena | kategorie |
|---|---|---|
| Klávesnice | 790 | Příslušenství |
| Monitor 24" | 4990 | Monitory |
produkty. a kategorie., dejte tabulkám zkratku: FROM produkty p JOIN kategorie k ON p.kategorie_id = k.id. Pak stačí psát p.nazev a k.nazev.A tohle je ta „párovost"
Přesně v tomhle je databáze jiná než obyčejná tabulka v Excelu: data si rozložíte do více tabulek, aby se neopakovala, a pomocí klíčů je zase podle potřeby spojíte. Čím větší web, tím víc se to vyplatí – e-shop má tabulky pro produkty, kategorie, objednávky i zákazníky a všechny jsou propojené.
Jak dál: SQL + PHP
Teď umíte tabulku vytvořit, naplnit, číst z ní, měnit data i spojovat tabulky. Na opravdovém webu ale tyhle dotazy nepíše člověk ručně – spouští je PHP, které výsledek vezme a vypíše do HTML stránky. To je poslední dílek skládačky a zaslouží si vlastní návod: jak se z PHP k databázi bezpečně připojit a dotazy spouštět tak, aby web nešlo zneužít. Na ten se podíváme příště.
Všechny návodyNechcete web řešit sami a chcete ho mít hotový a profesionální?
Podívejte se na tvorbu webů →© Ondřej Šteigl. Autorem návodů jsem já. Obsah je autorským dílem chráněným podle zákona č. 121/2000 Sb. (autorský zákon). Kopírování, přebírání nebo šíření bez mého předchozího písemného souhlasu je zakázáno. Výukové použití je vítáno – stačí uvést zdroj (osteigl.cz).