Distančně.cz

Heslo

Pro odemknutí videa použíjte heslo:

Kliknutím zkopírovat a přejít k videu.

Zkopírováno ✓

Referenční integrita

Referenční integrita je nástroj, který pomáhá udržovat vztahy v relačně propojených databázových tabulkách. Jednoduše řečeno to znamená, že cizí klíč v jedné tabulce musí odkazovat na existující klíč ve druhé tabulce, popř. musí obsahovat hodnotu NULL.

Tabulka, v níž je pravidlo uvedeno, se nazývá podřízená tabulka a tabulka, jejíž jméno je v omezení uvedeno, je nadřízená tabulka.

Jak se projevuje referenční integrita

  • Při přidání či změně záznamu v podřízené tabulce se kontroluje, zda stejná hodnota klíče existuje v nadřízené tabulce – porušení pravidla vyvolá chybu.
  • Při mazání nebo úpravě záznamů v nadřízené tabulce se kontroluje, zda v podřízené tabulce není záznam se stejnou hodnotou klíče – porušení pravidla může vyvolat chybu nebo předem definovanou úpravu dat podřízené tabulky.

Omezení cizího klíče

Omezení cizích klíčů nabízí způsob pro udržení referenční integrity databáze. V MySQL databázi lze toto omezení provádět pouze nad tabulkami, které používají úložiště InnoDB (lze zvolit při tvorbě tabulky). Pomocí phpMyAdmin pak můžeme omezení nastavit v záložce struktury databáze (1), po kliknutní na tlačítko zobrazení relací (2). Propojení však lze nastavit pouze nad atributy, které mají přiřazený primární a cizí klíč.

Omezení cizího klíče

Můžeme nastavit akci, která se má stát po odstranění záznamu (ON DELETE), případně po aktualizaci záznamu (ON UPDATE). Na výběr je z několika klauzulí:

  • CASCADE - automaticky v podřízené tabulce odstraní nebo aktualizuje odpovídající řádky
  • SET NULL - nastaví cizí klíč v podřízené tabulce na hodnotu NULL
  • NO ACTION - v MySQL je ekvivalentní klauzuli RESTRICT
  • RESTRICT - odmítne odstranit nebo aktualizovat klíč nadřazené tabulky

V případě, že bychom dotaz vykonávali pomocí SQL by dotaz vypadal následně:

ALTER TABLE `komentare`
ADD FOREIGN KEY (`id_uzivatele`)
REFERENCES `uzivatele`(`id`)
ON DELETE RESTRICT
ON UPDATE CASCADE;

Úlohy k procvičení:

  1. Vytvořte tabulku `clanky` (id, titulek, popis, datum), `komentare` (id, id_clanku, id_uzivatele, text, datum) a `uzivatele` (id, nick, email). Při vytváření použijte správné datové typy.
  2. Pro cizí klíče id_clanku a id_uzivatele vhodně definujte omezení primárního klíče.

Obsah kurzu:

  1. Úvod do relačních databází a jazyka SQL

    06:16
  2. Vazby mezi tabulkami

    04:36
  3. Přehled základních datových typů

    04:42
  4. Normalizace relačních databází

    06:43
  5. Výběr a seznámení s prostředím pro práci s databází

    04:40
  6. Tvorba nové databáze

    05:16
  7. Tvorba databázových tabulek

    08:57
  8. Referenční integrita a omezení cizího klíče

    06:08
  9. Vkládání dat do tabulky

    04:54
  10. Výběr a filtrování dat z tabulky

    05:47
  11. Řazení a limit výběru

    04:14
  12. Editace a odstranění dat z tabulky

    06:31
  13. Agregační funkce a seskupování

    05:14
  14. Spojení více tabulek a použití JOIN

    05:21
  15. Vnořené dotazy (poddotazy)

    04:09
  16. Indexy a optimalizace výkonu

    05:35
  17. Závěrečný test