Sobes.tech
Middle

Šta je integritet referentnih veza?

sobes.tech АИ

Одговор од АИ

Referencijalni integritet je svojstvo podataka u relacijskoj bazi podataka koje garantuje da odnosi između tabela ostaju validni. On sprečava sledeće probleme:

  • Brisanje reda iz "roditeljske" tabele na koju se odnose redovi u "dečjoj" tabeli.
  • Izmenu primarnog ključa u "roditeljskoj" tabeli na koju se odnose redovi u "dečjoj" tabeli, bez odgovarajuće ažuriranja tih odnosa.
  • Ubacivanje reda u "dečju" tabelu sa referencom na nepostojeći primarni ključ u "roditeljskoj" tabeli.

Implementira se pomoću stranih ključeva (FOREIGN KEY).

Primeri ograničenja za strane ključeve:

  • ON DELETE CASCADE: Pri brisanju reda u roditeljskoj tabeli, odgovarajući redovi u dečjoj tabeli takođe se brišu.
  • ON DELETE SET NULL: Pri brisanju reda u roditeljskoj tabeli, odgovarajući strani ključ u dečjoj tabeli se postavlja na NULL.
  • ON DELETE RESTRICT: Brisanje reda u roditeljskoj tabeli je zabranjeno ako postoje reference na njega u dečjoj tabeli.
  • ON UPDATE CASCADE: Pri ažuriranju primarnog ključa u roditeljskoj tabeli, odgovarajući strani ključevi u dečjoj tabeli se takođe ažuriraju.
-- Primer tabele "users" (roditelj)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(255) NOT NULL
);

-- Primer tabele "orders" (dečja) sa stranim ključ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 /* Primer ograničenja */
        ON UPDATE CASCADE /* Primer ograničenja */
);