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 */
);