Sobes.tech
Middle

Čo je to integrita referenčných väzieb?

sobes.tech AI

Odpoveď od AI

Referenčná integrita je vlastnosť údajov v relačnej databáze, ktorá zabezpečuje, že odkazy medzi tabuľkami zostávajú platné. Predchádza nasledujúcim problémom:

  • Vymazanie riadku z "rodičovskej" tabuľky, na ktorú odkazujú riadky v "dcérskej" tabuľke.
  • Zmena primárneho kľúča v "rodičovskej" tabuľke, na ktorý odkazujú riadky v "dcérskej" tabuľke, bez príslušnej aktualizácie týchto odkazov.
  • Vloženie riadku do "dcérskej" tabuľky s odkazom na neexistujúci primárny kľúč v "rodičovskej" tabuľke.

Implementuje sa pomocou cudzích kľúčov (FOREIGN KEY).

Príklady obmedzení pre cudzie kľúče:

  • ON DELETE CASCADE: Pri vymazaní riadku v rodičovskej tabuľke sú tiež vymazané zodpovedajúce riadky v dcérskej tabuľke.
  • ON DELETE SET NULL: Pri vymazaní riadku v rodičovskej tabuľke je zodpovedajúci cudzí kľúč v dcérskej tabuľke nastavený na NULL.
  • ON DELETE RESTRICT: Vymazanie riadku v rodičovskej tabuľke je zakázané, ak naň existujú odkazy v dcérskej tabuľke.
  • ON UPDATE CASCADE: Pri aktualizácii primárneho kľúča v rodičovskej tabuľke sa zodpovedajúce cudzie kľúče v dcérskej tabuľke tiež aktualizujú.
-- Príklad tabuľky "users" (rodič)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Príklad tabuľky "orders" (dcérska) s cudzím kľúčom
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 /* Príklad obmedzenia */
        ON UPDATE CASCADE /* Príklad obmedzenia */
);