Sobes.tech
Middle

Kas yra nuorodų ryšių vientisumas?

sobes.tech AI

Atsakymas iš AI

Referencinės integralumo savybė yra duomenų savybė reliacinėje duomenų bazėje, užtikrinanti, kad nuorodos tarp lentelių liktų galiojančios. Ji apsaugo nuo šių problemų:

  • ištrinti eilutę iš "tėvų" lentelės, į kurią nuoroda turi eilutės "vaiko" lentelėje;
  • pakeisti pirminį raktą "tėvų" lentelėje, į kurį nuoroda turi eilutės "vaiko" lentelėje, be atitinkamo nuorodų atnaujinimo;
  • įterpti eilutę į "vaiko" lentelę su nuoroda į neegzistuojantį pirminį raktą "tėvų" lentelėje.

Įgyvendinama naudojant išorinius raktus (FOREIGN KEY).

Pavyzdžiai apribojimų išoriniams raktams:

  • ON DELETE CASCADE: ištrynus eilutę iš "tėvų" lentelės, atitinkamos eilutės "vaiko" lentelėje taip pat ištrinamos.
  • ON DELETE SET NULL: ištrynus eilutę iš "tėvų" lentelės, atitinkamas išorinis raktas "vaiko" lentelėje nustatomas į NULL.
  • ON DELETE RESTRICT: eilutės ištrynimas iš "tėvų" lentelės yra draudžiamas, jei yra nuorodų į ją "vaiko" lentelėje.
  • ON UPDATE CASCADE: atnaujinus pirminį raktą "tėvų" lentelėje, atitinkami išoriniai raktai "vaiko" lentelėje taip pat atnaujinami.
-- Pavyzdinė "users" lentelė (tėvų)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Pavyzdinė "orders" lentelė (vaiko) su išoriniu raktu
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 /* Pavyzdys, kaip naudoti apribojimą */
        ON UPDATE CASCADE /* Pavyzdys, kaip naudoti apribojimą */
);