označuje jako 1 : N. V tabulce výrobků může být číslo výrobku pouze jednou, kdežto v tabulce objednávek několikrát. Tabulka na straně 1 tvoří hlavní tabulku (anglicky parent table), tabulka na straně N propojenou tabulku (anglicky child table). Vztahy mezi tabulkami (označované jako relace) je možné do databáze trvale uložit. Relaci je výhodné vytvořit s tzv. referenční integritou. Použití referenční integrity zajistí, aby se záznamy v tabulkách vzájemně kontrolovaly, tedy aby se například nedala vytvořit objednávka pro neexistující výrobek. Pro vytvoření relace s referenční integritou je třeba, aby společné pole v hlavní tabulce tvořilo primární klíč a v propojené tabulce mělo regulární index. Společné pole v propojené tabulce se označuje jako cizí klíč. Relaci s referenční integritou vytvoříme tímto postupem: 1. Zobrazíme strukturu propojené tabulky. 2. Pod seznamem polí klepneme na příkaz Zobrazit relace. 3. Zvolíme propojené pole a v obou seznamech Interní relace a Omezení cizího klíče vybereme pole, v hlavní tabulce tvoří primární klíč. 4. V seznamech ON DELETE a ON UPDATE se nastaví automaticky volby RESTRICT, což znamená, že se relace vytvořila s referenční integritou. 5. Klepneme na tlačítko Proveď. Aby bylo možné vytvořit relaci s integritou, musí být splněny dvě podmínky: ◾◾ Data ve společných polích musí splňovat podmínky integrity, tedy společné pole v propojené tabulce nesmí obsahovat hodnotu, která není ve společném sloupci v hlavní tabulce. ◾◾ Společné sloupce musí mít stejný typ a délku (například u čísel nejde spojit typy INT a SMALLINT). Pokud nejsou tyto podmínky splněny, relace se sice vytvoří, ale bez integrity. Relace s vytvořenou referenční integritou omezuje práci s oběma tabulkami: ◾◾ Záznam vkládaný do propojené tabulky musí mít ve společném poli hodnotu, která existuje v primárním klíči nadřízené tabulky. ◾◾ Společné pole propojené tabulky lze přepsat pouze na hodnotu, která existuje v primárním klíči nadřízené tabulky. ◾◾ Společné pole nadřízené tabulky lze přepsat pouze tehdy, pokud pro hodnotu společného pole neexistují odpovídající záznamy v propojené tabulce. ◾◾ Záznam v nadřízené tabulce lze odstranit pouze tehdy, pokud pro hodnotu společného pole neexistují odpovídající záznamy v propojené tabulce.
4.1.13 Hodnota Null Při práci s tabulkovým kalkulátorem je běžné, že se prázdná buňka ve většině vzorců chápe jako nula. Obsah prázdné buňky a buňky se zapsanou nulou je kalkulátorem chápán stejně. U relačních databází včetně systému MySQL toto neplatí: do číselného pole není možně nic nezapsat nebo obsah pole zcela vymazat. Proto relační databáze umožňují vložit do většiny polí hodnotu Null, což znamená „nevím, neznámo“. Záznamy z tabulky je možné vybírat podle toho, zda je v některém poli hodnota Null nebo ne. Jestliže je hodnota Null zapsána v některém z číselných polí a toto pole použijeme při tvorbě vzorce, výsledkem výpočtu je vždy hodnota Null. Možnost zadávat hodnotu Null do pole není výchozí volbou. Aby to bylo možné, musíme u příslušného pole označit volbu Nulový.
98 Tvorba www stránek v HTML a CSS
Ukázka elektronické knihy, UID: KOS273348
4.1.14 Automatické číslo (Autoincrement) Některé z celočíselných polí můžeme upravit tak, aby se hodnoty do něj zadávaly automaticky. Provedeme to označením volby A_I. V tabulce může být jen jedno pole s autoinkrementem. Pole musí být indexované, nejvhodnější je toto pole nastavit jako primární klíč. Při vkládání nového záznamu se použije nejvyšší použitá hodnota plus jedna, hodnotu je možné dodatečně přepsat.
4.1.15 Výchozí hodnoty u nového záznamu Výchozí hodnotou textových polí je prázdný řetězec, u polí s kalendářními daty je to údaj typu „0000-00-00 00:00:00“. U číselných polí je výchozí hodnotou prázdná položka. Pokud se pokusíme uložit záznam s nevyplněnou číselnou hodnotou, zobrazí se chybové hlášení, avšak záznam se uloží a do číselného pole se zapíše nula. Tuto nepříjemnost můžeme odstranit tím, že jako výchozí hodnoty číselných polí nastavíme rovnou nuly. Při návrhu tabulky použijeme seznam Výchozí hodnota, vybereme volbu Dle zadání a v políčku pod seznamem zapíšeme nulu. Tímto postupem můžeme nastavit také nestandardní výchozí hodnotu. Pokud pole připouští hodnotu Null, výchozí hodnotu lze tímto postupem nastavit na NULL. U pole typu TIMESTAMP nastavíme výchozí hodnotu na volbu CURRENT_TIMEST. Tato volba zaručuje, že výchozí hodnotou je aktuální datum a čas.
4.2 Práce s tabulkami Pro práci s tabulkou ji nejprve označíme klepnutím v seznamu v levé části stránky. V tabulce je možné záznamy přidávat, upravovat a odstraňovat záznamy a také dodatečně měnit strukturu tabulky (příkaz Struktura). Všechny akce s tabulkou se provádí vygenerováním potřebného příkazu jazyka SQL. Vygenerovaný příkaz SQL se zobrazí na webové stránce PHP MyAdmin.
Obrázek 4.6 Přidání nového záznamu
Databázový systém MySQL 99
Ukázka elektronické knihy, UID: KOS273348
Přidání nového záznamu provedeme klepnutím na příkaz Vložit umístěný nahoře. Na další stránce vyplníme hodnoty pro jednotlivá pole. Desetinná čísla zapíšeme s desetinnou tečkou, kalendářní údaje zadáme ve tvaru „rok-měsíc-den“ s pomlčkami. Druhý způsob zadávání data je klepnout na tlačítko umístěné vlevo od položky s kalendářní hodnotou. Tlačítko zobrazí malé okno s kalendářem, které umožňuje datum pohodlně zadat. Vložení nového záznamu je třeba potvrdit pomocí tlačítka Proveď. Pro úpravu hotového záznamu můžeme použít dva postupy: ◾◾ U záznamu klepneme na ikonu s obrázkem tužtičky. Tím se zobrazí stejná stránka jako při vkládání nového záznamu, ale s vyplněnými hodnotami. Po provedení potřebných úprav klepneme na tlačítko Proveď. ◾◾ Hodnotu v některém poli můžeme také upravit pomocí poklepání přímo v poli. ◾◾ Úprava hodnoty se uloží klepnutím na jiný záznam, provedenou změnu můžeme stornovat klávesou Esc. Pro odstranění záznamu klepneme na ikonu s obrázkem „zákaz vjezdu“ a potvrdíme zobrazený kontrolní dotaz. U jednotlivých záznamů jsou vlevo umístěny zaškrtávací fajfky. Označení více záznamů však neznamená možnost editovat nebo odstraňovat více záznamů najednou; tyto akce se vždy provedou se záznamem, u kterého jsme klepli na potřebnou ikonu. Vložení hodnoty Null do záznamu provedeme označením volby Null v malém okénku (při editaci hodnoty přímo dvojklikem). Pokud upravujeme celý záznam nebo vkládáme záznam nový, označíme volbu Nulový, která je umístěna vlevo od políčka s hodnotou. Po uložení záznamu se v poli objeví zápis Null. Vložení hodnoty Null je vždy třeba provést popsaným způsobem. V textovém poli je sice možné vymazat uloženou hodnotu, ale po uložení záznamu není v poli uložena hodnota Null, ale prázdný textový řetězec.
4.2.1 Další akce s tabulkami S označenou tabulkou můžeme také pracovat jako s celkem. K tomu slouží příkaz Úpravy, kterým se zobrazí nová stránka. S celou tabulkou můžeme provádět především tyto akce: ◾◾ Zkopírování dat do nové tabulky: v pravé části stránky vyplníme název nové tabulky a klepneme na tlačítko Proveď. ◾◾ Vyprázdnění tabulky, tedy smazání všech záznamů (TRUNCATE). ◾◾ Odstranění tabulky z databáze (DROP). Při vyprázdnění a odstranění tabulky je zapotřebí potvrdit kontrolní dotaz.
4.3 Jednoduchý příkaz SELECT Jestliže chceme provést nějaký příkaz jazyka SQL, použijeme v nabídce příkaz SQL. Do zobrazeného textového okna zapíšeme kód příkazu a klepneme na tlačítko Proveď. Když je příkaz v pořádku, databázový systém jej provede a na stránce se zobrazí výsledek příkazu. Pokud je příkaz zapsán chybně, objeví se chybové hlášení. Při tvorbě příkazu SQL nezáleží na tom, jaká tabulka v databázi je momentálně označena.
100 Tvorba www stránek v HTML a CSS Ukázka elektronické knihy