Michal Čihař - Relace aneb ušetřete si práci

Relace aneb ušetřete si práci

Relace jsou mocným nástrojem ve světě databází, které nám umožní udržovat konzistentní tabulky, které na sebe navzájem odkazují. MySQL podporu pro relace má jen pro některá úložiště a pokud používáme výchozí MyISAM, tak jsme o tuto možnost ochuzeni. Nicméně phpMyAdmin přesto umožní relace mezi tabulkami používat díky vlastnímu zpracování relací.

Pokud nepoužíváte úložiště podporující relace, je potřeba pro používání internách relací mít v phpMyAdminovi nastaveno používání rozšířených možností . Pokud relace vaše úložiště přímo podporuje (například InnoDB), můžete bez obav tuto část pro tuto chvíli přeskočit, ale přijdete o jiné zajímavé funkce, které jsou na relace navázány a o kterých budu psát v některém dalším článku.

Relace určuje vztah mezi dvěma sloupci v tabulkách. phpMyAdmin stejně tak jako většina relačních databází podporuje přímo jen relace 1:N, relace N:N musí být prováděny přes pomocnou mapovací tabulku.

Vytváření relací je velmi jednoduché – stačí na vlastnostech tabulky kliknout na odkaz Zobrazit relace a dostaneme se na jednoduchou stránku, která nám umožní relace upravit . V horní části můžeme definovat vztahy mezi sloupci, v dolní potom sloupec, který phpMyAdmin zobrazí, pokud budete procházet tabulku, která odkazuje na nějaký řádek z aktuální tabulky. Pro klasické tabulky obsahující identifikátor (na který bude druhá tabulka odkazovat) a například jméno tedy logicky vybereme jméno.

V čem nám zadání relací usnadní práci? Při vkládání nové položky máme na výběr z hodnot v odkazované tabulce, při procházení si můžeme rovnou otevřít odkazovaný řádek a v neposlední řadě nám na stránce s operacemi přibyde odkaz na kontrolu integrity. To je bohužel také nevýhoda interních relací, phpMyAdmin nemůže vynucovat korektní editaci databáze a proto může dojít k vytvoření odkazů na neexistující položky.

Tento problém je možné vyřešit jen podporou na úrovni MySQL serveru, tedy použitím úložiště, které toto přímo podporuje, například InnoDB. Ta nám nabídne kromě možnosti výběru sloupce i operace, které se mají provést při vymazání a aktualizaci sloupce, ostatně podívejte se sami . Tím MySQL bude vynucovat integritu všech tabulek a budeme mít o starost méně.

Nativní relace v MySQL jsou podporovány na stejné úrovni jako ty interní phpMyAdmina, takže veškeré funkce můžete používat při obou možnostech. Kromě pomocí při editaci a procházení nám správně nadefinované relace můžou usnadnit i generování dokumentace, ale o tom až někdy příště.