Sobes.tech
Middle

Co je to integrita referenčních vazeb?

sobes.tech AI

Odpověď od AI

Referenční integrita je vlastností dat v relační databázi, která zajišťuje, že odkazy mezi tabulkami zůstávají platné. Předchází následujícím problémům:

  • Odstranění řádku z "rodičovské" tabulky, na který odkazují řádky v "dceřiné" tabulce.
  • Změna primárního klíče v "rodičovské" tabulce, na který odkazují řádky v "dceřiné" tabulce, bez odpovídající aktualizace těchto odkazů.
  • Vložení řádku do "dceřiné" tabulky s odkazem na neexistující primární klíč v "rodičovské" tabulce.

Implementuje se pomocí cizích klíčů (FOREIGN KEY).

Příklady omezení pro cizí klíče:

  • ON DELETE CASCADE: Při odstranění řádku v rodičovské tabulce jsou také odstraněny odpovídající řádky v dceřiné tabulce.
  • ON DELETE SET NULL: Při odstranění řádku v rodičovské tabulce je odpovídající cizí klíč v dceřiné tabulce nastaven na NULL.
  • ON DELETE RESTRICT: Odstranění řádku v rodičovské tabulce je zakázáno, pokud na něj existují odkazy v dceřiné tabulce.
  • ON UPDATE CASCADE: Při aktualizaci primárního klíče v rodičovské tabulce jsou odpovídající cizí klíče v dceřiné tabulce také aktualizovány.
-- Příklad tabulky "users" (rodič)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Příklad tabulky "orders" (dceřiná) s cizím klíčem
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
        ON DELETE CASCADE /* Příklad omezení */
        ON UPDATE CASCADE /* Příklad omezení */
);